AI產品經理的入門必修課(2)——實戰(zhàn)篇
導語:上一篇文章里簡單介紹了AI產品經理需要具備的能力和對數據、算法需要理解的程度;本篇計劃介紹一下機器學習的實際訓練過程,來進一步的理解AI產品在日常工作中需要關注的內容。我們一起來了解一下。
現簡單的將訓練流程劃分為:定位要解決的任務類型 -> 選擇合適的算法模型 -> 準備數據集 -> 訓練模型 -> 調整參數 -> 模型評估及驗收。
一、根據場景定位要解決的任務類型
結合不同的應用場景,機器學習核心解決的任務類型可以簡單歸納為分類問題、回歸問題、聚類問題、時間序列問題。
1. 分類問題
原理:根據樣本特征提前定義好數據的分類,把具有相同特征的數據點落到提前定義好的類別標簽上完成分類。
特點:數據樣本有標簽。
應用場景:人臉識別、垃圾郵件檢測、圖像識別、信用卡評估…
2. 回歸問題
原理:通過歷史數據的表現,擬合成一個目標函數,利用誤差分析方法去確定擬合后表現最好的函數。
特點:數據是相互獨立的點,且有對應標簽。
應用場景:預估業(yè)務增量、房價增長、股票增長…
3. 聚類問題
原理:不需要提前去定義期望的數據需要怎樣劃分,根據樣本特征的距離去決定分類,保持最小的組內相似。
特點:數據樣本無標簽,不需要提前去定義期望的數據需要怎樣劃分,根據樣本特征的距離去決定分類,保持最小的組內相似。
應用場景:用戶分群、商品聚類…
4. 時間序列問題
原理:與回歸的邏輯相似,但對數據的要求不一樣,數據按照時間順序排列,根據相等間隔的時間段的數據表現規(guī)律去預估未來的表現。
特點:數據點之間彼此相關。
應用場景:需要進行周期性預測類的場景。
二、選擇合適的算法模型
根據不同任務類型選擇合適的算法模型,如果要解決的是分類問題,即對應的要選擇擅長處理分類問題的算法模型,選擇合適的模型可以提高數據訓練的效率。
通常選擇什么樣的算法是由算法工程師主導的,產品經理只需要簡單理解所解決的問題范圍即可。
scikit-learn上支持的分類算法:
- 樸素貝葉斯分類器(Naive Bayes)
- K近鄰分類器(KNeighbors Classifier)
- 決策樹(Decision Tree)
- 支持向量機(SVC)
- 線性支持向量機(Linear SVC)
- 隨機梯度下降分類器(SGD Classifier)
- 核估計(kernel approximation)
- 集成分類器(EnsembleClassifiers)
要解決聚類的問題,如用戶分群,可以選擇聚類的算法模型。
scikit-learn上支持的聚類算法:
- K均值(KMeans)
- 譜聚類(Spectral Clustering)
- GMM – 高斯混合模型
- MeanShift
- VBGMM
- MiniBatch KMeans
如果要依賴趨勢做數值預測,如業(yè)務量增長,可以選擇回歸算法模型。
scikit-learn上支持的回歸算法:
- 貝葉斯嶺回歸
- Logistic回歸
- 支持向量機回歸
- 決策樹回歸
- LASSO
- 隨機梯度下降回歸(SGD Regressor)
三、準備數據集
準備數據集包含了數據處理、特征提取、訓練集、測試集的分割。
1. 數據預處理
通常來說,我們收集上來的數據來源比較多,可能會存在一些問題,例如數據缺失、數據格式不一致、數據集分布不均勻、數據重復等問題,因此需要進行數據的預處理。
不同問題的處理方式:
- 數據缺失:如果數據缺失占比不大,可以把有缺失的數據進行刪除,若本身數據量級就不是很多,可以進行人工填補,通常經過經驗填補或者均值填補。
- 數據格式不統一/量綱不統一:進行格式轉化,數據歸一化處理。
- 數據分布不均勻:可以根據樣本分布特點進行隨機重復采樣,以補充數據量少的分布,但容易丟失重要特征。
2. 特征提取
在機器學習的訓練中,需要將業(yè)務維度相關的數據進行向量轉化,解決部分復雜問題時,如果維度較多在轉化過程中很容易造成大量的計算資源的消耗,一般會先進行特征的提取,也就是常說的特征工程,來進行維度的簡化。
常用的方法是主成分分析,原理是將兩個或幾個獨立的特征組合到一起形成一個特征;利用這種方式進行降維,使訓練的維度減少,提高訓練效率。
3. 訓練集、測試集的分割
在機器學習模型訓練之前,通常要進行數據的分割,常用的有1/4分割、1/10分割,具體需要根據自己的數據樣本量去拆分。
四、訓練模型 & 調整參數
準備好數據集,確定了要使用的算法,下一步要進行具體的模型訓練;上一篇文章中我們提到機器學習模型訓練中經常遇到的兩個問題,過擬合和欠擬合。
1. 過擬合
特點:在訓練集上表現非常好,但是在測試數據或者驗證數據上表現很差,說明模型缺失泛化能力。
原因:訓練數據太少或者學習后的模型過于復雜。
解決方法:增加訓練樣本,或者減少數據維度,或者為模型添加一個正則項來擴大模型在訓練上的誤差。
2. 欠擬合
特點:在訓練集上表現不好,在測試數據上表現也不好。
原因:維度較少擬合的函數不足以表達數據規(guī)律。
解決方法:補充維度增加模型的復雜程度。
圖上是線性回歸模型表現出的三種狀態(tài),中間圖為模型訓練好后該具備的樣子;紫色線為模型訓練好后擬合出的函數,綠色線為真實數據該擬合出的函數,點代表樣本數據。
3. 參數調整
針對調參的環(huán)節(jié),一般會通過交叉驗證來確定最優(yōu)參數。當然,一些對模型訓練做的比較多的算法大牛,也會根據自己的經驗去指定參數進行算法調優(yōu)。
以KNN算法為例:
最簡單的方式:K=1、2、3,然后分別進行實驗,對比結果,選擇最優(yōu)參數。
交叉驗證:將一部分數據從訓練集上分割出來,從這小部分數據集中進行驗證;例如下圖,把訓練集劃分為5份,分別采用每一小份當作交叉實驗的測試集,對比每一次實驗的結果,去分別記錄預估的準確率,最后選擇準確率最高的參數作為模型最優(yōu)參數。
這里需要注意分組實驗只是為了確定最優(yōu)參數,在參數確認后,還是需要將全部數據合并到一起進行模型訓練,得到目標函數,很多人在調參的環(huán)節(jié)容易忽視此步驟。
五、模型評估及驗收
最常見的方法是看模型的準確率,但模型整體準確率高,不代表模型表現就好;因為在某些任務場景下,更多關注的是某個類別或者某個分布下的準確率,而非整體的準確率。
例如在圖像識別的場景下,首先會去關注模型對于圖像內容識別的召回率,所謂召回率就是在所有要檢測的圖片樣本中,被預測正確的個數,也叫做查全率;然后在去看模型的精準度,也就是所有預測出的結果中,預估正確的個數。
二者的區(qū)別在于,前者關注的是在所有真實樣本中被正確檢測的情況,后者關注的是預測結果中被正確檢測的情況,下表是分類問題的混淆矩陣。
舉例:數據樣本中有貓和狗的圖片,我們用圖像識別來檢測是貓的圖片。
- 真正例(TP):圖片預測結果是貓,真實圖片結果是貓;
- 假正例(FP):圖片預測結果是貓,真實圖片結果是狗;
- 真反例(TN):圖片預測結果是狗,真實圖片結果是狗;
- 假返例(FN),圖片預測結果是狗,真實圖片結果是貓;
本次任務是“檢測出貓”的圖片,即使模型正確檢測出狗,也不滿足于我們當前的分析任務,因此基于任務而言,正確預測出是狗的情況為真返例。
真返利的數據在“檢測出貓”的任務中不會被算到準確率中,基于“檢測出貓”這個任務的召回率和準確率的計算為:
- 召回率TP/(TP+FP)
- 準確率TP/(TP+FN)
另外一種評估模型準確率的方法是觀察ROC、AUC和EER數據,并進行對比評估。
ROC曲線圖如下:
綠線為ROC曲線。
AUC代表了藍色面積,藍色面積越大,說明模型預估越準確。
EER為綠色線上的原點,值越小代表了模型的誤差越小。
#專欄作家#
大鵬,公眾號:一個數據人的自留地。人人都是產品經理專欄作家,《數據產品經理修煉手冊》作者。
本文原創(chuàng)發(fā)布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議。
感覺貓狗的召回率準確率那塊有點疑問
我也是,我也是,感覺2個數據之間的區(qū)別沒有很明顯