數學中的regularization是為了解決overfitting問題而引入的一種方法。所謂overfitting就是在一些數學模型中由於過於複雜,有太多的觀測引數,以至於一點點微小的誤差都回產生巨大的影響,任何微小的資料擾動都會帶來巨大的改變。在一些訓練模型中用來fitting的data也會因為結構問題而overfitting。
一般來說有兩種克服overfitting的方法:一是補償模型的某些部分(如regularization);二是根據潛在的問題提供而外的資料來訓練。
下面介紹tikhonov regularization作為例子。
在如下方程中:
ax = b
要求解x的標準方法是最小二乘法:
min || ax – b ||^2
求解這個方程除了overfitting外,還有overdetermined (underdetermined)的問題。所謂overdetermined (underdetermined),是指方程組中未知數的個數與方程數不不一致。如果把乙個未知數看成乙個自由度的話,每個單獨的方程可以看成乙個對應的constraint,當constraint的數目比未知數還多時,有可能找不到符合方程組的解;當方程的數目少於未知數時,可能有無窮多組解。顯然當a不是方陣的時候肯定overdetermined(underdetermined)的。
a可能是奇異陣,這也是乙個問題。
為了獲得在某種條件下的解,加入regularization項如下:
|| ax – b ||^2 + || rx ||^2
其中,||.||是euclidean norm,即平方和的根。
在很多情況下,r可以直接取單位陣。加入r之後可解如下:
x = (a^ta + rtr)^(-1)a^tb
一些另外的取法。令r = a*l,l是對稱laplace-beltrami運算元。
l = v^(-1/2) * c * v^(-1/2)
v是乙個voronoi area對角陣,c是乙個係數對稱cotangentweight矩陣。(cot(betai,j) + cot(betai,j)^-)/2, beta是相鄰三角形的角度。
可以把l作特徵值分解,l = qbq^t,q為正交矩陣。因為正交矩陣不改變frobenius norm,所以:
|| ru || = || alu || = a|| qbq^tu || = a|| bq^tu||
一、過擬合:是指因過分強調對訓練樣本的效果導致過度擬合,使得對未知**樣本效果就會變差的一種情況。
擬合度就是說這個模型和你想象的理想情況差多少。二、什麼情況下出現過擬合:試想如果所有的點都在直線上,一點也沒有離開直線,那就說明擬合度很好,是1。就是能夠完全解釋。
而現實情況肯定沒有這樣的。就比如你的努力程度和歷次考試成績,雖然越努力成績越好,但是你不能保證自己沒有失誤 啊。這個失誤就是殘差,但是失誤肯定不是主要部分,所以r平方還是很大的。
r方沒有很明確的界限,說什麼就是好什麼就是不好,有的時候時間序列的擬合程度都不是很好,甚至只有0.3到0.4,所 以要綜合來看,沒有很確定的界限
當你擬合的函式中,一些特徵權重階數越高時,過度擬合的情況越有可能發生,反之階數越小,過擬合發生概率越小,甚至會欠擬合。
比如有三個擬合函式:
a0 + a1x1+ a2x2
a0 + a1x1+ a2x2 + a3x12 + a4x22
a0 + a1x1+ a2x2 + a3x12 + a4x22 + a5x13 + a6x23
則最後這個過擬合的可能最高。
三、如何解決過擬合問題:
1. 將那些特徵權重階數高的特徵刪除。比如在上面的例子中刪除特徵x13 、x23。
刪除方式有兩種:
一種:人工檢視樣本集合篩選
另一種:有機器學習的規則用於篩選這種特徵,後續才會講到。
2. 正則化:特徵全部保留,但特徵係數進行最小優化。
設一般情況下的成本函式為costfucntion(a,x,y)
為了時特徵係數減小,以使axj變小,新的成本函式為 costfunction_reg(a,x,y) = costfunction(a,x,y) + sum(aj2)
我們將這種處理叫做正則化
新增的正則化項為 a02 + a12 + ... + an2, 慣例上不要a02這項(他是1的係數),但即使加上效果影響不大。
四、正則化的線性回歸問題
成本函式:costfunction(a,x,y) = 1/2m *sum((h(a,x)-y).^2), 其中h(a,x)=xa;
正則化後:costfunctionreg(a,x,y) = costfunction(a,x,y) + lambda*sum(aj2)
梯度下降法:aj = aj - 1/m *alpha * ( h(a,x)-y ) * xj
正則化後:aj = aj - 1/m * alpha * ( h(a,x)-y ) * xj - 1/m * alpha * lambda * aj
正規方程組解法 a = (xt*x)-1*xt*y
正則化後:a = (xt*x - lambda * i )-1*xt*y
五、logistic分類問題過擬合解決
成本函式:costfunction(ha(x),y) = -y*log( ha(x) ) - (1-y)*log( 1- ha(x))
正則化後:costfunctionreg(ha(x),y) = costfunction(ha(x),y) + lambda*sum(aj2)
梯度下降法:aj =aj - 1/m*(ha(x)-y )* xj;
正則化後:aj =aj - 1/m*(ha(x)-y )* xj -1/m*lambda*a
怎樣處理過擬合和欠擬合?
首先來明確一下過擬合和欠擬合的概念。過擬合指的是訓練資料擬合程度過高的情況,也就是說模型在訓練集上表現的很好,但是在測試集和新的資料集上表現的較差。了解了什麼是過擬合,欠擬合也顯而易見,當模型在訓練集和測試集表現的都不好的時候我們就稱這種現象為欠擬合。演算法在訓練集上的錯誤率我們可以稱之為偏差。演算...
處理過擬合的一些方法
防止過擬合的最簡單的方法就是減小模型大小,即減少模型中可學習引數的個數,當學習引數過多時候,就相當於乙個線性函式本來只需要兩個引數 乙個截距乙個斜率 就可以表達出來 當然樣本點是不會完全在直線上的,分布於直線兩側 但是這時候你給了5個引數,那麼所表達出來的線就會穿過更多的點,這個時候曲線會變成四次曲...
處理過的相容問題總結
見過乙個優秀的回答 產品要實現a,設計說應該c,而我出了乙個方案b,相容了ac,這是我處理過最複雜的相容性問題,它非常困難極具挑戰,貫徹我整個前端生涯。總的來說,前端處理相容也就是這,具體的有以下幾個方面 1.html相容問題 2.css相容問題 3.js相容問題 var ev ev window....