資料倉儲實踐雜談(十九) 資料探勘

2021-10-04 12:43:55 字數 4347 閱讀 7827

[目錄]

我們經常說,資料統計是根據已有規律的進行計算得到結果,比如特定產品銷量的地區分布或時間分布,因為我們都知道銷量和地區、時間肯定是關聯的。而資料探勘則是發現未知的規律。比如傳說已久的「啤酒與尿布」的故事,就是資料探勘的乙個成功的典型範例。雖然不存在普適性,但針對沃爾瑪在當時特定的場景確實揭露了未知的、實際存在的規律。

「啤酒與尿布」的故事

20世紀90年代,美國沃爾瑪超市管理人員分析銷售資料時,發現了乙個令人難以理解的現象——在某些特定的情況下,「啤酒」與「尿布」兩件看上去毫無關係的商品,會經常出現在同乙個購物籃中,且大多出現在年輕的父親身上。

分析背後原因是,在美國有嬰兒的家庭中,一般是母親在家中照看嬰兒,年輕的父親去超市買尿布。父親在購買尿布的同時,往往會順便為自己購買啤酒。

從這個例子可以看出兩點:

首先,是資料管理人員通過技術手段,發現了乙個之前未知、潛在的規律,可以指導業務;

這個結果需要深度的分析其因果關係,否則不排除是偶發的,只有找到因果關係,這個結果才可能被使用。

資料探勘的工具和方法很多,體系也很成熟。但之前一直都是「傳說」,並沒有大規模的應用起來;而最近幾年隨著大資料技術流行,資料探勘也隨之流行起來。我認為其中的原因,主要是原來發現規律的過程使用的資料樣本太小。在大資料技術出現之前,資料探勘的系統處理能力弱,只能處理很小的資料量。因此必須由業務專家根據特定的規則進行資料抽樣,拿出一小部分資料,針對這一小部分資料進行分析。這樣得到的結果,其實是針對樣本資料,並不是針對全量資料的,如果資料抽樣有問題,這個結果也就會有很大的偏差了。所以以前我們經常說,某個結果只存在「統計學上的關係」而非沒有因果關係。這種結果,基本上是不能用的。

大資料的偉大之處可以說出很多,但最偉大的地方,一定是可處理的資料量極大提公升。這裡的「大」首先就是資料很多,資料量極大。處理的資料量大了,跑演算法的時候可以接納更多的資料樣本,甚至是全量資料的話,所得到的結果,往往就可以不去關心其因果關係了。畢竟,我們基本都不是科學家,我們知道大多數人都喜歡什麼,我們就去賣什麼好了,不需要關心為什麼喜歡。

資料探勘是指從大量的資料中通過演算法搜尋隱藏於其中資訊的過程。這是資料探勘的乙個標準的定義。簡化一下,資料挖

掘=大數

據+演算法

資料探勘=大資料+演算法

資料探勘=大

資料+算

法。資料探勘技術包括關聯分析、序列分析、分類、**、聚類分析及時間序列分析等。

關聯分析

主要用於發現不同事件之間的關聯性,即乙個事件發生的同時,另乙個事件也經常發生。關聯分析的重點在於快速發現那些有實用價值的關聯發生的事件。其主要依據是事件發生的概率和條件概率應該符合一定的統計意義。

分類分析

分類分析通過分析具有類別的樣本的特點,得到決定樣本屬於各種類別的規則或方法。主要方法有基於統計學的貝葉斯方法、神經網路方法、決策樹方法及支援向量機。

聚類分析

聚類分析是根據物以類聚的原理,將本身沒有類別的樣本聚集成不同的組,並且對每乙個這樣的組進行描述的過程。其主要依據是聚到同乙個組中的樣本應該彼此相似,而屬於不同組的樣本應該足夠不相似。

****與分類類似,但**是根據樣本的已知特徵估算某個連續型別的變數的取值的過程,而分類則只是用於判別樣本所屬的離散類別而已。**常用的技術是回歸分析。

時間序列

分析時間序列分析的是隨時間而變化的事件序列,目的是**未來發展趨勢,或者尋找相似發展模式或者是發現週期性發展規律。

資料探勘的的一般步驟如下:

資料探勘基本上跟機器學習分不開。資料探勘受到很多學科領域的影響,其中資料庫、機器學習、統計學無疑影響最大。統計學界提供的很多技術通常都要在機器學習界進一步研究,變成有效的機器學習演算法之後才能再進入資料探勘領域。從這個意義上說,統計學主要是通過機器學習來對資料探勘發揮影響,而機器學習和資料庫則是資料探勘的兩大支撐技術。

從資料分析的角度來看,絕大多數資料探勘技術都來自機器學習領域,但機器學習研究往往並不把海量資料作為處理物件,因此,資料探勘要對演算法進行改造,結合大資料技術,使得演算法效能和空間占用達到實用的地步。

資料探勘或者說機器學習的演算法,分成有監督和無監督兩類:

分類、回歸和聚類都是機器學習比較常見的演算法。定性輸出稱為分類,或者說是離散變數**。比如**明天是陰、晴還是雨,就是乙個分類任務。定量輸出稱為回歸,或者說是連續變數**。比如**明天的氣溫是多少度,這是乙個回歸任務。

分類演算法包括決策樹分類法(decision tree)、樸素貝葉斯分類法(native bayesian classifier)、基於支援向量機(svm)的分類器、k-最近鄰法(k-nearest neighbor,knn)、模糊分類法(fuzzy classifier)等。

回歸包括線性回歸(linear regression),邏輯回歸(logistic regression),多項式回歸(polynomial regression)、嶺回歸(ridge regression)和套索回歸(lasso regression)等。

聚類演算法包括:

關聯分析則是資料探勘乙個特色的演算法。關聯分析是一種簡單、實用的分析技術,就是發現存在於大量資料集中的關聯性或相關性,從而描述了乙個事物中某些屬性同時出現的規律和模式。典型例子是購物籃分析。該過程通過發現顧客放入其購物籃中的不同商品之間的聯絡,分析顧客的購買習慣。通過了解哪些商品頻繁地被顧客同時購買,這種關聯的發現可以幫助零售商制定營銷策略。其他的應用還包括價目表設計、商品**、商品的排放和基於購買模式的顧客劃分。關聯分析典型演算法包括apriori演算法和fp-growth演算法。

神經網路這幾年非常火熱,尤其是alphago擊敗人類職業圍棋選手、戰勝圍棋世界冠軍後,感覺全世界都在搞神經網路了。尤其深度卷積神經網路(convolutional neural network,cnn),畢竟alphago的核心技術之一就是cnn,在圖形識別上大放異彩。實際上,目前神經網路模型不下30種,適用於影象識別,翻譯,語音識別以及各種分類,聚類,**等都有。從演算法上,有監督、無監督的都有。基本上,可以說是無所不能。

基於神經網路資料探勘的優點:

個人感覺,在未來,神經網路一定會更進一步,作為資料探勘的主要手段。畢竟用一套程式生成一套合適的程式已經出現。人不許再需要分析模型和分析特徵,把樣本資料扔進去,程式自己生成一套合適的規則來進行分析,多美好。

同樣,無監督的演算法,未來也會越來越好。畢竟樣本的標註工作量實在是太大。當然,現階段如果有已經標註的資料進行訓練,效果會更好。

前面提到,特徵提取是整個資料探勘中最重要和最難的乙個環節。這個環節沒有什麼特別好的工具或者方法能迅速掌握。舉個例子,某銀行有2000萬零售客戶,但只有100萬信用卡客戶。這些客戶,記錄有客戶基本資訊,家庭資訊,金融資產資訊以及交易資訊。能否從現有的零售客戶中挖掘出潛在的客戶?按照相似的客戶一般類似的需求的原則,我們可以做乙個假設:在存量的零售客戶中找出跟信用卡客戶具有「相同特徵」的客戶作為營銷信用卡的重點客戶。

此問題粗一看是乙個對2000萬零售客戶的分類問題。先找出100萬信用卡客戶的「共同特徵」,然後看零售客戶中那些符合這些特徵,符合的作為潛在客戶重點營銷。這裡有兩個問題:

選擇什麼特徵來分析?一般都說人口統計特徵跟消費慾望、偏好等有很大關係。我不知道出自何處,但都這樣說,我也認為是就好了。然後還選擇什麼特徵?資產?交易次數?交易地點?其實很難說某些特徵是否跟會不會辦信用卡關聯的。還好大資料體系的好處是,只要能用的都盡量加進來,先跑出來,測試驗證,再修正。

選擇什麼演算法或者演算法組合?分類/聚類?分類的訓練樣本如何生成?我們有乙個基礎定義,2000萬零售客戶(定義為a)裡面肯定有一部分跟現有信用卡客戶(定義為b)相似的(定義為a1),另外一部分則不相似(定義為a2)。如果要訓練出乙個分類模型我們就需要把現有信用卡客戶(b)加上和不相似的零售客戶(a2)。但我們並不知道a2是哪些。

如果沒有很懂資料的專家支援,我們就把盡量多的屬性都轉化為特徵變數。然後通過降維手段去掉或合併特徵變數。比如把缺失較多的、方差太小的特徵去掉,把高度相關的特徵合併。假設我們定義了年齡段、性別、家庭人口數、資產數量、職業類別、月均消費筆數、消費地點等變數並做歸一化。對定性特徵可以使用啞編碼方式轉換為0或1的定量值(每個值變成乙個字段,如職業類別有:管理,文員,研發,市場幾個,則變成四個屬性,屬於那個值就置1,其他置0)。

如果有已經標註可用於訓練的樣本,目前來說還是選擇有監督的分類演算法效率更高也更準確。按照前面的分析,這個場景中只能直接找出辦理過的客戶,但無法找到一定不會辦理的客戶。所以更換思路,對現有信用卡使用者(b)進行聚類,然後檢查零售客戶(a)中哪些客戶落在聚類中。落入聚類中的認為是和信用卡客戶具有同樣特質的,作為潛在客戶進行重點營銷。如何判斷落入聚類,可以:

聚類演算法也有很多種實現,很難說哪一種更好。通常的做法都是反覆嘗試,選擇乙個最優的或者最合適的。比較舒服的方式,是通過圖形化工作流的方式,使用者定義有向無環圖(dag),一般按照提取資料、處理資料、提取特徵、選擇模型、模型評估和模型應用的順序,快速執行並驗證。如果不合適,可以快速的修改,選擇其他模型再次嘗試。

資料倉儲雜談

昨天跟同事聊了下目前哪些行業資料倉儲比較領先,各個行業的資料倉儲是怎麼做的,跟網際網路比,差別是什麼東西,前期資源評估,資料庫選型怎麼搞等。有點心得,記錄如下 1,目前來看,金融,保險,通訊,網際網路,物流這幾個行業的資料倉儲做的比較領先,其中由於金融和通訊的業務模型比較穩定,清晰,所以基本上從業務...

資料探勘 資料倉儲

雖然存在資料倉儲並不是資料探勘的先決條件,但實際上,若能訪問資料倉儲,資料探勘的任務就會變得容易的多。資料倉儲的主要目標是增加決策過程的 情報 和此過程的相關人員的知識。資料倉儲對不同的人來說有不同的意義。資料倉儲是乙個整合的,面向主題的資料庫集合,用於實現決策支援功能 dsf 其中的每個資料單元都...

資料倉儲實踐雜談(八) 去重

目錄 資料重複是乙個比較麻煩的事情。從正常邏輯上來看,如果應用系統和資料卸出的程式沒問題,不應該存在這個問題。但實際情況來看,確又時有發生。一旦確定資料來源的資料會有重複的可能,就需要專門進行去重處理。在資料量很大的情況下,去重很耗時。所以如果可以,盡量先行優化資料來源系統。最直觀的去重可能就是先把...