一、 MLkNN是什麼
1、MLkNN全稱為Multi-Label k-Nearest Neighbor。它是一種基於kNN算法的多標籤分類算法。
2、其思想是將每個標籤看作一維空間,在這個N維空間中,將每個樣本看作一個點,儘可能保證樣本點與其所屬的N個標籤點的距離比離其它標籤點更近,從而將樣本分類。
3、MLkNN算法的主要思路是對每個標籤獨立運用k-NN算法確定該標籤的可能取值範圍。而對於每個標籤來說,所確定的可能取值範圍可以是任何子集。
二、 MLkNN的實現原理
1、首先,利用訓練數據建立一個多標籤模型。同時,構建一個詞典,其中包含了每個標籤的所有可能取值。
from skmultilearn.adapt import MLkNN
from sklearn.metrics import accuracy_score
model = MLkNN(k=20)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print("Accuracy = ", accuracy_score(y_test, predictions))
其中,k是最近鄰的數目。建模時需要輸入權重改變策略,有標籤計數、平等、對數等多種選項。
2、模型得出多個相似度值時,則取目標值最大的標籤作為預測的分類。
y_train_pred = model.predict_proba(X_train)
y_test_pred = model.predict_proba(X_test)
三、 MLkNN的優缺點
1、優點:
1.1 適用於訓練集的數據量較大,但標籤數相對不大的情況,例如文本分類、圖片標註等任務;
1.2 準確度較高,尤其針對單標籤,使得模型的泛化能力較好;
1.3 比起傳統機器學習算法,運行時間較短;
1.4 將訓練階段和測試階段的計算分開,可以並行計算,這使得算法的效率更高。
2、缺點:
2.1 MLkNN模型對數據集的特徵較為敏感,因此需要利用一些特徵選擇的方法來進行降維;
2.2 MLkNN的計算方式在訓練集非常大時,計算量較大;
2.3 對於標籤取值的不平衡情況,模型的表現較為糟糕,需要進行平衡處理。
四、 MLkNN的應用案例
1、文本分類:MLkNN主要應用於文本的多標籤分類。例如,為文章標註多個標籤,使其最終能夠被準確分類至目標標籤中。
2、音樂分類:利用MLkNN算法,對音樂集合進行分類,既可以從風格的角度劃分,也可以從情感色調的角度進行劃分。
3、視頻分類:針對大量的視頻標籤進行分類,例如對視頻屬性進行標註(如情感、性別、年齡、場景等)。
import numpy as np
from skmultilearn.dataset import load_dataset
from skmultilearn.model_selection import iterative_train_test_split
from skmultilearn.adapt import MLkNN
from sklearn.metrics import accuracy_score
X, y = load_dataset('scene')
X_train, y_train, X_test, y_test = iterative_train_test_split(X, y, test_size = 0.2)
model = MLkNN(k=20)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print("Accuracy = ", accuracy_score(y_test, predictions))
原創文章,作者:YDBK,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/136542.html