線性模型——《機器學習》

線性模型——《機器學習》

@(《機器學習》西瓜書)
線性模型的基本形式:
給定由d個屬性描述的示例x⃗ =(x1;x2;...;xd)

f(x)=ω1x1+ω2x2+...+ωdxd+b

寫成向量形式:f(x)=ω⃗ Tx⃗ +b
ω⃗ =(ω1;ω2;...;ωd)ω⃗  表示每個屬性(特徵)的權重,b 表示噪聲,確定了向量ω⃗  和b,線性模型就確定了。

線性模型的表示就是如上:f(x)=ω⃗ Tx⃗ +b ,使用均方誤差最小化來衡量f(x)y 的差別。
均方誤差就是平方損失,就是求f(x)和y之間的歐氏距離。

一元線性迴歸求解

f(x)=ωxi+b

所以,(ω,b)=argminmi=1(f(xi)yi)2
均方誤差幾何意義就是求歐氏距離,求解均方誤差一般是使用最小二乘法,就是試圖找到一條直線使得所有樣本到直線距離最小。
求解wb 使得誤差函數E(w,b)=mi=1(yiωxib)2 最小。
分別使誤差函數對ωb 求導爲0,求解出ωb
多元線性迴歸

在解決實際問題時,使用一個特徵擬合問題模型基本不可能,需要增加多個特徵,這裏就需要使用多元線性模型。
此時將ω 和b組合爲新的ω ,維度爲(d+1)
ω =(ω1;ω2;...;ωd;b )
X⃗  的維度爲m(d+1)
此時:y⃗ =X⃗ ω
這裏寫圖片描述
XTX 爲滿秩矩陣,可有唯一解,但現實問題一般都得不到唯一解,會存在多個ω ,使得均方誤差最小。


scikit-learn中線性模型接口:

        import numpy as np
        from sklearn import datasets
        from sklearn import linear_model
        diabetes = datasets.load_diabetes()
        diabetes_X_train = diabetes.data[:-20]
        diabetes_X_test = diabetes.data[-20:]
        diabetes_y_train = diabetes.target[:-20]
        diabetes_y_test = diabetes.target[-20:]
        regr=linear_model.LinearRegression()
        regr.fit(diabetes_X_train,diabetes_y_train)
        print(regr.coef_)

scikit-learn中提供了正則化方法來放置過擬合,嶺迴歸(Ridge Regression)就是正則化的一種方法。scikit-learn Linear Model

有關機器學習中線性迴歸詳解可參考這一篇Python 機器學習系列之線性迴歸篇深度詳細

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章