一、引言
在現(xiàn)實生活中,有許多只有正樣本和大量未標記樣本的例子。這是因為負類樣本的一些特點使得獲取負樣本較為困難。比如:
負類數(shù)據(jù)不易獲取。
負類數(shù)據(jù)太過多樣化。
負類數(shù)據(jù)動態(tài)變化。
舉一個形象點的例子:比如在推薦系統(tǒng)里,只有用戶點擊的正樣本,卻沒有顯性負樣本,我們不能因為用戶沒有點擊這個樣本就認為它是負樣本,因為有可能這個樣本的位置很偏,導致用戶沒有點。
因此,有研究人員開始關(guān)注PU Learning(Positive-unlabeled learning),即在只有正類數(shù)據(jù)和無標記數(shù)據(jù)的情況下,訓練binary classifier。PU Learning是半監(jiān)督學習的一個重要研究方向,伊利諾伊大學芝加哥分校(UIC)的劉兵(Bing Liu)教授和日本理化研究所的杉山將(Masashi Sugiyama)實驗室對PU Learning有較深的研究。他們在AAAI、NIPS、ICML等頂級會議上發(fā)表了很多關(guān)于PU Learning的文章。詳細見參考文獻【3】【4】。
我們在本篇博客中重點介紹常見且實操性比較強的PU learning的技巧。
二、PU learning的一些技巧
人們對PU learning的方法一直非常感興趣。 由于標準機器學習問題(利用大量正面和負面樣本用于訓練模型)有了充分的發(fā)展,因此在監(jiān)督學習的基礎(chǔ)上,有許多方法經(jīng)過巧妙調(diào)整可以來進行PU learning。
下面對這些技巧進行簡要的總結(jié)。
2.1 直接利用標準分類方法
直接利用標準分類方法是這樣的:將正樣本和未標記樣本分別看作是positive samples和negative samples, 然后利用這些數(shù)據(jù)訓練一個標準分類器。分類器將為每個物品打一個分數(shù)(概率值)。通常正樣本分數(shù)高于負樣本的分數(shù)。因此對于那些未標記的物品,分數(shù)較高的最有可能為positive。
這種樸素的方法在文獻Learning classifiers from only positive and unlabeled data KDD 2018 中有介紹。該論文的核心結(jié)果是,在某些基本假設(shè)下(雖然對于現(xiàn)實生活目的而言可能稍微不合理),合理利用正例和未貼標簽數(shù)據(jù)進行訓練得到的標準分類器應(yīng)該能夠給出與實際正確分數(shù)成正比的分數(shù)。
2.2 PU bagging
一個更加復雜的方法是bagging的變種:
通過將所有正樣本和未標記樣本進行隨機組合來創(chuàng)建訓練集。
利用這個“bootstrap”樣本來構(gòu)建分類器,分別將正樣本和未標記樣本視為positive和negative。
將分類器應(yīng)用于不在訓練集中的未標記樣本 - OOB(“out of bag”)- 并記錄其分數(shù)。
重復上述三個步驟,最后為每個樣本的分數(shù)為OOB分數(shù)的平均值。
這是一種bootstrap的方法,可以理解為之前我們會想到隨機抽取一部分未標記樣本U作為負樣本來訓練,在這里會設(shè)置迭代次數(shù)T,根據(jù)正樣本的個數(shù),每次都隨機可重復地從U中選取和P數(shù)量相同的樣本作為負樣本N,并打上標簽,每次迭代都重復進行取樣->建模->預(yù)測的過程,最后的預(yù)測概率使用T次迭代的平均值作為最終預(yù)測的概率。
參考文獻:A bagging SVM to learn from positive and unlabeled examples ,PRL 2014
2.3 兩步法
大部分的PU learning策略屬于 “two-step approaches”。該方法的思想也很直觀:
識別可以百分之百標記為negative的未標記樣本子集(這些樣本稱為“reliable negatives”。)所謂的百分之百只是一個夸張的說法,通常我們可以用正樣本和未標記樣本訓練一個模型,然后對未標記樣本進行預(yù)測,按照概率排序,選取前面的樣本作為reliable negatives。
使用正負樣本來訓練標準分類器并將其應(yīng)用于剩余的未標記樣本。
通常,會將第二步的結(jié)果返回到第一步并重復上述步驟。即每一輪循環(huán)都會找出那些所謂百分之百的正樣本和負樣本,加入到訓練集里,重新預(yù)測剩余的未標記樣本,直到滿足停止條件為止。
參考文獻:An Evaluation of Two-Step Techniques for Positive-Unlabeled Learning in Text Classification
三、代碼實現(xiàn)
參考文獻【1】【2】給出了以上3種方法的代碼。參考文獻【7】給出了第2種方法的代碼。
我們以參考文獻【1】【2】為例:作者在多種人工數(shù)據(jù)集和多個正樣本比例上做了大量的實驗,也對比了決策樹和SVM作為基學習器的效果。實驗完備詳細,代碼清晰易懂。
囿于篇幅,我們從中挑選出一個例子,進行介紹:
人工構(gòu)造了Circles數(shù)據(jù)集,如下圖所示:
上圖一共有6000個樣本點,真實得正樣本和負樣本均為3000個,只不過,我們只知道其中300個正樣本,剩余的5700個樣本認為是unlabeled樣本。在該數(shù)據(jù)集上,分別應(yīng)用以上3種方法,結(jié)果分別為:
我們對比一下3種方法的性能,這里的性能指的是:對于預(yù)測的樣本(5700個),依次取前100,200,300直到2700個(剩余的真的正樣本的個數(shù))樣本,看下取出的這些樣本真正是正樣本的概率。(看不明白的,可以詳細看下代碼)。
圖中Average score是3種方法的平均。可以看出來,在有300個正樣本的Circles數(shù)據(jù)集上,PU bagging的方法最好。
根據(jù)參考文獻【1】的所有實驗,我總結(jié)出以下的結(jié)果,詳細請參考原文:
注:所有的數(shù)據(jù)集都是6000個樣本,2類,每一類為3000個。我們已知的正樣本的數(shù)目為hidden_size。
①對于Circles數(shù)據(jù)集:
hidden_size為1000時,Standard方法最好,PU bagging最差。
hidden_size為300時,PU bagging方法最好,Standard最差。
hidden_size為30時,PU bagging方法最好,Standard最差。
②對于Two moon數(shù)據(jù)集:
hidden_size為1000時,Standard方法最好,PU bagging最差。
hidden_size為300時,PU bagging方法最好,Standard最差。
hidden_size為30時,PU bagging方法最好,Standard最差。
③對于Blobs數(shù)據(jù)集:
hidden_size為1000時,Standard方法最好,PU bagging最差。
hidden_size為300時,PU bagging方法最好,Standard最差。
hidden_size為30時,PU bagging方法最好,Standard最差。
④對于PU bagging方法:
決策樹作為基分類器的效果比起SVM作為基分類器的效果差。
通過上述的結(jié)果,和各個方法的理論,是否可以大膽做出一個結(jié)論呢?即隨著已知正樣本比例的減少,PU bagging最好,Standard最差,兩步法居中。如果我們的正樣本的比例只占全部樣本的很小的部分,根據(jù)上述的結(jié)論,應(yīng)該選用PU bagging策略。
參考文獻
【1】Positive-unlabeled learning
【2】PU learning techniques applied to artificial data
【3】Masashi Sugiyama’s Publications
【4】PU Learning - Learning from Positive and Unlabeled Examples
【5】只有正樣本和未標簽數(shù)據(jù)的機器學習怎么做?
【6】Positive-unlabeled learning
【7】PU_Learning_simple_example.ipynb
---------------------?
作者:anshuai_aw1?
來源:CSDN?
原文:https://blog.csdn.net/anshuai_aw1/article/details/89475986?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

