One hot encoding là gì?

Noun AI Machine learning NLP
one-hot encoding

Trong xử lý ngôn ngữ tự nhiên (NLP), one hot encoding là một biểu diễn vector của các từ (word) trong một từ vựng (vocabulary). Mỗi từ trong từ vựng được biểu diễn bằng một vectơ có kích thước n, trong đó n là tổng số từ trong từ vựng. Trong vectơ này có một phần tử được đặt thành 1 và tất cả các phần tử được đặt thành 0. Ví dụ: nếu một từ vựng chứa 10 từ, thì vectơ tương ứng với mỗi từ sẽ có kích thước là 10 và kích thước cũng vậy với các giá trị nhị phân như 0 và 1.

One hot encoding có sẵn trong thư viện học máy (machine learning library) scikit-learning thông qua lớp (class) OneHotEncoder.

Chúng ta có thể chứng minh việc sử dụng OneHotEncoder trên các lớp (category) màu sắc. Đầu tiên, các lớp được sắp xếp, trong trường hợp này theo thứ tự bảng chữ cái vì chúng là các chuỗi (string), sau đó các biến nhị phân (binary variable) lần lượt được tạo cho từng lớp. Điều này có nghĩa là màu xanh lam sẽ được biểu thị là [1, 0, 0] với "1" cho biến nhị phân đầu tiên, sau đó là màu xanh lá cây, rồi cuối cùng là màu đỏ.

Ví dụ đầy đủ được liệt kê dưới đây.


from numpy import asarray
from sklearn.preprocessing import OneHotEncoder
# define data
data = asarray([['red'], ['green'], ['blue']])
print(data)
# define one hot encoding
encoder = OneHotEncoder(sparse=False)
# transform data
onehot = encoder.fit_transform(data)
print(onehot)

Chạy ví dụ đầu tiên liệt kê ba hàng dữ liệu nhãn, sau đó là một one hot encoding phù hợp với kỳ vọng của chúng ta về 3 biến nhị phân theo thứ tự "xanh lam", "xanh lá cây" và "đỏ".

Output:


[['red']
 ['green']
 ['blue']]
[[0. 0. 1.]
 [0. 1. 0.]
 [1. 0. 0.]]

Learning English Everyday