自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

重磅!8大策略讓你對抗機器學習數據集里的不均衡數據

大數據
當你正在處理你的數據集的時候,你建立了一個分類模型并且它的精確度達到了90%,這時,你一定會想:這個結果太棒了!但是當你繼續(xù)更深地挖掘數據時你會發(fā)現(xiàn)這個90%的精確度只是一類數據的精確度,見鬼了!

你是不是也經歷過這樣的事?

當你正在處理你的數據集的時候,你建立了一個分類模型并且它的精確度達到了90%,這時,你一定會想:這個結果太棒了!但是當你繼續(xù)更深地挖掘數據時你會發(fā)現(xiàn)這個90%的精確度只是一類數據的精確度,見鬼了!

以上是一個不均衡數據集的例子,這樣的不均衡數據集有時會引起這樣糟糕的結果。在這篇文章中你將可以領略一系列對抗上述例子的方法,在機器學習過程中,這些方法可以幫助你在挖掘或者訓練不均衡數據集時獲得一個比較好的結果。

[[152784]]

在你的機器學習中發(fā)現(xiàn)一些平衡點

我們開始著手處理不均衡數據

我總是收到關于不均衡數據問題的郵件,例如:

“在我的訓練樣本里有一個二項分類問題,其中有一個數據集是比例為60:1的數據集,于是我對它運用了邏輯回歸的訓練方法,但是得到的結果是忽略這一個比率為60:1的數據集的訓練結果。

再例如:

“現(xiàn)在我正在運行一個分類模型。在我的數據集里面一共有3類數據,這里我們稱它們分別為A,B和C,但是在我的訓練數據集里面A,B和C三類數據分別占了70%,25%和5%。在大多數情況下,結果都過度擬合A類數據。你能給我一些建議來解決這個問題嗎?

我嘗試寫了很多方法并且試圖找出最好的方式去解決這個問題。最終我采用了我一個學生的建議:

也許你即將推出的某一篇博客文章可以解決在訓練模型中表現(xiàn)出高度不平衡的數據的問題,并且概述其方法和期望。

挫敗感!

在運行模型時,不均衡數據會引起很多偏差和誤導。

當你發(fā)現(xiàn)你的研究里包含了不平衡類并且導致你所謂的好的結果成為了泡沫,你會感到非常沮喪。

當你在書籍,文章和博客里找不到你想要的可以解決不均衡數據的建議或方法時,打擊會再一次降臨。

放輕松點吧,這里有很多點子和方法可以解決這類不均衡數據的問題,你可以針對不均衡數據建立一個預測模型。

什么是不均衡數據?

不均衡數據通常是發(fā)生在分類數據不均衡的分類問題中。

打個比方說,現(xiàn)在有一個包含了100行數據的二項分類問題(兩類數據)。其中有80行數據代表的是數據類型一,其余20行代表的是數據類型二。

這就是一個不均衡數據(不平衡類數據),它的一類數據和二類數據比是80:20或者說4:1.

你的不平衡類問題可能發(fā)生在二項分類問題或者多項分類問題中。大多數方法都可以運用在這兩種問題上。

因此,接下來的我們主要是針對二項分類問題進行分析討論,因為這樣比較容易去理解和描述。

不平衡現(xiàn)象是一種常見現(xiàn)象

大多數分類數據集是不會擁有完全相等的分類數據集,但小的差異往往是沒有影響的。

在這些問題中有些不平衡問題不僅僅是常見,而是人們可以預想到的。例如,在欺詐交易數據集分類問題中數據集是不平衡。該交易的絕大部分是屬于“不是詐騙”類,只有極少數會在“欺詐”級。

另一個例子是客戶流失的數據集,其中客戶絕大多數保持服務(“無流失”級)只有一小部分的顧客取消其認購(“流失”級)。

在上訴的例子中,如果有一種分類不平衡率達到4:1那么這個不平衡可能會導致結果出現(xiàn)誤差。

精度悖論

在這篇文章的介紹當中,精度悖論是一些特定情況的名稱。

這個準確性指標的例子告訴我們,有優(yōu)異的精度(如90%)但是這個準確性只是反映基本的類分布。

這是很常見的,因為在評估分類問題的模型時,分類精度通常是我們第一個采用的措施方法。

偏向一類數據!

當我們訓練的不均衡數據時,我們的模型怎么了?

正如你設想的一樣,在數據不均衡的情況下,我們得到90%的準確率(比如包含90%的數據類型一的實例)是因為我們的模型觀察數據并且智能地總是根據數據類型一的數據進行預測,并且盡量達到最高精度。

當我們規(guī)則基于這個方法進行的時候似乎得到的是最好的答案。但是如果你在最后的模型中仔細考察這個規(guī)則,你會發(fā)現(xiàn)似乎這個方法是忽略其他數據在對一類數據進行預測。

八大戰(zhàn)術,對抗不平衡類數據

現(xiàn)在,我們已經了解了什么是不均衡數據以及為什么他會引起分類精度的誤差。

所以我們的應對解決方法是什么呢?

1) 可以擴大數據樣本嗎?

你可能會認為這樣做很愚蠢,但擴大樣本數據總是容易被忽視。

你能收集更多的數據嗎?花一秒鐘,想想你是否能夠收集更多和問題相關的數據。

在集合中,一個更大的數據集,就有可能挖掘出不同的或許更平衡的方面。

之后當我們尋找重復采集的數據樣本時,一些小樣本類數據的例子可能是有幫助的。

2) 試著改變你的績效標準

精度是一個不適用于不平衡的數據集的績效指標。正如我們已經看到的,這是一種誤導。

在處理不平衡類時,有些更加理想的指標可以給你更加具有說服力的結果。

在我的文章中,我給更多的建議和措施去選擇不同的績效標準:“Classification Accuracy is Not Enough: More Performance Measures You Can Use”。

在這篇文章里我主要著重于講述如何對乳腺癌患者復發(fā)這個不均衡數據集進行分類。

這篇文章中我推薦了以下幾個績效標準,相比于傳統(tǒng)的精確度,這些績效標準可以更加深入地洞察模型的準確率:

  • 混淆矩陣:將要預測的數據分到表里來顯示正確的預測(對角線),并了解其不正確的預測的類型(哪些類被分配了不正確的預測);
  • 精度:一種分類準確性的處理方法;
  • 召回率:一種分類完整性的處理方法;
  • F1分數(或F-分):精度和召回率的加權平均。

同時,我還推薦你關注一下以下幾點:

  • Kappa(或者Cohen’s kappa):根據數據中集合數據的不平衡點來標準化分類精度;
  • ROC曲線:類似于精度和召回率,準確性被分為敏感性和特異性,并且可以基于這些值的平衡閾值來選擇模型。

在我們的文章“Assessing and Comparing Classifier Performance with ROC Curves”中你可以學到更多關于運用ROC曲線來比較分類準確度的方法。

你是不是仍然無法確定呢?試著運用Kappa,他會告訴你一些究竟如何處理分類準確度的建議和方法。

3)嘗試對你的數據重新抽樣

你可以改變將要用來建立預測模型的數據集來獲得更加平衡的數據集。

這種變化被稱為抽樣數據集,您主要可以運用以下兩種方法來使數據分類更加均衡:

1.您可以從代表性不足的類(又稱為過抽樣或者更加正式的抽樣來代替)添加實例的副本,或者

2.您可以從過度代表類里刪除實例,稱為抽樣不足。

這些方法往往很容易實現(xiàn),而且運行速度也很快。因此我認為他們都是不錯的出發(fā)點。

事實上,我會建議你最好嘗試以上提到的兩種不平衡數據集的處理方法,這樣便于你比較一下基于你的首選準確度處理方法上,另一種方法是否效果更好,或者是否有所促進作用。

你可以通過維基百科題為“Oversampling and undersampling in data analysis”的文章了解更多相關咨詢。

一些經驗的規(guī)則

  • 當你的數據量很大時可以考慮測試抽樣不足(一萬或者十萬條記錄或更多)
  • 當你沒有大量的數據時可以考慮測試抽樣過度(一萬條記錄或更少)
  • 考慮測試隨機和非隨機的抽樣方案(如分層)。
  • 考慮用不同的重抽樣率進行測試(例如,在一個二元分類問題中,您不必一定要針對1:1的比例,可以嘗試其他比例)

4) 嘗試生成人工樣本

一種簡單生成人工樣本的方法是從在少數類的實例中隨機抽樣屬性。

在數據集中,你可以根據經驗對它抽樣或者你可以使用類似于樸素貝葉斯這種可以在反向運行時,對每個屬性進行獨立抽樣的模型。你將有更多的不同的數據,但可能不會保留其屬性之間的非線性關系。

這里有一些系統(tǒng)方法可以用來生成人工演變。其中最流行的算法被稱為SMOTE或Synthetic Minority Over-sampling技術。

正如其名,SMOTE是過度抽樣的方法。它的工作原理是從小類的數據中生成人工樣本,而不是創(chuàng)建副本。該算法選擇兩個或更多個類似的例子(使用距離度量),然后隨機干擾一個實例中的一個屬性,比較其差異。

想要了解更多關于SMOTE方法,請搜索2002年名為“SMOTE: Synthetic Minority Over-sampling Technique”的原文章。

現(xiàn)在有很多的SMOTE算法的實現(xiàn)方法,例如:

  • 在Python,一起來看看在“UnbalancedDataset”模塊。它提供了許多SMOTE實現(xiàn)方法,以及各種其他再抽樣技術,你都可以嘗試;
  • 在R中,DMwR 包提供SMOTE的實現(xiàn)方法;
  • 在Weka中,你可以使用SMOTE supervised filter。

5) Try Different Algorithms

通常來說,我會強烈建議你對于所有問題不要總是使用自己最喜歡的模型。對于所給的問題你至少應該用不同類型的算法對其進行抽查。

欲了解更多關于抽查的方法,請參閱我的文章“Why you should be Spot-Checking Algorithms on your Machine Learning Problems”。

話雖這么說,決策樹往往在處理不平衡類數據集表現(xiàn)不錯。在創(chuàng)建樹的過程中使用類變量的分裂規(guī)則,可以強制地將兩個類很好的進行處理。

如果有疑問,請嘗試一些流行的決策樹算法,如C4.5,C5.0,CART和隨機森林。

對于使用決策樹的一些R代碼,請參閱我的文章,標題為“Non-Linear Classification in R with Decision Trees”。

例如,對于Python和scikit-learn中使用CART的一個例子,請參考我的文篇,名為“Get Your Hands Dirty With Scikit-Learn Now”的文章。

6) 嘗試名義變量模型

您可以使用相同的算法,但是在不同問題中他們可能會給出不同的觀點。

因為在訓練過程中,對于小類數據會產生分類錯誤,因此名義變量分類會產生額外費用。這些名義變量會使模型偏向于更加注重少數類數據。

通常來說掌握一類名義變量或者權重是為了學習方法。例如一些方法的名義變量penalized-SVM和penalized-LDA。

另外,對于名義變量模型也具有通用框架。例如,Weka中有一個CostSensitiveClassifier,它可以封裝任何分類和自定義分類應用中錯過的名義變量矩陣。

如果你鎖定到一個特定的算法并且無法重新取樣或是你得到的結果不好時,使用名義變量是可取的。它提供了另一種方法來“平衡”類。建立名義變量矩陣是很復雜的,也許您將不得不嘗試各種設置名義變量的方法,看看什么方法是最適合用來解決你的問題。

7) 嘗試從不同的觀點進行思考

對于研究不平衡數據集的鄰域。他們有自己的算法,措施和術語。

從這些觀點處罰,縱觀和思考你的問題,有時一些想法會有所改變。

兩個你可能想要考慮的是異常檢測和變化檢測。

異常檢測是罕見事件的檢測。這可能是根據一系列的系統(tǒng)調用,通過它的振動或一個由程序指示的惡意活動而產生的機器故障。這樣的事件相比正常操作是罕見的。

這種思維的轉變在于考慮以小類作為異常值類,它可以幫助你獲得一種新方法來分離和分類的樣本。

除了變化檢測是找尋找它的變化而不是差異以外,變化檢測類似于異常檢測。這可能是在觀察使用模式或銀行交易過程中用戶的行為變化。

對于分類的問題,這兩個轉變具有更加實時的角度,它可能會給你一些新的方式去思考你的問題以及讓你嘗試更多新的技術。

8) 嘗試一些新的創(chuàng)意

在你的問題里面挖掘并思考如何把它分解成更小的問題,這些問題更容易處理。

為了尋找靈感,看一看別人對于問題:“In classification, how do you handle an unbalanced training set?”給出的一些有創(chuàng)意的答案。

例如:

分解你的大類變成小類…

…使用一類分類…(比如像將其作為異常檢測對待)

…不是將不平衡類訓練集重抽樣成一組平衡集,而是一些平衡集。在這個集合中,同時運行所有集產生的結果可能比只運行一個集的結果更好。

這些只是一小部分你可以嘗試的有趣的和創(chuàng)造性的想法。

對于更多的想法,請搜索reddit 文章——“Classification when 80% of my training set is of one class”的評論。

選擇一種方法,然后實際操作它

你沒有必要去做一個精通所有方法的奇才或者統(tǒng)計學家建立一個精確并且可靠的不平衡類數據集模型。

以上我們已經講述了許多可以用在不平衡類數據集模型的技術和方法。

但愿這里有一到兩個方法的模型你可以快速地較好地理解并且運用,例如:改變你精確度的指標和重新對你的數據集進行抽樣。這兩個方法都是比較快速的并且對問題影響會很明顯。

那么你想要嘗試哪一個方法呢?

總結

記住,我們不可能知道哪一個方法會得出最好的結果。

你可以發(fā)散地選擇這個方法或者那個方法,但是,在最后我給你的最好的建議是“變成科學家”并且根據經驗測試每一個方法,選擇結果做好的那一個。

從點點滴滴開始做起,根據自己現(xiàn)有的知識一步一步完善。

 

責任編輯:李英杰 來源: 36大數據
相關推薦

2017-06-19 07:58:40

2017-05-05 09:30:28

機器學習不均衡分類

2023-09-26 07:15:57

圖數據場景風控場景

2021-01-14 21:40:40

機器學習計算機視覺圖像數據集

2011-11-15 14:04:54

Chrome操作系統(tǒng)

2021-12-13 09:14:06

清單管理數據集

2019-06-19 09:13:29

機器學習中數據集深度學習

2017-10-24 06:32:01

機器學習特征選擇模型訓練

2020-08-12 09:46:46

TensorFlow數據機器學習

2019-09-03 18:09:20

機器學習AI訓練數據

2020-07-15 13:51:48

TensorFlow數據機器學習

2018-09-27 10:44:35

機器數據splunk

2020-06-24 07:53:03

機器學習技術人工智能

2018-06-07 09:13:22

錯誤數據備份

2021-05-14 09:00:00

機器學習數據集工具

2018-11-07 13:00:30

機器學習深度學習集成學習

2023-02-28 12:38:22

谷歌數據集機器翻譯

2022-09-19 00:21:31

機器學習數據數據集

2017-05-12 13:00:40

2017-03-15 16:15:35

點贊
收藏

51CTO技術棧公眾號