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, Người thực hành, 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 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ột mô hình để dự đoán giá của một chiếc ô tô, một phần dựa trên một tính năng phân loại có tên 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 mức độ hiểu bài
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:
Sau khi chuyển đổi chuỗi thành số chỉ mục duy nhất, bạn cần xử lý thêm dữ liệu để thể hiện dữ liệu theo cách giúp mô hình tìm hiểu mối quan hệ có ý nghĩa giữa các giá trị. Nếu dữ liệu tính năng phân loại được giữ nguyên dưới dạng số nguyên được lập chỉ mục và tải vào mô hình, thì mô hình sẽ coi các giá trị được lập chỉ mục là số dấu phẩy động liên tục. Sau đó, mô hình sẽ xem xét "màu tím" có khả năng xuất hiện cao hơn "màu cam" gấp 6 lần.
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 nóng. Trong mã hoá one-hot:
- Mỗi danh mục được biểu thị bằng một vectơ (mảng) gồm 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 có giá trị 0.0.
Ví dụ: bảng sau đây cho thấy cách mã hoá một nóng cho mỗi giá trị trong car_color
:
Tính năng | Đỏ | Màu cam | 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 học một trọng số riêng cho mỗi phần tử của vectơ đặc điểm.
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 đặc điểm có giá trị chủ yếu là 0 (hoặc trống) được gọi là đặc điểm thưa thớt. 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 nghĩa là lưu trữ vị trí của 1.0 trong một vectơ thưa. Ví dụ: vectơ một chiều 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 chiều, chứ không phải biểu diễn thưa.
Đ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 ngoại lai này vào một danh mục riêng, bạn có thể gộp các màu này vào một danh mục "bao gồm 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 có nhiều chiều
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 | ~42.000 | "02114", "90301" |
last_names_in_Germany | ~850.000 | "Schmidt", "Schneider" |
Khi số lượng danh mục cao, việc mã hoá một chiều thường không phải là lựa chọn tốt. 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 kích thước, giúp ích cho các 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.
Hàm băm (còn gọi là mẹo băm) là một cách ít phổ biến hơn để giảm số lượng phương diện.
Nhấp vào đây để tìm hiểu về phương thức băm