1. 程式人生 > >機器學習算法--Elastic Net

機器學習算法--Elastic Net

很難 目前 過程 sed 兩個 ica 約束 機考 得到

1) alpha : float, optional

Constant that multiplies the penalty terms. Defaults to 1.0. See the notes for the exact mathematical meaning of this parameter.``alpha = 0`` is equivalent to an ordinary least square, solved by the LinearRegression object. For numerical reasons, using alpha = 0 with the Lasso object is not advised. Given this, you should use the LinearRegression object.

2) l1_ratio : float

The ElasticNet mixing parameter, with 0 <= l1_ratio <= 1. For l1_ratio = 0 the penalty is an L2 penalty. For l1_ratio = 1 it is an L1 penalty. For 0 < l1_ratio < 1, the penalty is a combination of L1 and L2.

elastic net是結合了lasso和ridge regression的模型。elastic net在具有多個特征,並且特征之間具有一定關聯的數據中比較有用。

l1_ratio:在0到1之間,代表在l1懲罰和l2懲罰之間,如果l1_ratio=1,則為lasso,是調節模型性能的一個重要指標。

函數: score(X,y,sample_weight):

評價模型性能的標準,值越接近1,模型效果越好。

彈性網絡最妙的地方是它永遠可以產生有效解。由於它不會產生交叉的路徑,所以產生的解都相當不錯。舉例來說,對一個隨機產生的50個城市的推銷員問題,彈性網絡的解只有比德賓和威爾蕭的論文中所提的最具競爭力的演算法長2%(什麽是最具競爭力的演算法?有人說是林-克尼根(Lin-Kernighan)演算法,也有人說是SA+OP)。但是彈性網絡最吸引人的地方不在它的有效解,而在它收斂的速度。許多人試著去改善彈性網絡收斂的速度,都有不錯的結果。舉例來說,柏爾(Burr)所提出的改良版可令50個城市的推銷員問題的收斂次數由1250大幅降為30次。一個最佳化的彈性網絡的速度會比林-克尼根快兩倍。

彈性網絡在很多特征互相聯系的情況下是非常有用的。Lasso 很可能只隨機考慮這些特征中的一個,而彈性網絡更傾向於選擇兩個。 在實踐中,Lasso 和 Ridge 之間權衡的一個優勢是它允許在循環過程(Under rotate)中繼承 Ridge 的穩定性。

L1正則化使得模型更加稀疏,L2使得模型參數更趨近於0,提高泛化能。

L0範數:就是指矩陣中非零元素的個數,很顯然,在損失函數後面加上L0正則項就能夠得到稀疏解,但是L0範數很難求解,是一個NP問題,因此轉為求解相對容易的L1範數(l1能夠實現稀疏性是因為l1是L0範數的最優凸近似) 。

L1範數:矩陣中所有元素的絕對值的和。損失函數後面加上L1正則項就成了著名的Lasso問題(Least Absolute Shrinkage and Selection Operator),L1範數可以約束方程的稀疏性。

L2範數: 其實就是矩陣所有元素的平方和開根號,即歐式距離,在回歸問題中,在損失函數(或代價函數)後面加上L2正則項就變成了嶺回歸(Ridge Regression),也有人叫他權重衰減,L2正則項的一個很大的用處就是用於防止機器學習中的過擬合問題,同L1範數一樣,L2範數也可以對方程的解進行約束,但他的約束相對L1更平滑,在模型預測中,L2往往比L1好。L2會讓W的每個元素都很小,接近於0,但是不會等於0.而越小的參數模型越簡單,越不容易產生過擬合,以下引自另一篇文章:

到目前為止,我們只是解釋了L2正則化項有讓w“變小”的效果(公式中的lamda越大,最後求得的w越小),但是還沒解釋為什麽w“變小”可以防止overfitting?一個所謂“顯而易見”的解釋就是:更小的權值w,從某種意義上說,表示網絡的復雜度更低,對數據的擬合剛剛好(這個法則也叫做奧卡姆剃刀),而在實際應用中,也驗證了這一點,L2正則化的效果往往好於未經正則化的效果。當然,對於很多人(包括我)來說,這個解釋似乎不那麽顯而易見,所以這裏添加一個稍微數學一點的解釋:

過擬合的時候,擬合函數的系數往往非常大,為什麽?如下圖所示,過擬合,就是擬合函數需要顧忌每一個點,最終形成的擬合函數波動很大。在某些很小的區間裏,函數值的變化很劇烈。這就意味著函數在某些小區間裏的導數值(絕對值)非常大,由於自變量值可大可小,所以只有系數足夠大,才能保證導數值很大。

L1 L2區別總結:

加入正則項是為了避免過擬合,或解進行某種約束,需要解保持某種特性

L1正則假設參數的先驗分布是Laplace分布,可以保證模型的稀疏性,也就是某些參數等於0,L1正則化是L0正則化的最優凸近似,比L0容易求解,並且也可以實現稀疏的效果,

L1也稱Lasso;

L2正則假設參數的先驗分布是Gaussian分布,可以保證模型的穩定性,也就是參數的值不會太大或太小.L2範數是各參數的平方和再求平方根,我們讓L2範數的正則項最小,可以使W的每個元素都很小,都接近於0。但與L1範數不一樣的是,它不會是每個元素為0,而只是接近於0。越小的參數說明模型越簡單,越簡單的模型越不容易產生過擬合現象。

L2正則化江湖人稱Ridge,也稱“嶺回歸”

在實際使用中,如果特征是高維稀疏的,則使用L1正則;如果特征是低維稠密的,則使用L2正則。

L2不能控制feature的“個數”,但是能防止模型overfit到某個feature上;相反L1是控制feature“個數”的,並且鼓勵模型在少量幾個feature上有較大的權重。

機器學習算法--Elastic Net