先從最簡單的例子開始,假設我們有一組樣本(如下圖的一個個黑色的圓點),只有一個特征,如下圖,橫軸是特征值,縱軸是label。比如橫軸是房屋面積,縱軸是房屋價格.
現在我們要做什么呢?我們試圖找到一條直線y=ax+b,可以盡量好的擬合這些點.
你可能要問了,為啥是直線,不是曲線,不是折線?因為我們的前提就是我們假設數據是有線性關系的啊!一方面,這種假設方便我們用數學知識推導出a,b. 另一方面,假設成折線,曲線盡可能地貼合上圖中的點是沒有意義的,因為盡可能地貼合了訓練數據,只能說明你的模型過擬合了,我們想要得到的是一個盡量通用的模型,能夠在我們的測試數據上取得好的表現.即希望我們的模型泛化能力足夠強.
這里要插一句,每一種機器學習算法都可以看做是一種看待數據的角度,線性回歸就是從"數據可能存在線性關系"這個角度來觀察數據. ?你當然也可以從別的角度觀察數據.這就涉及到了集成學習,可以看看這篇博文. ?所以啊,沒有盡量多的數據,盡量有意義的數據,盡量有效的特征提取,只有機器學習算法的話,其實沒什么用.因為數據太少了,你再怎么從各種角度分析數據也不會取得很好的效果.這也是為啥大數據和機器學習總是被經常一起提到的原因.
ok,書歸正傳,到了這里,問題來了,我們怎么評價"盡量好"地擬合呢?
對某個樣本點,其本來橫坐標上是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}$$
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/HousingThis 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更多的詳細解釋和用法請戳官方文檔.