1. 程式人生 > >機器學習系統設計.

機器學習系統設計.

前言:本文課件均來自Andrew Ng老師的machine learning公開課課程。

一、評價模型

    評價模型的一種標準方法是把資料集隨機分為訓練集和測試集,訓練集和測試集的樣本比例是7:3,下面舉例線性迴歸和邏輯迴歸的訓練/測試步驟:

 

1.1  線性迴歸模型構建步驟

(1)最小化訓練損失函式模型來得到引數theta,損失函式模型採用均方差表示式。

(2)用訓練得到的模型來計算測試樣本的測試誤差。

(1)

 

1.2  邏輯迴歸模型構建步驟

    步驟與線性迴歸模型一樣,不一樣的地方在於計算誤差的函式表示式,該課件視訊介紹了兩種評估測試誤差的函式表示式。

 

個人覺得計算誤差的表示式有誤,應該是如下表達式:

 

二、模型選擇和資料集分類

    構建一系列模型,通過最小化損失函式來求模型引數θ,根據求解的模型θ來計算測試集的損失函式。

 

 

        根據測試集的損失函式來選擇最優引數θ,但是問題在於該測試集的資料已經那來選擇最優引數θ,因此測試模型的泛化能力需要未用過的資料集來評價。資料集分為:訓練集、驗證集、測試集,各資料集所佔的比例為:0.6,0.2,0.2。

 

訓練集、驗證集、測試集的損失函式如下:

 

    模型選擇步驟:(1)通過訓練集構建模型,損失函式最小化對應的模型θ(2)通過驗證集來選擇模型,選擇驗證集損失函式最小對應的模型,(3)通過測試集來評估模型。

 

三、偏差和方差

    在進行更深入的建模之前,首先需要知道模型的問題所在,是處於高偏差問題還是處於高方差問題。

    高偏差是模型比較簡單造成的損失函式較大,即欠擬合;高方差是模型比較複雜,訓練函式誤差小,但泛化能力差,即過擬合;

高偏差與高方差如下圖:

 

四、學習曲線

 

        學習曲線判斷某一學習演算法是否處於偏差、方差問題、或兩者皆有。學習曲線是繪製出訓練集誤差大小、交叉驗證集誤差大小同訓練集樣本數關係的曲線。

繪製出一個二次模型的訓練集和測試集的損失函式:

4.1 高偏差的學習曲線

        高偏差是模型比較簡單造成的誤差,特點是訓練集和驗證集的誤差都比較大。如果處於高偏差模型,那麼增加訓練樣本量並不能改善模型。

4.2  高方差的學習曲線

        高方差是模型過於複雜導致的,即訓練集誤差小,驗證集誤差大,訓練集誤差和驗證集誤差有一段很大的差距。如果增大訓練樣本數,則訓練集誤差和驗證集誤差會逐漸的接近,即訓練集誤差逐漸增大,驗證集誤差逐漸減小。

四、模型問題分析

 

若模型的測試誤差很大,有以下方法你可以嘗試,每種方法解決高方差或高偏差問題。

 

一般來說,使用正則化的大型神經網路模型比使用小型神經網路效果更好,缺點是計算量較大。

 

六、誤差分析

推薦的方法:(1)設計一個簡單的學習模型,運用該模型來測試驗證資料集;(2)畫出學習曲線來判斷演算法是否有高偏差和高方差的問題,再來決定是否增加更多的特徵或更多的訓練資料;(3)人工檢查演算法分析錯誤的樣本資料集,發現錯誤樣本資料集存在的規律;

        課件舉例了郵件分類問題的誤差分析步驟,主要思想是對誤分類的郵件進行分析,找到錯誤分類樣本的共性問題,提取出該特徵進行分類。

6.1 偏斜類的誤差分析

對正負樣本數量差別較大的測試樣本來作誤差分析,測試誤差並不能評估模型的好壞,一般用查準率(precision)和召回率(recall)來度量誤差值。

查準率和召回率的計算公式:

 

如果有高的查準率和高的召回率,我們可以說這個演算法表現很好。

6.2  權衡查準率和召回率

每個學習演算法有不同的查準率和召回率,因此衡量學習演算法的好壞需要綜合兩者來看,一般採用F-score來評估模型:

 

互相交流學習微信群:

                                                                           

公眾號:

                                                           

期待你的加入,砥礪前行,不忘初心!