資料採礦的目的,就是從資料中找到更多的優質使用者。 接著上篇繼續探討有指導資料採礦方法模型。 什麼是有指導的資料採礦方法模型,以及資料採礦如何構建模型。 在構建一個有指導的資料採礦模型,首先要理解和定義一些模型試圖估計的目標變數。 一個典型的案例,二元回應模型,如為直接郵寄和電子郵件行銷活動選擇客戶的模型。 模型的構建選擇歷史客戶資料,這些客戶回應了以前類似的活動。 有指導資料採礦的目的就是找到更多類似的客戶,以提高未來活動的回應。
這構造有指導的資料採礦模型的過程中,首先要定義模型的結構和目標。 二、增加回應建模。 三、考慮模型的穩定性。 四、通過預測模型、剖析模型來討論模型的穩定性。 下面我們將從具體的步驟談起,如何構造一個有指導的資料採礦模型。
有指導資料採礦方法:
把業務問題轉換為資料採礦問題 選擇合適的資料 認識資料 創建一個模型集 修復問題資料 轉換資料以揭示資訊 構建模型 評估模型 部署模型 評估結果 重新開始
步驟:
1、把業務問題轉換為資料採礦問題
《愛麗絲夢游仙境》中,愛麗絲說「我不關心去哪兒」。 貓說:「那麼,你走哪條路都沒什麼問題」。 愛麗絲又補充到:只要我能到達某個地方。 貓:「哦,你一定能做到這一點,只要你能走足夠長的時間。 」
貓可能有另外一個意思,如果沒有確定的目的地,就不能確定你是否已經走了足夠長的時間。
有指導資料採礦專案的目標就是找到定義明確的業務問題的解決方案。 一個特定專案的資料採礦目標不應該是廣泛的、通用的條例。 應該把那些廣泛的目標,具體化,細化,深入觀察客戶行為可能變成具體的目標:
確定誰是不大可能續訂的客戶 為以家庭為基礎的企業客戶設定一個撥打計畫,該計畫將減少客戶的退出率 確定那些網路交易可能是欺詐 如果葡萄酒和啤酒已停止銷售,列出處於銷售風險的產品 根據當前市場行銷策略,預測未來三年的客戶數量
有指導資料採礦往往作為一個技術問題,即找到一個模型以解釋一組輸入變數與目標變數的關係。 這往往是資料採礦的中心,但如果目標變數沒有正確的定義以及沒有確定適當的輸入變數。 反過來,這些任務又取決於對要解決的業務問題的理解程度。 沒有正確的理解業務問題就沒辦法把資料轉化為挖掘任務。 在技術開始之前,必須認識兩個問題:如何使用結果? 以何種方式交付結果?
上述兩個問題,都是建立在客戶的真正需求是什麼? 而不是作為資料採礦工程師認為的什麼是有用的資料,什麼對客戶最好的資料。 這些結果看似有利於客戶提高銷售額,但是我們交付的結果是什麼,我們有理解客戶的需求嗎? 所有前提,不要著急急著動手,先理解真正需求,不可盲目主斷。
1.1如何使用結果?
例如:許多資料採礦工作旨在提高客戶保留
主動向高風險或高價值的客戶提供一個優惠,挽留他們 改變獲取管道的組合,以利於那些能帶來最忠實客戶的管道 預測未來幾個月的客戶數量 改變會影響客戶的滿意度的產品的缺陷
這些目標都會對資料採礦過程產生影。 響。 通過電話或直接郵寄的行銷活動接觸現有客戶,意味著除了確定客戶風險之外,你要瞭解為什麼他們處於風險中,從而可以構造一個有吸引力的優惠。 電話,不能過早或過遲。 預測意味著除了確定那些客戶可能離開,確定有多少新客戶加入,以及他們會停留多久。 而新客戶的加入,不只是意味著預測模型要解決的問題,還是被納入到業務目標和預算之中。
1.2如何交付結果?
有指導的資料採礦專案可能會產生幾個不同類型的交付形式。 交付形式往往是一個報表或充滿圖示和圖形的簡報。 交付形式會影響資料採礦的結果。 當我們的目的是提醒銷售驚雷時,產生一個行銷測試的客戶清單是不夠的。 所謂的如何交付結果,就是在挖掘結果產生之後,我們要如何給使用者提供這個結果,目的是好的,但實際的過程中會遇到,會遇到我們沒有辦法去交付這個結果。 因為,你交付的結果,可能會導致一些本不該流失的客戶,卻流失了。 這也是在具體工作之前,我們要考慮的問題。
資料採礦人員的作用是確保業務問題的最後表述可以被轉換成一個技術問題。 前提是正確的業務問題。
2、擇合適的資料
2.1什麼資料可用?
尋找客戶資料的首要地方就是企業資料倉儲。 倉庫中的資料已經被清洗和核實過,並且多個資料來源被整合到一起。 一個單一的資料模型有望確保命名相似的欄位在整個資料庫和相容的資料類型中都有相同的含義。 企業資料庫是一個歷史資料庫,新資料不斷的被追加,但歷史資料一直不變。 從這一點更有利於做決策支援。
問題在於,在許多企業組織中,這樣的資料倉儲實際上並不存在,或者存在一個或多個資料倉儲,不符合直接作為規範的資料用來挖掘。 在這種情況下,挖掘人員,必須尋求來自不同的部門的資料庫和業務系統內的資料。 業務系統資料是指執行一個特定的任務,如網站運行,索賠處理,完成呼叫或帳單處理。 它們的目標是快速、準確的處理事務,資料可以保存成任何格式。 而這些對於沒有資料倉儲的一些企業來說,這些資料往往是隱藏的很深,需要大量的企業調度和規劃來整理這些資料。 這也就談到了一個問題:就是資料倉儲對一家企業的重要性,而建立企業級資料倉儲,需要的決策不是一個經理就可以完成的,這可能需要企業級最高領導下令,下面的所有部門全部配合。
在企業總確定哪些資料可用是相當困難的。 因為許多的文檔會丟失或過時。 通常情況下,沒有一個人可以提供所有答案。 確定什麼資料可用,需要遍歷資料字典,瞭解具體的業務,溝通每個部門,訪問使用者和DBA,審查現有的報告以及查找資料本身是否有用。 還有些問題,不僅需要有關客戶的資料,還需要潛在的客戶的資料。 當需要這些資料的時候,外部資源和業務系統,如Web日誌、呼叫詳細記錄、話務中心系統、有時甚至是郵件或試算表,這些都是資料資訊的來源。
資料採礦工作的方式並不是一直等到完美和乾淨的資料才進行下一步工作。 雖然需要額外乾淨的資料,但是受挖掘必須能夠使用目前的資料,提前入手,開始工作。
2.2多少資料才足夠?
一、資料越多越好,更多意味著更好。 在建模期間,必須對模型集進行平衡,使得每個結果的數目都相等。 如果在一個大規模的樣本中有一個比例很小的稀有資料,則一個較小的、均衡的樣本會更受歡迎。
二、當模型集足以建立良好的、穩定的模型時,使它更大將會產生相反的作用,因為這時需要更長時間在更大的模型上去運行,由於資料採礦是一個反復的過程,這就導致時間的浪費。 如果一次建模常式的運行都需要數小時而不是數分鐘,這個時間的消耗就耗不起的。 這就導致,在模型確定後,資料並不是越多越好。
2.3需要多久的歷史?
資料採礦使用過去的資料預測未來。 但是,資料需要來自多久的過去? 這個沒有定性的回答,這要考慮很多的因素。 另一方面,歷史上太久的資料未必對資料採礦有用,因為市場環境在變化,特別是當一些外來事件(如監管制度的變化)進行了干預時尤其如此。 對於許多以客戶為中心的應用,2-3年的歷史是合適的。 然而,在這種情況下,客戶關係確實存在有效才被證明是有價值的,那麼重要的是什麼:最初的管道是什麼? 最初的報價是什麼? 客戶最初怎麼支付的等。
多少變數:
不熟練資料採礦的人員有時太急於拋出不太可能有意義的變數,且只保存了他們認為重要的幾個精心挑選的變數。 資料採礦方法要求資料本身能揭示它重要或不重要。
通常情況下當與其他變數結合使用時,原先被忽視的變數會具有預測價值。 例如:一個信用卡者從未把把現金刷沒又繼續刷,通過資料採礦發現他們僅在11月和12月才會使用用信用卡墊付。 據推測,這些人非常謹慎,大部分時間他們都避免因多刷而產生的高利息,謹慎也推斷出一個結論(他們比習慣使用現金墊款的人更加不太可能選擇拖欠欠款),但在假期,他們需要一些額外的現金,並願意為此付出較高的利息。
2.4資料必須包含什麼?
最低限度,資料必須包含有可能有意義的結果的例子。 有指導資料採礦的目的是預測一個特定目標變數的值,但在有指導的資料採礦中,模型集必須由分類好的資料組成。 要區分哪些人拖欠貸款哪些人不可能拖欠,模型集的每個類都需要有成千上萬的例子。 當一個新的申請產生時,他的申請會與過去的客戶的申請進行對比,可以直接把新的申請歸類。 這其中隱含的意思:資料可用來形容過去發生了什麼事情,從錯誤總吸取教訓,首先我們必須識別我們已經犯了什麼錯。
3、認識資料
在資料用於構建模型之前,在探索資料上花費時間的重要性通常沒有得到足夠的重視。 後面我們會抽出絕對的篇幅來說明這個問題。 優秀的資料採礦工程師似乎非常依賴直覺——例如,某種程度上能夠猜測將要派生的變數結果如何。 要在陌生的資料集中利用直覺來感應發生了什麼事情,唯一辦法就是陷入資料之中,你會發現許多資料品質的問題,並能夠得到啟發提出在其他情況下不容易被發現的問題。
3.1檢查分佈
在資料庫的初步探索階段,資料視覺化檢視非常有益,如:散列圖、橫條圖、地理地圖、Excel等視覺化檢視對觀察資料提供了強大的支援。
當你開始著手一個新資料來源中的資料檔案,就應該剖析資料瞭解到底發生了什麼,包括計數和每個欄位的匯總統計,分類變數不同值的數量,並在適當的情況下,需要基於產品和區域的交叉統計表。 除了提供對資料的瞭解,剖析工作可能會產生不一致問題或定義問題的警告,這些問題可能會對後面的分析造成麻煩。
3.2值與描述的比較
觀察每個變數的值,並把它們與現有檔中的變數描述進行比較。 這項工作可以發現不准確或不完整的資料描述。 其實是,你記錄的資料,是否和你要描述的資料一致,這個要先確定。 目的是什麼? 在實際的資料採礦過程中,你要去揣測這個欄位的資料到底是什麼意思? 如果業務人員知道,那是最好的了。 如果業務人員都不知道,這個時候,可能就需要憑藉經驗去揣測了,而且這種情況經常發生,欄位定義不明確。
3.3詢問大問題
如果資料看上去似乎不明智或者不如所願,記錄下來。 資料探索過程的一個重要輸出是對提供該資料的人給出一個問題清單。 通常,這些問題將需要進一步研究,因為很少有使用者像資料採礦工程師一樣仔細地觀察資料。 對資料的探索的前期工作,判斷欄位,含義,是否有用,是否缺失,是否有問題等一系列問題,需要大量的工作,同時也是一件心細的過程。
4、創建一個模型集
模型集包含建模過程中使用的所有資料。 模型集中的一些資料被用來尋找模式,對於一些技術,模型集中的一些資料被用來驗證該模型是否穩定。 模型集也可用來評估模型的性能。 創建一個模型集需要從多個資料來源聚合資料以形成客戶簽名,然後準備資料進行分析。
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劃分模型集
當你從適當的時間幀中獲得預分好的資料後,有指導資料採礦房峰輝把它分為三個部分。 一、訓練集,使用者建立初始模型。 二、驗證集,用於調整初始模型,減少其與訓練集特性的額綁定,從而更具一般性。 三、測試集,用來衡量吧模型應用與未知的資料時可能產生的效果。 三個資料集是必要的,因為若某個資料已在此過程中的某一步使用過,那麼它包含的資訊就已經成為模型的一部分。 因此,它不能用來修正或判斷模型。
我們往往很難理解為什麼訓練集和驗證集被用來建立模型之後就會成為「污點」。 這就好比你參加考試,你認為這題你做的是正確的,老師讓你去預測考試成績,你顯然認為分數很高,因為你認為,如果沒有答案,第二天在參加同樣的考試,你的想法不會改變。 這時候,你的系統中沒有一個新的標準,這時,你需要的是一個驗證集。
現在,想像一下測試結果以後,估分之前老師讓你看看你同學的幾個試卷。 如果他們都和你的結果不一樣,這時候,你可能會把你自己的答案標記為一個錯誤的答案。 如果第二天老師給出了正確的結果,這個時候讓你再去做同樣的的試卷,你可能得出的就是不同的結果。 這就是為什麼驗證集應該不同于測試集的原因。
對於預測模型,一個好主意是測試集所在的時間段與訓練集和驗證集的時間段不同。 一個模型的穩定性證據在於它在連續的月份中都能夠良好的運行。 來自不同的時間段的測試集,也稱為不合時宜的測試集,雖然這樣的測試集並不總是可用,但是它是驗證模型穩定性的一個很好的方法。
via: 大資料技術貼:構建一個有指導的資料採礦模型 (責編/仲浩)
免費訂閱「CSDN雲計算(左)和CSDN大資料(右)」微信公眾號,即時掌握第一手雲中消息,瞭解最新的大資料進展!
CSDN發佈虛擬化、Docker、OpenStack、CloudStack、資料中心等相關雲計算資訊, 分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、記憶體計算、流計算、 機器學習和智慧演算法等相關大資料觀點,提供雲計算和大資料技術、平臺、實踐和產業資訊等服務。