資料探勘中易栽的10個坑,你中了沒?

劉美利發表於2018-08-21

總結資料探勘中易栽的10個坑,你中了沒?

1.缺乏資料

對於分類問題或預估問題來說,常常缺乏準確標註的案例。

例如:

-欺詐偵測(:在上百萬的交易中,可能只有屈指可數的欺詐交易,還有很多的欺詐交易沒有被正確標註出來,這就需要在建模前花費大量人力來修正。

-信用評分:需要對潛在的高風險客戶進行長期跟蹤(比如兩年),從而積累足夠的評分樣本。

2.太關注訓練

就像體育訓練中越來越注重實戰訓練,因為單純的封閉式訓練常常會訓練時狀態神勇,比賽時一塌糊塗。

實際上,只有樣本外資料上的模型評分結果才真正有用!(否則的話,直接用參照表好了!)

例如:

-癌症檢測(Cancer detection):MD Anderson的醫生和研究人員(1993)使用神經網路來進行癌症檢測,驚奇地發現,訓練時間越長(從幾天延長至數週),對訓練集的效能改善非常輕微,但在測試集上的效能卻明顯下降。

-機器學習或電腦科學研究者常常試圖讓模型在已知資料上表現最優,這樣做的結果通常會導致過度擬合(overfit)。

解決方法:

解決這個問題的典型方法是重抽樣(Re-Sampling)。重抽樣技術包括:bootstrap、cross-validation、jackknife、leave-one-out…等等。

3.只依賴一項技術

這個錯誤和第10種錯誤有相通之處,請同時參照其解決方法。沒有對比也就沒有所謂的好壞,辯證法的思想在此體現無遺。

“當小孩子手拿一把錘子時,整個世界看起來就是一枚釘子。”要想讓工作盡善盡美,就需要一套完整的工具箱。

不要簡單地信賴你用單個方法分析的結果,至少要和傳統方法(比如線性迴歸或線性判別分析)做個比較。

研究結果:按照《神經網路》期刊的統計,在過去3年來,只有1/6的文章中做到了上述兩點。也就是說,在獨立於訓練樣本之外的測試集上進行了開集測試,並與其它廣泛採用的方法進行了對比。

解決方法:

使用一系列好的工具和方法。(每種工具或方法可能最多帶來5%~10%的改進)。

4.提錯了問題

一般在分類演算法中都會給出分類精度作為衡量模型好壞的標準,但在實際專案中我們卻幾乎不看這個指標。為什麼?因為那不是我們關注的目標。

a)專案的目標:一定要鎖定正確的目標

例如:

欺詐偵測(關注的是正例!)(Shannon實驗室在國際長途電話上的分析):不要試圖在一般的通話中把欺詐和非欺詐行為分類出來,重點應放在如何描述正常通話的特徵,然後據此發現異常通話行為。

b)模型的目標:讓計算機去做你希望它做的事

大多數研究人員會沉迷於模型的收斂性來儘量降低誤差,這樣讓他們可以獲得數學上的美感。但更應該讓計算機做的事情應該是如何改善業務,而不是僅僅側重模型計算上的精度。

5.只靠資料來說話

讓資料說話”沒有錯,關鍵是還要記得另一句話:兼聽則明,偏聽則暗!如果資料+工具就可以解決問題的話,還要人做什麼呢?

4a.投機取巧的資料:資料本身只能幫助分析人員找到什麼是顯著的結果,但它並不能告訴你結果是對還是錯。 

4b.經過設計的實驗:某些實驗設計中摻雜了人為的成分,這樣的實驗結果也常常不可信。

6.使用了未來的資訊

看似不可能,卻是實際中很容易犯的錯誤,特別是你面對成千上萬個變數的時候。認真、仔細、有條理是資料探勘人員的基本要求。

預報(Forecast)示例:預報芝加哥銀行在某天的利率,使用神經網路建模,模型的準確率達到95%。但在模型中卻使用了該天的利率作為輸入變數。

金融業中的預報示例:使用3日的移動平均來預報,但卻把移動平均的中點設在今天。

解決方法:

要仔細檢視那些讓結果表現得異常好的變數,這些變數有可能是不應該使用,或者不應該直接使用的。

給資料加上時間戳,避免被誤用。

7.拋棄了不該忽略的案例

到底是“寧為雞頭,不為鳳尾”,還是“大隱隱於市,小隱隱於野”?不同的人生態度可以有同樣精彩的人生,不同的資料也可能蘊含同樣重要的價值。

異常值可能會導致錯誤的結果(比如價格中的小數點標錯了),但也可能是問題的答案(比如臭氧洞)。所以需要仔細檢查這些異常。

研究中最讓激動的話語不是“啊哈!”,而是“這就有點奇怪了……”

資料中的不一致性有可能會是解決問題的線索,深挖下去也許可以解決一個大的業務問題。

例如:

在直郵營銷中,在對家庭地址的合併和清洗過程中發現的資料不一致,反而可能是新的營銷機會。

解決方法:

視覺化可以幫助你分析大量的假設是否成立。

8.試圖回答所有問題

有點像我爬山時鼓勵自己的一句話“我不知道什麼時候能登上山峰,但我知道爬一步就離終點近一步。”

“不知道”是一種有意義的模型結果。

模型也許無法100%準確回答問題,但至少可以幫我們估計出現某種結果的可能性。

9.隨便地進行抽樣

9a 降低抽樣水平。例如,MD直郵公司進行響應預測分析,但發現資料集中的不響應客戶佔比太高(總共一百萬直郵客戶,其中超過99%的人未對營銷做出響應)。於是建模人員做了如下抽樣:把所有響應者放入樣本集,然後在所有不響應者中進行系統抽樣,即每隔10人抽一個放入樣本集,直到樣本集達到10 萬人。但模型居然得出如下規則:凡是居住在Ketchikan、Wrangell和Ward Cove Alaska的人都會響應營銷。這顯然是有問題的結論。(問題就出在這種抽樣方法上,因為原始資料集已經按照郵政編碼排序,上面這三個地區中不響應者未能被抽取到樣本集中,故此得出了這種結論)。

解決方法:

“喝前搖一搖!”先打亂原始資料集中的順序,從而保證抽樣的隨機性。

9b 提高抽樣水平。例如,在信用評分中,因為違約客戶的佔比一般都非常低,所以在建模時常常會人為調高違約客戶的佔比(比如把這些違約客戶的權重提高5倍)。建模中發現,隨著模型越來越複雜,判別違約客戶的準確率也越來越高,但對正常客戶的誤判率也隨之升高。(問題出在資料集的劃分上。在把原始資料集劃分為訓練集和測試集時,原始資料集中違約客戶的權重已經被提高過了)

解決方法:

先進行資料集劃分,然後再提高訓練集中違約客戶的權重。

10.太相信最佳模型

還是那句老話-“沒有最好,只有更好!”

可解釋性並不一定總是必要的。看起來並不完全正確或者可以解釋的模型,有時也會有用。

“最佳”模型中使用的一些變數,會分散人們太多的注意力。(不可解釋性有時也是一個優點)

一般來說,很多變數看起來彼此都很相似,而最佳模型的結構看上去也千差萬別,無跡可循。但需注意的是,結構上相似並不意味著功能上也相似。

解決方法:

把多個模型集裝起來可能會帶來更好更穩定的結果。

【本文轉載自:機器學習演算法與Python學習,原文連結:https://mp.weixin.qq.com/s/zdRTlQWrykML7jPyRgANhw】

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31542119/viewspace-2212483/,如需轉載,請註明出處,否則將追究法律責任。

相關文章