機器學習之模型選擇與改進


前言

           以下內容是個人學習之后的感悟,轉載請注明出處~

 

 

  經過前幾篇博客的學習,我們了解到了線性回歸、邏輯回歸、神經網絡等的一些知識。然而,到底該怎么開發一個

機器學習系統或者選擇並改進一個學習系統呢?這應該是很多初學者的困惑之處。那么本文會帶領你更一步了解如何更

好地使用機器學習。

  由於內容較多,做以下目錄,方便瀏覽:

 

評價假設函數

  在設計一個好的機器學習系統之前,我們首先要學會評價一個機器學習系統的好壞,即評價假設函數的好壞。

  那么我們應該如何來評價呢?首先,我們先選擇一個原始樣本數據,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值方法,能夠很好的評估這類不平衡數據學習算法模型,如下圖所示。

                                    

 

 

 

 

以上是全部內容,如果有什么地方不對,請在下面留言,謝謝~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM