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

Thuật ngữ phương diện là từ đồng nghĩa với số lượng phần tử trong một vectơ đặc trưng. Một số đặc điểm phân loại có tính chất chiều thấp. Ví dụ:

Tên đối tượng Số danh mục Danh mục mẫu
snowed_today 2 Đúng, Sai
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 Thuỷ, Sao Kim, Trái Đất

Khi một đặc điểm phân loại có số lượng danh mục có thể có thấp, bạn có thể mã hoá đặc điểm đó dưới dạng một từ vựng. Với một mã hoá từ vựng, mô hình sẽ coi mỗi giá trị phân loại có thể có là một đặc điểm 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 ô tô dựa trên một phần của một đối tượng có tên là car_color. Có lẽ xe màu đỏ có giá trị hơn xe màu xanh lục. Vì nhà sản xuất chỉ cung cấp một số ít màu sơn ngoại thất, nên car_color là một đặc điểm phân loại có số chiều 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 đối tượ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 đặc điểm, "Cam" là một đặc điểm riêng biệt, v.v.
Hình 1. Một tính năng riêng biệt cho từng danh mục.

Bài tập: Kiểm tra mức độ hiểu biết 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ô, 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
Trong quá trình huấn luyện, mô hình chỉ có thể thao tác với các số thực. Chuỗi "Red" không phải là số thập phân. Bạn phải chuyển đổi các chuỗi như "Red" thành số dấu phẩy động.
Sai
Một mô hình học máy chỉ có thể huấn luyện trên các đối tượng 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

Các mô hình học máy chỉ có thể thao tác với số thực. Do đó, bạn phải chuyển đổi mỗi 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 các chuỗi thành số chỉ mục duy nhất, bạn sẽ cần xử lý thêm dữ liệu để biểu thị dữ liệu theo cách giúp mô hình tìm hiểu các mối quan hệ có ý nghĩa giữa các giá trị. Nếu dữ liệu về đặc điểm phân loại được giữ nguyên dưới dạng số nguyên được lập chỉ mục và được tải vào một mô hình, thì mô hình sẽ coi các giá trị được lập chỉ mục là các số thực liên tục. Sau đó, mô hình sẽ xem xét "tím" có khả năng xuất hiện gấp 6 lần so với "cam".

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á one-hot. 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ố danh mục. Ví dụ: nếu car_color có 8 danh mục có thể có, thì vectơ mã hoá một lần đại diện sẽ có 8 phần tử.
  • Chính xác một trong số các phần tử trong một vectơ mã hoá một lần 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 phương pháp mã hoá một lần cho từng màu 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
"Nâu" 0 0 0 0 0 0 0 1

Đó là vectơ one-hot, không phải chuỗi hoặc số chỉ mục, được truyền đến vectơ đặc trưng. Mô hình này sẽ tìm hiểu một trọng số riêng cho từng phần tử của vectơ đối tượng.

Hình minh hoạ sau đây cho thấy nhiều phép biến đổi trong biểu diễn 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 vectơ đối tượng. Trong sơ đồ, các đối tượng đầ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 sẽ liên kết "Vàng", "Cam", "Xanh dương" và "Xanh dương" với 3, 1, 2, 2. Sau đó, hệ thống sẽ chuyển đổi các giá trị đó thành một vectơ đặc trưng one-hot. Ví dụ: cho 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 danh mục với vectơ đối tượng.

Biểu diễn thưa

Một tính năng có giá trị chủ yếu là 0 (hoặc trống) được gọi là tính năng thưa thớt. Nhiều đặc điểm phân loại, chẳng hạn như car_color, có xu hướng là các đặc điểm 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 lần 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 biểu diễn thưa thớt cho vectơ mã hoá một lần trước đó là:

2

Xin lưu ý rằng biểu diễn thưa thớt tiêu tốn ít bộ nhớ hơn nhiều so với vectơ mã hoá một lần 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 lần mã hoá, chứ không phải biểu diễn thưa thớt.

Giá trị ngoại lệ trong dữ liệu phân loại

Giống như dữ liệu số, dữ liệu phân loại cũng chứa các giá trị ngoại lệ. 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 bất thường hiếm khi được sử dụng, chẳng hạn như "Mauve" hoặc "Avocado". Thay vì gán cho mỗi màu sắc bất thường này một danh mục riêng, bạn có thể gộp chúng vào một danh mục "bao hàm tất cả" duy nhất có tên là ngoài từ vựng (OOV). Nói cách khác, tất cả các màu bất thường đều được đưa vào một nhóm bất thường duy nhất. Hệ thống sẽ tìm hiểu một trọng số duy nhất cho nhóm giá trị ngoại lệ đó.

Mã hoá các đặc điểm phân loại có nhiều chiều

Một số đặc điểm phân loại có số lượng phương diện lớn, chẳng hạn như những đặc điểm trong bảng sau:

Tên đối tượng Số danh mục Danh mục mẫu
words_in_english ~500.000 "vui vẻ", "đi bộ"
US_postal_codes ~42.000 "02114", "90301"
last_names_in_Germany ~850.000 "Schmidt", "Schneider"

Khi số lượng danh mục lớn, mã hoá một lần thường là lựa chọn không phù hợp. Các mục nhúng (được trình bày chi tiết trong một mô-đun Mục nhúng riêng biệt) thường là lựa chọn phù hợp hơn nhiều. Các mục nhúng giảm đáng kể số lượng phương diện, mang lại lợi ích cho các mô hình theo 2 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 dự đoán nhanh hơn. Tức là mô hình có độ trễ thấp hơn.

Băm (còn được 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.