Mã hóa nhiệt solo là một thuật ngữ rất phổ biến trong phân tích dữ liệu, học máy và trí tuệ nhân tạo. Nó được sử dụng để mô tả một phương pháp chuyển đổi dữ liệu phân loại thành biểu diễn số. Nói cách khác, vai trò của Solo Hot Coding là chuyển đổi các nhãn danh mục ban đầu không thể trực tiếp tham gia vào tính toán số thành các dạng vectơ mà mô hình có thể xử lý.
Nếu thẻ danh mục ban đầu trả lời "nó thuộc loại nào", thì mã nhiệt duy nhất sẽ trả lời "cách thể loại này được biểu diễn bằng một tập hợp các số tiêu chuẩn". Do đó, Mã hóa nhiệt thường được sử dụng trong kỹ thuật tính năng, mô hình phân loại, biểu diễn văn bản và tiền xử lý dữ liệu, đồng thời giữ một vị trí rất cơ bản trong trí tuệ nhân tạo.
1. Khái niệm cơ bản: Nguyên tắc đơn mã nhiệt là gì
Mã hóa One-Hot là một phương pháp để chuyển đổi các biến lớp thành vectơ nhị phân. Ý tưởng cốt lõi của nó rất đơn giản: chỉ định một vị trí dành riêng cho từng danh mục có thể và đối với mỗi danh mục, ghi lại vị trí tương ứng là 1 và phần còn lại là 0.
Ví dụ: nếu biến "color" chỉ có ba giá trị có thể:
• Đỏ
• Màu xanh lá cây
• Màu xanh lam
Mã hóa đơn nhiệt của chúng có thể được viết như sau:
• Đỏ: [1, 0, 0]
• Màu xanh lá cây: [0, 1, 0]
• Xanh dương: [0, 0, 1]
Bạn có thể thấy rằng biểu diễn này có một đặc điểm rất rõ ràng: trong mỗi vectơ, chỉ có một vị trí là 1, trong khi tất cả các vị trí khác là 0.
Đây chính xác là nguồn gốc của cái tên "Công tước": "nhiệt" có thể được hiểu là kích hoạt hoặc ánh sáng; "Solo heat" có nghĩa là chỉ có một điểm được thắp sáng.
Từ một góc độ đơn giản, bộ luật Duke có thể được hiểu là: mỗi hạng mục được trao một chỗ ngồi riêng; bất cứ khi nào một hạng mục xuất hiện, nó sẽ ngồi ở chỗ riêng của mình, trong khi phần còn lại vẫn trống.
Ví dụ: nếu chúng ta coi "các ngày trong tuần" là một biến danh mục:
星期日
Sau đó, "Thứ Tư" có thể được biểu diễn dưới dạng vectơ bảy chiều, trong đó chỉ vị trí tương ứng với "Thứ Tư" là 1 và các vị trí khác là 0.
Nói chung, nếu một biến lớp có n giá trị có thể, độ dài vectơ sau khi mã hóa thường là n.
Hãy để bộ lớp là:
Sau đó, mã hóa nhiệt duy nhất của lớp c_i có thể được hiểu là một vectơ có độ dài n:
Khi vị trí i tương ứng với danh mục trước đó, x_i = 1; tất cả các vị trí khác là 0.
Ví dụ: nếu có bốn danh mục:
D
Vì vậy:
D → [0, 0, 0, 1]
Điều này cho thấy bản chất của Solo Hot Coding không phải là "tính toán mối quan hệ giữa các danh mục", mà là biến các thể loại thành vectơ số theo cách không giới thiệu thứ tự kích thước. Điều này rất quan trọng. Bởi vì bản thân nhiều danh mục không có mối quan hệ kích thước tự nhiên.
Ví dụ:
• Đỏ, xanh lá cây, xanh lam
• Mèo, chó, chim
• Bắc Kinh, Thượng Hải, Quảng Châu
Nếu bạn trực tiếp mã hóa chúng dưới dạng:
• Đỏ = 1
• Màu xanh lá cây = 2
• Màu xanh lam = 3
Vì vậy, mô hình có thể lầm tưởng rằng "màu xanh lam lớn hơn màu xanh lá cây" hoặc "màu xanh lá cây nhỏ hơn màu đỏ", điều này rõ ràng không có ý nghĩa thực tế. Ưu điểm của Solo Hot Coding là nó không tạo ra các quy tắc kích thước không tồn tại như vậy một cách giả tạo.
2. Tầm quan trọng của mã hóa nhiệt và các tình huống ứng dụng phổ biến
1. Tầm quan trọng của mã hóa nhiệt đơn
Mã hóa nhiệt rất quan trọng vì các mô hình học máy thường yêu cầu đầu vào số, trong khi dữ liệu trong thế giới thực thường chứa một số lượng lớn các biến phân loại.
Ví dụ:
邮件类型
Bản thân các biến này không phải là giá trị liên tục và không thể được sử dụng trực tiếp cho các phép tính đa giá trị. Mã hóa nhiệt là một trong những phương pháp chuyển đổi cơ bản và được sử dụng phổ biến nhất.
Đầu tiên, mã hóa nhiệt duy nhất cho phép dữ liệu danh mục đi vào mô hình.
Nó chuyển đổi "nhãn" thành vectơ, cho phép mô hình xử lý dữ liệu phân loại cùng với các tính năng số khác.
Thứ hai, mã hóa nhiệt đơn tránh thứ tự kích thước không chính xác.
Nếu các danh mục được đánh số trực tiếp bằng số nguyên, mô hình có thể hiểu sai các mẫu kích thước giữa các số này; Mã hóa nhiệt không giới thiệu thông tin tuần tự sai này.
Thứ ba, định dạng mã hóa nhiệt độc lập rất đơn giản, trực quan và dễ thực hiện.
Đối với người mới bắt đầu, đây là một trong những điểm đầu vào tốt nhất để hiểu cách định lượng dữ liệu phân loại; Đối với nhiều mô hình nền tảng, nó cũng là một phương pháp tiền xử lý rất thiết thực.
Tóm lại: nhãn danh mục ban đầu cho biết "nó thuộc thể loại nào"; Mã hóa đơn nhiệt giải thích "cách lớp này được chuyển đổi thành một vectơ số thông thường".
2. Các tình huống ứng dụng phổ biến
(1) Trong học máy, mã hóa nhiệt thường được sử dụng cho các tính năng của lớp tiền xử lý
Trong các tác vụ như phân loại và hồi quy, dữ liệu đầu vào thường có cả tính năng số và phân loại.
Ví dụ: bảng dữ liệu người dùng có thể bao gồm:
性别
Ở đây, "thành phố" và "giới tính" là các tính năng danh mục, thường yêu cầu mã hóa nhiệt độc quyền trước khi nhập mô hình.
(2) Trong xử lý văn bản, mã hóa Dureh có thể được sử dụng cho các biểu diễn từ cơ bản nhất
Trong các phương pháp xử lý ngôn ngữ tự nhiên ban đầu, một từ đôi khi được biểu diễn như một vectơ nhiệt duy nhất của độ dài của danh sách từ.
Ví dụ: nếu một danh sách từ chứa 10.000 từ, mỗi từ có thể tương ứng với một vectơ có độ dài 10.000, chỉ có một vị trí là 1.
Mặc dù biểu diễn này sau đó thường được thay thế bằng các phương pháp vectơ từ nâng cao hơn, nhưng nó vẫn là một nền tảng quan trọng để hiểu biểu diễn số của văn bản.
(3) Trong học sâu, nhãn lớp thường được chuyển đổi đầu tiên sang mã hóa nhiệt đơn
Trong các tác vụ nhiều danh mục, bản thân nhãn thường được xử lý thành các dạng mã hóa nhiệt đơn.
Ví dụ: nếu một mẫu thuộc Danh mục 3, nhãn của mẫu đó có thể là:
[0, 0, 1, 0, 0]
Điều này giúp so sánh với đầu ra của mô hình và tính toán tổn thất dễ dàng hơn.
(4) Trong các hệ thống đề xuất và phân tích kinh doanh, mã hóa nhiệt độc lập cũng phổ biến
Ví dụ:
访问来源渠道
Các danh mục rời rạc này thường cần được mã hóa trước khi nhập các mô hình phân tích hoặc hệ thống khuyến nghị.
(5) Trong phân tích bảng, mã hóa nhiệt duy nhất thường được sử dụng để mở rộng các cột phân loại thành nhiều cột
Trong các công cụ xử lý dữ liệu thực tế, mã hóa nhiệt đơn lẻ thường biểu hiện là "mở rộng một trường danh mục thành nhiều cột 0/1". Điều này phổ biến đối với trực quan hóa, mô hình thống kê và kỹ thuật tính năng dạng bảng.
Tóm lại: biến danh mục cho biết "đối tượng này thuộc thể loại nào"; Mã hóa nhiệt đơn giải thích "cách danh mục này được mở rộng thành nhiều vị trí nhị phân có thể tính toán".
3. Sự khác biệt giữa mã hóa nhiệt đơn và mã hóa số nguyên
Một lý do quan trọng tại sao mã hóa nhiệt đơn lẻ thường được nhấn mạnh là về cơ bản nó khác với "đánh số trực tiếp".
1. Mã hóa số nguyên giới thiệu các mối quan hệ kích thước sai
Ví dụ: nếu màu được mã hóa là:
蓝色 = 3
Vì vậy, đối với nhiều mô hình, điều này trông giống như:
蓝色 > 绿色 > 红色
Nhưng bản thân màu sắc không có thứ tự số như vậy.
2. Mã nhiệt độc lập chỉ cho biết "liệu nó có thuộc danh mục hay không"
Ví dụ:
蓝色 → [0, 0, 1]
Mô hình này không thấy số nào lớn hơn mà chỉ thấy "vị trí nào được kích hoạt".
3. Phương pháp nào phù hợp hơn phụ thuộc vào việc các biến có theo thứ tự hay không
Nếu bản thân các danh mục có thứ tự rõ ràng, ví dụ:
大
Trong một số trường hợp, đánh số trực tiếp có thể không phù hợp.
Tuy nhiên, đối với hầu hết các biến lớp không có thứ tự (Biến danh nghĩa), mã hóa nhiệt đơn thường đáng tin cậy hơn.
Do đó, nó có thể được tóm tắt đơn giản là: Danh mục không có thứ tự: thường phù hợp hơn cho mã hóa nhiệt đơn; Danh mục theo thứ tự: Đôi khi bạn có thể xem xét giữ lại thông tin đơn hàng; không cần thiết phải mã hóa nó một cách duy nhất.
4. Các vấn đề cần lưu ý khi sử dụng mã hóa nhiệt độc lập
Mặc dù mã hóa Duke rất đơn giản và được sử dụng phổ biến, nhưng có một số vấn đề cần chú ý khi hiểu và sử dụng nó.
1. Càng nhiều danh mục, kích thước mã hóa càng cao
Nếu một biến danh mục chỉ có 3 giá trị, thì việc mã hóa nhiệt duy nhất rất đơn giản;
Nhưng nếu một biến có 1.000 hoặc 10.000 phạm trù khác nhau, vectơ được mã hóa bởi nhiệt riêng lẻ sẽ trở nên rất dài.
Điều này đặt ra hai câu hỏi:
• Kích thước tính năng tăng nhanh chóng
• Dữ liệu trở nên cực kỳ thưa thớt
Do đó, đối với các tính năng phân loại có số lượng cao, mã hóa nhiệt độc đáo không phải lúc nào cũng là lựa chọn tối ưu.
2. Bản thân mã hóa nhiệt không thể hiện sự tương đồng giữa các lớp
Trong phương pháp đơn mã nhiệt:
蓝色 → [0, 0, 1]
Các thể loại này về mặt số lượng "cách xa nhau" với nhau, khiến không thể phân biệt được danh mục nào gần ai hơn.
Điều này có nghĩa là mã hóa nhiệt đơn chỉ có thể phân biệt các danh mục và thường không thể thể hiện các mối quan hệ ngữ nghĩa phong phú hơn.
Đây cũng là lý do tại sao, trong xử lý ngôn ngữ tự nhiên, mã hóa nhiệt thường được thay thế bằng các phương pháp như nhúng từ.
3. Ánh xạ danh mục của các bộ đào tạo và kiểm tra phải nhất quán
Nếu "màu đỏ" tương ứng với cột đầu tiên và "màu xanh lá cây" tương ứng với cột thứ hai trong quá trình đào tạo, thì các quy tắc tương tự phải được duy trì trong quá trình thử nghiệm. Nếu không, mô hình sẽ coi cùng một danh mục là các đầu vào khác nhau, dẫn đến kết quả không chính xác.
4. Chú ý xem có "danh mục không nhìn thấy" hay không
Trong các ứng dụng thực tế, các danh mục mới có thể xuất hiện trong các bộ thử nghiệm hoặc dữ liệu mới không được nhìn thấy trong quá trình đào tạo.
Nếu các quy tắc mã hóa không tính đến điều này, nó có thể không xử lý được dữ liệu này một cách chính xác. Do đó, trong các hệ thống thực tế, thường cần phải xử lý thêm các vấn đề "danh mục không xác định".
5. Mã hóa nhiệt đơn lẻ phù hợp cho người mới bắt đầu và mô hình cơ bản, nhưng không phải lúc nào cũng là giải pháp tối ưu
Mã hóa nhiệt rất cơ bản và quan trọng, nhưng trong các tình huống thưa thớt chiều cao, nó có thể không hiệu quả lắm.
Do đó, trong một số công việc phức tạp hơn, người ta cũng cân nhắc:
• 目标编码(Mã hóa mục tiêu)
• 频次编码 (Mã hóa tần số)
• 嵌入表示 (Nhúng)
Tuy nhiên, từ góc độ đầu vào, Solo Hot Coding vẫn là một trong những điểm khởi đầu tốt nhất để hiểu cách số hóa dữ liệu được phân loại.
5. Ví dụ về Python
Dưới đây là hai ví dụ đơn giản để minh họa khái niệm cơ bản về mã hóa nhiệt và các dạng phổ biến của nó trong xử lý dữ liệu.
Ví dụ 1: Triển khai mã hóa đơn nhiệt đơn giản theo cách thủ công
Ví dụ này thể hiện ý tưởng cơ bản của mã hóa nhiệt solo: mỗi danh mục tương ứng với một vị trí cố định và danh mục thuộc vị trí nào được đặt thành 1.
Ví dụ 2: Sử dụng gấu trúc để mã hóa nhiệt solo
Ví dụ này minh họa cách tiếp cận phổ biến nhất trong xử lý bảng: một cột biến danh mục được mở rộng thành nhiều cột gồm 0/1 cột tính năng. Điều này làm cho dữ liệu phù hợp hơn để đưa vào các mô hình học máy.
Tóm tắt
Mã hóa nhiệt là một phương pháp cơ bản để chuyển đổi dữ liệu phân loại thành vectơ nhị phân. Bằng cách áp dụng nguyên tắc "một phạm trù tương ứng với một vị trí, làm sáng tỏ vị trí cho bất kỳ danh mục nào thuộc về", nó biến các nhãn danh mục không thể được tính toán trực tiếp thành các biểu diễn số có thể sử dụng để xử lý mô hình. Trong học máy, xử lý văn bản và kỹ thuật tính năng, mã hóa nhiệt rất phổ biến. Đối với người mới bắt đầu, nó có thể được hiểu là: nhãn ban đầu cho biết "nó thuộc lớp nào", trong khi mã nhiệt duy nhất giải thích "cách danh mục này được biểu diễn bằng một tập hợp các số 0 và 1 được chính quy hóa".