CRISP-DM--數據挖掘標准流程
在1996年的時候,SPSS,戴姆勒-克萊斯勒和NCR公司發起共同成立了一個興趣小組,目的是為了建立數據挖掘方法和過程的標准。並在1999年正式提煉出了CRISP-DM流程。這個流程確定了一個數據挖掘項目的生命周期包括以下六個階段:
- 業務/研究理解階段
- 確認目標:從整體上闡明項目目標和需求
- 挖掘目標(優先級)
- 成功標准(量化)
- 評估環境
- 資源目錄
- 需求、假設、約束
- 成本代價比
- 制定項目計划
- 項目計划
- 最初評估項目技術
- 確認目標:從整體上闡明項目目標和需求
- 數據理解階段
- 收集數據
- 描述數據
- 探索數據
- 評估數據質量:
- 數據成本與質量平衡
- 數據准備階段
- 選擇數據:考慮與業務需求的相關性、數據質量和技術約束等因素
- 清洗數據:通過選擇、替換等方法提高數據質量
- 構造數據:構造衍生屬性
- 集成數據:同源數據合並和不同源數據合並
- 格式化數據:根據業務需求對數據進行格式化
- 在工業領域,一定要一定要一定要利用現有的知識,首先充分利用現有的知識進行特征提取。在相對成熟的領域一般都已經有現成的解決方案、論文等可以參考。
- 建模階段
- 選擇建模技術:充分利用現有的知識;對同一個挖掘問題可能應用多種不同的技術
- 生成測試設計:分離測試數據和訓練數據,定義模型結果驗證參數
- 建立模型:列出參數和選擇值,評估模型,模型要簡單、可靠、可解釋性高
- 評估階段
- 從業務角度評估結果,是否滿足階段一的目標
- 確認解釋性:確認業務和研究問題的重要組合部分是否未被清楚地解釋
- 審核結果:是否有重要因素被忽略
- 審核模型應用的風險:比如模型不可用的情況,模型的邊界
- 評價部署方案:方案的成本、最終的收益、可擴展性、帶來的風險等等。
- 部署階段
- 計划的監控和維護:數據分析實施的計划應用到業務系統中,數據和結果反饋
- 最終的報告
- 項目回顧報告
過程出具的工作結果:分析問題的思維導圖、明確項目依據和目標(業務理解和指標細化)、根據數據字典進行數據分析、總結性的數據探索報告、分析計划(維度和度量等指標確定和實現)、最終驗證報告、業務實現。
注意:在整個CRISP-DM的過程當中,圍繞數據為核心,項目可能會在各個階段之間跳躍,因為數據分析一定是一個不斷迭代的過程。是否可以繼續進行下一個階段取決於是否有達到最初的業務目標,如果業務目標沒有達到,那么就要考慮是否是數據不夠充分或算法需要調整,一切都以業務目標為導向。
業務/研究理解階段
確定目標
- 背景:客戶方面要給出明確的系統上下文,包括業務相關(比如生產制造工程中,周圍環境)等的相關原理、相關運作機制,相關關鍵信息,而且在盡量容易理解的同時,保證對於業務相關所有量的一個准確描述。
- 從商業角度全面了解客戶想要達到什么目標,以及多個目標的重要程度和優先級,並權衡影響醒目結果的重要因素
- 對於期待的結果一定要有量化的衡量,對於主觀方式描述的,應該標識哪個或哪些人做出這個主觀假設
評價環境
- 列出項目可用的資源:人員(商業專家,數據專家,技術支持人員,數據挖掘人員),數據(是否可以觀測數據,實時訪問,可以控制)計算資源(硬件平台和軟件支持)
- 需求、假設和約束:
- 列出需求:完成項目的時間表,結果和安全方面的可理解性和質量
- 列出假設:可能是數據方面的假設,也可能是作為項目基礎的商業有關假設。
- 列出約束:資源可用性,技術約束
- 成本和收益:比較項目成本與項目成功后為商業帶來的可能收益
項目計划
- 列出項目需要經歷的各個階段及豐碑性產出
- 定義初步的進程計划並於全部相關人員討論其可行性,
- 將全部標出的目標和選出的技術何在一起形成一個可以解決商業問題和滿足商業成功標磚的連貫過程
- 評估解決和部署方案所需的精力和資源(例如50-70%時間和精力花在數據准備階段)
- 標注關鍵步驟,關鍵點,重審點,主要的重復過程
- 階段性產出、大眾及高層評審、評估策略、更新方案
- 分析時間進度和風險之間的關聯
- 應對風險的行動和建議,以及可能出現的結果
- 注意:挖掘過程可能有大量重復的步驟
- 工具和技術的初步評估
- 給出工具和技術選擇標准的列表
- 選擇可能的工具和技術
- 評估技術的適合層度
- 根據可選方案的評估,審查和篩選合適技術
數據理解階段
- 收集數據:
- 列出獲得的數據集(或多個數據集),包括數據在項目位置,以及獲取方法和面臨的問題
- 原始數據收集報告:列出項目中葯用到的數據,包括更詳細數據的篩選要求,並應明確哪些屬性比其他屬性重要
- 數據需求計划:計划好需要什么信息;檢查所要信息是否真正可用
- 記錄沉淀問題和解決方案,
- 注意:如何整合多個數據源(可能引起數據質量問題)
- 描述數據:
- 列出已獲得的數據,包括數據格式、數據質量等其他外部數據特征
- 數據規模分析
- 表明盡量獲取的數據和方法
- 訪問數據源
- 若合適的話,使用統計分析
- 給出表及其關系報告
- 檢查數據容量、多樣性、復雜性
- 數據包含自由文本嗎?
- 數據類型和值
- 檢查屬性的可訪問性和可用性
- 檢查數據類型(數值,符號、類別等)
- 檢查屬性值域
- 分析屬性相關度
- 從商業角度,理解每個屬性和屬性值得含義
- 對每個屬性,計算基本統計量(分布、均值,最大/小值,標准差,模數,傾斜度)
- 從商業角度,分析基本統計量和敘述與其含義相關的結果
- 屬性與挖掘目標有關嗎?
- 屬性意義被一致應用嗎?
- 詢問領域專家對於屬性相關的看法
- 有必要平衡數據嗎?(取決於建模技術)
- 關鍵點:
- 分析關鍵信息
- 檢查跨表關鍵信息的交叉數量
- 重審假設/目標
- 探索數據:重點把握數據整體趨勢及特殊子集
- 數據探索:
- 細致分析值得關注屬性的特征
- 表明子聚集的特征
- 為以后分析提出設想
- 考量和評估數據描述報告中蘊含信息
- 提出假設並表明活動項目
- 若有可能,把假設轉換成數據挖掘的一個目標
- 澄清或更精確化數據挖掘目標。盲目地搜尋不是一定沒有的,但針對商業目標的搜尋更為可取
- 做基本分析以驗證假設
- 數據探索:
- 評估數據質量:
- 驗證數據全、正確與否(尤其注意人工收集的數據是否因KPI而人為修改的),錯誤有多常見?缺失值?問題出現在哪里和出現頻率?
- 獲取數據的成本與數據質量質量平衡
- 重審鍵,屬性
- 檢查覆蓋率(可以所有可能性?)
- 檢查鍵
- 屬性含義和包含的值是否相符合
- 識別空白字段和缺失屬性
- 缺失屬性的含義
- 檢查值不同確表達類似含義的屬性(低脂肪,減肥)
- 檢查值得拼寫(同一個值有時大寫,有時小寫)
- 檢查偏差,判斷偏差是噪音還是暗示着值得關注的現象。
- 檢查值得合理性,若所有字段相同和相似的值
- 重審有悖於常識的屬性值
- 使用可視化圖表,柱狀圖等來說明數據的不一致性
- 平面文件的數據質量
- 如果數據存儲在平面文件中,檢查使用了哪個分解符,以及它是否在全部屬性中被一致使用
- 如果數據存儲在平面文件中,檢查每個記錄的字段數,他們一致嗎?
- 噪音和源之間的不一致性
- 檢查不同源之間的一致性和冗余
- 計划好怎樣處理噪音
- 甄別噪音數據類型和哪些屬性會受影響
- 排除一些行為表現既不肯定也不否定的數據可能是必須的
- 重審全部假設,判斷他們是否有效,還是沒有提供有關數據和知識的任何信息
- 列出數據質量檢查報告
數據准備階段
- 選擇數據
- 列出被包含/排除數據,並給出理由
- 收集適當的附加數據(從內外不同的來源)
- 做些顯著性檢驗和相關度測試,以判斷字段要包括進來
- 依據數據質量和數據探索的經驗重新考慮數據選擇標准(如可能包含/排除數據)
- 依據健米的經驗(例如,模型評估可能需要其他數據集)重下新考慮數據選擇標准
- 選擇不同的數據子集(例如,不同的屬性,錦復合某個條件的數據)
- 考慮抽樣技術的使用,根據不同屬性重要性或者同一屬性的不同值來進行加權抽樣可能是有益的
- 記錄包含/排除數據的原則
- 檢查可用於抽樣數據的技術
- 根據數據選擇標准,判斷若干屬性是否比其他屬性更為重要,從而賦予這些屬性相應權值。
- 清洗數據
- 重新考慮觀察到的噪音類型
- 校正、移除或忽略噪音
- 確定如何處理特殊值和其意義。是否是未被提出的問題。另外數據截斷時也可能造成特殊值
- 依據數據清洗經驗重新考慮數據選擇標准
- 數據清洗報告
- 數據質量問題的解決策略和行動描述出來
- 數據應用於挖掘時的潛在數據質量問題,以及對結果的潛在影響
- 構造數據
- 檢查可能的構造機制,它與項目建議的工具列在一起
- 對最好是工具內執行構造還是外部構造
- 依據構造經驗重新考慮數據選擇標准
- 輸出派生屬性
- 判斷屬性是否應該規格化
- 考慮通過新屬性來添加與屬性相應重要性的新信息
- 缺失值應該如何構造或歸因?
- 添加新屬性到被訪問的數據
- 在加入派生屬性前,判斷是否怎樣精簡過程或使建模短發容易使用
- 單一屬性轉換
- 把區間轉換成離散字段,有時離散字段轉換成數值型
- 整合數據
- 檢查可以用來整合給定輸入源的整合數據
- 檢查源並保存結果
- 根據數據整合經驗重新考慮數據選擇標准
- 一些知識可能以非電子形式存在
- 格式化數據
- 重排記錄,一些工具對順序有要求
- 重格式化內部值
- 輸出數據集描述
建模階段
- 選擇建模技術
- 定義好技術本身對數據的某些假設(如質量,格式,分布)
- 與數據描述報告中的假設進行比較
- 如果有需要,回溯到數據描述報告以確保這些假設寫入其中
- 生成測試設計
- 檢每個數據挖掘目標對應的現有測試設計
- 確定必要的步驟(重復次數,迭代次數)
- 准備測試數據
- 輸出測試計划
- 建立模型
- 記錄初始參數以及選擇參數的理由
- 在輸入數據集上執行選擇的技術生成模型
- 后處理數據挖掘的結果(編輯規則,展示樹)
- 輸出模型描述:
- 描述現有模型的特征,這對將來有用
- 記錄用於生成模型的參數設置
- 給出模型詳細描述和特殊性質
- 對於基於規則的模型,列出生成的規則和各規則的評價和這個模型的准確度、覆蓋率
- 對於隱含模型,列出關於模型的技術信息(如神經網絡的拓展結構)和建模過程產生的行為描述(准確度或敏感度)
- 描述模型的表現和解釋和遇到的困難
- 給出數據中有關模式的結論(若有的話)有時模型不要獨立的評價過程就會揭示出數據的重要事實
- 評估模型
- 根據測試策略測試結果(訓練和測試,交叉驗證,自舉法等)
- 比較評估結果和解釋
- 根據成功和評估標准,列出結果的好壞等級
- 用商業術語解釋結果(金盡可能延伸)
- 從領域或數據專家哪里獲得關於模型的評論
- 檢查模型的合理性
- 檢查與挖掘目標的沖突
- 與給定的知識庫對比檢查以判斷發現的信息是否是新穎的和有用的
- 檢查結果的可靠性
- 分析每個結果的可發布潛力
- 如果對於建立的模型有口語化的描述,試評價規則,他們復合邏輯嗎?他們可行嗎?他們太多了或太少了?他們違背常識嗎
- 評價結果
- 深入研究為什么某個建模技術和參數設置會導致結果的好/差
評估階段
- 評價結果
- 理解數據挖掘結果
- 參照應用解釋結果
- 檢查對數據挖掘目標的影響
- 與給定的知識庫對比檢查以判斷發現的信息是否是新穎的和有用的
- 評估和評價與挖掘成功標准有關的結果,實現了最初的目標了嗎?
- 比較評估結果並解釋
- 根據挖掘成功標准,列出結果的好壞等級
- 檢查結果對於最初應用目標的影響
- 會在項目后面或新項目中提出新的商業目標嗎
- 對將來的數據挖掘項目給出結論性意見
- 如果時間和預算可以,另一個非必需的評估是在實際應用中同步運行測試模型
- 重審過程
- 對使用的數據挖掘過程做一個全面概述
- 對每一個階段,有必要回溯嗎?
- 對每一個階段,被最優先執行?
- 有什么方式改善
- 標識失敗之處
- 識別有誤步驟
- 識別可選活動,過程中意外的分支
- 重審與商業成功標准有關的數據挖掘結果
- 對使用的數據挖掘過程做一個全面概述
- 確認下一步
- 分析每個結果的可發布力
- 估計當前過程可改善的錢來空間
- 檢查遺留資源以判斷是否允許再過程重復(或還需要額外資源)
- 對多個可選后續火星給出建議
- 修訂過程計划
部署階段
- 規划部署
- 概述可部署的結果
- 制定和評估可備選的部署計划
- 確定明確無誤的知識或信息結果
- 知識或信息如果傳播到用戶?
- 結果的使用如何被監控或如何衡量其獲益(在合適的地方)?
- 模型或軟件結果如果在公司系統內部部署?
- 使用如果受監控或如何衡量其獲益(在合適的地方)?
- 識別部署數據挖掘結果時可能出現的問題(部署的缺陷)
- 規划監控和維護
- 檢查呈動態的表現方面(如,環境中為什么會改變)
- 如何監控准確性
- 何時不再使用 數據挖掘結果或模型?給出標准(有效性,准確度閾值,新數據,應用范圍變化等等)?如果模型或結果不再被使用了會怎樣?(更新模型,提出新的數據挖掘項目)
- 模型使用的商業目標會隨時間而改變嗎?完整的記錄模式試圖解決的原始問題
- 制定監控和維護計划
- 生成最終報告
- 確定需要什么樣的報告(ppt,詳細結論,模型解釋?等等)
- 描述整個過程,表明帶來哪種成本,說明原始計划的偏差,描述計划執行並給出將來工作哦的建議
- 明確報告的目標群體
- 列出報告的大致結構和目錄
- 挑選需要寫入匯報的結論
- 撰寫報告
- 確定最終稱述放人目標部門
- 從最終報告中選擇要寫入最終描述的條目
- 回顧項目
- 與參與項目的重要成員接觸,詢問項目期間的獲得的經驗
- 若商業運行中終端用戶使用了挖掘結果,詢問他們滿意嗎?改善點?其他支持?
- 對反饋總結並寫出經驗文檔
- 分析整個過程(好的地方,錯誤的地方,教訓)
- 記錄下詳細的數據挖掘過程(使用模型的結果經驗反饋回來的怎么樣)
- 從細節抽取對將來項目有用的經驗