?? 本文地址為:http://www.cnblogs.com/kemaswill/,作者聯系方式為kemaswill@163.com,轉載請注明出處。
? 機器學習的目標是學得一個泛化能力比較好的模型。所謂泛化能力,是指根據訓練數據訓練出來的模型在新的數據上的性能。這就牽扯到機器學習中兩個非常重要的概念:欠擬合和過擬合。如果一個模型在訓練數據上表現非常好,但是在新數據集上性能很差,就是過擬合,反之,如果在訓練數據集和新數據集上表現都很差,就是欠擬合,如下圖所示
? 其中藍叉點表示訓練數據,藍色的線表示學到的模型。左邊學到的模型不能很好的描述訓練數據,模型過于簡單,是欠擬合(Under-fitting)。中間的模型可以比較好的描述訓練數據。右邊的模型過度的擬合了訓練數據(所謂過度,是指訓練數據集其實是包含一定的噪聲的,如果完全擬合訓練數據,會把這些隨機噪聲也擬合進去),導致模型過于復雜,很可能在新數據集上表現極差,稱為過擬合(Over-fitting)。
? 偏置-方差分解(Bias-Variance Decomposition)是統計學派看待模型復雜度的觀點。具體如下:
? 假設我們有K個數據集,每個數據集都是從一個分布p(t,x)中獨立的抽取出來的(t代表要預測的變量,x代表特征變量)。對于每個數據集D,我們都可以在其基礎上根據學習算法來訓練出一個模型y(x;D)來。在不同的數據集上進行訓練可以得到不同的模型。學習算法的性能是根據在這K個數據集上訓練得到的K個模型的平均性能來衡量的,亦即:
? 其中的h(x)代表生成數據的真實函數,亦即t=h(x).
? 我們可以看到,給定學習算法在多個數據集上學到的模型的和真實函數h(x)之間的誤差,是由偏置(Bias)和方差(Variance)兩部分構成的。其中偏置描述的是學到的多個模型和真實的函數之間的平均誤差,而方差描述的是學到的某個模型和多個模型的平均之間的平均誤差(有點繞,PRML上的原話是variance measures the extent to which the solutions for individual data sets vary around their average)。
? 所以在進行學習時,就會存在偏置和方差之間的平衡。靈活的模型(次數比較高的多項式)會有比較低的偏置和比較高的方差,而比較嚴格的模型(比如一次線性回歸)就會得到比較高的偏置和比較低的方差。下圖形象的說明了以上兩種情況:
? 用于訓練的是100個數據集,每個數據集包含25個由h(x)=sin(2πx)[右圖中的綠線]隨機生成的點的。 參數 λ控制模型的靈活性(復雜度), λ越大,模型越簡單(嚴格),反之越復雜(靈活)。我們生成多個模型(左圖中的紅線),并區多個模型的平均值(右圖中的紅線)。我們可以看到,當 λ較大時(最上面的兩個圖),平均模型比較簡單(最上面的右圖),不能很好的擬合真實函數h(x),亦即偏差較大,但是多個模型之間比較相似,差距不大,方差較小(最上面的左圖)。當 λ較小時(最下面的兩個圖),平均模型能夠非常好的擬合真實函數h(x),亦即偏差較小(最下面的右圖),但是多個模型之間差距很大,方差比較大(最下面的左圖)。
? 使用Bagging方法可以有效地降低方差。Bagging是一種再抽樣方法(resampling),對訓練數據進行有放回的抽樣K次,生成K份新的訓練數據,在這K個新的訓練數據上訓練得到K個模型,然后使用K個模型的平均來作為新的模型。 隨機森林 (Random Forest)是一種基于Bagging的強大的算法。
? 造成偏置和方差的原因除了學習方法的不同和參數的不同(比如 λ )之外,數據集本身也會對其造成影響。如果訓練數據集和新數據集的分布是不同的,會增大偏置。如果訓練數據集過少,會增大方差。
? 偏置-方差分解是統計學派解釋模型復雜度的觀點,但是其實用價值不大(Bagging也許是一個例外吧~),因為偏置-方差分解是基于多個數據集的,而實際中只會有一個訓練數據集,將這個數據集作為一個整體進行訓練會比將其劃分成多個固定大小的數據集進行訓練再取平均的效果要好。
?
? 參考文獻
? [1]. Bishop. PRML(Pattern Recognization and Machine Learning). p11-16
? [2]. Understanding the Bias-Variance Decomposition.
? [3]. Andrew NG. CS229 Lecture Note1: Supervised Learning, Discrimitive Algorithms
? [4]. 機器學習-Random Forest算法簡介
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
