天天看點

大資料技術貼:建構一個有指導的資料挖掘模型

大資料技術貼:建構一個有指導的資料挖掘模型

這構造有指導的資料挖掘模型的過程中,首先要定義模型的結構和目标。二、增加響應模組化。三、考慮模型的穩定性。四、通過預測模型、剖析模型來讨論模型的穩定性。下面我們将從具體的步驟談起,如何構造一個有指導的資料挖掘模型。

有指導資料挖掘方法:

把業務問題轉換為資料挖掘問題

選擇合适的資料

認識資料

建立一個模型集

修複問題資料

轉換資料以揭示資訊

構模組化型

評估模型

部署模型

評估結果

重新開始

大資料技術貼:建構一個有指導的資料挖掘模型

(有指導資料挖掘方法模型)

步驟:

《愛麗絲夢遊仙境》中,愛麗絲說“我不關心去哪兒”。貓說:“那麼,你走哪條路都沒什麼問題”。愛麗絲又補充到:隻要我能到達某個地方。貓:“哦,你一定能做到這一點,隻要你能走足夠長的時間。”

貓可能有另外一個意思,如果沒有确定的目的地,就不能确定你是否已經走了足夠長的時間。

有指導資料挖掘項目的目标就是找到定義明确的業務問題的解決方案。一個特定項目的資料挖掘目标不應該是廣泛的、通用的條例。應該把那些廣泛的目标,具體化,細化,深入觀察客戶行為可能變成具體的目标:

确定誰是不大可能續訂的客戶

為以家庭為基礎的企業客戶設定一個撥打計劃,該計劃将減少客戶的退出率

确定那些網絡交易可能是欺詐

如果葡萄酒和啤酒已停止銷售,列出處于銷售風險的産品

根據目前市場營銷政策,預測未來三年的客戶數量

有指導資料挖掘往往作為一個技術問題,即找到一個模型以解釋一組輸入變量與目标變量的關系。這往往是資料挖掘的中心,但如果目标變量沒有正确的定義以及沒有确定适當的輸入變量。反過來,這些任務又取決于對要解決的業務問題的了解程度。沒有正确的了解業務問題就沒辦法把資料轉化為挖掘任務。在技術開始之前,必須認識兩個問題:如何使用結果?以何種方式傳遞結果?

上述兩個問題,都是建立在客戶的真正需求是什麼?而不是作為資料挖掘工程師認為的什麼是有用的資料,什麼對客戶最好的資料。這些結果看似有利于客戶提高銷售額,但是我們傳遞的結果是什麼,我們有了解客戶的需求嗎?所有前提,不要着急急着動手,先了解真正需求,不可盲目主斷。

1.1如何使用結果?

例如:許多資料挖掘工作旨在提高客戶保留

主動向高風險或高價值的客戶提供一個優惠,挽留他們

改變擷取管道的組合,以利于那些能帶來最忠實客戶的管道

預測未來幾個月的客戶數量

改變會影響客戶的滿意度的産品的缺陷

這些目标都會對資料挖掘過程産生影。響。通過電話或直接郵寄的營銷活動接觸現有客戶,意味着除了确定客戶風險之外,你要了解為什麼他們處于風險中,進而可以構造一個有吸引力的優惠。電話,不能過早或過遲。預測意味着除了确定那些客戶可能離開,确定有多少新客戶加入,以及他們會停留多久。而新客戶的加入,不隻是意味着預測模型要解決的問題,還是被納入到業務目标和預算之中。

1.2如何傳遞結果?

有指導的資料挖掘項目可能會産生幾個不同類型的傳遞形式。傳遞形式往往是一個報表或充滿圖示和圖形的簡報。傳遞形式會影響資料挖掘的結果。當我們的目的是提醒銷售驚雷時,産生一個營銷測試的客戶清單是不夠的。所謂的如何傳遞結果,就是在挖掘結果産生之後,我們要如何給使用者提供這個結果,目的是好的,但實際的過程中會遇到,會遇到我們沒有辦法去傳遞這個結果。因為,你傳遞的結果,可能會導緻一些本不該流失的客戶,卻流失了。這也是在具體工作之前,我們要考慮的問題。

資料挖掘人員的作用是確定業務問題的最後表述可以被轉換成一個技術問題。前提是正确的業務問題。

大資料技術貼:建構一個有指導的資料挖掘模型

2.1什麼資料可用?

尋找客戶資料的首要地方就是企業資料倉庫。倉庫中的資料已經被清洗和核實過,并且多個資料源被整合到一起。一個單一的資料模型有望確定命名相似的字段在整個資料庫和相容的資料類型中都有相同的含義。企業資料庫是一個曆史資料庫,新資料不斷的被追加,但曆史資料一直不變。從這一點更有利于做決策支援。

問題在于,在許多企業組織中,這樣的資料倉庫實際上并不存在,或者存在一個或多個資料倉庫,不符合直接作為規範的資料用來挖掘。在這種情況下,挖掘人員,必須尋求來自不同的部門的資料庫和業務系統内的資料。業務系統資料是指執行一個特定的任務,如網站運作,索賠處理,完成呼叫或賬單處理。它們的目标是快速、準确的處理事務,資料可以儲存成任何格式。而這些對于沒有資料倉庫的一些企業來說,這些資料往往是隐藏的很深,需要大量的企業排程和規劃來整理這些資料。這也就談到了一個問題:就是資料倉庫對一家企業的重要性,而建立企業級資料倉庫,需要的決策不是一個經理就可以完成的,這可能需要企業級最高上司下令,下面的所有部門全部配合。

在企業總确定哪些資料可用是相當困難的。因為許多的文檔會丢失或過時。通常情況下,沒有一個人可以提供所有答案。确定什麼資料可用,需要周遊資料字典,了解具體的業務,溝通每個部門,通路使用者和dba,審查現有的報告以及查找資料本身是否有用。還有些問題,不僅需要有關客戶的資料,還需要潛在的客戶的資料。當需要這些資料的時候,外部資源和業務系統,如web日志、呼叫詳細記錄、呼叫中心系統、有時甚至是郵件或電子表格,這些都是資料資訊的來源。

資料挖掘工作的方式并不是一直等到完美和幹淨的資料才進行下一步工作。雖然需要額外幹淨的資料,但是受挖掘必須能夠使用目前的資料,提前入手,開始工作。

2.2多少資料才足夠?

一、資料越多越好,更多意味着更好。在模組化期間,必須對模型集進行平衡,使得每個結果的數目都相等。如果在一個大規模的樣本中有一個比例很小的稀有資料,則一個較小的、均衡的樣本會更受歡迎。

二、當模型集足以建立良好的、穩定的模型時,使它更大将會産生相反的作用,因為這時需要更長時間在更大的模型上去運作,由于資料挖掘是一個反複的過程,這就導緻時間的浪費。如果一次模組化例程的運作都需要數小時而不是數分鐘,這個時間的消耗就耗不起的。這就導緻,在模型确定後,資料并不是越多越好。

2.3需要多久的曆史?

資料挖掘使用過去的資料預測未來。但是,資料需要來自多久的過去?這個沒有定性的回答,這要考慮很多的因素。另一方面,曆史上太久的資料未必對資料挖掘有用,因為市場環境在變化,特别是當一些外部事件(如監管制度的變化)進行了幹預時尤其如此。對于許多以客戶為中心的應用,2-3年的曆史是合适的。然而,在這種情況下,客戶關系确實存在有效才被證明是有價值的,那麼重要的是什麼:最初的管道是什麼?最初的報價是什麼?客戶最初怎麼支付的等。

多少變量:

不熟練資料挖掘的人員有時太急于抛出不太可能有意義的變量,且隻儲存了他們認為重要的幾個精心挑選的變量。資料挖掘方法要求資料本身能揭示它重要或不重要。

通常情況下當與其他變量結合使用時,原先被忽視的變量會具有預測價值。例如:一個信用卡者從未把把現金刷沒又繼續刷,通過資料挖掘發現他們僅在11月和12月才會使用用信用卡墊付。據推測,這些人非常謹慎,大部分時間他們都避免因多刷而産生的高利息,謹慎也推斷出一個結論(他們比習慣使用現金墊款的人更加不太可能選擇拖欠欠款),但在假期,他們需要一些額外的現金,并願意為此付出較高的利息。

2.4資料必須包含什麼?

最低限度,資料必須包含有可能有意義的結果的例子。有指導資料挖掘的目的是預測一個特定目标變量的值,但在有指導的資料挖掘中,模型集必須由分類好的資料組成。要區分哪些人拖欠貸款哪些人不可能拖欠,模型集的每個類都需要有成千上萬的例子。當一個新的申請産生時,他的申請會與過去的客戶的申請進行對比,可以直接把新的申請歸類。這其中隐含的意思:資料可用來形容過去發生了什麼事情,從錯誤總吸取教訓,首先我們必須識别我們已經犯了什麼錯。

在資料用于構模組化型之前,在探索資料上花費時間的重要性通常沒有得到足夠的重視。後面我們會抽出絕對的篇幅來說明這個問題。優秀的資料挖掘工程師似乎非常依賴直覺——例如,某種程度上能夠猜測将要派生的變量結果如何。要在陌生的資料集中利用直覺來感應發生了什麼事情,唯一辦法就是陷入資料之中,你會發現許多資料品質的問題,并能夠得到啟發提出在其他情況下不容易被發現的問題。

3.1檢查分布

在資料庫的初步探索階段,資料可視化工具非常有益,如:散列圖、條形圖、地理地圖、excel等可視化工具對觀察資料提供了強大的支援。

當你開始着手一個新資料源中的資料檔案,就應該剖析資料了解到底發生了什麼,包括計數和每個字段的彙總統計,分類變量不同值的數量,并在适當的情況下,需要基于産品和區域的交叉統計表。除了提供對資料的了解,剖析工作可能會産生不一緻問題或定義問題的警告,這些問題可能會對後面的分析造成麻煩。

3.2值與描述的比較

觀察每個變量的值,并把它們與現有檔案中的變量描述進行比較。這項工作可以發現不準确或不完整的資料描述。其實是,你記錄的資料,是否和你要描述的資料一緻,這個要先确定。目的是什麼?在實際的資料挖掘過程中,你要去揣測這個字段的資料到底是什麼意思?如果業務人員知道,那是最好的了。如果業務人員都不知道,這個時候,可能就需要憑借經驗去揣測了,而且這種情況經常發生,字段定義不明确。

3.3詢問大問題

如果資料看上去似乎不明智或者不如所願,記錄下來。資料探索過程的一個重要輸出是對提供該資料的人給出一個問題清單。通常,這些問題将需要進一步研究,因為很少有使用者像資料挖掘工程師一樣仔細地觀察資料。對資料的探索的前期工作,判斷字段,含義,是否有用,是否缺失,是否有問題等一系列問題,需要大量的工作,同時也是一件心細的過程。

模型集包含模組化過程中使用的所有資料。模型集中的一些資料被用來尋找模式,對于一些技術,模型集中的一些資料被用來驗證該模型是否穩定。模型集也可用來評估模型的性能。建立一個模型集需要從多個資料源聚合資料以形成客戶簽名,然後準備資料進行分析。

4.1聚合客戶簽名

模型集是一個表或一系清單,每一行表示一個要研究的項目,而字段表示該項目有利于模組化的一切。當資料描述客戶時,模型集的行通常稱為客戶簽名。客戶簽名,每個客戶都由他離開的蹤迹唯一确定,你可以利用蹤迹充分的了解每個客戶。

從關系型資料庫中聚合客戶簽名旺旺需要複雜的查詢,這些查詢往往需要關聯很多的表去查詢的資料,然後利用其他來源的資料增強結果。聚合資料的一部分過程是使資料位于正确的彙總層次,然後每一行都包含先關客戶的所有資訊。

4.2建立一個平衡的樣本

在标準的統計分析中,一種常見的做法是抛棄離群點——遠遠超出正常範圍的觀測值。然而在資料挖掘的過程中,這些利群點可能正是你要找的。或許他們帶有欺詐行為,可能是你的業務中的一些錯誤,或一些利潤驚人的市場商機。在這種情況下,我們不希望抛出離群點,認識和了解他們。

知識發現算法需通過執行個體來進行學習。如果沒有足夠數量的關于某個特定類或行為模型的例子,資料挖掘工具無法得出一個預測該類或模式的模型。在這種情況下,利用罕見事件的例子豐富該模型集,提高模組化中該事件的機率。如果比較罕見,有兩種方法可以平衡樣本:一、分層抽樣。二、權重。

例如:銀行要建立一個模型,以确定哪些客戶是私人銀行計劃的潛在客戶。這些計劃隻針對非常富有的客戶,他們在一個相當大的銀行客戶樣本中也是非常稀少的。如何建構一個能發現這類使用者的模型,該模型集可能需要有50%的私人銀行的客戶,即使他們代表所有支票份額中還不到1%。另外私人銀行客戶可能被賦予一個值為1的權重,其他客戶的權重為0.01,是以浙西專有客戶的總權重等于其餘客戶的總權重。通過增加一些孤立點客戶的權重,進而達到模型對資料的合理梳理。

4.3時間幀

基于一個時間段内的資料建立模型會增加風險,即學習的知識不真實。結合模型集中的多個時間幀可以消除季節性因素的影響。由于季節性影響如此重要,是以應該把它們明确地添加到客戶簽名中。還有假日購物模式也非常重要。把客戶的資訊按照時間細分,或是在相應的資料上打上标簽。

4.4建立一個預測模型

當模型集用來預測時,另一個問題,模型集應包含多長時間,時間段該如何劃分。任何客戶标簽在預測變量和目标變量之間都應該有一個時間差。時間可分為,過去、現在、将來。當然所有資料都來自過去,過去又分為三個時期:遙遠的過去、不太遙遠的過去和最近。預測模型就是要發現遙遠的過去的模型,用來解釋最近的輸出。當部署模型時,它能夠使用最近的資料預測未來。如果建構一個模型來利用6月份(不太遙遠的過去)的資料對7月份(最近)進行預測,那麼在8月份之前的資料是可用的,但它不能用來對9月份進行預測。但是8月份的資料是可用的嗎?肯定不是,因為這時,資料仍在産生資料。也不會是9月份的第一周,因為這些資料需要被收集、清洗、加載、測試和認可。8月份的資料可能要懂啊9月份中旬或10月才能用,到這個時候,沒人會擔心9月份的預測了。解決的辦法是在模型集中跳過1個月。

4.5建立一個剖析模型集

剖析模型集與測試模型相似,但有一點:目标的時間幀與輸入的時間幀重疊。看微小的差别對模組化工作的影響卻很大。因為輸入可能會“污染”目标模式。例如:銀行,擁有投資賬戶的客戶在儲蓄賬戶中往往有非常低的結餘——因為他們能從投資賬戶中得到更好的回報。這是否意味着銀行要為了投資賬戶而識别低存儲賬戶餘額的客戶呢?可能不需要,因為這些客戶的資産很少。

解決這個問題的一種方法是非常仔細得選擇剖析模型的輸入。把所有賬戶餘額組合到“儲蓄”,“貸款”兩組。儲蓄組包括所有類型的儲蓄和投資。這種方法非常有效,事實證明模型是穩定的。一個更好的辦法:開通投資賬戶之前對賬戶産生一個模型。一個并發的問題是:由于每一個客戶的時間幀都取決于客戶開通賬戶的時間,建立這樣一個模型集面臨更多的困難。

當目标變量的時間幀與輸入變量的時間幀相同時,那麼該模型是一個剖析模型,并且這個輸入可能會引入一些似是而非的模式,而這些模式可能會混淆資料挖掘技術。你需要非常小心地選擇輸入或者重模組化型集來産生預測模型。

4.6劃分模型集

當你從适當的時間幀中獲得預分好的資料後,有指導資料挖掘房峰輝把它分為三個部分。一、訓練集,使用者建立初始模型。二、驗證集,用于調整初始模型,減少其與訓練集特性的額綁定,進而更具一般性。三、測試集,用來衡量吧模型應用與未知的資料時可能産生的效果。三個資料集是必要的,因為若某個資料已在此過程中的某一步使用過,那麼它包含的資訊就已經成為模型的一部分。是以,它不能用來修正或判斷模型。

我們往往很難了解為什麼訓練集和驗證集被用來建立模型之後就會成為“污點”。這就好比你參加考試,你認為這題你做的是正确的,老師讓你去預測考試成績,你顯然認為分數很高,因為你認為,如果沒有答案,第二天在參加同樣的考試,你的想法不會改變。這時候,你的系統中沒有一個新的标準,這時,你需要的是一個驗證集。

現在,想象一下測試結果以後,估分之前老師讓你看看你同學的幾個試卷。如果他們都和你的結果不一樣,這時候,你可能會把你自己的答案标記為一個錯誤的答案。如果第二天老師給出了正确的結果,這個時候讓你再去做同樣的的試卷,你可能得出的就是不同的結果。這就是為什麼驗證集應該不同于測試集的原因。

對于預測模型,一個好主意是測試集所在的時間段與訓練集和驗證集的時間段不同。一個模型的穩定性證據在于它在連續的月份中都能夠良好的運作。來自不同的時間段的測試集,也稱為不合時宜的測試集,雖然這樣的測試集并不總是可用,但是它是驗證模型穩定性的一個很好的方法。