线性回归模型-最小二乘法Ordinary Least Squares
1.1 線性回歸模型
下面是一系列的回歸方法, 目標值是輸入變量的線性組合, 定義y^\hat {y}y^?表示要預測的值.
y^(w,x)=w0+w1x1+...+wpxp\hat {y}(w, x) = w_{0} + w_{1}x_{1} + ... + w_{p}x_{p}y^?(w,x)=w0?+w1?x1?+...+wp?xp?
在這類模型中, 我們設向量w=(w1,...,wp)w = ( w_{1}, ..., w_{p})w=(w1?,...,wp?)為coef_ (coefficient)并且 w0w_{0}w0?為intercept_(bias).
1.1.1 最小二乘法(Ordinary Least Squares)
線性回歸通過最小化觀察值和線性模型的預測值之間的殘差平方和來訓練一組模型的參數w=(w1,...,wp)w = ( w_{1}, ..., w_{p})w=(w1?,...,wp?). 數學上需要解決如下問題:
min?w∥Xw?y∥22\min \limits_{w}\left \| Xw - y \right \|_{2}^2wmin?∥Xw?y∥22?
LinearRegression 將會調用fit方法, 數據X, y并且把參數值w存在coef_中, w0w_0w0?存在模型的intercept_中.
然而, 最小二乘法的參數估計依賴模型特征之間的線性無關性. 當各特征之間存在相關性并且X的各列數據之間是線性相關時, X矩陣就會接近奇異值并且產生一個較大的方差, 最小二乘估計對收集觀察數據時產生的隨機誤差十分敏感. 當收集數據是沒有進行有針對性的設計避免隨機誤差, 將會產生多重共線性multicollinearity問題.
實例
這一實例只使用一維數據集的第一個特征數據, 目的是在二維平面圖中能夠說明這一算法.圖中的直線, 代表線性回歸模型嘗試畫出一條直線, 這條線能夠最小化所有觀察值與預測值之間殘差平方和, 其中觀察值在數據集中, 預測值是線性模型預測出來的.
代碼
import matplotlib.pyplot as pltimport numpy as npfrom sklearn import datasets, linear_modelfrom sklearn.metrics import mean_squared_error, r2_score# Load the diabetes datasetdiabetes = datasets.load_diabetes()print(type(diabetes.data))print(diabetes.data.shape)# Use only one featurediabetes_x = diabetes.data[:, np.newaxis, 2]print(type(diabetes_x))print(diabetes_x.shape)# Split the data into training/testing setsdiabetes_x_train = diabetes_x[:-20]diabetes_x_test = diabetes_x[-20:]print(diabetes_x_train.shape)print(diabetes_x_test.shape)# Split the targets into training/testing setsdiabetes_y_train = diabetes.target[:-20]diabetes_y_test = diabetes.target[-20:]# Create linear regression objectregr = linear_model.LinearRegression()# Train the model using the training setsregr.fit(diabetes_x_train, diabetes_y_train)# Make predictions using the testing setdiabetes_y_pred = regr.predict(diabetes_x_test)# The coefficientsprint('Coefficients: \n', regr.coef_)# The mean squared errorprint('Mean squared error: %.2f' % mean_squared_error(diabetes_y_test, diabetes_y_pred))# Explained variance score: 1 is perfect predictionprint('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))# Plot outputsplt.scatter(diabetes_x_test, diabetes_y_test, color = 'black')plt.plot(diabetes_x_test, diabetes_y_pred, color = 'blue', linewidth = 3)plt.xticks(())plt.yticks(())plt.show()運行結果
n ordinary_least_squares.py <class 'numpy.ndarray'> (442, 10) <class 'numpy.ndarray'> (442, 1) (422, 1) (20, 1) Coefficients: [938.23786125] Intercept: 152.91886182616167 Mean squared error: 2548.07 Variance score: 0.47知識
總結
以上是生活随笔為你收集整理的线性回归模型-最小二乘法Ordinary Least Squares的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hook(2)Activity启动流程,
- 下一篇: XSS漏洞原理及攻击