Dữ liệu phân loại: Từ vựng và mã hoá chung

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:

Hình 1. Mỗi màu trong bảng màu được biểu thị dưới dạng một tính năng riêng biệt. Tức là mỗi màu là một đặc điểm riêng biệt trong vectơ đặc điểm.
      Ví dụ: "Đỏ" là một tính năng, "Cam" là một tính năng riêng biệt, v.v.
Hình 1. Một tính năng riêng biệt cho mỗi danh mục.

Bài tập: Kiểm tra trực giác của bạn

Đúng hay sai: Mô hình học máy có thể huấn luyện trực tiếp trên các giá trị chuỗi thô, như "Đỏ""Đen" mà không cần chuyển đổi những giá trị này thành vectơ số.
Đúng
Trong quá trình huấn luyện, một mô hình chỉ có thể thao tác với các số dấu phẩy động. Chuỗi "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.
Sai
Mô hình học máy chỉ có thể huấn luyện các đặc điểm có giá trị dấu phẩy động, vì vậy, bạn cần chuyển đổi các chuỗi đó thành giá trị dấu phẩy động trước khi huấn luyện.

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:

Hình 2. Mỗi màu liên kết với một giá trị số nguyên duy nhất. Ví dụ: "Đỏ" được liên kết với số nguyên 0, "Cam" với số nguyên 1, v.v.
Hình 2. Các tính năng được lập chỉ mục.

Bài tập: Kiểm tra trực giác của bạn

Mô hình của bạn có nên huấn luyện trực tiếp trên các số chỉ mục hiển thị trong Hình 2 không?
Nếu mô hình được huấn luyện dựa trên số chỉ mục, thì mô hình sẽ coi không chính xác mỗi chỉ mục là một giá trị số và coi "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).
Không
Mô hình của bạn không được huấn luyện trên các số chỉ mục. Nếu đúng, mô hình của bạn sẽ coi mỗi số chỉ mục là một giá trị số và coi "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:

Hình 3. Sơ đồ quy trình toàn diện để liên kết các danh mục với các vectơ đặc điểm. Trong sơ đồ, các đặc điểm đầu vào là "Vàng", "Cam", "Xanh dương" và "Xanh dương" lần thứ hai.  Hệ thống sử dụng một từ vựng được lưu trữ ("Đỏ" là 0, "Cam" là 1, "Xanh dương" là 2, "Vàng" là 3, v.v.) để liên kết giá trị đầu vào với một mã nhận dạng. Do đó, hệ thống ánh xạ 'Vàng',
      'Cam', 'Xanh dương' và 'Xanh dương' thành 3, 1, 2, 2. Sau đó, hệ thống sẽ chuyển đổi các giá trị đó thành một vectơ đặc điểm một chiều. Ví dụ: với một hệ thống có thể có 8 màu, 3 sẽ trở thành 0, 0, 0, 1, 0, 0, 0, 0.
Hình 3. Quy trình toàn diện để liên kết các danh mục với vectơ đặc điểm.

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]

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.