over 2 years ago

延續多變數線性迴歸(三)Ridge Regression的想法。希望能發現假的特徵,所以引入新變數,最小化成本函數
$$
J \rightarrow min_{\vec\theta} \left( \| \vec y - \tilde{x} \vec \theta \|^2 + \alpha \| \vec \theta \| \right) \tag{1}
$$

和Ridge的差別為幾何上,使用的邊界為三角形。


意味著當沿著這樣形狀的邊界尋找最小值,會發生非特徵的變數項直接為零,如上圖。利用這個方法,即能快速的選擇系統重要的線性特徵。

由於(1)沒有解析解,必須使用數值方法才能求得。這邊直接使用套件作計算~


實例:

之前我們使用Ridge Regression計算出,當增加(代表系統的限制愈多)會快速下降(相對於)所以我們用lasso來尋找系統的特徵

## lasso regression


from sklearn import linear_model
import pickle

with open('data_trained.pickle','r') as f:
    data_sets = pickle.load(f)
x,yreal = zip(*data_sets)

lasso = linear_model.Lasso()
lasso.fit(x,yreal)

alpha = [1,10,100,1000]
for e in alpha:
    lasso.alpha = e
    lasso.fit(x,yreal)
    print "alpha:{}, lasso coeff:{}".format(lasso.alpha,lasso.coef_)    

output:


可以發現,第一個被Lasso Regression選擇掉。如果要更仔細分析各個的真假可信度,可以再作student t-test。


參考資料:

← 多變數線性迴歸(三)Ridge Regression Logistic Regression(一)數學基礎 →
 
comments powered by Disqus