多標(biāo)簽分類怎么做杭措?(Python)

一、基本介紹

首先簡單介紹下钾恢,多標(biāo)簽分類與多分類手素、多任務(wù)學(xué)習(xí)的關(guān)系:

  • 多分類學(xué)習(xí)(Multi-class):分類器去劃分的類別是多個的,但對于每一個樣本只能有一個類別瘩蚪,類別間是互斥的泉懦。例如:分類器判斷這只動物是貓、狗疹瘦、豬崩哩,每個樣本只能有一種類別,就是一個三分類任務(wù)拱礁。常用的做法是OVR琢锋、softmax多分類
  • 多標(biāo)簽學(xué)習(xí)(Multi-label ):對于每一個樣本可能有多個類別(標(biāo)簽)的任務(wù)辕漂,不像多分類任務(wù)的類別是互斥呢灶。例如判斷每一部電影的標(biāo)簽可以是多個的吴超,比如有些電影標(biāo)簽是【科幻、動作】鸯乃,有些電影是【動作鲸阻、愛情、諜戰(zhàn)】缨睡。需要注意的是鸟悴,每一樣本可能是1個類別,也可能是多個奖年。而且细诸,類別間通常是有所聯(lián)系的,一部電影有科幻元素 同時也大概率有動作篇元素的陋守。


  • 多任務(wù)學(xué)習(xí)(Multi-task):
    基于共享表示(shared representation)震贵,多任務(wù)學(xué)習(xí)是通過合并幾個任務(wù)中的樣例(可以視為對參數(shù)施加的軟約束)來提高泛化的一種方式。額外的訓(xùn)練樣本以同樣的方式將模型的參數(shù)推向泛化更好的方向水评,當(dāng)模型的一部分在任務(wù)之間共享時猩系,模型的這一部分更多地被約束為良好的值(假設(shè)共享是合理的),往往能更好地泛化中燥。某種角度上寇甸,多標(biāo)簽分類可以看作是一種多任務(wù)學(xué)習(xí)的簡單形式。


二疗涉、多標(biāo)簽分類實現(xiàn)

實現(xiàn)多標(biāo)簽分類算法有DNN拿霉、KNN、ML-DT咱扣、Rank-SVM绽淘、CML,像決策樹DT偏窝、最近鄰KNN這一類模型收恢,從原理上面天然可調(diào)整適應(yīng)多標(biāo)簽任務(wù)的(多標(biāo)簽適應(yīng)法),按同一劃分/近鄰的客群中各標(biāo)簽的占比什么的做下排序就可以做到了祭往。

這里著重介紹下伦意,比較通用的多標(biāo)簽實現(xiàn)思路,大致有以下4種:

方法一:多分類思路

簡單粗暴硼补,直接把不同標(biāo)簽組合當(dāng)作一個類別驮肉,作為一個多分類任務(wù)來學(xué)習(xí)。如上述 【科幻已骇、動作】离钝、【動作票编、愛情、諜戰(zhàn)】卵渴、【科幻慧域、愛情】就可以看作一個三分類任務(wù)。這種方法前提是標(biāo)簽組合是比較有限的浪读,不然標(biāo)簽會非常稀疏沒啥用昔榴。

方法二:OVR二分類思路

也挺簡單的。將多標(biāo)簽問題轉(zhuǎn)成多個二分類模型預(yù)測的任務(wù)碘橘。如電影總的子標(biāo)簽有K個互订,劃分出K份數(shù)據(jù),分別訓(xùn)練K個二分類模型痘拆,【是否科幻類仰禽、是否動作類....第K類】,對于每個樣本預(yù)測K次打出最終的標(biāo)簽組合纺蛆。

這種方法簡單靈活吐葵,但是缺點是也很明顯,各子標(biāo)簽間的學(xué)習(xí)都是獨立的(可能是否科幻類對判定是否動作類的是有影響)犹撒,忽略了子標(biāo)簽間的聯(lián)系折联,丟失了很多信息。

對應(yīng)的方法有sklearn的OneVsRestClassifier方法识颊,

from xgboost import XGBClassifier
from sklearn.multiclass import OneVsRestClassifier
import numpy as np

clf_multilabel = OneVsRestClassifier(XGBClassifier())

train_data = np.random.rand(500, 100)  # 500 entities, each contains 100 features
train_label = np.random.randint(2, size=(500,20))  # 20 targets

val_data = np.random.rand(100, 100)

clf_multilabel.fit(train_data,train_label)
val_pred = clf_multilabel.predict(val_data)

方法三:二分類改良

在方法二的基礎(chǔ)上進行改良诚镰,即考慮標(biāo)簽之間的關(guān)系。 每一個分類器的預(yù)測結(jié)果將作為一個數(shù)據(jù)特征傳給下一個分類器祥款,參與進行下一個類別的預(yù)測清笨。該方法的缺點是分類器之間的順序會對模型性能產(chǎn)生巨大影響。

方法四:多個輸出的神經(jīng)網(wǎng)絡(luò)

這以與多分類方法類似刃跛,但不同的是這里神經(jīng)網(wǎng)絡(luò)的多個輸出抠艾,輸出層由多個的sigmoid+交叉熵組成,并不是像softmax各輸出是互斥的桨昙。

如下構(gòu)建一個輸出為3個標(biāo)簽的概率的多標(biāo)簽?zāi)P图旌牛P褪枪灿靡惶咨窠?jīng)網(wǎng)絡(luò)參數(shù),各輸出的是獨立(bernoulli分布)的3個標(biāo)簽概率

## 多標(biāo)簽 分類
from keras.models import Model
from keras.layers import Input,Dense

inputs = Input(shape=(15,))
hidden = Dense(units=10,activation='relu')(inputs)
output = Dense(units=3,activation='sigmoid')(hidden)
model=Model(inputs=inputs, outputs=output)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()

# 訓(xùn)練模型蛙酪,x特征齐苛,y為多個標(biāo)簽
model.fit(x, y.loc[:,['LABEL','LABEL1','LABEL3']], epochs=3)

通過共享的模型參數(shù)來完成多標(biāo)簽分類任務(wù),在考慮了標(biāo)簽間的聯(lián)系的同時桂塞,共享網(wǎng)絡(luò)參數(shù)可以起著模型正則化的作用凹蜂,可能對提高模型的泛化能力有所幫助的(在個人驗證中,測試集的auc漲了1%左右)。這一點和多任務(wù)學(xué)習(xí)是比較有聯(lián)系的玛痊,等后面有空再好好研究下多任務(wù)汰瘫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市擂煞,隨后出現(xiàn)的幾起案子混弥,更是在濱河造成了極大的恐慌,老刑警劉巖颈娜,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剑逃,死亡現(xiàn)場離奇詭異浙宜,居然都是意外死亡官辽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門粟瞬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來同仆,“玉大人,你說我怎么就攤上這事裙品∷着” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵市怎,是天一觀的道長岁忘。 經(jīng)常有香客問我,道長区匠,這世上最難降的妖魔是什么干像? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮驰弄,結(jié)果婚禮上麻汰,老公的妹妹穿的比我還像新娘。我一直安慰自己戚篙,他們只是感情好五鲫,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岔擂,像睡著了一般位喂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乱灵,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天塑崖,我揣著相機與錄音,去河邊找鬼阔蛉。 笑死弃舒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播聋呢,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼苗踪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了削锰?” 一聲冷哼從身側(cè)響起通铲,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎器贩,沒想到半個月后颅夺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡蛹稍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年吧黄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唆姐。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡拗慨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奉芦,到底是詐尸還是另有隱情赵抢,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布声功,位于F島的核電站烦却,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏先巴。R本人自食惡果不足惜其爵,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筹裕。 院中可真熱鬧醋闭,春花似錦、人聲如沸朝卒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抗斤。三九已至囚企,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瑞眼,已是汗流浹背龙宏。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伤疙,地道東北人银酗。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓辆影,卻偏偏與公主長得像,于是被迫代替她去往敵國和親黍特。 傳聞我的和親對象是個殘疾皇子蛙讥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容