无偏PU learning简介
PU learning
背景
PU learning(positive-unlabeled learning),即我們只有正樣本和未標注的樣本,以此進行分類學習。
其可在以下幾個領域內應用:
檢索
從大量無標注的樣本中選取特定的樣本,比如人臉標注
異常檢測
包括inlier-based outlier 檢測
序列數據檢測
負樣本的分布隨著時間改變,這樣傳統的分類將不再適合,PU 只需要更新未標注樣本,這樣的花銷更小,比如垃圾郵件檢測,由于存在對抗,負樣本(垃圾郵件)的形式一直在變,而非垃圾則一般相對穩定狀態。
本文介紹了最近pu learning的幾個研究進展。
PU 分類
目前 PU的方法可分為兩類;
第一類方法
也稱為兩步法:從unlabeled 數據識別出有效的負樣本,然后利用正負樣本訓練分類器。
第二類方法
全部將未標注的樣本作為負樣本訓練,同時將負樣本的賦予一個較小的權重值。
然而,第一類方法在識別有效負樣本時比較依賴于經驗,需要對相關的業務背景有良好的理解;第二類方法則依賴于未標注樣本權重的設置,并且如果loss函數不合適,將存在biased誤差。在第二類方法中,為了改進目前學習存在偏差的問題,無偏 PU learning被引入。
uPU learning
我們有一個正的數據集χ \chiχ,一個未標注數據集χ ′ \chi'χ?
′
?,即
χ : = { x i } i = 1 n ??= p ( x ∣ y = 1 ) χ ′ : = { x j ′ } j = 1 n ′ ??= p ( x ) p ( x ) : = π p ( x ∣ y = 1 ) + ( 1 ? π ) p ( x ∣ y = ? 1 ) \chi:=\{x_i\}_{i=1}^n ~=p(x|y=1)\\ \chi':=\{x_j'\}_{j=1}^{n'}~=p(x)\\ p(x):=\pi p(x|y=1)+(1-\pi)p(x|y=-1)
χ:={x?
i
??? ?
?}?
i=1
n
??? ?
??=p(x∣y=1)
χ?
′
?:={x?
j
′
??? ?
?}?
j=1
n?
′
?
??? ?
??=p(x)
p(x):=πp(x∣y=1)+(1?π)p(x∣y=?1)
其中π \piπ是unlabel樣本中正樣本的比例,為超參數。
對于普通的分類
R ^ p n ( g ) = π p R ^ p + + π n R ^ n ? ( g ) ? ? ? ? ? ( 1 ) \hat R_{pn}(g)=\pi_p\hat R_p^{+} + \pi_n \hat R_n^{-}(g) -----(1)
R
^
??
pn
??? ?
?(g)=π?
p
??? ?
??
R
^
??
p
+
??? ?
?+π?
n
??? ?
??
R
^
??
n
?
??? ?
?(g)?????(1)
風險函數
R u ? ( g ) = 1 n ? ∑ x = 1 n ? l ( g ( x i ) , ? 1 ) = ∑ x p ( x ) l ( g ( x i ) , ? 1 ) = ∑ x p ( y = 1 ) p ( x ∣ y = 1 ) l ( g ( x i ) , ? 1 ) + ∑ x p ( y = ? 1 ) p ( x ∣ y = ? 1 ) l ( g ( x i ) , ? 1 ) = π p ∑ x p ( x ∣ y = 1 ) l ( g ( x i ) , ? 1 ) + ( 1 ? π p ) ∑ x p ( x ∣ y = ? 1 ) l ( g ( x i ) , ? 1 ) = π p ∑ x p p ( x ) l ( g ( x ( x i ) , ? 1 ) ) + ( 1 ? π p ) ∑ x n p ( x ) l ( g ( x i ) , ? 1 ) = π p R p ? + ( 1 ? π p ) R n ? R_u^-(g)=\frac{1}{n^-}\sum^{n^-}_{x=1}l(g(x_i),-1)\\ =\sum_xp(x)l(g(x_i),-1)\\ =\sum_xp(y=1)p(x|y=1)l(g(x_i),-1)+\sum_xp(y=-1)p(x|y=-1)l(g(x_i),-1)\\ =\pi_p \sum_x p(x|y=1)l(g(x_i),-1) + (1-\pi_p)\sum_xp(x|y=-1)l(g(x_i),-1)\\ =\pi_p\sum_{x_p}p(x)l(g(x(x_i),-1)) + (1-\pi_p)\sum_{x_n}p(x)l(g(x_i),-1)\\ =\pi_pR_p^{-} + (1-\pi_p)R_n^{-}
R?
u
?
??? ?
?(g)=?
n?
?
?
1
??? ?
??
x=1
∑
n?
?
?
??? ?
?l(g(x?
i
??? ?
?),?1)
=?
x
∑
??? ?
?p(x)l(g(x?
i
??? ?
?),?1)
=?
x
∑
??? ?
?p(y=1)p(x∣y=1)l(g(x?
i
??? ?
?),?1)+?
x
∑
??? ?
?p(y=?1)p(x∣y=?1)l(g(x?
i
??? ?
?),?1)
=π?
p
??? ?
??
x
∑
??? ?
?p(x∣y=1)l(g(x?
i
??? ?
?),?1)+(1?π?
p
??? ?
?)?
x
∑
??? ?
?p(x∣y=?1)l(g(x?
i
??? ?
?),?1)
=π?
p
??? ?
??
x?
p
??? ?
?
∑
??? ?
?p(x)l(g(x(x?
i
??? ?
?),?1))+(1?π?
p
??? ?
?)?
x?
n
??? ?
?
∑
??? ?
?p(x)l(g(x?
i
??? ?
?),?1)
=π?
p
??? ?
?R?
p
?
??? ?
?+(1?π?
p
??? ?
?)R?
n
?
??? ?
?
因此對于PU learning 其風險函數為
R ^ p u ( g ) = π p R ^ p + ( g ) ? π p R ^ p ? ( g ) + R ^ u ? ( g ) ? ? ? ? ? ( 2 ) \hat R_{pu}(g)=\pi_p \hat R_p^{+}(g) - \pi_p \hat R_p^{-}(g)+\hat R_u^{-}(g)----- (2)
R
^
??
pu
??? ?
?(g)=π?
p
??? ?
??
R
^
??
p
+
??? ?
?(g)?π?
p
??? ?
??
R
^
??
p
?
??? ?
?(g)+?
R
^
??
u
?
??? ?
?(g)?????(2)
其中:R ^ p + ( g ) = ( 1 / n p ) ∑ i = 1 n p ? ( g ( x i p ) , + 1 ) \hat R_p^{+} (g) = (1/{n_p})\sum \limits_{i = 1}^{{n_p}} \ell (g(x_i^p), + 1)?
R
^
??
p
+
??? ?
?(g)=(1/n?
p
??? ?
?)?
i=1
∑
n?
p
??? ?
?
??? ?
??(g(x?
i
p
??? ?
?),+1) , R ^ u ? ( g ) = ( 1 / n u ) ∑ i = 1 n u ? ( g ( x i u ) , ? 1 ) \hat R_u^ - (g) = (1/{n_u})\sum \limits_{i = 1}^{{n_u}} \ell (g(x_i^u), - 1)?
R
^
??
u
?
??? ?
?(g)=(1/n?
u
??? ?
?)?
i=1
∑
n?
u
??? ?
?
??? ?
??(g(x?
i
u
??? ?
?),?1),R ^ p ? ( g ) = ( 1 / n p ) ∑ i = 1 n p ? ( g ( x i p ) , ? 1 ) \hat R_p^{-} (g) = (1/{n_p})\sum \limits_{i = 1}^{{n_p}} \ell (g(x_i^p), -1)?
R
^
??
p
?
??? ?
?(g)=(1/n?
p
??? ?
?)?
i=1
∑
n?
p
??? ?
?
??? ?
??(g(x?
i
p
??? ?
?),?1)
上式子的empirical risk estimators函數是無偏的。當損失函數滿足一個對稱條件時【Analysis of learning from positive and unlabeled data】:
l ( t , + 1 ) + l ( t , ? 1 ) = 1 l(t,+1)+l(t,-1)=1
l(t,+1)+l(t,?1)=1
我們會得到
R ^ p u ( g ) = 2 ? π p R ^ p ( g ( x ) , 1 ) + R ^ u ( g ( x ) , ? 1 ) ? π p ? ? ? ? ? ( 3 ) \hat R_{pu}(g)=2*\pi_p\hat R_p(g(x), 1) + \hat R_u(g(x), -1) -\pi_p -----(3)
R
^
??
pu
??? ?
?(g)=2?π?
p
??? ?
??
R
^
??
p
??? ?
?(g(x),1)+?
R
^
??
u
??? ?
?(g(x),?1)?π?
p
??? ?
??????(3)
這樣能夠通過普通的cost-sensitive learning得到分類器。并且,滿足上述對稱條件的R ^ p u \hat R_{pu}?
R
^
??
pu
??? ?
?一定是關于g非凸的。這樣,不僅計算度增加,而且保證得到最優解。另外,滿足上式子的損失函數有0-1損失函數,sigmoid函數等等。如果換成其他損失函數,最終的目標函數將比(3)式子多一誤差項【1】,最終的求解出現偏差,該類方法中應用比較多的是biased SVM。
我們難道無法得到無偏的最優解了嗎?是的,如果我們最終優化的目標函數是(3)。不過,我們可以退一步去做,直接去以(2)作為我們的目標函數。
在15年一篇工作中【1】,提出對P和U樣本分別采用不同的損失函數:對U樣本采用普通的凸損失函數l ( z ) l(z)l(z),對P樣本采用復合損失函數l ( z ) ? l ( ? z ) l(z)-l(-z)l(z)?l(?z);如果復合損失函數同樣是凸的,那么目標函數將能夠凸優化,但是這種條件有限制:復合損失函數關于z必須是線性的,我們的決策函數z關于變量x也需要是線性的。
雖然終于找到一種即無偏差,又可得到最優解的方法,但決策函數的要求大大限制了該方法的應用。另外,如果使用這種方法,需要設計一些特別的損失函數,如下:
而對于一般的復雜的決策函數,尤其將深度學習應用其中,凸優化與無偏估計幾乎不可兼得,而兩者中,無偏估計更容易獲取,只要我們從上式(2)中出發。
但是,我們發現,式(2)中有減號,這就有了一種可能,即R ^ u ? ( g ) ? π p R ^ p ? ( g ) \hat R_u^{-}(g)-\pi_p \hat R_p^{-}(g)?
R
^
??
u
?
??? ?
?(g)?π?
p
??? ?
??
R
^
??
p
?
??? ?
?(g)可能為負!
nnPU learning
由公式2可知,進行訓練的時候,如果不加限制,“負樣本”的目標函數可能為負,這將會導致過擬合,為了最優化,不切實際地將分類超平面遠離正樣本。為了降低過擬合,【2】提出Non-negative PU learning,即將公式(2)稍作改進:
R ^ p u ( g ) = π p R ^ p + ( g ) + m a x { 0 , R ^ u ? ( g ) ? π p R ^ p ? ( g ) } \hat R_{pu}(g)=\pi_p\hat R_p^{+}(g) + max\{0,\hat R_u^{-}(g)-\pi_p\hat R_p^{-}(g)\}
R
^
??
pu
??? ?
?(g)=π?
p
??? ?
??
R
^
??
p
+
??? ?
?(g)+max{0,?
R
^
??
u
?
??? ?
?(g)?π?
p
??? ?
??
R
^
??
p
?
??? ?
?(g)}
在MNIST數據集中,利用多層神經網絡結果如下:
最后,注意到,還有一個超參數 π p \pi_pπ?
p
??? ?
?的選擇,實驗證明其選擇的值比實際值高時,要優于比實際值低,即高估該值的效果更好;具體估計該值的方法,可參考【3】,具體如下:
如果知道未標注樣本中正樣本比例為θ \thetaθ,那么有
q ′ ( x ; θ ) = θ p ( x ∣ y = 1 ) + ( 1 ? θ ) p ( x ∣ y = ? 1 ) q'(x;\theta)=\theta p(x|y=1) + (1-\theta) p(x|y=-1)
q?
′
?(x;θ)=θp(x∣y=1)+(1?θ)p(x∣y=?1)
進而求解,利用分布的相似度量f-散度,有
θ : = arg ? ??min ? 0 ≤ θ ≤ 1 ∫ f ( q ′ ( x ; θ ) p ( x ) ) p ( x ) d x \theta :=\arg \,\min_{0\le\theta \le 1}\int f(\frac{q'(x;\theta)}{p(x)})p(x)dx
θ:=arg?
0≤θ≤1
min
??? ?
?∫f(?
p(x)
q?
′
?(x;θ)
??? ?
?)p(x)dx
然而,我們并不知道正樣本的比例,這時可以對原分布部分擬合
q ( x ; θ ) = θ p ( x ∣ y = 1 ) q(x;\theta)=\theta p(x|y=1)
q(x;θ)=θp(x∣y=1)
然后求
θ : = arg ? ??min ? 0 ≤ θ ≤ 1 ∫ f ( q ( x ; θ ) p ( x ) ) p ( x ) d x \theta :=\arg \,\min_{0\le\theta \le 1}\int f(\frac{q(x;\theta)}{p(x)})p(x)dx
θ:=arg?
0≤θ≤1
min
??? ?
?∫f(?
p(x)
q(x;θ)
??? ?
?)p(x)dx
由于缺失了負樣本下x的分布信息,部分擬合將過高估計正例樣本的比例。該文通過利用懲罰散度來避免負樣本缺失造成的誤差,對于各個散度的懲罰形式如下:
同時證明了L 1 ? d i s t a n c e L_1-distanceL?
??? ?
??distance的懲罰形式能夠有效簡化估計過程,使得計算更加高效。
def nnpu_loss(self, y_true, y_pred):
? ? '''
? ? y_true: shape[batch_size, 2], 經過labelEncoder處理后的0,1矩陣,0類位于第一列,1類位于第二列,那么這里0類就是已知的標簽數據,1類為unlabel數據。
? ? y_pred: shape[batch_size ,2], 模型預測的分類概率,這里我們以模型預測的第一類概率為準。
? ? ?'''
? ? print("============================== use nnpu_learning !!!! ===========================================")
? ? p = y_true[:, 0] * y_pred[:, 0]
? ? u = y_true[:, 1] * y_pred[:, 0]
? ? p_num = tf.where(K.sum(y_true[:, 0], axis=-1) == 0, 1.0, K.sum(y_true[:, 0], axis=-1))
? ? u_num = tf.where(K.sum(y_true[:, 1], axis=-1) == 0, 1.0, K.sum(y_true[:, 1], axis=-1))
? ? t = self.pi * K.sum(p*1, axis=-1)/p_num
? ? t2 = K.sum(-u, axis=-1)/u_num - self.pi *K.sum(-p, axis=-1)/p_num
? ? t3 = tf.where(t2 > 0.0, t2, 0.0)
? ? loss = t + t2
? ? return -loss
實驗
將未標注數據全部作為negative樣本訓練隨機森林
隨機選取與positive等量negative 訓練分類并對剩余樣本預測,重復多次,將概率平均
PU learning
看出PU學習的更好,使用該方法的前提是,unlabeled樣本中positive樣本特征分布與已知的positive樣本分布一致!
參考文獻:
[1] Marthinus Christoffel du Plessis, Niu, G. & Masashi, S. Convex Formulation for Learning from Positive and Unlabeled Data. ICML (2015).
[2] Kiryo, R. & Niu, G. Positive-Unlabeled Learning with Non-Negative Risk Estimator. NIPS 11 (2017)
[3] du Plessis, M. C., Niu, G. & Sugiyama, M. Class-prior estimation for learning from positive and unlabeled data. Mach Learn 106, 463–492 (2017).
[4] du Plessis, M. C., Niu, G. & Sugiyama, M. Class-prior estimation for learning from positive and unlabeled data. Mach Learn 106, 463–492 (2017).
?
總結
以上是生活随笔為你收集整理的无偏PU learning简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PU learning学习笔记
- 下一篇: kafka一直rebalance故障,重