机器学习和数据挖掘
上圖是關于一個數據分析的笑話,就像手里有把錘子,看什么都像釘子。知道些數據分析的技巧,逮著話題就分析。有句話說,只要你拷問數據上百遍,數據總能招供。不過我們可以從里邊窺見數據分析的一般性技巧:假設檢驗,采樣,方差分析,相關性分析等等。
數據分析,或者說數據挖掘,目的是從大數據中尋找到有趣模式和知識。
數據挖掘,使用到了多種技術,包括統(tǒng)計學,模式識別,可視化,機器學習等等。今天我們來探究一下在數據挖掘領域,有哪些算法可以使用。
女士品茶和數據分析
女式品茶是數據分析領域非常有名且有趣的一個故事。一位女士聲稱能夠品嘗出來奶茶是先加奶還是先加茶。然后大家設計了多輪實驗來驗證。然后一位數據科學家通過分析女士猜中的次數來判定她是否有這種能力。這是一個典型的通過假設檢驗來驗證實時的案例。
《女式品茶》這本書,介紹了統(tǒng)計理論發(fā)展歷史的一本書,介紹了數學家們關于統(tǒng)計學的非常有趣的歷史,相比一本正經的教科書,比較生動形象。在書中介紹到一個有趣的事情,在二戰(zhàn)后,美國人派遣了大量專家前往日本,教日本人學會美國社會是怎么運作的,其中有一位統(tǒng)計學家也在其中。統(tǒng)計學家向日本的汽車行業(yè)介紹了如何用抽樣檢驗來保證汽車生產的質量。日本的汽車產業(yè)借助于統(tǒng)計理論,實現了生產質量的提升。在云計算領域,穩(wěn)定性和SLA代表服務質量,如何利用好數據分析,保障穩(wěn)定性,實現異常的發(fā)現,根因的診斷,是一個值得研究的課題。
統(tǒng)計和假設檢驗
數據特征描述
統(tǒng)計量是用來描數據特征,例如常用的均值,概括了數據的大致水位,還有哪些統(tǒng)計量來描述數據?
-
位置度量
- 均值、加權均值、切尾均值(可以排除尾部極大極小值的干擾)。
- 中位數,加權中位數。中位數可以很好的避免極值的干擾。除了中位數,還有百分位數,四分位距,比如99百分位。
- 最大,最小,和。
- 利群點
-
變異性,變異性代表是數據偏離中心的程度
-
偏差,平均絕對偏差,方差,中位數結對偏差,極差
探索數據分布
探索數據分布,可以快速了解數據的大致分布,對整體的情況做一個掌控。
- 百分位數/箱線圖,百分位是常用的分析數據分布的度量指標,可以了解所有數據在分布情況。
- 頻數和直方圖
- 峰度和偏度,峰度代表的是數據集中的程度,偏度代表的是數據偏離中心的程度。
分類數據描述
分類數據指的是離散數據,連續(xù)數據也可以根據區(qū)間分成離散數據。
- 眾數:出現次數最多的類別和值。
- 期望值:根據概率算出期望
- 條形圖:代表每個類別的頻數
- 餅圖:代表各個分類的占比
相關性
相關性考察的是雙因子之間的相關性,可以用相關矩陣來表達,如上圖。計算相關系數一般用皮爾遜系數。
相關性視圖
圖形是最直觀的表達形式,可以讓讀者快速看出數據的特征,上圖從左到右依次是散點圖、六邊形圖、等勢線圖,小提琴圖。
- 散點圖,可以用來觀察兩個指標之間的相關性
- 六邊形圖是對散點圖的一種概括,當點比較多時,用六邊形來表示,顏色越深,代表數據越多。
- 等勢線圖
- 小提琴圖:作用類似于百分位圖,但可以快速看出數據的分布,越寬的地方,代表數據越多。
抽樣分布和假設檢驗
抽樣理論是發(fā)展了數百年的數學理論,以應對大數據情況下,對大數據的分析。比如如果數據量過大,無法展開人工繪圖和檢測。
正態(tài)分布
鐘形正態(tài)分布是一種常見的分布形態(tài),不過這里介紹一種更加直觀的形式,QQ圖。QQ圖把數據繪制到對角線上,如果和對角線嚴格匹配,那么代表是標準的正態(tài)分布。像右圖那樣,尾部偏離對角線,則代表有長尾分布。
正態(tài)分布可以用來做異常檢測,比如如果確定數據是遵從正態(tài)分布的。那么可以通過3σ來判定異常,如果數據偏離到均值的3σ之外,則認為數據是利群點。但前提是要保證數據是遵從正態(tài)分布的。
T檢驗
T檢驗可以用來對A/B 測試對比,例如下圖的案例,改版前后的訂單數,如何確定改版確實提升了訂單數呢,而不是隨機的波動?可以通過T檢驗來判定。
泊松分布和故障率估計
這里無意深入數學原理中來介紹二項分布、泊松分布、指數分布。三種是可以相互推倒出來。
泊松分布,假定事件發(fā)生的概率相同,推測最大期望值,例如包子店,每天要準備多少個饅頭才能保證既不浪費,又能夠充分的供應。根據每天供應的數量,計算出樣本均值,近似代表泊松分布的期望值λ,就可以估算出泊松的概率密度函數。尋找出概率密度最大的部分對應的數值。
統(tǒng)計實驗和顯著性檢驗
統(tǒng)計實驗可以用于A/B test中,例如兩種價格的購買量,是隨機結果嗎?是否有顯著性差異,可以通過卡方檢驗來完成。
卡方檢驗,可以驗證兩個因素之間的相關性。在網站分析中可以用于轉化率、Bounce Rate等所有比率度量的比較分析。
機器學習
機器學習從大的方向上分為:
- 基于統(tǒng)計算法的機器學習
- 基于神經網絡機器學習
從使用目標上來劃分,包括:
- 分類
- 聚類
- 挖掘頻繁集、相關性
- 用于預測的回歸
- 離群點分析
分類算法
分類算法是一種有監(jiān)督學習方法,給定一批數據和對應類別(標簽),求解未知數據的類別(標簽)。
K近鄰算法
K近鄰算法是最簡單的有監(jiān)督學習分類算法,不需要做提前訓練模型,在計算未知數據時,查找距離未知數據最近的K個點,然后查看這K個點的類別,出現最多的類別就是未知數據的類別。
K近鄰算法的優(yōu)勢和劣勢都是很明顯的。
優(yōu)勢:
- 邏輯簡單
- 實現簡單
- 不需要事先訓練模型
劣勢:
- 針對每個未知點,都需要計算和每個已知數據的距離,存在大量的重復計算。
K近鄰一個案例,如下圖,識別手寫數字,可以把圖片的每個像素,轉寫成一維向量。有標簽的數據會標記圖片的實際數字。當要識別一個新的圖片的時候,計算新圖片和帶標簽圖片的向量距離,判定圖片的數字。
決策樹
決策樹也是一種分類算法,是一種有監(jiān)督學習。決策樹的好處在于,能夠訓練出模型,再利用模型推斷新數據。
決策樹的構建過程:每輪迭代,選出一個最佳特征,使得按照這個特征分類后,數據的熵最小。熵代表的是數據的混亂程度。
決策樹的優(yōu)點:
- 計算復雜度不高
- 分類方法容易理解
- 相比其他算法有較高的準確率
缺點:
- 容易過擬合
樸素貝葉斯
樸素貝葉斯是基于條件概率的算法,通過計算條件和標簽的條件概率,計算當出現特定條件時,是特定目標的概率。舉個例子,一段郵件,要判斷是否是垃圾郵件,判斷每個詞出現的情況下,郵件是垃圾郵件的概率。那么再出現新郵件時,可以根據每個詞的頻率,判斷是否是垃圾郵件。
Logistic回歸
logistic回歸是用回歸方法來實現分類目的。
logistic回歸采用的是非線性函數,或者說激活函數,如圖,類似一個開關作用,開關可以起到分類的作用。
支持向量機SVM
支持向量機是在多個類別中間,尋找一個平面,使得所有的點距離這個平面的距離最遠,那么離這個平面最近的點,就是支持向量。如上圖所示,右側的平面距離所有點距離最遠。
上圖中,現在對于線性空間才存在這樣的一個平面,對于非線性空間怎么處理呢?如下圖,一個環(huán)形的圖形,可以通過核函數把非線性空間轉化成線性空間,再尋找支持向量。
Adaboost
在上文中,介紹了多種分類算法,那么每一種算法的準確率如何呢?參考下表,可以說大部分算法的錯誤率較高,很難應用到實際生產中。究其原因,是單算法表達能力不強,無法應對復雜場景,容易在訓練時被訓練數據帶偏,不能處理新的數據。
Adaboost是自適應的分類器,原理借鑒統(tǒng)計學中ada boosting。通過多個弱分類器,組成一個強分類器,每個分類器分配一個權重,在inference的時候,共同決定結果。
聚類算法
聚類和分類的區(qū)別:分類是有監(jiān)督學習,聚類是無監(jiān)督學習。
k means算法
把一批數據分成k類,給出每一類的均值。
頻繁集
頻繁集是找出頻繁出現的模式,子序列,子結構。著名的啤酒和尿布的故事,就是從一堆物品中,尋找高頻出現的集合,并做關聯(lián)銷售。在頻繁集算法中,常用的有Ariori和FP-growth算法。
離群點分析
離群點分析,算是一個數據挖掘目標,實現方法是多種多樣的。
- 監(jiān)督學習方法
- 分類方法建模
- 無監(jiān)督學習
- 統(tǒng)計方法
- 例如3σ方法
- 接近度方法:基于密度或者距離來判斷
- 聚類:屬于稀疏類的數據。
- 統(tǒng)計方法
深度神經網絡
上邊提到的adaboost,是利用多種弱分類器來實現一個強大的分類器。算法本身包含了一層網絡結構。深度神經網絡是一種更加復雜的網絡結構。神經網絡,從輸入節(jié)點到輸出節(jié)點之間有多層隱藏層,每一層有多個節(jié)點,相鄰的層次之間1*1全連接。多層節(jié)點形成前向反饋網絡。在最后一層增加一層損失函數層,損失函數連接最終結果。中間層的每個節(jié)點,都會連接一些激活函數,參考前文logistic回歸中提到的開關函數,通過這類非線性的開關函數,實現非線性的擬合。『深度神經網絡』中的深度,含義就是多層網絡。
卷積神經網絡CNN
上文提到的深度神經網絡,各層之間是全鏈接,對于一些復雜的模型,會導致訓練的參數非常多,訓練十分困難。 卷積神經網絡,節(jié)點之間不是全鏈接。相鄰層,通過一個公共的卷積來連接。卷積內是全鏈接,因此大大減少了訓練參數。
一個常見的卷積神經網絡如下圖所示,通過多層的卷積,池化層、激活函數組成,最后添加一個全連接層,連接到輸出。
CNN大多應用于圖像識別領域。
循環(huán)神經網絡
CNN內部沒有狀態(tài),單純從輸入到輸出。因此無法訓練上下相關聯(lián)的場景,例如時間序列數據。循環(huán)神經網絡RNN,通過內部保存狀態(tài),可以讓歷史上的信息影響未來的輸出。已有的狀態(tài)+輸入 ,映射到新的狀態(tài)和輸出。但是RNN無法保存遠期記憶,總是由最近的輸入決定輸出。 LSTM解決了長程依賴問題,通過一些門開關,選擇性的把信息輸出到下游。適用于時間序列,文本等上下文相互關聯(lián)的場景。
強化學習
深度神經網絡、卷積神經網絡、循環(huán)神經網絡,這些都是有監(jiān)督學習,在大部分應用場景下,要獲得大量的有標簽的標注數據,這是不現實的。例如無人駕駛,圍棋等場景。這種場景可以通過強化學習來完成。強化學習有三要素,分別是:
- 環(huán)境:例如當前棋盤的狀態(tài)
- 動作:對當前環(huán)境的動作,例如下一步的落子
- 評分:最終的評分
通過評分大大小,來判斷結果的好壞。并最終訓練出最好的模型。
總結
上文列出了一些統(tǒng)計和假設檢驗、以及統(tǒng)計機器學習、神經網絡機器學習的方法。統(tǒng)計機器學習屬于比較傳統(tǒng)的算法范疇,而神經網絡屬于最近幾年比較火的內容,在特定場景下,還需要根據實際場景選擇特定的算法。
參考資料
深度學習
《機器學習》周志華
機器學習實戰(zhàn)
TensorFlow實戰(zhàn)
Tensorflow:實戰(zhàn)Google深度學習框架
面向數據科學家的實用統(tǒng)計學
數據挖掘概念與技術
招聘阿里云智能事業(yè)群-智能日志分析研發(fā)專家-杭州/上海 掃碼加我
總結
- 上一篇: OSI七层参考模型与5G协议
- 下一篇: 使用FireBird数据库基本知识