您當前的位置:首頁 > 動漫

PU-learing:解決正負樣本不足利器(R語言)

作者:由 文武 發表于 動漫時間:2019-03-03

原文連結:PU-learing:解決正負樣本不足利器(R語言)

微信公眾號

:機器學習養成記

在實際分類場景中,經常會遇到類似這樣的問題:

只有標記了的正樣本,和未標記的樣本

。比如金融風控場景,有一部分使用者被標記為欺詐使用者,剩下的使用者未被標記,雖然這其中大多數信用良好,但仍有少量可能為欺詐使用者。雖然為了方便操作,可以將未標記的樣本都作為負樣本進行訓練,但會降低準確度,如何辨別未標記樣本中的正負樣本,提升模型準確度,就成為一個值得思考的問題。PU-learning演算法於2002年提出,最早用來解決文字分類問題,並延伸到基因識別、反欺詐等諸多領域,是解決樣本未標記問題的利器,本文將對此演算法進行介紹,並透過R語言進行例項演示。

PU-learning演算法

我們通常進行的分類學習,一般是有監督學習,即從確定的正負樣本中學習規律,對新資料進行預測。在實際業務場景中,可能會因為資料積累不夠、標註資料成本高等問題,使得資料樣本不豐富。PU-learning是一種

半監督

學習演算法,主要用來解決可以清晰確定正樣本但不能確定負樣本的問題。

建立PU分類器的

基本思想

是兩步法:1、從未標註樣本中找到可靠負例(RN)。2、用確定的正例和可靠負例訓練分類器。

確定可靠負例(RN)

尋找可靠負例的方法有樸素貝葉斯、Spy、1-DNF等,下面選取Spy方法進行介紹並演示。

PU-learing:解決正負樣本不足利器(R語言)

其中,一般從P中選擇15%樣本作為S,tr指判斷為正例的機率。閾值tr的選擇上,

應滿足S中正例錯誤率低於1-r的條件下,最小化U中正例數目

訓練分類器

在得到RN後,用P和RN透過傳統機器學習分類演算法,訓練分類器,預測新樣本。

R語言實現

step1:匯入資料,並劃分P和U集合。

PU-learing:解決正負樣本不足利器(R語言)

step2:隨機抽取p中15%樣本作為集合s,並建立ps和us集合。

PU-learing:解決正負樣本不足利器(R語言)

step3:使用樸素貝葉斯分類,對ps和us訓練分類器,並作用到u集合上,計算每個樣本的分類機率。樸素貝葉斯分類可用e1071包中的naiveBays函式。

PU-learing:解決正負樣本不足利器(R語言)

step4:使用s確定閾值tr,並將分類機率小於tr的u中樣本加入rn。這裡為了簡化操作,選擇s中所有樣本分類機率的10%分位點作為tr。

PU-learing:解決正負樣本不足利器(R語言)

step5:使用p和rn訓練svm分類器,並對測試集test進行預測,透過混淆矩陣觀察分類效果。svm分類器可用e1071包中對svm函式實現。

PU-learing:解決正負樣本不足利器(R語言)

最終混淆矩陣效果為:

PU-learing:解決正負樣本不足利器(R語言)

推薦文章

·

Bagging演算法(R語言)

·

靜態爬蟲與地址經緯度轉換(python)

·

特徵工程(一):前向逐步迴歸(R語言)

·

聚類(三):KNN演算法(R語言)

·

小案例(六):預測小偷行為(python)

·

ggplot2:正負區分條形圖及美化

PU-learing:解決正負樣本不足利器(R語言)

掃描二維碼,關注我們。

如需轉載,請在開篇顯著位置註明作者和出處,並在文末放置機器學習養成記二維碼和新增原文連結。

快來關注我們吧!

PU-learing:解決正負樣本不足利器(R語言)

標簽: 樣本  分類器  分類  演算法  PU