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, 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:

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 mức độ hiểu bài

Đú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ô, chẳng hạn như "Đỏ""Đen", mà không cần chuyển đổi các giá trị này thành vectơ số.
Đúng
Sai

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 được 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.

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:

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ó 8 màu có thể có, 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 đặ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]

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.

Tóm lại, hàm băm liên kết một danh mục (ví dụ: một màu) với một số nguyên nhỏ – số của "vùng chứa" sẽ chứa danh mục đó.

Cụ thể, bạn triển khai thuật toán băm như sau:

  1. Đặt số lượng ô trong vectơ danh mục thành N, trong đó N nhỏ hơn tổng số danh mục còn lại. Ví dụ tuỳ ý: giả sử N = 100.
  2. Chọn một hàm băm. (Thường thì bạn cũng sẽ chọn phạm vi giá trị hàm băm.)
  3. Truyền từng danh mục (ví dụ: một màu cụ thể) thông qua hàm băm đó, tạo ra một giá trị băm, giả sử là 89237.
  4. Chỉ định cho mỗi vùng chứa một số chỉ mục của giá trị băm đầu ra theo phương thức modulo N. Trong trường hợp này, khi N là 100 và giá trị băm là 89237, kết quả modulo là 37 vì 89237 % 100 là 37.
  5. Tạo một mã hoá một nóng cho mỗi vùng chứa bằng các số chỉ mục mới này.

Để biết thêm thông tin chi tiết về việc băm dữ liệu, hãy xem phần Randomization (Tạo ngẫu nhiên) của mô-đun Production machine learning systems (Hệ thống học máy thương mại).