本文首發于微信公眾號:數據分析。文章內容屬作者個人觀點,不代表和訊網立場。投資者據此操作,風險請自擔。
0.缺乏數據(LackData)
對于分類問題或預估問題來說,常常缺乏準確標注的案例。
例如:
欺詐偵測(FraudDetection):在上百萬的交易中,可能只有屈指可數的欺詐交易,還有很多的欺詐交易沒有被正確標注出來,這就需要在建模前花費大量人力來修正。
信用評分(CreditScoring):需要對潛在的高風險客戶進行長期跟蹤(比如兩年),從而積累足夠的評分樣本。
1.太關注訓練(FocusonTraining)
IDMer:就象體育訓練中越來越注重實戰訓練,因為單純的封閉式訓練常常會訓練時狀態神勇,比賽時一塌糊涂。
實際上,只有樣本外數據上的模型評分結果才真正有用!(否則的話,直接用參照表好了!)
癌癥檢測(Cancerdetection):MDAnderson的醫生和研究人員(1993)使用神經網絡來進行癌癥檢測,驚奇地發現,訓練時間越長(從幾天延長至數周),對訓練集的性能改善非常輕微,但在測試集上的性能卻明顯下降。
機器學習或計算機科學研究者常常試圖讓模型在已知數據上表現最優,這樣做的結果通常會導致過度擬合(overfit)。
解決方法:
解決這個問題的典型方法是重抽樣(Re-Sampling)。重抽樣技術包括:bootstrap、cross-validation、jackknife、leave-one-out…等等。
2.只依賴一項技術(RelyonOneTechnique)
IDMer:這個錯誤和第10種錯誤有相通之處,請同時參照其解決方法。沒有對比也就沒有所謂的好壞,辯證法的思想在此體現無遺。
“當小孩子手拿一把錘子時,整個世界看起來就是一枚釘子。”要想讓工作盡善盡美,就需要一套完整的工具箱。
不要簡單地信賴你用單個方法分析的結果,至少要和傳統方法(比如線性回歸或線性判別分析)做個比較。
研究結果:按照《神經網絡》期刊的統計,在過去3年來,只有1/6的文章中做到了上述兩點。也就是說,在獨立于訓練樣本之外的測試集上進行了開集測試,并與其它廣泛采用的方法進行了對比。
使用一系列好的工具和方法。(每種工具或方法可能最多帶來5%~10%的改進)。
3.提錯了問題(AsktheWrongQuestion)
IDMer:一般在分類算法中都會給出分類精度作為衡量模型好壞的標準,但在實際項目中我們卻幾乎不看這個指標。為什么?因為那不是我們關注的目標。
a)項目的目標:一定要鎖定正確的目標
欺詐偵測(關注的是正例!)(Shannon實驗室在國際長途電話上的分析):不要試圖在一般的通話中把欺詐和非欺詐行為分類出來,重點應放在如何描述正常通話的特征,然后據此發現異常通話行為。
b)模型的目標:讓計算機去做你希望它做的事
大多數研究人員會沉迷于模型的收斂性來盡量降低誤差,這樣讓他們可以獲得數學上的美感。但更應該讓計算機做的事情應該是如何改善業務,而不是僅僅側重模型計算上的精度。
4.只靠數據來說話(Listen(only)totheData)
IDMer:“讓數據說話”沒有錯,關鍵是還要記得另一句話:兼聽則明,偏聽則暗!如果數據+工具就可以解決問題的話,還要人做什么呢?
4a.投機取巧的數據:數據本身只能幫助分析人員找到什么是顯著的結果,但它并不能告訴你結果是對還是錯。
4b.經過設計的實驗:某些實驗設計中摻雜了人為的成分,這樣的實驗結果也常常不可信。
5.使用了未來的信息(AcceptLeaksfromtheFuture)
IDMer:看似不可能,卻是實際中很容易犯的錯誤,特別是你面對成千上萬個變量的時候。認真、仔細、有條理是數據挖掘人員的基本要求。
預報(Forecast)示例:預報芝加哥銀行在某天的利率,使用神經網絡建模,模型的準確率達到95%。但在模型中卻使用了該天的利率作為輸入變量。
金融業中的預報示例:使用3日的移動平均來預報,但卻把移動平均的中點設在今天。
要仔細查看那些讓結果表現得異常好的變量,這些變量有可能是不應該使用,或者不應該直接使用的。
給數據加上時間戳,避免被誤用。
6.拋棄了不該忽略的案例(DiscountPeskyCases)
IDMer:到底是“寧為雞頭,不為鳳尾”,還是“大隱隱于市,小隱隱于野”?不同的人生態度可以有同樣精彩的人生,不同的數據也可能蘊含同樣重要的價值。
異常值可能會導致錯誤的結果(比如價格中的小數點標錯了),但也可能是問題的答案(比如臭氧洞)。所以需要仔細檢查這些異常。
研究中最讓激動的話語不是“啊哈!”,而是“這就有點奇怪了……”
數據中的不一致性有可能會是解決問題的線索,深挖下去也許可以解決一個大的業務問題。
在直郵營銷中,在對家庭地址的合并和清洗過程中發現的數據不一致,反而可能是新的營銷機會。
可視化可以幫助你分析大量的假設是否成立。
7.輕信預測(Extrapolate)
IDMer:依然是辯證法中的觀點,事物都是不斷發展變化的。
人們常常在經驗不多的時候輕易得出一些結論。
即便發現了一些反例,人們也不太愿意放棄原先的想法。
維度咒語:在低維度上的直覺,放在高維度空間中,常常是毫無意義的。
進化論。沒有正確的結論,只有越來越準確的結論。
8.試圖回答所有問題(AnswerEveryInquiry)
IDMer:有點像我爬山時鼓勵自己的一句話“我不知道什么時候能登上山峰,但我知道爬一步就離終點近一步。”
“不知道”是一種有意義的模型結果。
模型也許無法100%準確回答問題,但至少可以幫我們估計出現某種結果的可能性。
9.隨便地進行抽樣(SampleCasually)
9a降低抽樣水平。例如,MD直郵公司進行響應預測分析,但發現數據集中的不響應客戶占比太高(總共一百萬直郵客戶,其中超過99%的人未對營銷做出響應)。于是建模人員做了如下抽樣:把所有響應者放入樣本集,然后在所有不響應者中進行系統抽樣,即每隔10人抽一個放入樣本集,直到樣本集達到10萬人。但模型居然得出如下規則:凡是居住在Ketchikan、Wrangell和WardCoveAlaska的人都會響應營銷。這顯然是有問題的結論。(問題就出在這種抽樣方法上,因為原始數據集已經按照郵政編碼排序,上面這三個地區中不響應者未能被抽取到樣本集中,故此得出了這種結論)。
解決方法:“喝前搖一搖!”先打亂原始數據集中的順序,從而保證抽樣的隨機性。
9b提高抽樣水平。例如,在信用評分中,因為違約客戶的占比一般都非常低,所以在建模時常常會人為調高違約客戶的占比(比如把這些違約客戶的權重提高5倍)。建模中發現,隨著模型越來越復雜,判別違約客戶的準確率也越來越高,但對正常客戶的誤判率也隨之升高。(問題出在數據集的劃分上。在把原始數據集劃分為訓練集和測試集時,原始數據集中違約客戶的權重已經被提高過了)
解決方法:先進行數據集劃分,然后再提高訓練集中違約客戶的權重。
10.太相信最佳模型(BelievetheBestModel)
IDMer:還是那句老話-“沒有最好,只有更好!”
可解釋性并不一定總是必要的。看起來并不完全正確或者可以解釋的模型,有時也會有用。
“最佳”模型中使用的一些變量,會分散人們太多的注意力。(不可解釋性有時也是一個優點)
一般來說,很多變量看起來彼此都很相似,而最佳模型的結構看上去也千差萬別,無跡可循。但需注意的是,結構上相似并不意味著功能上也相似。
解決方法:把多個模型集裝起來可能會帶來更好更穩定的結果。