題記
半畝方塘一鑑開,天光雲影共徘徊。 問渠哪得清如許,唯有源頭活水來。
——朱熹
Intro
礦工一枚,有太多的故事(眼淚)想要與大家分享。今天就來談一談數據挖掘中常常被我們忽略的小問題(踩過的坑)。
讓我們從下面這張圖開始吧!
圖一 從現實世界到模型世界(圖片來自網絡)
咳咳注意,本篇不是八卦文,在這裡我們要正經地討論一些小case。如圖所示,我們以左圖代表現實世界,右圖代表模型世界——對,數據挖掘的世界。從左至右的轉換雖合情合理(技術上能夠實現),又有微妙的不同——是不是更美啦?合情合理是說我們的空間映射不能脫離實際,美顏也要在一定的框架之下,要有技術能夠實現。微妙的不同在於,我們常常習慣於這樣的美,習慣於用這種方式來解決現實世界的問題(如果生活在唐代,我們可能有不同的解決問題的方法,哈哈)。可能有同學要問,幹嘛大費周章,直接在現實世界解決問題不就OK了嗎? 然而現實情況是,大部分情況下這樣並不能解決問題,甚至很多時候,我們不能得到如左圖那樣完整的數據。由於這個原因,我們的模型世界異彩紛呈。這個問題太大,之後再講吧。本著主旨,我們來看看怎麼對現實世界進行分析挖掘。
數據挖掘流程概覽
首先,數據挖掘遵循著一整套標準開發流程,其中應用較廣的是跨行業的CRISP-DM (Cross Industry Standard Process for Data Mining) 標準,以及SAS的SEMMA (Sample,Explore,Modify,Model,Assess) 流程標準。相對來說CRISP-DM應用範圍更廣一些,如下為CRISP-DM流程圖:
圖二 CRISP-DM流程圖
CRISP-DM的成功之處在於它是面向數據挖掘項目開發的,並且與行業、背景、數據挖掘工具無關。它可以將整個數據挖掘過程同標準的業務過程相結合,把具體的業務目標映射為數據挖掘目標,從而保障數據挖掘的結果能更好地指導業務決策。
接下來,我們會順著CRISP-DM流程來挖一挖有哪些坑是我們會不小心掉進去的。
數據挖掘小坑集錦流程之業務理解在業務理解階段,我們實現了或者說需要實現現實世界到模型世界的變遷。我想美,這是我的目的。但是注意——坑來了。
在實際情況中,我們常常遇到的坑是"我想美",即只有一個宏大的願望,卻沒能從現實世界中提煉出真正能夠落地的地方。比如說,我想要"臉"變得好看些,那麼,現實中你需要有"臉"才行啊。這一部分往往不被重視,我是有"臉"的人啊,變美就成。
坑一:業務目標不明晰美有多種,一定要足夠具體,明確客戶真正想要達到什麼目標。如果是多個目標,且存在互斥關係,如何進行排序取捨? 按照什麼標準來執行? 只能美"臉"麼? "頭髮" 能不能做一下呢? 這一坑,有時好過,有時真不好過,認真對待總是對的。
坑二:環境評析不深入環境評析,是對業務目標的執行與展開。美「臉"可以,有工具麼? "臉" 能夠給提取出來吧? 是否需要美容專家來指導指導? 這個坑,其實並不大,因為在現階段大部分情況是"腦袋決定屁股"的嘛。往往是人員、數據、工具等齊全了,領導們覺得是不是得做點什麼東西出來了呢? 可能這一點表述的不夠嚴謹,歡迎拍磚。這一坑,要求人員能夠勝任評析的工作,能夠看出臉的哪部分是哪部分; 要求"臉"足夠豐富,能夠支撐得起後續的整容計劃; 要求工具得當,使得順手。總體來說,此坑必填才能順利地將項目進行下去。
坑三:實施計劃跟不上變化基於對環境的評估,以及對業務目標的理解,我們終於能夠明確一個還算靠譜的挖掘目標——把臉優化為瓜子臉。於是,我們制定了詳細的實施計劃,準備大幹一場。這一坑,現階段是開挖了,也填不上,需要在以後階段逐步cover
流程之數據理解
基於業務理解,在數據理解階段,以初步數據收集開始,檢查數據的可訪問性和解決具體的業務問題的充分性,接下來進行一些活動,目的是熟悉數據,識別數據質量的問題,從而獲得關於數據的第一手信息,發現有趣的子集,形成對隱含的信息的假設。如圖一左圖所示,是真正開始進行臉的"抽取"了,為了實現目標,需要結合專家人員的知識,抽取相應的組織數據,如臉部分的明細數據,臉表皮層數據,臉真皮層數據,臉皮下層數據等等,甚至為了整體上的協調,會抽取整體輪廓數據等。這一過程,是業務理解中環境評析的深入與綜合。
坑一:原始數據收集困難為了實現美顏的目的,需要非常多的數據支撐。現實中,可能由於種種原因,有一些關鍵數據不能夠收集。這一坑,有著十分現實的硬約束,比如你就是不能收集客戶的隱私信息或者不能得到各國CDS證券的歷史交易信息等。這一硬約束,除非通過其它變通的方式來解決,要不就是無解的。
坑二:原始數據重疊與坑一相反,這個坑恰恰是我有更多的原始數據,但是,數據口徑並不統一,如何整合它們將是一個新的難題。如果專家人員能更多地參與和梳理,此坑往往是能夠解決的,但也是一個需要耗費相當多人力物力的過程。日前,《銀行業金融機構數據治理指引》則明確地表明數據是需要精心「呵護」的。
坑三:以抽樣代總體大數據需要抽樣麼?有人會想,我們國家也就14億人臉,全量拿來就好了嘛——有時候,還真難以實現。一方面,現實當中存在取數的困難性,存在計算的困難性;另一方面,抽樣與總體總是相對的,明確研究的總體很重要,總體確定了,再考慮抽樣的問題。這個坑其實不太明顯,但往往決定模型的成敗。如果我們樣本把鼻子高且顏值低的人過多地加入我們樣本,則會發現鼻子越高觀賞度越低,從而帶來抽樣偏見,無法對總體做出準確描述。
流程之數據準備
基於對數據的理解與洞察,我們開始了原始數據構造最終數據集(將要輸入建模工具的數據)的活動。抽取相應的組織數據,並不能夠直接地堆砌,直接堆砌還是現實世界,要達到模型世界,還需要較多步驟的轉換才成。看坑。
坑一:重抽樣的問題在風險欺詐領域,壞樣本總是非常稀少,為了對壞樣本有一個較好的擬合,往往會人為增大壞樣本的比重。但是調整完樣本之後,能夠直接應用麼? 這個坑,也不太明顯。通常情況下,在關注排名的領域是可以的,而在關注實際發生率,如診斷醫學、保險學領域則容易犯錯。請看下圖。在增加調整項和不增加調整項情況下,模型擬合的結果與實際結果有比較大的差別。具體實例請參考SAS官方連結http://support.sas.com/kb/22/601.html。
坑二:變量編碼的問題在進行空間映射時,免不了進行各種變換,其中比較常用的是啞變量轉換——dummy coding。而有些軟體如SAS會支持進行另一種轉換----effect coding。兩種轉換方式對結果的正確性是沒有影響的,但有時候進行數據驗證,比方看OR值,使用係數來進行驗證,會發現對不上號。這個坑還是比較隱含的,但也需要有清晰的思考。
示例: 原始數據
示例:基於數據的dummy coding
如上為對4組水平進行的觀測結果,進行啞變量編碼如下:
回歸結果: F(3, 12) = 76.00 P = 0.0000 R-squared = 0.95
示例:基於數據的effect coding
回歸結果: F(3, 12) = 76.00 P = 0.0000 R-squared = 0.95
嗯,聰明的小明已經發現了端倪,你看到了什麼呢?
坑三:目標變量問題在進行監督型模型訓練時,目標變量的確定,直接關係到最終模型的效果。這裡也有一些小坑——目標變量能否反映問題的實質? 數據準備過程中,是否加入了噪音? 在模型影響因素的選擇中,是不是有一些特徵是根據目標變量衍生出來的(即以目標預測目標)?此坑雖小,往往在模型開發大半才會發現,不得不引起重視。
流程之建模
相較來說,建模階段是最複雜的,但坑其實沒有那麼大,有以下需要關注的地方。
坑一:建模的技術選擇經過以上淬鍊,我們終於打造了圖一右側完美的臉龐,現在是時候回歸到左側了。R U Kidding Me? 並沒有。模型世界或模型空間,只是我們解決問題的手段而已,現實世界才是我們最終的關注點。完美的臉龐(模型)有助於我們進行對問題的求解。現實生活中,很難判斷一個人違約率有多高,但是,在模型世界,我總能夠給出一個相應的評分來估計出這個人的違約概率。那麼坑在哪裡呢?(張望臉)
有坑的地方在於技術選擇時需要考慮模型的假設條件,只有相匹配的假設,模型才能發揮出最大作用,也才能對現實進行更深入的刻畫。這個坑,通過對技術的深度掌握和多多實踐即可解決,不再贅述。
流程之模型評估
在這個項目階段,你已經構建了一個(或多個)從數據分析的角度來說看上去質量較高的模型。在進行模型的最終部署之前,一定要確定它正確地反映了業務目標。關鍵的目標是否有一些重要的業務問題沒有充分考慮到,讓你必須返回到業務理解階段呢?這個階段的最後,還應該確定使用數據挖掘結果得到的決策是什麼。這一階段有非常多的評估指標可供選擇,可以進行多模型的比較,通常來講,也沒有太多坑。如果有,就是選擇指標進行評估時,是否合理,有沒有考慮到稀疏數據的問題。
流程之模型部署在創建模型過程中獲得的知識可以被組織起來並以用戶能夠使用的方式將其呈現。數據挖掘解決方案必須像簡單的靜態報表一樣部署給決策者,或直接寫入現有的資料庫(資料庫評分)。模型的建立通常並不意味著項目的結束。儘管模型的目的是為了提升數據的知識力,但獲得的知識需要被組織和表示成用戶可用的形式。這常常與包含能支持公司決策的「現場」模型(「live」 models)的使用有關,例如,Web 頁面的即時個性化服務或者銷售資料庫的重複積分等。然而,與具體需求有關,部署階段可認為是與生成一份報告一樣簡單,或者認為是與實施一個覆蓋整個企業可重複的數據挖掘過程一樣複雜。
坑一:部署環境問題這是一個比較常見的問題。在我們辛苦開發後,模型能夠較高地反映現實世界了,正準備高高興興地大規模應用,卻發現開發模型的環境與線上部署的環境不同。這個坑沒有行之有效的方法,需要按照線上環境再次進行模型訓練。有效規避的方法是提前交流線上的部署環境和應用問題。
坑二:指標穩定性問題指標穩定是模型能夠正確預測的關鍵,進行穩定性的監控是很有必要的,能夠提前發現哪些因素發生了變化,變化的趨勢是什麼,通常我們使用PSI來進行指標穩定性監控。提示這個坑,是要大家關注模型的後續運行,這一點經常會被忽視。
坑三:預測區分度問題同樣,指標穩定並不表明模型依然有效,關注預測的區分度也是十分必要的。如果指標穩定,但是預測的能力有比較大的折扣,則需要關注是不是業務發生了新的變化,這一變化是否是長期的。提示這個坑,是要大家關注模型的後續運行,這一點也經常會被忽視。
數據挖掘填坑指南
以上基於CRISP-DM通用數據挖掘流程簡單總結了一些挖掘過程中會被忽略的問題,並給出了填坑指引。限於篇幅與筆者能力所限,肯定不夠全面,望大家指正。
END