編輯導語: 機器學習是一種數據分析技術,讓計算機執行人和動物與生俱來的活動:從經驗中學習,也被稱為預測分析;本文作者分享了關於機器學習的流程以及實踐應用,我們一起來看一下。

我所理解的機器學習是一種能夠實現人工智慧的技術,建立能從經驗(數據)中進行學習的模型,從而使這個模型可以達到自行處理此類數據的能力。

也可以理解為:通過大量的數據,訓練出一個能處理此類數據的模型,使得這個模型可以根據已知的數據,準確率很高的判斷出未知的數據,從而使得人類能夠採取正確的方法去處理某些事情。

想要了解機器學習你需要知道以下幾點:

一、機器學習的流程

從實際的應用場景出發,要訓練出來一個能夠適應某場景的模型需要經過以下幾步:

1. 場景解析

場景解析就是將業務邏輯,抽象成為通過演算法能夠解決的問題。

比如:做一個心臟病預測系統,那麼就可以抽象為二分類問題——要麼有心臟病,要麼沒有;然後,根據已有的數據看看有沒有目標值,可以判斷出:是監督學習還是無監督學習,還是半監督學習;從而,選擇出能夠處理好此類數據的演算法。

(不同場景採用的演算法是不同的)高頻的有以下幾種類型的場景:

  • 分類場景:廣告投放預測,網站用戶點擊預測。
  • 聚類場景:人群劃分,產品種類劃分。
  • 回歸場景:商品購買量預測和股票成交額預測。
  • 文本分析類場景:新聞的標籤提取,文本自動分類和文本關鍵信息抽取。
  • 關係圖演算法:社交網路關係,網路關係挖掘和金融風險控制。
  • 模式識別:語音識別,圖像識別和手寫文字識別。

2. 數據預處理

場景解析完,選擇適合處理此類數據的演算法后,需要對數據進行預處理——就是對數據進行清洗工作,對空值、亂碼進行處理。

數據預處理的主要目的就是:減少噪音數據對訓練數據的影響。

3. 特徵工程

特徵工程是機器學習中最重要的一部分,因為根據已有的訓練數據,可選用的演算法是有限的;那麼在同樣的演算法下特徵的選取是不同的,100個人對一件事情會有100種看法,也就有100種特徵,最後特徵的質量決定模型的好壞。

特徵工程需要做的包括:特徵抽象、特徵重要性的評估、特徵衍生、特徵降維。

4. 模擬訓練

在經過以上過成后,進入訓練模塊,生成模型。

5. 模型評估

對生成模型的成熟度進行評估。

6. 離線/在線服務

在實際運用過程中,需要配合調度系統來使用。

案例場景:每天將用戶當日新增的數據量流入資料庫表裡,通過調度系統啟用離線訓練服務,生成最新的離線模型,然後通過在線預測服務進行實時預測。

二、數據源結構

結構化數據:機構化數據是指以矩陣結構儲存的數據。

資料庫里的數據就是以這種結構存在,可以通過二維結構來顯示,如下圖:

結構化數據中,有兩個重要的概念需要介紹一下:特徵列和目標列。

上圖裡age,sex,cp列都是特徵列,ifhealth是目標列。

非結構化數據:典型的非結構化數據是圖像、文本、語音等文件;這些數據不能以矩陣的結構儲存,目前的做法也是通過把非結構化的數據轉化為二進位儲存格式。

半結構化數據:半結構化數據是指按照一定的結構儲存,但不一定是二維的資料庫行存儲形態的數據;還有一種是以二維數據形態儲存的,但某些欄位是文本類型,某些欄位是數值類型的,如下圖:

三、演算法分類

監督學習:是指每個進入演算法的訓練樣本數據都有對應的目標值。

如上圖2所示,Ifhealth為目標值。

常見的監督學習演算法:

無監督學習:就是訓練樣本的數據里沒有目標列,不依賴於打標好的機器學習演算法。

那麼,這樣的數據可能對一些分類和回歸的場景就不太適合了。

無監督學習主要是來解決一些聚類場景的問題。

半監督學習:

通過上面的監督學習和無監督學習的概念,再來看半監督學習就比較好理解了。

也就是說,訓練數據里只有部分數據是打標的。目前,半監督學習的演算法,都是監督學習演算法的變形。

強化學習:

強化學習是一種比較複雜的機器學習種類。強調的是:系統與外界不斷的交換,獲得外界的反饋,然後決定自身的行為。

如:無人駕駛,阿爾法狗下圍棋就是強化學習的應用。

四、過擬合問題(欠擬合這裡不做詳細的介紹)

過擬合是數據挖掘(通過大量數據,訓練模型的過程也稱為數據挖掘)領域中最常見的問題,是指:通過訓練集訓練了一個模型,這個模型對於訓練集的預測準確率很高,可以達到95%以上;但是換一份兒數據集進行預測,準確率大幅度下降。

出現這種情況的原因可能是:訓練的過擬合現象。

導致過擬合問題的原因有以下三種:

  1. 訓練數據集樣本單一。
  2. 訓練樣本噪音數據干擾過大。
  3. 模型過於複雜。

五、結果評估

機器學習最終的目的是生成模型。

模型生成后需要一些指標來評估這個模型的好壞。

常用到的概念有:精確率,召回率,F1值,ROC和AUC幾種。

首先介紹一下精確率,召回率和F1值,這3個指標是由:TP,TN,FP,FN這4個值計算而來的(這裡不做解釋了)。

  • 精確率=TP/(TP+FP)
  • 召回率=TP/(TP+FN)
  • F1=(2*精確率*召回率)/(精確率*召回率)

ROC曲線是常用的二分類場景的模型評估演算法曲線,下圖齒狀弧形曲線就是ROC曲線。

如圖所示:

通過ROC曲線可以清晰的展示出來,只要模型曲線越來越接近左上角就說明模型的效果越好。

AUC的值是ROC與橫軸所圍起來的面積(圖中帶陰影的部分),這個AUC的值越大說明模型的效果越好。

AUC的值取0~1之間,通常大於0.5,當AUC的值大於0.9以上時,證明這個模型的效果比較好。

以上對機器學習的流程,和一些概念做了解釋,但距離真正可以上手操作還有很遠的距離;如非結構化數據和半結構化數據,如何轉化為結構化數據?特徵抽象,特徵衍生,特徵降維如何操作?等等,實際的操作問題,還需要一定的篇幅來介紹。