PU learning簡介


一、引言
在現實生活中,有許多只有正樣本和大量未標記樣本的例子。這是因為負類樣本的一些特點使得獲取負樣本較為困難。比如:

負類數據不易獲取。
負類數據太過多樣化。
負類數據動態變化。
舉一個形象點的例子:比如在推薦系統里,只有用戶點擊的正樣本,卻沒有顯性負樣本,我們不能因為用戶沒有點擊這個樣本就認為它是負樣本,因為有可能這個樣本的位置很偏,導致用戶沒有點。

因此,有研究人員開始關注PU Learning(Positive-unlabeled learning),即在只有正類數據和無標記數據的情況下,訓練binary classifier。PU Learning是半監督學習的一個重要研究方向,伊利諾伊大學芝加哥分校(UIC)的劉兵(Bing Liu)教授和日本理化研究所的杉山將(Masashi Sugiyama)實驗室對PU Learning有較深的研究。他們在AAAI、NIPS、ICML等頂級會議上發表了很多關於PU Learning的文章。詳細見參考文獻【3】【4】。

我們在本篇博客中重點介紹常見且實操性比較強的PU learning的技巧。

二、PU learning的一些技巧
人們對PU learning的方法一直非常感興趣。 由於標准機器學習問題(利用大量正面和負面樣本用於訓練模型)有了充分的發展,因此在監督學習的基礎上,有許多方法經過巧妙調整可以來進行PU learning。

下面對這些技巧進行簡要的總結。

2.1 直接利用標准分類方法
直接利用標准分類方法是這樣的:將正樣本和未標記樣本分別看作是positive samples和negative samples, 然后利用這些數據訓練一個標准分類器。分類器將為每個物品打一個分數(概率值)。通常正樣本分數高於負樣本的分數。因此對於那些未標記的物品,分數較高的最有可能為positive。

這種朴素的方法在文獻Learning classifiers from only positive and unlabeled data KDD 2018 中有介紹。該論文的核心結果是,在某些基本假設下(雖然對於現實生活目的而言可能稍微不合理),合理利用正例和未貼標簽數據進行訓練得到的標准分類器應該能夠給出與實際正確分數成正比的分數。

2.2 PU bagging
一個更加復雜的方法是bagging的變種:

通過將所有正樣本和未標記樣本進行隨機組合來創建訓練集。
利用這個“bootstrap”樣本來構建分類器,分別將正樣本和未標記樣本視為positive和negative。
將分類器應用於不在訓練集中的未標記樣本 - OOB(“out of bag”)- 並記錄其分數。
重復上述三個步驟,最后為每個樣本的分數為OOB分數的平均值。
這是一種bootstrap的方法,可以理解為之前我們會想到隨機抽取一部分未標記樣本U作為負樣本來訓練,在這里會設置迭代次數T,根據正樣本的個數,每次都隨機可重復地從U中選取和P數量相同的樣本作為負樣本N,並打上標簽,每次迭代都重復進行取樣->建模->預測的過程,最后的預測概率使用T次迭代的平均值作為最終預測的概率。

參考文獻:A bagging SVM to learn from positive and unlabeled examples ,PRL 2014

2.3 兩步法
大部分的PU learning策略屬於 “two-step approaches”。該方法的思想也很直觀:

識別可以百分之百標記為negative的未標記樣本子集(這些樣本稱為“reliable negatives”。)所謂的百分之百只是一個誇張的說法,通常我們可以用正樣本和未標記樣本訓練一個模型,然后對未標記樣本進行預測,按照概率排序,選取前面的樣本作為reliable negatives。
使用正負樣本來訓練標准分類器並將其應用於剩余的未標記樣本。
通常,會將第二步的結果返回到第一步並重復上述步驟。即每一輪循環都會找出那些所謂百分之百的正樣本和負樣本,加入到訓練集里,重新預測剩余的未標記樣本,直到滿足停止條件為止。

參考文獻:An Evaluation of Two-Step Techniques for Positive-Unlabeled Learning in Text Classification

三、代碼實現
參考文獻【1】【2】給出了以上3種方法的代碼。參考文獻【7】給出了第2種方法的代碼。

我們以參考文獻【1】【2】為例:作者在多種人工數據集和多個正樣本比例上做了大量的實驗,也對比了決策樹和SVM作為基學習器的效果。實驗完備詳細,代碼清晰易懂。

囿於篇幅,我們從中挑選出一個例子,進行介紹:

人工構造了Circles數據集,如下圖所示:


上圖一共有6000個樣本點,真實得正樣本和負樣本均為3000個,只不過,我們只知道其中300個正樣本,剩余的5700個樣本認為是unlabeled樣本。在該數據集上,分別應用以上3種方法,結果分別為:


我們對比一下3種方法的性能,這里的性能指的是:對於預測的樣本(5700個),依次取前100,200,300直到2700個(剩余的真的正樣本的個數)樣本,看下取出的這些樣本真正是正樣本的概率。(看不明白的,可以詳細看下代碼)。


圖中Average score是3種方法的平均。可以看出來,在有300個正樣本的Circles數據集上,PU bagging的方法最好。

根據參考文獻【1】的所有實驗,我總結出以下的結果,詳細請參考原文:

注:所有的數據集都是6000個樣本,2類,每一類為3000個。我們已知的正樣本的數目為hidden_size。

①對於Circles數據集:

hidden_size為1000時,Standard方法最好,PU bagging最差。
hidden_size為300時,PU bagging方法最好,Standard最差。
hidden_size為30時,PU bagging方法最好,Standard最差。
②對於Two moon數據集:

hidden_size為1000時,Standard方法最好,PU bagging最差。
hidden_size為300時,PU bagging方法最好,Standard最差。
hidden_size為30時,PU bagging方法最好,Standard最差。
③對於Blobs數據集:

hidden_size為1000時,Standard方法最好,PU bagging最差。
hidden_size為300時,PU bagging方法最好,Standard最差。
hidden_size為30時,PU bagging方法最好,Standard最差。
④對於PU bagging方法:
決策樹作為基分類器的效果比起SVM作為基分類器的效果差。

通過上述的結果,和各個方法的理論,是否可以大膽做出一個結論呢?即隨着已知正樣本比例的減少,PU bagging最好,Standard最差,兩步法居中。如果我們的正樣本的比例只占全部樣本的很小的部分,根據上述的結論,應該選用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】只有正樣本和未標簽數據的機器學習怎么做?
【6】Positive-unlabeled learning
【7】PU_Learning_simple_example.ipynb


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM