一羹幸、什么是機器學習脊髓、數(shù)據(jù)挖掘?
1栅受、AI是什么将硝?
AI(人工智能)是研究開發(fā)用于模擬恭朗、延伸和擴展人的智能理論、方法依疼、技術(shù)及應用系統(tǒng)的一門新的技術(shù)科學痰腮。人工智能是計算機科學的一個分支。
AI的應用場景:必備基礎(chǔ) "機器學習"
2律罢、機器學習是什么膀值?
機器學習就是讓機器有學習的能力,讓機器通過"某種策略", 學習"歷史數(shù)據(jù)"后误辑,能夠進行一定"預測"和"識別"的能力沧踏。
3、數(shù)據(jù)挖掘是什么巾钉?
數(shù)據(jù)挖掘是指從大量數(shù)據(jù)中通過算法搜索隱藏于其中信息的過程悦冀。機器學習是支撐數(shù)據(jù)挖掘的手段。從關(guān)系上看睛琳,數(shù)據(jù)挖掘包括機器學習盒蟆。
4、為什么需要數(shù)據(jù)挖掘师骗?
面臨復雜且大量的新數(shù)據(jù)集時历等,傳統(tǒng)數(shù)據(jù)分析計算常常遇到瓶頸,我們將常見瓶頸進行抽象辟癌。
1寒屯、高維性數(shù)據(jù):隨著5G及物聯(lián)網(wǎng)的建設(shè),數(shù)據(jù)量將會呈指數(shù)級的增長黍少,常常遇到成百上千屬性的維度寡夹,可想象,計算復雜度將迅速增加厂置。
2菩掏、非結(jié)構(gòu)化數(shù)據(jù):非結(jié)構(gòu)化數(shù)據(jù)也包含許多含金量的信息,例如視頻昵济、音頻智绸、文本等等,這些都是傳統(tǒng)數(shù)據(jù)分析方法無法獲取的信息访忿。
3瞧栗、自動及智能問題。傳統(tǒng)分析方法常規(guī)流程就是"提出假設(shè)-驗證假設(shè)"海铆,但這一過程勞力費神迹恐。當前的數(shù)據(jù)分析任務常常需要產(chǎn)生和評估數(shù)千種假設(shè),因此需要自動卧斟、智能的手段殴边。
注:數(shù)據(jù)挖掘非萬能法則通熄,數(shù)據(jù)分析也非所想的不堪,兩者的結(jié)合應用才能更好的為業(yè)務賦能找都。事實上唇辨,數(shù)據(jù)挖掘是需要數(shù)據(jù)分析進行輔助的,比如數(shù)據(jù)探索能耻,特征工程赏枚。
二、機器學習所需要的基礎(chǔ)理論
- 讓機器通過"某種策略", 學習"歷史數(shù)據(jù)"后晓猛,能夠進行一定"預測"和"識別"的能力
1饿幅、某種策略(模型)、損失戒职、模型訓練和標簽
1)模型是什么栗恩?以"一元線性回歸"為例
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號
df1 = pd.DataFrame({'用戶人數(shù)':[100,200,300,400,500],'銷售額(元)':[1000,2000,3000,4000,5000]})
df1.plot(x='用戶人數(shù)',y='銷售額(元)')
from sklearn.linear_model import LinearRegression
x = df1['用戶人數(shù)'].values.reshape(-1,1)
y = df1['銷售額(元)']
lr = LinearRegression()
lr.fit(x,y)
# 模型的斜率
lr.coef_
lr.predict(np.array([600]).reshape(-1,1))
假設(shè)用戶人數(shù)為600,那銷量是 6000 洪燥,這是模型的預測能力磕秤。
2)損失
損失是對糟糕預測的懲罰。損失是一個數(shù)值捧韵,表示對于單個樣本而言市咆,模型預測的準確程度。如果模型的預測完全準確再来,則損失為零蒙兰,否則損失會較大。如下圖:那副圖的損失更大芒篷?紅色箭頭表示損失搜变,藍色線表示預測,可見圖二的模型更準確(預測值-實際值)针炉,圖一的損失更大挠他。
3)模型訓練
模型訓練表示通過有標簽樣本來學習(確定)所有權(quán)重和偏差的理想值。模型訓練檢查多個樣本糊识,并嘗試找出可最大限度的減少損失的模型(方向)绩社。比如:上面的線性回歸摔蓝,k 和 b 都是兩個未知的參數(shù) 赂苗,根據(jù)已有的樣本 x 和 y 去訓練模型。
y = kx + b
4)標簽
標簽贮尉,白話說就是模型的 y 值拌滋,比如上面的線性回歸標簽就是銷售額,抽象的說猜谚,標簽就是結(jié)論败砂。比如:【x赌渣,y】——【用戶人數(shù),銷售額】——【100,1000】昌犹,就是一個樣本坚芜。
2、代價函數(shù)(損失函數(shù))
- 代價函數(shù):是一個數(shù)學函數(shù)斜姥,能夠以有意義的方式匯總各種損失
- 最常見的代價函數(shù):MSE(均方誤差)指的是每個樣本平均平方損失鸿竖。
注:MSE 常用于機器學習,但它不是唯一實用的損失函數(shù)铸敏,也不是適用于所有模型最佳的損失函數(shù)缚忧。
三、劃分數(shù)據(jù)集(訓練杈笔、驗證闪水、測試)
1)訓練集與測試集(常見模式)
訓練集:用于訓練模型的子集
測試集:用于測試訓練后模型的子集
- 舉個例子:訓練集相當于上課學知識,測試集相當于期末考試蒙具,用來最終評估學習效果球榆。
2)劃分注意點:
① 通常將數(shù)據(jù)集的70%作為訓練集,30%作為測試集(8 : 2也行)禁筏,并且挑選的測試集的特征應該與訓練集的特征相同芜果。
② 通常需要在開始構(gòu)建模型之前把數(shù)據(jù)集進行劃分,防止數(shù)據(jù)窺探偏誤融师。也就是說右钾,我們避免了解太多關(guān)于測試集中的樣本特點,防止我們認為的挑選有助于測試集數(shù)據(jù)的模型旱爆。這樣的結(jié)果會過于樂觀舀射,但是實際上并沒有預期的那樣優(yōu)秀。
③ 對于時序數(shù)據(jù)集怀伦、訓練集和測試集需按時間劃分脆烟。比如說我目前有 1-10 月的數(shù)據(jù),那么 1-8 月作為訓練集房待,9-10月作為測試級邢羔。
- 原因:假設(shè)我們有了這個模型以后,都是用歷史的數(shù)據(jù)桑孩,去預測未來的數(shù)據(jù)的拜鹤,所以我們在訓練數(shù)據(jù)的時候也要符合這個模式。
3)流程:
借助這種劃分流椒,可以對一個樣本集進行訓練敏簿,然后使用不同的樣本集測試模型。采用兩種分類以后,工作流程可能如下所示惯裕。
- 缺點:相當于不斷的利用測試集(未來數(shù)據(jù))去調(diào)整模型温数,類似數(shù)據(jù)窺探的效果會增大模型過擬合的風險。
4)優(yōu)化后的流程:
- 缺點:① 驗證集的缺點蜻势,10%數(shù)據(jù)很寶貴撑刺,拿去訓練模型可能會產(chǎn)生更好的效果。② 繁瑣
通常采用第一種(測試集和訓練集)握玛,如果發(fā)現(xiàn)訓練模型過擬合猜煮,通過手段沒有降低的話,可以采用第二種模式败许。
四王带、交叉驗證(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)一般,泛化能力較差眯停。
舉例:比如下圖三個模型济舆,綠色表示訓練集樣本,紅線表示模型的預測能力莺债,藍色表示新樣本點滋觉。看模型三在訓練集表示很好齐邦,但是在新樣本表現(xiàn)一般椎侠,所以說泛化能力較差,出現(xiàn)過擬合措拇。模型一在訓練集表現(xiàn)的也不好我纪,新樣本預測也不好,稱之為欠擬合丐吓。最終我們選擇模型二浅悉,泛化能力越好,就是越好的模型券犁。
哪個模型的泛化能力較差术健?
為什么會產(chǎn)生過擬合?
- ① 訓練數(shù)據(jù)集合訓練數(shù)據(jù)集樣本單一粘衬,樣本不足荞估。如果訓練樣本只有負樣本,然后拿生成的模型去預測正樣本稚新,這肯定預測不準泼舱,所以訓練樣本要盡可能的全面,覆蓋所有的數(shù)據(jù)類型枷莉。
- ②訓練數(shù)據(jù)中噪聲干擾過大娇昙,噪聲指訓練數(shù)據(jù)中的干擾數(shù)據(jù),過多的干擾會導致記錄了很多噪聲特征笤妙,忽略了真實輸入和輸出之間的關(guān)系冒掌。
- ③ 模型過于復雜,模型太復雜蹲盘,已經(jīng)能夠死記硬背記下了訓練數(shù)據(jù)的信息股毫,但是遇到?jīng)]有見過的數(shù)據(jù)的時候不能夠變通,泛化能力太差召衔。我們希望模型對不同的模型都有穩(wěn)定的輸出铃诬,模型太復雜是過擬合的重要因素。
如何降低過擬合?
- ① 獲取和使用更多的數(shù)據(jù)(數(shù)據(jù)集增強)是解決過擬合的根本性方法趣席。
-
② 采用合適的模型兵志,控制模型的復雜度。根據(jù)奧卡姆剃刀法則:在同樣能夠解釋已知觀測現(xiàn)象的假設(shè)中宣肚,我們應該挑選 "最簡單" 的那一個想罕,對于模型的設(shè)計而言,我們應該選擇簡單合適的模型解決復雜的問題霉涨。
- ③ 降低特征的數(shù)量按价。對于一些特征工程而言,可以降低特征的數(shù)量笙瑟,刪除冗余特征楼镐,人工選擇保留哪些特征,這種方法也可以解決過擬合問題往枷。
- ④ 正則化框产,正則化就是在模型的代價函數(shù)里添加一個約束,使得可以減少模型參數(shù)的候選空間师溅,使得模型更加簡潔茅信,本質(zhì)上是控制模型復雜度。
- ⑤ dropout是在訓練網(wǎng)絡時用的一種技巧墓臭,相當于在隱藏單元增加了到噪聲蘸鲸。drop out指的是在訓練過程中,每次按一定的概率窿锉,比如50%酌摇,隨機的刪除一部分隱藏單元神經(jīng)元。所謂的刪除不是真正意義上的刪除嗡载,其實就是將該部分神經(jīng)元的激活函數(shù)設(shè)為零窑多,激活函數(shù)的輸出為零,讓這些神經(jīng)元不計算而已洼滚。
- ⑥ 提前終止埂息,對模型進行訓練的過程即是對模型的參數(shù)進行學習更新的過程。這個參數(shù)學習的過程往往會用到一些迭代方法遥巴,比如梯度下降Early stopping是一種迭代次數(shù)截斷的方法來阻止過擬合的方法千康。即在模型對訓練數(shù)據(jù)及迭代收斂之前停止迭代來防止過擬合。
所以铲掐,總的來說拾弃,一個好的模型,損失函數(shù)盡可能的小摆霉,泛化能力盡可能大豪椿。
六奔坟、模型類別
- 監(jiān)督學習
監(jiān)督學習是從<x,y標簽>這樣的事例中學習統(tǒng)計規(guī)律,然后對于新的 x 給出對應的 y 搭盾。通俗的講咳秉,就是根據(jù)已有的數(shù)據(jù)集知道輸入和輸出結(jié)果之間的關(guān)系,根據(jù)這種已知的關(guān)系,訓練得到一個最優(yōu)模型增蹭。
① 分類模型:標簽為分類型數(shù)據(jù)滴某,比如預測用戶是否流失(標簽 y 為【是否】)
② 回歸模型:標簽為數(shù)值數(shù)據(jù)磅摹,比如預測銷售額滋迈。
- 監(jiān)督學習常見模型
K-近鄰(KNN)
線性回歸(回歸模型)
邏輯回歸(分類模型)
支持向量機
決策樹和隨機森林
神經(jīng)網(wǎng)絡
- 無監(jiān)督學習
相比監(jiān)督學習沒有標注數(shù)據(jù),也就是 y户誓。無監(jiān)督學習是從一堆數(shù)據(jù)中學習其內(nèi)在統(tǒng)計規(guī)律或內(nèi)在結(jié)構(gòu)饼灿。學習到的模型可以是類別,轉(zhuǎn)換或者概率帝美,這些模型可以實現(xiàn)對數(shù)據(jù)的聚類碍彭、降維、可視化悼潭、概率估計和關(guān)聯(lián)規(guī)則學習庇忌。
- 無監(jiān)督學習常見模型
a.聚類算法
k-means算法(kmeans)
密度聚類算法
最大期望算法(EM)
b.降維
主成分分析(PCA)
c.關(guān)聯(lián)規(guī)則學習
Apriori
d. 時間序列預測
- 半監(jiān)督學習
半監(jiān)督學習包含大量未標注數(shù)據(jù)和少量標注數(shù)據(jù),主要是利用未標注中的信息輔助標注數(shù)據(jù)進行監(jiān)督學習舰褪。大多數(shù)半監(jiān)督學習算法是無監(jiān)督式和監(jiān)督式算法的結(jié)合皆疹。
七、模型評估
不同類型的模型評估方法不一占拍。
先講一個常見誤區(qū)略就,大家是否覺得評估模型就用模型準確率 ?
- 實際例子晃酒,小a是某運營商的一名數(shù)據(jù)分析師表牢,老板最近和他說:"小a,最近我們這個 xx 流量產(chǎn)品每月流失用戶都挺多的贝次,能不能幫忙想想辦法崔兴。",小a 思考了一下蛔翅,覺得假設(shè)我們能預測出下個月流失用戶的名單敲茄,那我們是不是能提前對這批用戶發(fā)發(fā)優(yōu)惠,或者引導他們升級變更其他流量產(chǎn)品去挽留他們呢搁宾?
- 模型準確率9/10 = 90%
- 記得我們的任務目標嗎折汞,我們目標是不是想預測出哪些用戶流失了?那這個模型在預測流失用戶的表現(xiàn)如何盖腿,模型一個流失用戶都沒預測出來爽待,盡管模型的準確率是90%這么高损同,但對于我們的業(yè)務來說,是無效模型鸟款。
分類評估指標
- ① 一級指標(底層指標)
混淆矩陣:混淆矩陣就是分別統(tǒng)計分類模型膏燃、歸錯類、歸對類的觀測值個數(shù)何什,然后把結(jié)果放在一個表里展示出來组哩,這個表就是混淆矩陣。- 真實值是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)計結(jié)果上又延伸了如下四個指標闷哆,我們稱它為二級指標。
- accuracy (準確率):(TP + TN)/(TP + FN + FP + FN)
意義:分類模型所有判斷正確的結(jié)果占總觀測值的比重单起,一般不用- precision(準確率):TP /(TP + FP)
意義:表示預測為正的樣本數(shù)有多少是對的抱怔,可解釋性強,常用越高越好嘀倒。- record (召回率屈留、查全率,真正率TPR):TP / ( TP + FN)
意義:表示樣本中的正例有多少被預測正確测蘑,可解釋強灌危,常用越高越好。- FPR (假正率) :FP / (FP + FN)
意義:表示當前被錯誤分到正樣本類別中真實的負樣本 所占所有負樣本總數(shù) 的比例帮寻,越低越好乍狐。
- ③三級指標
- ROC curve赠摇,這個曲線就是以下 TPR 和 FPR 為軸固逗,取不同的閾值點畫的。
- 模型去預測分類型任務的時候藕帜,本質(zhì)上是預測分類型的概率的烫罩,比如計算流失的概率,如果這個概率大于閾值0.5的話洽故,這即為流失贝攒,所以這里就有個閾值的存在。不同的閾值时甚,會有不同的TP 隘弊、FP。
ROC_AUC:AUC就是曲線下面積荒适,我們根據(jù)ROC曲線想一下梨熙,到底我們這個曲線漲什么樣的模型才算好呢?TR率是越高越好刀诬,F(xiàn)P率是越低越好咽扇,所以我們的曲線應該是越靠近Y軸越好。(粗魯)理解最終可抽象成陕壹,ROC曲線下面積越大越好质欲,即AUC越大越好。
AUC評判標準 :
0.5-0.7 : 效果較低糠馆,但預測股票已經(jīng)很不錯了嘶伟。
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為表示樣本中的正例有多少被預測正確,對于這個模型速兔,就是所有的在逃罪犯為分母墅拭,模型預測為在逃罪犯為分子。假設(shè)recall為1涣狗,也就是所有的在逃罪犯模型都預測正確了谍婉。 - 根據(jù)指標可解釋性去選擇。實際工作中常常要向不懂機器學習的人去解釋模型的效果镀钓,類似roc_auc和f1值穗熬,這種三級指標可解釋性較弱,所以我們一般是選擇recall和precision丁溅。
回歸評估指標
-
平均絕對誤差MAE
-
均方誤差 MSE
相對MAE而言唤蔗,MSE的數(shù)值更大。
-
均方根誤差 RMSE
-
中位絕對誤差
r^2決定系數(shù)(擬合優(yōu)度)
回歸評估指標如何選擇窟赏?
- 一般選擇MSE作為評估指標
- MSE的誤差的量綱相對較大妓柜。若選看量綱接近業(yè)務水平的,用MSE和RMSE
- 若擔心某個誤差較大會影響整體的評估指標涯穷,用MedAE
- 如果模型希望的是找到能夠解釋目標y變動的因變量棍掐,則選用R Squared更合適。