前言
以下內容是個人學習之后的感悟,轉載請注明出處~
經過前幾篇博客的學習,我們了解到了線性回歸、邏輯回歸、神經網絡等的一些知識。然而,到底該怎么開發一個
機器學習系統或者選擇並改進一個學習系統呢?這應該是很多初學者的困惑之處。那么本文會帶領你更一步了解如何更
好地使用機器學習。
由於內容較多,做以下目錄,方便瀏覽:
評價假設函數
在設計一個好的機器學習系統之前,我們首先要學會評價一個機器學習系統的好壞,即評價假設函數的好壞。
那么我們應該如何來評價呢?首先,我們先選擇一個原始樣本數據,70%作為訓練集,30%作為測試集。用70%的
訓練集求出權重參數θ,再用30%的測試集對求出的學習模型進行測試,如下圖所示。
然后使用誤分類率(0/1錯分率)法,對學習模型進行誤差評估,公式如下:
模型選擇
不管是用線性回歸、邏輯回歸算法,還是用神經網絡等算法,模型的選擇對於達到的效果是至關重要的。相同的算
法,不同的模型,結果也可能是千差萬別的。所以,接下來要介紹的便是如何選擇模型。
以多項式回歸算法為例,對於一個樣本集,我們可以列很多階的假設函數,然后在其中尋找最合適的。在這里,把樣
本集分為3個子集,分別是60%訓練集、20%驗證集、20%測試集。下面只列出了1到10階的單特征多項式,分別用訓練
集對它們進行訓練,然后用驗證集計算代價函數,取其最小值得多項式作為模型。
模型優化
選好模型並不意味着能夠順利地得出我們想要的結果,因為特征數量、樣本數量、正則化參數等等都會對模型最終得
到的結果產生影響。那么影響到底有多大?影響是從那些特征可以看出?用什么方法可以改善模型?這些都是接下來要說
明的內容,請繼續往下看。
首先,我們要找出能夠表明模型好壞的一些特征,這樣有利於我們分析從哪里下手去改進、優化模型。很多人都知道
欠擬合和過擬合,它們分別代表着“高偏差”、“高方差”。如下圖所示:
那么我們可以通過什么方法來判斷高偏差和高方差呢?方法如下圖所示,利用上文選擇模型時計算的訓練代價函數值
和驗證代價函數值畫出關於多項式階數d的曲線圖(是不是覺得,前面的計算沒白費,接着利用很省力~)。從圖中我們可
以很容易判斷高偏差和高方差之處。
那么,哪些因素對模型的高偏差、高方差有些影響呢?其實有樣本數、特征數、正則化參數等因素。
接下來我們看一下正則化參數λ是怎么影響高方差、高偏差的,如下圖所示:
那么如何選擇正則化參數呢?看下面左圖,計算選擇不同λ時的驗證代價函數值Jcv(θ),取其最小值時的λ即可。下面的
右圖則是Jcv(θ)和Jtrain(θ)隨正則化參數λ的變化曲線,看起來十分直觀。
接下來再來看看訓練樣本數量對高偏差、高方差的影響,看下圖:
高偏差 | ![]()
|
正常 | ![]()
|
高方差 | ![]()
|
很多人會覺得我之前提到了3個主要的影響因素,已經講了正則化參數λ、訓練樣本數m對高偏差、高方差的影響,是不
是應該講特征數了呀。童鞋們很聰明,推測的很准,不過有沒有人注意到,上文在選擇模型時,計算過關於特征值階數的驗證
代價函數值Jcv(θ),然后選擇較小值的階數作為模型,其實這就是對特征值影響的分析(也許有人會提到特征數,其實道理都是
一樣的,就不展開),當驗證代價函數值最小的時候,完美地避過了高偏差和高方差區。
說了這么多,在這里總結一下模型優化的方法:
說了這么多,都沒提到神經網絡的模型選取和模型優化,其實吧,神經網絡和多項式回歸以及其他一些算法一樣,其選擇模
型和優化模型的方法一般采取的也是交叉驗證法,即通過交叉驗證集誤差Jcv(θ)來實現。神經網絡一般特征數、隱含層的層數是需
要重點關注的方面,因為這些處理不當,往往會造成過擬合。
不平衡數據學習模型的評估
在生活中,存在這樣一個樣本數據集,它有一個類別占的比重特別大,其他類占的比重特別小。比如有一個病人集,里面得了
癌症的人占0.5%,不得癌症的人占99.5%,假設得癌症輸出1,不得癌症輸出0。然后有人開發了一個算法,不管是輸入什么病人,
一律輸出0,那么正確率可以達到99.5%,然后得出評估,這個算法很成功。呵呵~,很多人都會覺得這個評估很荒謬,顯然這種評
估方法不適合這種不平衡數據學習模型。
為了解決這個問題,我們先建立一個表格,如下圖所示,上邊的1、0代表真實的值,左邊的1、0代表算法預測的值。這是什么
意思呢?以第一格為例,它代表真實上得了癌症以及算法預測上也得了癌症的人數,其它的以此類推。接下來我們把真實及預測都得
了癌症的人數除以預測得了癌症的總人數,即查准率;把真實及預測都得了癌症的人數除以真實得了癌症的總人數,即召回率。
看到這里,很多人都已經想到本文是准備用查准率和召回率來評估算法的好壞,沒錯,如果查准率和召回率都很高,算法肯定
很好。然而,查准率和召回率並不能同時很大,一個很大,另一個必然很小。所以我們需要尋找一種合適的方法去綜合評估算法。
我們采用的是F值方法,能夠很好的評估這類不平衡數據學習算法模型,如下圖所示。
以上是全部內容,如果有什么地方不對,請在下面留言,謝謝~