機器學習入門 | 必知必會的基礎理論
一、什么是機器學習、數(shù)據(jù)挖掘?
1、AI是什么?
AI(人工智能)是研究開發(fā)用于模擬、延伸和擴展人的智能理論、方法、技術及應用系統(tǒng)的一門新的技術科學。人工智能是計算機科學的一個分支。
AI的應用場景:必備基礎 "機器學習"

2、機器學習是什么?
機器學習就是讓機器有學習的能力,讓機器通過"某種策略", 學習"歷史數(shù)據(jù)"后,能夠進行一定"預測"和"識別"的能力。

3、數(shù)據(jù)挖掘是什么?
數(shù)據(jù)挖掘是指從大量數(shù)據(jù)中通過算法搜索隱藏于其中信息的過程。機器學習是支撐數(shù)據(jù)挖掘的手段。從關系上看,數(shù)據(jù)挖掘包括機器學習。
4、為什么需要數(shù)據(jù)挖掘?
面臨復雜且大量的新數(shù)據(jù)集時,傳統(tǒng)數(shù)據(jù)分析計算常常遇到瓶頸,我們將常見瓶頸進行抽象。
1、高維性數(shù)據(jù):隨著5G及物聯(lián)網的建設,數(shù)據(jù)量將會呈指數(shù)級的增長,常常遇到成百上千屬性的維度,可想象,計算復雜度將迅速增加。
2、非結構化數(shù)據(jù):非結構化數(shù)據(jù)也包含許多含金量的信息,例如視頻、音頻、文本等等,這些都是傳統(tǒng)數(shù)據(jù)分析方法無法獲取的信息。
3、自動及智能問題。傳統(tǒng)分析方法常規(guī)流程就是"提出假設-驗證假設",但這一過程勞力費神。當前的數(shù)據(jù)分析任務常常需要產生和評估數(shù)千種假設,因此需要自動、智能的手段。
注:數(shù)據(jù)挖掘非萬能法則,數(shù)據(jù)分析也非所想的不堪,兩者的結合應用才能更好的為業(yè)務賦能。事實上,數(shù)據(jù)挖掘是需要數(shù)據(jù)分析進行輔助的,比如數(shù)據(jù)探索,特征工程。
二、機器學習所需要的基礎理論
讓機器通過"某種策略", 學習"歷史數(shù)據(jù)"后,能夠進行一定"預測"和"識別"的能力
1、某種策略(模型)、損失、模型訓練和標簽
1)模型是什么?以"一元線性回歸"為例



假設用戶人數(shù)為600,那銷量是 6000 ,這是模型的預測能力。
2)損失
損失是對糟糕預測的懲罰。損失是一個數(shù)值,表示對于單個樣本而言,模型預測的準確程度。如果模型的預測完全準確,則損失為零,否則損失會較大。如下圖:那副圖的損失更大?紅色箭頭表示損失,藍色線表示預測,可見圖二的模型更準確(預測值-實際值),圖一的損失更大。

3)模型訓練
模型訓練表示通過有標簽樣本來學習(確定)所有權重和偏差的理想值。模型訓練檢查多個樣本,并嘗試找出可最大限度的減少損失的模型(方向)。比如:上面的線性回歸,k 和 b 都是兩個未知的參數(shù) ,根據(jù)已有的樣本 x 和 y 去訓練模型。
4)標簽
標簽,白話說就是模型的 y 值,比如上面的線性回歸標簽就是銷售額,抽象的說,標簽就是結論。比如:【x,y】——【用戶人數(shù),銷售額】——【100,1000】,就是一個樣本。
2、代價函數(shù)(損失函數(shù))
代價函數(shù):是一個數(shù)學函數(shù),能夠以有意義的方式匯總各種損失
最常見的代價函數(shù):MSE(均方誤差)指的是每個樣本平均平方損失。

注:MSE 常用于機器學習,但它不是唯一實用的損失函數(shù),也不是適用于所有模型最佳的損失函數(shù)。
3、劃分數(shù)據(jù)集(訓練、驗證、測試)
1)訓練集與測試集(常見模式)
訓練集:用于訓練模型的子集
測試集:用于測試訓練后模型的子集
舉個例子:訓練集相當于上課學知識,測試集相當于期末考試,用來最終評估學習效果。
2)劃分注意點:
① 通常將數(shù)據(jù)集的70%作為訓練集,30%作為測試集(8 : 2也行),并且挑選的測試集的特征應該與訓練集的特征相同。
② 通常需要在開始構建模型之前把數(shù)據(jù)集進行劃分,防止數(shù)據(jù)窺探偏誤。也就是說,我們避免了解太多關于測試集中的樣本特點,防止我們認為的挑選有助于測試集數(shù)據(jù)的模型。這樣的結果會過于樂觀,但是實際上并沒有預期的那樣優(yōu)秀。
③ 對于時序數(shù)據(jù)集、訓練集和測試集需按時間劃分。比如說我目前有 1-10 月的數(shù)據(jù),那么 1-8 月作為訓練集,9-10月作為測試級。
原因:假設我們有了這個模型以后,都是用歷史的數(shù)據(jù),去預測未來的數(shù)據(jù)的,所以我們在訓練數(shù)據(jù)的時候也要符合這個模式。
3)流程:
借助這種劃分,可以對一個樣本集進行訓練,然后使用不同的樣本集測試模型。采用兩種分類以后,工作流程可能如下所示。

缺點:相當于不斷的利用測試集(未來數(shù)據(jù))去調整模型,類似數(shù)據(jù)窺探的效果會增大模型過擬合的風險。
4)優(yōu)化后的流程:

缺點:① 驗證集的缺點,10%數(shù)據(jù)很寶貴,拿去訓練模型可能會產生更好的效果。② 繁瑣
通常采用第一種(測試集和訓練集),如果發(fā)現(xiàn)訓練模型過擬合,通過手段沒有降低的話,可以采用第二種模式。
4、交叉驗證(Cross Validation)
交叉驗證的基本思想是把在某種意義下將原始數(shù)據(jù)進行分組,一部分作為訓練集(train set),另一部分作為驗證集(validation set or test set)。首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型(model),以此來作為評價分類器的性能指標。
目的 : 用交叉驗證的目的是為了得到可靠穩(wěn)定的模型。
留出法(Holdout cross validation):上面提到的按照固定比例將數(shù)據(jù)集靜態(tài)的劃分為訓練集、驗證集、測試集的方法就是留出法。
留一法(Leave one out cross validation ):每次的測試集都只有一個樣本,需要進行 n 次訓練和預測。這個方法用于訓練的數(shù)據(jù)只比僅整體數(shù)據(jù)集少了一個樣本,因此最接近原始樣本的分布。但是訓練復雜度增加了,因為模型的數(shù)量與原始數(shù)據(jù)樣本數(shù)量相同,一般在數(shù)據(jù)缺乏時使用。
K折交叉驗證(k-fold cross validation ):靜態(tài)的留出法對數(shù)據(jù)的劃分方式比較敏感,有可能不同的劃分方式得到了不同的模型。【K折交叉驗證】是一種動態(tài)的驗證方式,這種方式可以降低數(shù)據(jù)劃分帶來的影響,會得到一個更可靠的模型。具體步驟如下:
五折交叉驗證法:

① 將所有的數(shù)據(jù)集均勻的分成五份
② 不重復的每次取出其中一份做測試集,用其他四份做訓練集訓練模型,之后計算該模型在測試集上的MSE
③ 將五次的MSE取平均得到的最后的MSE,作為評價模型的指標
五、泛化能力與過擬合
泛化能力:對未知數(shù)據(jù) (新數(shù)據(jù)) 的預測能力。
過擬合: 指的是模型在訓練集上表現(xiàn)的很好,但是在交叉驗證集合和測試集上表現(xiàn)一般,也就是說模型對未知樣本的預測表現(xiàn)一般,泛化能力較差。
舉例:比如下圖三個模型,綠色表示訓練集樣本,紅線表示模型的預測能力,藍色表示新樣本點??茨P腿谟柧毤硎竞芎?,但是在新樣本表現(xiàn)一般,所以說泛化能力較差,出現(xiàn)過擬合。模型一在訓練集表現(xiàn)的也不好,新樣本預測也不好,稱之為欠擬合。最終我們選擇模型二,泛化能力越好,就是越好的模型。

為什么會產生過擬合?
① 訓練數(shù)據(jù)集合訓練數(shù)據(jù)集樣本單一,樣本不足。如果訓練樣本只有負樣本,然后拿生成的模型去預測正樣本,這肯定預測不準,所以訓練樣本要盡可能的全面,覆蓋所有的數(shù)據(jù)類型。
②訓練數(shù)據(jù)中噪聲干擾過大,噪聲指訓練數(shù)據(jù)中的干擾數(shù)據(jù),過多的干擾會導致記錄了很多噪聲特征,忽略了真實輸入和輸出之間的關系。
③ 模型過于復雜,模型太復雜,已經能夠死記硬背記下了訓練數(shù)據(jù)的信息,但是遇到沒有見過的數(shù)據(jù)的時候不能夠變通,泛化能力太差。我們希望模型對不同的模型都有穩(wěn)定的輸出,模型太復雜是過擬合的重要因素。
如何降低過擬合?
① 獲取和使用更多的數(shù)據(jù)(數(shù)據(jù)集增強)是解決過擬合的根本性方法。
② 采用合適的模型,控制模型的復雜度。根據(jù)奧卡姆剃刀法則:在同樣能夠解釋已知觀測現(xiàn)象的假設中,我們應該挑選 "最簡單" 的那一個,對于模型的設計而言,我們應該選擇簡單合適的模型解決復雜的問題。

③ 降低特征的數(shù)量。對于一些特征工程而言,可以降低特征的數(shù)量,刪除冗余特征,人工選擇保留哪些特征,這種方法也可以解決過擬合問題。
④ 正則化,正則化就是在模型的代價函數(shù)里添加一個約束,使得可以減少模型參數(shù)的候選空間,使得模型更加簡潔,本質上是控制模型復雜度。
⑤ dropout是在訓練網絡時用的一種技巧,相當于在隱藏單元增加了到噪聲。drop out指的是在訓練過程中,每次按一定的概率,比如50%,隨機的刪除一部分隱藏單元神經元。所謂的刪除不是真正意義上的刪除,其實就是將該部分神經元的激活函數(shù)設為零,激活函數(shù)的輸出為零,讓這些神經元不計算而已。
⑥ 提前終止,對模型進行訓練的過程即是對模型的參數(shù)進行學習更新的過程。這個參數(shù)學習的過程往往會用到一些迭代方法,比如梯度下降Early stopping是一種迭代次數(shù)截斷的方法來阻止過擬合的方法。即在模型對訓練數(shù)據(jù)及迭代收斂之前停止迭代來防止過擬合。
所以,總的來說,一個好的模型,損失函數(shù)盡可能的小,泛化能力盡可能大。
六、模型類別
監(jiān)督學習
監(jiān)督學習是從<x,y標簽>這樣的事例中學習統(tǒng)計規(guī)律,然后對于新的 x 給出對應的 y 。通俗的講,就是根據(jù)已有的數(shù)據(jù)集知道輸入和輸出結果之間的關系,根據(jù)這種已知的關系,訓練得到一個最優(yōu)模型。
① 分類模型:標簽為分類型數(shù)據(jù),比如預測用戶是否流失(標簽 y 為【是否】)
② 回歸模型:標簽為數(shù)值數(shù)據(jù),比如預測銷售額。
② 回歸模型:標簽為數(shù)值數(shù)據(jù),比如預測銷售額。
監(jiān)督學習常見模型
K-近鄰(KNN)
線性回歸(回歸模型)
邏輯回歸(分類模型)
支持向量機
決策樹和隨機森林
神經網絡
無監(jiān)督學習
相比監(jiān)督學習沒有標注數(shù)據(jù),也就是 y。無監(jiān)督學習是從一堆數(shù)據(jù)中學習其內在統(tǒng)計規(guī)律或內在結構。學習到的模型可以是類別,轉換或者概率,這些模型可以實現(xiàn)對數(shù)據(jù)的聚類、降維、可視化、概率估計和關聯(lián)規(guī)則學習。
無監(jiān)督學習常見模型
a.聚類算法
k-means算法(kmeans)
密度聚類算法
最大期望算法(EM)
b.降維
主成分分析(PCA)
c.關聯(lián)規(guī)則學習
Apriori
d. 時間序列預測
半監(jiān)督學習
半監(jiān)督學習包含大量未標注數(shù)據(jù)和少量標注數(shù)據(jù),主要是利用未標注中的信息輔助標注數(shù)據(jù)進行監(jiān)督學習。大多數(shù)半監(jiān)督學習算法是無監(jiān)督式和監(jiān)督式算法的結合。
七、模型評估
不同類型的模型評估方法不一。
先講一個常見誤區(qū),大家是否覺得評估模型就用模型準確率 ?
實際例子,小a是某運營商的一名數(shù)據(jù)分析師,老板最近和他說:"小a,最近我們這個 xx 流量產品每月流失用戶都挺多的,能不能幫忙想想辦法。",小a 思考了一下,覺得假設我們能預測出下個月流失用戶的名單,那我們是不是能提前對這批用戶發(fā)發(fā)優(yōu)惠,或者引導他們升級變更其他流量產品去挽留他們呢?

模型準確率9/10 = 90%
記得我們的任務目標嗎,我們目標是不是想預測出哪些用戶流失了?那這個模型在預測流失用戶的表現(xiàn)如何,模型一個流失用戶都沒預測出來,盡管模型的準確率是90%這么高,但對于我們的業(yè)務來說,是無效模型。
分類評估指標
① 一級指標(底層指標)
混淆矩陣:混淆矩陣就是分別統(tǒng)計分類模型、歸錯類、歸對類的觀測值個數(shù),然后把結果放在一個表里展示出來,這個表就是混淆矩陣。真實值是positive,模型認為是positive的數(shù)量(True Positive =TP),真陽性。
真實值是positive,模型認為是negative的數(shù)量(False Negative = FN),這就是統(tǒng)計學上的第一類錯誤,棄真,假陰性。
真實值是negative,模型認為是positive的數(shù)量(False Positive = FP),這就是統(tǒng)計學上的第二類錯誤,納偽,假陽性。
真實值是negative,模型認為是negative的數(shù)量(True Negative = TN),真陰性。
套上例子:
實際為流失用戶,而模型預測也是流失用戶的數(shù)量,即為TP
實際為流失用戶,而模型預測時非流失用戶的數(shù)量,即為FN
實際為非流失用戶,而模型預測的是流失用戶的數(shù)量,即為FP
實際為非流失用戶,而模型預測是非流失用戶的數(shù)量,即為TN

混淆矩陣怎么看?預測性分類模型肯定是希望越準越好,那么對應到混淆矩陣中,那肯定是希望TP和TN的數(shù)量大,而FP與FN的數(shù)量小。
② 二級指標
混淆矩陣里面統(tǒng)計的是個數(shù),有時候面對大量的數(shù)據(jù),光憑算個數(shù)很難衡量模型的優(yōu)劣。因此混淆矩陣在基本的統(tǒng)計結果上又延伸了如下四個指標,我們稱它為二級指標。
accuracy (準確率):(TP + TN)/(TP + FN + FP + FN)
意義:分類模型所有判斷正確的結果占總觀測值的比重,一般不用precision(準確率):TP /(TP + FP)
意義:表示預測為正的樣本數(shù)有多少是對的,可解釋性強,常用越高越好。record (召回率、查全率,真正率TPR):TP / ( TP + FN)
意義:表示樣本中的正例有多少被預測正確,可解釋強,常用越高越好。FPR (假正率) :FP / (FP + FN)
意義:表示當前被錯誤分到正樣本類別中真實的負樣本 所占所有負樣本總數(shù) 的比例,越低越好。
③三級指標
ROC curve,這個曲線就是以下 TPR 和 FPR 為軸,取不同的閾值點畫的。
模型去預測分類型任務的時候,本質上是預測分類型的概率的,比如計算流失的概率,如果這個概率大于閾值0.5的話,這即為流失,所以這里就有個閾值的存在。不同的閾值,會有不同的TP 、FP。

ROC_AUC:AUC就是曲線下面積,我們根據(jù)ROC曲線想一下,到底我們這個曲線漲什么樣的模型才算好呢?TR率是越高越好,F(xiàn)P率是越低越好,所以我們的曲線應該是越靠近Y軸越好。(粗魯)理解最終可抽象成,ROC曲線下面積越大越好,即AUC越大越好。
AUC評判標準 :
0.5-0.7 : 效果較低,但預測股票已經很不錯了。
0.7-0.85 : 效果一般
0.85-0.95 : 效果很好
0.95-1 : 效果非常好,但不太可能
f1值:(2*Precision * Recall/(Precision+Record)
意義:我們的模型想recall和precision都高,但魚與熊掌不可兼得,如果想要找到它們的平衡,那就用f1值。
分類評估指標,如何選擇?
選擇方針,根據(jù)你模型所解決的目的進行選擇,比如我想現(xiàn)在。訓練一個模型來識別出哪些是在逃罪犯?(寧可錯殺1000,也不放過一個)-- recall,因為recall為表示樣本中的正例有多少被預測正確,對于這個模型,就是所有的在逃罪犯為分母,模型預測為在逃罪犯為分子。假設recall為1,也就是所有的在逃罪犯模型都預測正確了。
根據(jù)指標可解釋性去選擇。實際工作中常常要向不懂機器學習的人去解釋模型的效果,類似roc_auc和f1值,這種三級指標可解釋性較弱,所以我們一般是選擇recall和precision。
回歸評估指標
平均絕對誤差MAE

均方誤差 MSE

相對MAE而言,MSE的數(shù)值更大。
均方根誤差 RMSE

中位絕對誤差

r^2

回歸評估指標如何選擇?
一般選擇MSE作為評估指標
MSE的誤差的量綱相對較大。若選看量綱接近業(yè)務水平的,用MSE和RMSE
若擔心某個誤差較大會影響整體的評估指標,用MedAE
如果模型希望的是找到能夠解釋目標y變動的因變量,則選用R Squared更合適。
機器學習的基礎概念介紹到這里,懂得了基礎概念,才能開始后續(xù)的學習。
如果覺得文章對你有用,記得點贊收藏呀 ~