最近團隊須要招數據挖掘工程師,但公司暫時沒有這樣的人才。領導讓我臨時充當面試官,爲了扮演好這個角色,我花了點時間瞭解了一下數據挖掘的知識,並整理了這份資料。
數據挖掘的分析方法能夠劃分爲關聯分析、序列模式分析、分類分析和聚類分析四種。面試
關聯分析是一種簡單、實用的分析技術,就是發現存在於大量數據集中的關聯性或相關性,從而描述了一個事物中某些屬性同時出現的規律和模式。算法
關聯分析是從大量數據中發現項集之間有趣的關聯和相關聯繫。數據庫
關聯分析的一個典型例子是購物籃分析。該過程經過發現顧客放入其購物籃中的不一樣商品之間的聯繫,分析顧客的購買習慣。經過了解哪些商品頻繁地被顧客同時購買,這種關聯的發現能夠幫助零售商制定營銷策略。其餘的應用還包括價目表設計、商品促銷、商品的排放和基於購買模式的顧客劃分。網絡
可從數據庫中關聯分析出形如「因爲某些事件的發生而引發另一些事件的發生」之類的規則。如「67%的顧客在購買啤酒的同時也會購買尿布」,所以經過合理的啤酒和尿布的貨架擺放或捆綁銷售可提升超市的服務質量和效益。又如「‘C語言’課程優秀的同窗,在學習‘數據結構’時爲優秀的可能性達88%」,那麼就能夠經過強化「C語言」的學習來提升教學效果。數據結構
關聯分析->相關性分析->迴歸分析機器學習
簡單介紹Apriori算法工具
Apriori算法經常使用的用於挖掘出數據關聯規則的算法,它用來找出數據值中頻繁出現的數據集合。學習
經過找出的數據集合,能夠對人類商業決策進行指導。典型應用例子:超市購物的啤酒與尿布銷售關係。人工智能
Apriori算法基本思想是對各類數值進行組合,計算其共同出現機率。但其中增長了迭代,截枝思想,大大減小組合計算次數,在海量數據的狀況下依然能夠保證足夠高的計算效率。spa
所謂序列模式,個人定義是:在一組有序的數據列組成的數據集中,常常出現的那些序列組合構成的模式。跟咱們所熟知的關聯規則挖掘不同,序列模式挖掘的對象以及結果都是有序的,即數據集中的每一個序列的條目在時間或空間上是有序排列的,輸出的結果也是有序的。
舉個簡單的例子來講明,關聯規則一個經典的應用是計算超市購物中被共同購買的商品,它把每一個顧客的一次交易視做一個transaction,計算在不一樣transaction中不一樣item組合的規律性。而若是咱們考慮一個用戶屢次在超市購物的狀況,那麼這些不一樣時間點的交易記錄就構成了一個購買序列,N個用戶的購買序列就組成一個規模爲N的序列數據集。考慮這些時間上的因素以後,咱們就能獲得一些比關聯規則更有價值的規律,好比關聯挖掘常常能挖掘出如啤酒和尿布的搭配規律,而序列模式挖掘則能挖掘出諸如《育兒指南》->嬰兒車這樣帶有必定因果性質的規律。因此,序列模式挖掘比關聯挖掘能獲得更深入的知識。
GSP算法,SPADE算法,PrefixSpan算法,Clospan算法等
分類是基於包含其類別成員資格已知的觀察(或實例)的訓練數據集來識別新觀察所屬的一組類別(子羣體)中的哪個的問題。例如,將給定的電子郵件分配給「垃圾郵件」或「非垃圾郵件」類,並根據觀察到的患者特徵(性別,血壓,某些症狀的存在或不存在等)爲給定患者分配診斷。分類分析,簡單地說就是把數據分紅不一樣類別。
決策樹,神經網絡,貝葉斯分類,k最近鄰分類(即KNN,見後面異常數據挖掘)
聚類是將數據分類到不一樣的類或者簇這樣的一個過程,因此同一個簇中的對象有很大的類似性,而不一樣簇間的對象有很大的相異性。
聚類分析是一種探索性的分析,在分類的過程當中,人們沒必要事先給出一個分類的標準,聚類分析可以從樣本數據出發,自動進行分類。聚類分析所使用方法的不一樣,經常會獲得不一樣的結論。不一樣研究者對於同一組數據進行聚類分析,所獲得的聚類數未必一致。
聚類分析跟分類分析區別是分類分析須要有已有標籤的數據,而聚類分析則不須要。
從統計學的觀點看,聚類分析是經過數據建模簡化數據的一種方法。傳統的統計聚類分析方法包括系統聚類法、分解法、加入法、動態聚類法、有序樣品聚類、有重疊聚類和模糊聚類等。採用隨機林林,k-均值、k-中心點等算法的聚類分析工具已被加入到許多著名的統計分析軟件包中,如SPSS、SAS等。
簡單介紹k-means(k均值):
異常數據挖掘是數據挖掘中一種經常使用的場景,異常數據通常是指在整體樣本中佔比較小的數據。
根據應用場景不一樣也稱錯誤數據,特殊數據,重要數據,高價值數據等。
異常數據挖掘經常使用方法有:
規則有特定場景的業務規則:
例如某個字段取值必須爲0
冬天氣溫確定不能高於40度
也有通用的天然規則:
例如本福德定律(天然生成的數字首位爲1的機率爲30.10%,2的機率爲17.61%,依次遞減,首位爲9的機率僅爲4.58%。)。
簡單統計規則:觀察其方差、標準差、均值等是否和常規值有所差別
正態分佈規則:找出數據集裏面不符合正態分佈的數據
1 KNN
人們常說「想知道本身是什麼人,看看與本身關係最親密的十我的是什麼人就知道」,意思是人老是會跟類似的人交朋友。
那反過來,要將某我的歸類,則看他跟什麼人接觸比較多,則將全歸到那一類裏面。
knn算法是基於這個原理的分類算法,預測一個新的值x的時候,根據它距離最近的K個點是什麼類別來判斷x屬於哪一個類別。
圖中綠色的點就是咱們要預測的那個點,假設K=3。那麼KNN算法就會找到與它距離最近的三個點,看看哪一種類別多一些,好比這個例子中是藍色三角形多一些,新來的綠色點就歸類到藍三角了。
假設K=5。那麼KNN算法就會找到與它距離最近的五個點(這裏用圓圈把它圈起來了),看看哪一種類別多一些,好比這個例子中是紅色多一些,新來的綠色點就歸類到紅色球了。
此類算法須要有現成的異常數據樣本,屬於有監督機器學習。算法主要難點在於怎麼定義數據距離還有k值取值(過小和太大的k值都會形成比較大的偏差)
2 孤立森林
森林裏面的樹木通常是連成一片的,若是某一棵樹跟其它樹木不在一塊,那這棵樹通常有問題。
如何找出這樣樹呢?數據量少時能夠經過可視化展現, 由人工判斷。但數據量多時就比較麻煩。
孤立森林算法原理,就是逐次添加隨機線段將森林劃分片,直到每一片裏面只有一棵樹。孤立的樹老是會在比較早的時候就分到獨立的區域。
例如x0這個點,只須要四次劃分就被分到獨立區域,xi這個點須要11次劃分才能分到獨立區域。(這張圖只演示了一次劃分過程。若是重複屢次劃分,每次劃分的方法都是隨機的,但x0都是比較早被分出來,則能夠認爲x0確定是差別點)
孤立森林是比較實用的異常數據挖掘算法,不須要現成的異常數據樣本。
3 LOF
暫時沒看懂原理
將數據進行建模造成不一樣維度數據,並對不一樣維度數值作標準化,降維到一維或者二維數據以方便經過散點圖,折線圖,箱線圖,熱力圖等把數據可視化展現,供分析人員直觀識別。
例如將人羣年齡段,體重,性別,體育成績等作加權累計,得出一個單一維度的數據,使用箱線圖進行展現。
這種相對來講比較適合沒有專家參與的異常數據分析。利用深度學習算法,只須要前期導入足夠多的有標記數據,通過多輪訓練,得出一個合適的模型。
但缺點是結果沒法預期(目前人類很難搞清楚人工智能的思惟),並且須要比較長時間的訓練。