Một số tính năng có thể là các giá trị riêng biệt không theo mối quan hệ có thứ tự. Ví dụ: các giống chó, từ hoặc mã bưu chính. Các tính năng này được gọi là danh mục và mỗi giá trị được gọi là một danh mục. Bạn có thể biểu thị các giá trị phân loại dưới dạng chuỗi hoặc số chẵn, nhưng bạn sẽ không thể so sánh các số này hoặc trừ chúng.
Thông thường, bạn nên trình bày các tính năng chứa giá trị số nguyên dưới dạng dữ liệu danh mục thay vì dữ liệu số. Ví dụ: hãy xem xét một tính năng mã bưu chính, trong đó giá trị là số nguyên. Nếu thể hiện sai tính năng này bằng số, thì bạn sẽ yêu cầu mô hình tìm một mối quan hệ số giữa các mã bưu chính khác nhau; ví dụ: bạn muốn mô hình xác định rằng mã bưu chính 20004 gấp đôi (hoặc một nửa) tín hiệu dưới dạng mã bưu chính 10002. Bằng cách trình bày mã bưu chính dưới dạng dữ liệu phân loại, bạn cho phép mô hình tìm các tín hiệu riêng cho từng mã bưu chính riêng lẻ.
Nếu số lượng danh mục của một trường dữ liệu nhỏ, chẳng hạn như ngày trong tuần hoặc một bảng màu hạn chế, bạn có thể tạo một tính năng riêng cho mỗi danh mục. Ví dụ:
Hình 1: Một tính năng duy nhất cho từng danh mục.
Sau đó, một mô hình có thể tìm hiểu trọng số riêng cho từng màu. Ví dụ: có lẽ mô hình có thể hiểu rằng ô tô màu đỏ đắt hơn ô tô màu xanh lục.
Sau đó, bạn có thể lập chỉ mục các tính năng này.
Hình 2: Các tính năng được lập chỉ mục.
Loại ánh xạ này được gọi là từ vựng.
Từ vựng
Trong từ vựng, mỗi giá trị đại diện cho một tính năng duy nhất.
Index Number | Category |
---|---|
0 | Red |
1 | Orange |
2 | Blue |
... | ... |
Mô hình này tra cứu chỉ mục từ chuỗi, gán 1.0 cho vùng tương ứng trong vectơ tính năng và 0.0 cho tất cả các khe khác trong vectơ tính năng.
Hình 3: Quy trình từ đầu đến cuối để ánh xạ các danh mục với các đối tượng vectơ.
Lưu ý về cách biểu diễn thưa thớt
Nếu danh mục của bạn là ngày trong tuần, ví dụ: bạn có thể kết thúc biểu thị thứ Sáu với vectơ tính năng [0, 0, 0, 0, 1, 0, 0]. Tuy nhiên, hầu hết các hoạt động triển khai của hệ thống máy học đều sẽ biểu thị vectơ này trong bộ nhớ với biểu diễn thưa thớt. Đại diện chung là danh sách các giá trị không trống và chỉ mục tương ứng. Các ví dụ này là 1.0 cho giá trị và [4] cho chỉ mục. Việc này cho phép bạn tiêu tốn ít bộ nhớ hơn và lưu số lượng lớn bằng 0, đồng thời cho phép nhân ma trận hiệu quả hơn. Về mặt toán học cơ bản, [4] tương đương với [0, 0, 0, 0, 1, 0, 0].
Ngoài Vocab (OOV)
Cũng giống như dữ liệu dạng số, các dữ liệu phân loại cũng có trong dữ liệu. Ví dụ: hãy xem xét một tập dữ liệu có chứa thông tin mô tả về ô tô. Một trong những tính năng của tập dữ liệu này có thể là màu ô tô. Giả sử các màu sắc phổ biến trên ô tô (đen, trắng, xám, v.v.) được thể hiện rõ trong tập dữ liệu này và bạn sẽ chuyển mỗi màu sắc vào một danh mục để có thể tìm hiểu cách những màu sắc này ảnh hưởng đến giá trị. Tuy nhiên, giả sử tập dữ liệu này chứa một số ít các chiếc ô tô có màu sắc lập dị (maua, puce, bơ). Thay vì chia mỗi màu trong số này thành một danh mục riêng, bạn có thể gộp các màu đó vào một danh mục bắt được toàn bộ có tên là Out of Vocab (OOV). Bằng cách sử dụng OOV, hệ thống sẽ không lãng phí thời gian đào tạo cho từng màu hiếm gặp đó.
Băm
Một tuỳ chọn khác là băm mọi chuỗi (danh mục) vào không gian lập chỉ mục có sẵn. Việc băm thường gây ra xung đột, nhưng bạn dựa vào mô hình tìm hiểu một số cách biểu thị được chia sẻ của các danh mục trong cùng một chỉ mục hoạt động tốt cho vấn đề đã cho.
Đối với các thuật ngữ quan trọng, việc băm có thể tệ hơn việc chọn từ vựng, do xung đột. Mặt khác, việc băm không yêu cầu bạn phải tập hợp từ vựng. Đây là một lợi thế nếu hoạt động phân phối tính năng thay đổi nhiều theo thời gian.
Hình 4: Liên kết các mục với một từ vựng.
Kết hợp băm và từ vựng
Bạn có thể áp dụng phương pháp kết hợp và băm cả từ vựng. Sử dụng từ vựng cho các danh mục quan trọng nhất trong dữ liệu của bạn, nhưng thay thế nhóm OOV bằng nhiều nhóm OOV và sử dụng tính năng băm để chỉ định danh mục cho các nhóm.
Các danh mục trong nhóm băm phải chia sẻ chỉ mục và mô hình này có khả năng sẽ không đưa ra gợi ý phù hợp, nhưng chúng tôi đã phân bổ một lượng bộ nhớ để cố gắng tìm hiểu các danh mục bên ngoài phạm vi từ vựng.
Hình 5: Phương pháp kết hợp kết hợp từ vựng và hàm băm.
Lưu ý về tính năng nhúng
Hãy nhớ rằng Khoá học máy học là nhúng là một tính năng danh mục được biểu thị dưới dạng một tính năng được đánh giá liên tục. Các mô hình chuyên sâu thường xuyên chuyển đổi các chỉ mục từ một chỉ mục thành dạng nhúng.
Hình 6: Vectơ tính năng thưa thớt qua tính năng nhúng
Các phép biến đổi khác mà chúng ta đã thảo luận có thể được lưu trữ trên đĩa, nhưng tính năng nhúng vẫn khác nhau. Vì được nhúng đã được đào tạo nên chúng không phải là một cách biến đổi dữ liệu thông thường. Chúng là một phần của mô hình. Chúng được đào tạo với các trọng số mô hình khác và về mặt chức năng tương đương với một lớp trọng số.
Vậy còn tính năng nhúng trước thì sao? Nội dung nhúng được đào tạo trước thường vẫn có thể sửa đổi được trong quá trình đào tạo, vì vậy về nguyên lý, chúng vẫn là một phần của mô hình.