機器學習筆記(6) 線性迴歸

先從最簡單的例子開始,假設咱們有一組樣本(以下圖的一個個黑色的圓點),只有一個特徵,以下圖,橫軸是特徵值,縱軸是label。好比橫軸是房屋面積,縱軸是房屋價格.html

如今咱們要作什麼呢?咱們試圖找到一條直線y=ax+b,能夠儘可能好的擬合這些點.算法

你可能要問了,爲啥是直線,不是曲線,不是折線?由於咱們的前提就是咱們假設數據是有線性關係的啊!一方面,這種假設方便咱們用數學知識推導出a,b. 另外一方面,假設成折線,曲線儘量地貼合上圖中的點是沒有意義的,由於儘量地貼合了訓練數據,只能說明你的模型過擬合了,咱們想要獲得的是一個儘可能通用的模型,可以在咱們的測試數據上取得好的表現.即但願咱們的模型泛化能力足夠強.api

這裏要插一句,**每一種機器學習算法均可以看作是一種看待數據的角度,線性迴歸就是從"數據可能存在線性關係"這個角度來觀察數據.  **你固然也能夠從別的角度觀察數據.這就涉及到了集成學習,能夠看看這篇博文.  因此啊,沒有儘可能多的數據,儘可能有意義的數據,儘可能有效的特徵提取,只有機器學習算法的話,其實沒什麼用.由於數據太少了,你再怎麼從各類角度分析數據也不會取得很好的效果.這也是爲啥大數據和機器學習老是被常常一塊兒提到的緣由.機器學習

ok,書歸正傳,到了這裏,問題來了,咱們怎麼評價"儘可能好"地擬合呢?ide

對某個樣本點,其原本橫座標上是x,縱座標是y。  咱們把x帶入咱們的直線方程y=ax+b能夠獲得$\hat y=ax+b$,此即咱們的預測值.咱們以這兩者之差的大小做爲"儘可能好"的評價標準.越小說明咱們的預測值與真實值差異越小,擬合效果越好.函數

具體地說,有如下幾種評價標準學習

  • 均方偏差MSE
  • 均方根偏差RMSE
  • 平均絕對偏差MAE
  • R Squared

 

均方偏差MSE $$\frac 1 m \sum_{i=1}^m(y^{(i)} - \hat y^{(i)})^2$$測試

代表了總偏差平攤到每個樣本上是多少,即均方偏差.大數據

 

均方根偏差RMSE  $$\sqrt {\sum_{i=1}^m(y^{i} - \hat y^{i})^2}$$ui

MSE的一個問題是,假如y是有量綱的,MSE的結果把量綱改變了.好比y的單位是dollar,MSE的結果變成了$dollar^2$。RSME就避免了這個問題.

 

平均絕對偏差MAE$$\frac 1 m \sum _{i=1}^m |y^{(i)} - \hat y^{(i)}|$$

咱們爲啥不用這個做爲咱們評判「儘量好」的標準呢,由於很差求導.

 

R Squared  $$R^2 = 1 - \frac {\sum _{i=1}^m(\hat y^{(i)} - y^{(i)})^2} {\sum _{i=1}^m(\bar y  - y^{(i)})^2}$$

假設咱們簡單的取y的均值,即$y=\bar y$做爲咱們的模型,那偏差就是$\sum_{i=1}^m(\bar y - y^{i})^2$。因此$R^2$表達的就是咱們的模型相較於簡單的取$\bar y$做爲咱們的模型有多少差別.

當$R^2$接近0時,說明咱們的模型和直接取均值差異不大

當$R^2$接近1時,說明咱們的模型至關不錯,咱們預測值和真實值幾乎沒偏差.

當$R^2$爲負時,說明咱們的模型比直接取均值還要爛.此時你的數據可能就不存在線性關係.

比較經常使用的是RMSE和R平方.

 


如今問題變成了咱們怎麼求出a,b使得$ {\sum _{i=1}^m(\hat y^{(i)} - y^{(i)})^2} = {\sum _{i=1}^m(ax^{i}+b - y^{(i)})^2} $最小.這個函數就是所謂的損失函數.注意這個函數的未知數是a,b。這是不少機器學習算法的一個套路,首先定義出一個合適的損失函數,而後最小化損失函數從而得出咱們的模型.

以上,咱們是用一個特徵作例子的,實際上,當樣本有N個特徵,道理也是同樣的。

$y = a_1x_1+a_2x_2+…+a_nx_n+b$

那麼第i個樣本的預測值爲$y^i =  a_1x_1^i+a_2x_2+…+a_nx_n+b$咱們改寫成向量的形勢就是

$$\hat y^{(i)} = \begin{bmatrix} 1& X_1^{(i)}&X_2^{(i)}& … &X_n^{(i)}\end{bmatrix}\begin{bmatrix}  \theta_ 0 \\  \theta_ 1 \\  \theta_ 2 \\  … \\  \theta_ n \\ \end{bmatrix}$$

令$X_b=\left[ \begin{matrix} 1 & x_{11} & x_{12} & ... & x_{1n} \\ 1 & x_{21} & x_{22} & ... & x_{2n} \\ ...\\ 1 & x_{m1} & x_{m2} & ... & x_{mn} \end{matrix} \right] $

則$\hat y^{i} = X_b^{(i)}\theta$,$\hat y^ = X_b\theta$,此時咱們的損失函數變爲$f_{loss} = \sum_{i=1}^m(y^i - X_b^i  \theta)^2$

轉換成矩陣的表達$f_{loss} = (y-X_b\theta)^T(y - X_b\theta)$。如今咱們的目標變爲使這個$f_{loss}$最小,注意未知數是$\theta$。注意一下這個$\theta$是個向量,是一系列值,不是標量.在二維平面中好比$y=f(x)$中,咱們知道求極值即求導數$f^{'}(x)=0$.一樣的爲了求出$f_{loss}$的最小值,咱們對$f_{loss}$求導$\frac {\partial f_{loss}}{\partial \theta}$,實際上就是對$\theta$的每一項求偏導數.一系列複雜的數學推導後,咱們可得$$\theta=(X_b^TX_b)^{-1}X_b^Ty$$

$\theta=\begin{bmatrix}  \theta_ 0\\  \theta_ 1\\  \theta_ 2\\  …\\  \theta_ n\\ \end{bmatrix}$

其中$\theta_0$是多元線性方程的截距(intercept), $\theta_1$到$\theta_n$是係數(coefficients).

 


 

線性迴歸具備很好的可解釋性,下面經過一個具體例子看一下.

Boston House Prices dataset
===========================

Notes
------
Data Set Characteristics:  

    :Number of Instances: 506 

    :Number of Attributes: 13 numeric/categorical predictive
    
    :Median Value (attribute 14) is usually the target

    :Attribute Information (in order):
        - CRIM     per capita crime rate by town
        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.
        - INDUS    proportion of non-retail business acres per town
        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
        - NOX      nitric oxides concentration (parts per 10 million)
        - RM       average number of rooms per dwelling
        - AGE      proportion of owner-occupied units built prior to 1940
        - DIS      weighted distances to five Boston employment centres
        - RAD      index of accessibility to radial highways
        - TAX      full-value property-tax rate per $10,000
        - PTRATIO  pupil-teacher ratio by town
        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
        - LSTAT    % lower status of the population
        - MEDV     Median value of owner-occupied homes in $1000's

    :Missing Attribute Values: None

    :Creator: Harrison, D. and Rubinfeld, D.L.

This is a copy of UCI ML housing dataset.
http://archive.ics.uci.edu/ml/datasets/Housing


This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.

The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic
prices and the demand for clean air', J. Environ. Economics & Management,
vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics
...', Wiley, 1980.   N.B. Various transformations are used in the table on
pages 244-261 of the latter.

The Boston house-price data has been used in many machine learning papers that address regression
problems.   
     
**References**

   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.
   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.
   - many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)

boston數據集有13個特徵,包括了房間數目,房齡,是否臨河,離商圈距離等等,一個label,表示房屋價格.

用sklearn中的LinearRegression來作訓練.

boston = datasets.load_boston()  
X = boston.data y = boston.target X = X[y < 50.0] y = y[y < 50.0] from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() lin_reg.fit(X, y) print(lin_reg.coef_)
####
array([ -1.05574295e-01, 3.52748549e-02, -4.35179251e-02,
         4.55405227e-01,  -1.24268073e+01,   3.75411229e+00,
        -2.36116881e-02,  -1.21088069e+00,   2.50740082e-01,
        -1.37702943e-02,  -8.38888137e-01,   7.93577159e-03,
        -3.50952134e-01]

print(boston.feature_names[np.argsort(lin_reg.coef_)])
####
array(['NOX', 'DIS', 'PTRATIO', 'LSTAT', 'CRIM', 'INDUS', 'AGE', 'TAX',
'B', 'ZN', 'RAD', 'CHAS', 'RM'], dtype='<U7')
 

coef係數越大越正相關,越小越負相關.上面例子裏能夠看出,特徵'NOX'最不想幹,特徵'RM'最相關.

 

有關LinearRegression更多的詳細解釋和用法請戳官方文檔.

相關文章
相關標籤/搜索