先從最簡單的例子開始,假設咱們有一組樣本(以下圖的一個個黑色的圓點),只有一個特徵,以下圖,橫軸是特徵值,縱軸是label。好比橫軸是房屋面積,縱軸是房屋價格.html
如今咱們要作什麼呢?咱們試圖找到一條直線y=ax+b,能夠儘可能好的擬合這些點.算法
你可能要問了,爲啥是直線,不是曲線,不是折線?由於咱們的前提就是咱們假設數據是有線性關係的啊!一方面,這種假設方便咱們用數學知識推導出a,b. 另外一方面,假設成折線,曲線儘量地貼合上圖中的點是沒有意義的,由於儘量地貼合了訓練數據,只能說明你的模型過擬合了,咱們想要獲得的是一個儘可能通用的模型,可以在咱們的測試數據上取得好的表現.即但願咱們的模型泛化能力足夠強.api
這裏要插一句,**每一種機器學習算法均可以看作是一種看待數據的角度,線性迴歸就是從"數據可能存在線性關係"這個角度來觀察數據. **你固然也能夠從別的角度觀察數據.這就涉及到了集成學習,能夠看看這篇博文. 因此啊,沒有儘可能多的數據,儘可能有意義的數據,儘可能有效的特徵提取,只有機器學習算法的話,其實沒什麼用.由於數據太少了,你再怎麼從各類角度分析數據也不會取得很好的效果.這也是爲啥大數據和機器學習老是被常常一塊兒提到的緣由.機器學習
ok,書歸正傳,到了這裏,問題來了,咱們怎麼評價"儘可能好"地擬合呢?ide
對某個樣本點,其原本橫座標上是x,縱座標是y。 咱們把x帶入咱們的直線方程y=ax+b能夠獲得$\hat y=ax+b$,此即咱們的預測值.咱們以這兩者之差的大小做爲"儘可能好"的評價標準.越小說明咱們的預測值與真實值差異越小,擬合效果越好.函數
具體地說,有如下幾種評價標準學習
均方偏差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更多的詳細解釋和用法請戳官方文檔.