導語:上一篇文章里簡單介紹了AI產品經理需要具備的能力和對數據、演算法需要理解的程度;本篇計劃介紹一下機器學習的實際訓練過程,來進一步的理解AI產品在日常工作中需要關注的內容。我們一起來了解一下。

現簡單的將訓練流程劃分為:定位要解決的任務類型 -> 選擇合適的演算法模型 -> 準備數據集 -> 訓練模型 -> 調整參數 -> 模型評估及驗收。

一、根據場景定位要解決的任務類型

結合不同的應用場景,機器學習核心解決的任務類型可以簡單歸納為分類問題、回歸問題、聚類問題、時間序列問題。

1. 分類問題

原理:根據樣本特徵提前定義好數據的分類,把具有相同特徵的數據點落到提前定義好的類別標籤上完成分類。

特點:數據樣本有標籤。

應用場景:人臉識別、垃圾郵件檢測、圖像識別、信用卡評估…

2. 回歸問題

原理:通過歷史數據的表現,擬合成一個目標函數,利用誤差分析方法去確定擬合后表現最好的函數。

特點:數據是相互獨立的點,且有對應標籤。

應用場景:預估業務增量、房價增長、股票增長…

3. 聚類問題

原理:不需要提前去定義期望的數據需要怎樣劃分,根據樣本特徵的距離去決定分類,保持最小的組內相似。

特點:數據樣本無標籤,不需要提前去定義期望的數據需要怎樣劃分,根據樣本特徵的距離去決定分類,保持最小的組內相似。

應用場景:用戶分群、商品聚類…

4. 時間序列問題

原理:與回歸的邏輯相似,但對數據的要求不一樣,數據按照時間順序排列,根據相等間隔的時間段的數據表現規律去預估未來的表現。

特點:數據點之間彼此相關。

應用場景:需要進行周期性預測類的場景。

二、選擇合適的演算法模型

根據不同任務類型選擇合適的演算法模型,如果要解決的是分類問題,即對應的要選擇擅長處理分類問題的演算法模型,選擇合適的模型可以提高數據訓練的效率。

通常選擇什麼樣的演算法是由演算法工程師主導的,產品經理只需要簡單理解所解決的問題範圍即可。

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

如果要依賴趨勢做數值預測,如業務量增長,可以選擇回歸演算法模型。

scikit-learn上支持的回歸演算法:

  • 貝葉斯嶺回歸
  • Logistic回歸
  • 支持向量機回歸
  • 決策樹回歸
  • LASSO
  • 隨機梯度下降回歸(SGD Regressor)

三、準備數據集

準備數據集包含了數據處理、特徵提取、訓練集、測試集的分割。

1. 數據預處理

通常來說,我們收集上來的數據來源比較多,可能會存在一些問題,例如數據缺失、數據格式不一致、數據集分佈不均勻、數據重複等問題,因此需要進行數據的預處理。

不同問題的處理方式:

  • 數據缺失:如果數據缺失佔比不大,可以把有缺失的數據進行刪除,若本身數據量級就不是很多,可以進行人工填補,通常經過經驗填補或者均值填補。
  • 數據格式不統一/量綱不統一:進行格式轉化,數據歸一化處理。
  • 數據分佈不均勻:可以根據樣本分佈特點進行隨機重複採樣,以補充數據量少的分佈,但容易丟失重要特徵。

2. 特徵提取

在機器學習的訓練中,需要將業務維度相關的數據進行向量轉化,解決部分複雜問題時,如果維度較多在轉化過程中很容易造成大量的計算資源的消耗,一般會先進行特徵的提取,也就是常說的特徵工程,來進行維度的簡化。

常用的方法是主成分分析,原理是將兩個或幾個獨立的特徵組合到一起形成一個特徵;利用這種方式進行降維,使訓練的維度減少,提高訓練效率。

3. 訓練集、測試集的分割

在機器學習模型訓練之前,通常要進行數據的分割,常用的有1/4分割、1/10分割,具體需要根據自己的數據樣本量去拆分。

AI產品經理的入門必修課(2)——實戰篇

四、訓練模型 & 調整參數

準備好數據集,確定了要使用的演算法,下一步要進行具體的模型訓練;上一篇文章中我們提到機器學習模型訓練中經常遇到的兩個問題,過擬合和欠擬合。

1. 過擬合

特點:在訓練集上表現非常好,但是在測試數據或者驗證數據上表現很差,說明模型缺失泛化能力。

原因:訓練數據太少或者學習后的模型過於複雜。

解決方法:增加訓練樣本,或者減少數據維度,或者為模型添加一個正則項來擴大模型在訓練上的誤差。

2. 欠擬合

特點:在訓練集上表現不好,在測試數據上表現也不好。

原因:維度較少擬合的函數不足以表達數據規律。

解決方法:補充維度增加模型的複雜程度。

AI產品經理的入門必修課(2)——實戰篇

圖上是線性回歸模型表現出的三種狀態,中間圖為模型訓練好后該具備的樣子;紫色線為模型訓練好后擬合出的函數,綠色線為真實數據該擬合出的函數,點代表樣本數據。

3. 參數調整

針對調參的環節,一般會通過交叉驗證來確定最優參數。當然,一些對模型訓練做的比較多的演算法大牛,也會根據自己的經驗去指定參數進行演算法調優。

以KNN演算法為例:

最簡單的方式:K=1、2、3,然後分別進行實驗,對比結果,選擇最優參數。

交叉驗證:將一部分數據從訓練集上分割出來,從這小部分數據集中進行驗證;例如下圖,把訓練集劃分為5份,分別採用每一小份當作交叉實驗的測試集,對比每一次實驗的結果,去分別記錄預估的準確率,最後選擇準確率最高的參數作為模型最優參數。

這裡需要注意分組實驗只是為了確定最優參數,在參數確認后,還是需要將全部數據合併到一起進行模型訓練,得到目標函數,很多人在調參的環節容易忽視此步驟。

AI產品經理的入門必修課(2)——實戰篇

五、模型評估及驗收

最常見的方法是看模型的準確率,但模型整體準確率高,不代表模型表現就好;因為在某些任務場景下,更多關注的是某個類別或者某個分佈下的準確率,而非整體的準確率。

例如在圖像識別的場景下,首先會去關注模型對於圖像內容識別的召回率,所謂召回率就是在所有要檢測的圖片樣本中,被預測正確的個數,也叫做查全率;然後在去看模型的精準度,也就是所有預測出的結果中,預估正確的個數。

二者的區別在於,前者關注的是在所有真實樣本中被正確檢測的情況,後者關注的是預測結果中被正確檢測的情況,下表是分類問題的混淆矩陣。

AI產品經理的入門必修課(2)——實戰篇

舉例:數據樣本中有貓和狗的圖片,我們用圖像識別來檢測是貓的圖片。

  • 真正例(TP):圖片預測結果是貓,真實圖片結果是貓;
  • 假正例(FP):圖片預測結果是貓,真實圖片結果是狗;
  • 真反例(TN):圖片預測結果是狗,真實圖片結果是狗;
  • 假返例(FN),圖片預測結果是狗,真實圖片結果是貓;

本次任務是「檢測出貓」的圖片,即使模型正確檢測出狗,也不滿足於我們當前的分析任務,因此基於任務而言,正確預測出是狗的情況為真返例。

真返利的數據在「檢測出貓」的任務中不會被算到準確率中,基於「檢測出貓」這個任務的召回率和準確率的計算為:

  • 召回率TP/(TP+FP)
  • 準確率TP/(TP+FN)

另外一種評估模型準確率的方法是觀察ROC、AUC和EER數據,並進行對比評估。

ROC曲線圖如下:

綠線為ROC曲線。

AUC代表了藍色面積,藍色面積越大,說明模型預估越準確。

EER為綠色線上的原點,值越小代表了模型的誤差越小。

AI產品經理的入門必修課(2)——實戰篇

#專欄作家#

大鵬,公眾號:一個數據人的自留地。人人都是產品經理專欄作家,《數據產品經理修鍊手冊》作者。

本文原創發佈於人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基於CC0協議。

給作者打賞,鼓勵TA抓緊創作!