干货:如何利用机器学习实现有噪声标签样本分类模型?
在工業生產活動中,有一類常見機器學習問題,就是如何基于有噪聲樣本標簽訓練模型,以進行故障檢測和分類。
先解釋下什么是有噪聲樣本標簽,它指的是訓練模型用的樣本標簽并非完全準確,部分樣本的標簽有標錯的情況。
對于這個問題,為了便于大家理解,我們以一個成功實踐的項目為例,以實例為大家講述如何實現。
一、人工測量電子開關的問題
在大型工業設備中,有一類廣泛使用的電子開關,這些電子開關使用久了,會逐漸老化故障,進而影響設備運行,因此需要替換。
目前業內的常見做法是首先進行一系列的人工測量,然后通過經驗來判斷電子開關是否已經損壞,并將損壞的電子開關替換。這里面測量數據只是用作參考,實際上并沒有明確的損壞標準,操作中還是以經驗為主。
這種方式其實是存在很多問題的。
比如,人和人之間是有個體差異的,每個人的經驗是不一樣的,這樣就導致最終的判斷結果也沒法相同。
就有可能導致本來正常的電子開關,被判斷為壞的或者即將損壞的,以此進行替換就會造成浪費。
同樣的,也有可能把壞的或者即將損壞的判斷為正常的電子開關,繼續使用,導致更大的損失。
因此,如果能夠利用機器學習的技術,避免人工經驗判斷的誤差或錯誤,提升判斷的準確性,就能給我們的客戶帶來很大的價值。
于是,我們開始考慮通過機器學習如何去實現?
二、如何避免訓練出“有噪聲”的模型
對于機器學習來說,解決這類問題的難點在于,樣本數據的標簽是有噪聲的或者說不完全準確的。
如果直接使用這些樣本進行訓練,無論我們采用哪種分類算法(決策樹、邏輯回歸 ,亦或是近年較為流行的 XGBoost),最終訓練出的模型都是對噪聲樣本擬合較好的“有噪聲”的模型。
如果我們用這樣的模型去判斷和分類,準確度是很難超過經驗豐富的“老司機”的,所以這樣的模型并沒有多大的意義。
那么基于永洪的產品 Yonghong Z-Suite ,我們可以怎么做呢?
對Z-Suite比較熟悉的朋友都知道,我們的產品里內置了常見的算法模型(分類、聚類、決策樹、神經網絡、關聯模型、時序預測等),采用圖形化操作,可以通過簡單的拖拽,快速實現典型數據挖掘算法。
除此之外,還內置了R語言支持,提供了強大的模型擴展能力。
因此,我們借助這一能力,通過R語言模型擴展實現的算法,解決了有噪聲樣本標簽分類的問題。
我們擴展實現的這種算法,是根據MIT的一篇論文(鏈接:https://arxiv.org/abs/1705.01936)提供的思路,將其與 XGBoost 分類算法結合而成的。
這種算法的思路如下:
首先,訓練模型的樣本數據來自于歷史測量數據,數據的標簽都是人工根據經驗判斷的,所以會發生標簽誤判的情況,換句話說,訓練模型使用的是有噪聲的樣本數據。
然后使用常規分類算法比如 Logistic Regression、Bayes,SVM、XGBoost 等在有噪聲的樣本數據集上訓練出分類器;
分類器對預測的正負標簽給出概率(0~1),概率越大說明預測為正標簽的可信度越高,概率越小說明預測為負標簽的可信度越高,概率接近0.5的預測標簽的可信度并不高,可能是有噪聲的數據;
假定有噪聲的數據在數據集中占比不大,如果剔除可信度不高的數據,用剩下的相對可靠的數據訓練分類模型,那么分類器的準確度理論上將有所提高。
三、排除不可靠數據,提高模型準確度
基于以上思路,我們在 Yonghong Z-Suite 中實現的分類算法步驟如下(詳細算法推導論證過程可參照上面提到的論文):
通過選定的二分類算法(我們使用的是XGBoost),利用有噪聲樣本數據進行模型訓練,并得到每個樣本x預測結果為true(true表示電子開關合格,false表示不合格,以下同)的概率g(x)。
計算樣本數據中標記為true的比率Ps1(即樣本數據中電子開關標記合格的百分比)。
計算門限概率LBy=1,如果上面第1步的預測概率g(x)大于LBy=1,則表示該樣本的真實標簽很可能是true(合格);同理計算UBy=0,如果上面第1步的預測概率g(x)小于UBy=0,則表示該樣本的真實標簽很可能是false(不合格)。LBy=1定義為標記為true的樣本數據的g(x)的期望;UBy=0定義為標記為false的樣本數據的g(x)的期望
根據上面第2,3步得出的Ps1,LBy=1和UBy=0,計算出樣本數據中的真實標簽為true,但是被誤標記為false的比率ρ0 =P(s=0|y=1),以及樣本數據中的真實標簽為false,但是被誤標記為true的比率ρ1=P(s=1|y=0)。這里面y表示真實標簽,s表示樣本標簽。
然后根據貝葉斯公式計算出樣本數據中標記為不合格但是實際合格的概率π0=P(y=1|s=0)和標記為合格但是實際不合格的概率π1=P(y=0|s=1)。
在標記true的樣本數據中剪除g(x)最小的比例為π1的那些樣本(正樣本pruning過程);在標記false的樣本數據中剪除g(x)最大的比例為π0的樣本(負樣本pruning過程);這兩類樣本被認定為不一致的可能對預測結果產生干擾的錯誤標記樣本,因此需要移除。
對剩余樣本加權后(因為有樣本移除,所以需要對剩余樣本進行加權修正),重新訓練模型。
根據生成模型對新的電子開關測試數據進行計算,判斷其合格或不合格。
該算法通過排除訓練模型中不可靠(不一致)的數據,提升了剩余數據的質量,并利用這些數據進行模型訓練,因而提高了模型的準確度,有效的解決了有噪聲樣本訓練帶來的模型不準的問題。
四、預測準確度提升20%
我們將該模型應用在上述電子開關測試項目,并將其與電子開關進行二次測試(對換下的電子開關的深入測試,基本可以認為是真實標簽)的結果進行對比,發現預測準確度從人工預測的60%~70%提升到了80%左右,整體的預測準確度提升了近20%,這為我們的客戶帶來了十分明顯的價值,客戶對我們的這一算法贊賞有加。
在此基礎上,我們將 Logistic Regression、Bayes 和 XGBoost 三種模型集成到一起,作為 RankPruning 算法的基礎模型。測試結果表明,模型精度在 XGBoost 基礎上,又有了近2%的額外的小幅提升。
亞瑟·克拉克說過:“任何足夠先進的技術都等同于魔術。”
機器學習在今天互聯網的環境里,可能已經不是什么新鮮事了,但是對于傳統的工業和制造業來說,能夠大幅度提升效率、節約成本的技術,就是能為他們帶來價值的。
同樣的,我們也覺得機器學習的真正應用不是通過概念或者思想的方式,而是通過實踐。我們在把機器學習技術實際落地、想辦法為客戶創造價值的過程中,也在逐漸對機器學習的理解進入更深的層次。
我們將這個經驗分享出來,目的是幫助大家在基于有噪聲樣本標簽,進行故障檢測和分類的時候,能夠有更科學和精確的方式,也為大家在大數據領域機器學習的應用提供一些具有參考價值的案例。
總結
以上是生活随笔為你收集整理的干货:如何利用机器学习实现有噪声标签样本分类模型?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全民app使用率排行榜统计全了,微信再次
- 下一篇: 干货:5个维度构建电商全景大数据分析