Thuật ngữ phương diện đồng nghĩa với số lượng phần tử trong một vectơ đặc trưng. Một số tính năng phân loại có kích thước thấp. Ví dụ:
Tên đối tượng | Số lượng danh mục | Danh mục mẫu |
---|---|---|
snowed_today | 2 | True, False |
skill_level | 3 | Người mới bắt đầu, Chuyên viên, Chuyên gia |
season | 4 | Mùa đông, mùa xuân, mùa hè, mùa thu |
day_of_week | 7 | Thứ Hai, thứ Ba, thứ Tư |
hành tinh | 8 | Sao Thủy, Sao Kim, Trái Đất |
Khi một tính năng phân loại có số lượng danh mục có thể có thấp, bạn có thể mã hoá tính năng đó dưới dạng một từ vựng. Với mã hoá từ vựng, mô hình coi mỗi giá trị danh mục có thể có là một tính năng riêng biệt. Trong quá trình huấn luyện, mô hình này sẽ học các trọng số khác nhau cho từng danh mục.
Ví dụ: giả sử bạn đang tạo mô hình để dự đoán một phần giá ô tô dựa trên một tính năng phân loại có tên là car_color
.
Có thể xe màu đỏ có giá trị hơn xe màu xanh lục.
Vì các nhà sản xuất chỉ cung cấp một số màu sắc bên ngoài, nên car_color
là một tính năng phân loại có kích thước thấp.
Hình minh hoạ sau đây đề xuất một từ vựng (các giá trị có thể có) cho car_color
:
Bài tập: Kiểm tra trực giác của bạn
"Red"
không phải là số thực. Bạn phải chuyển đổi các chuỗi như "Red"
thành số dấu phẩy động.
Số chỉ mục
Mô hình học máy chỉ có thể thao tác với số dấu phẩy động. Do đó, bạn phải chuyển đổi từng chuỗi thành một số chỉ mục duy nhất, như trong hình minh hoạ sau:
Bài tập: Kiểm tra trực giác của bạn
"Black"
(chỉ số số 5) có ý nghĩa hơn 5 lần đối với mô hình so với "Orange"
(chỉ mục số 1).
"Black"
(chỉ số số 5) có ý nghĩa gấp 5 lần so với "Orange"
(chỉ số số 1).
Mã hoá one-hot
Bước tiếp theo trong việc xây dựng từ vựng là chuyển đổi từng số chỉ mục thành mã hoá một lần. Trong mã hoá one-hot:
- Mỗi danh mục được biểu thị bằng một vectơ (mảng) của N phần tử, trong đó N là số lượng danh mục. Ví dụ: nếu
car_color
có tám danh mục có thể có, thì vectơ một chiều đại diện sẽ có tám phần tử. - Chính xác một phần tử trong vectơ một chiều có giá trị 1.0; tất cả các phần tử còn lại đều có giá trị 0.0.
Ví dụ: bảng sau đây trình bày phương thức mã hoá một lần (một điểm) cho từng chế độ trong car_color
:
Tính năng | Đỏ | Orange | Xanh dương | Vàng | Xanh lục | Đen | Tía | Nâu |
---|---|---|---|---|---|---|---|---|
"Đỏ" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Cam" | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
"Xanh dương" | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
"Vàng" | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
"Xanh lục" | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
"Đen" | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
"Tím" | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
"Màu nâu" | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Đó là vectơ một chiều, chứ không phải chuỗi hoặc số chỉ mục, được truyền vào vectơ đặc điểm. Mô hình này sẽ học trọng số riêng cho từng phần tử của vectơ tính năng.
Hình minh hoạ sau đây cho thấy nhiều phép biến đổi trong cách trình bày từ vựng:
Biểu diễn thưa
Một tính năng có giá trị chủ yếu bằng 0 (hoặc trống) được gọi là tính năng thưa. Nhiều tính năng phân loại, chẳng hạn như car_color
, thường là các tính năng thưa thớt.
Biểu diễn thưa thớt
có nghĩa là lưu trữ vị trí của 1.0
trong một vectơ thưa thớt. Ví dụ: vectơ một điểm nóng cho "Blue"
là:
[0, 0, 1, 0, 0, 0, 0, 0]
Vì 1
ở vị trí 2 (khi bắt đầu đếm từ 0), nên cách biểu diễn thưa thớt cho vectơ một chiều trước đó là:
2
Lưu ý rằng cách biểu diễn thưa thớt tiêu tốn ít bộ nhớ hơn nhiều so với vectơ một giá trị nóng gồm 8 phần tử. Điều quan trọng là mô hình phải huấn luyện trên vectơ một điểm chứ không phải trên bản trình bày thưa thớt.
Điểm ngoại lai trong dữ liệu phân loại
Giống như dữ liệu số, dữ liệu dạng danh mục cũng chứa các giá trị ngoại lai. Giả sử car_color
không chỉ chứa các màu phổ biến mà còn chứa một số màu ngoại lai hiếm khi được sử dụng, chẳng hạn như "Mauve"
hoặc "Avocado"
.
Thay vì đặt mỗi màu sắc ngoại lai này vào một danh mục riêng, bạn có thể gộp các màu đó vào một danh mục "thu thập tất cả" có tên là ngoài từ vựng (OOV). Nói cách khác, tất cả các màu ngoại lai đều được đưa vào một nhóm ngoại lai duy nhất. Hệ thống sẽ học một trọng số duy nhất cho nhóm giá trị ngoại lai đó.
Mã hoá các tính năng phân loại theo chiều cao
Một số tính năng phân loại có nhiều phương diện, chẳng hạn như các tính năng trong bảng sau:
Tên đối tượng | Số lượng danh mục | Danh mục mẫu |
---|---|---|
words_in_english | ~500.000 | "happy", "walking" |
US_postal_codes | Khoảng 42.000 | "02114", "90301" |
last_names_in_Germany | ~850.000 | "Schmidt", "Schneider" |
Khi số lượng danh mục nhiều, mã hoá một lần thường là một lựa chọn không đúng. Nội dung nhúng, được nêu chi tiết trong một mô-đun Nhúng riêng biệt, thường là lựa chọn tốt hơn nhiều. Việc nhúng làm giảm đáng kể số lượng chiều, điều này mang lại lợi ích cho mô hình theo hai cách quan trọng:
- Mô hình thường huấn luyện nhanh hơn.
- Mô hình đã tạo thường suy luận các dự đoán nhanh hơn. Tức là mô hình có độ trễ thấp hơn.
Băm (còn gọi là thủ thuật băm) là một cách ít phổ biến hơn để giảm số lượng phương diện.