Linear Regression 線性迴歸
Created: Mar 30, 2020 8:59 PM
什麼是線性迴歸?
線性迴歸是一種用線性方法建模表示變量y和x直接的關係。例如房價的預測,溫度的預測
- 線性迴歸是一種監督學習算法
- 每個樣本有一個或者多個輸入和一個輸出
- 線性迴歸使用直線,平面,超平面去擬合訓練樣本,並輸出結果
- 線性迴歸易於解釋和訓練
- 線性迴歸可以用作評估其他更復雜的迴歸模型的基準
線性迴歸可以用來幹嘛?
- - 預測
- - 確定變量之間是否存在關係
如何找到最好的線
在數據集上表現最好的線是使點和迴歸之間的“平方差”之和最小。
Mean vs Total Squared
Total Squared error
Mean squared error
M = 2T
因為梯度下降會乘以學習率alpha ,因此,在均方誤差和總平方誤差之間進行選擇實際上就等於選擇了不同的學習率。
Mean Squared Error 均方誤差
### Mean Absolute Error 均絕對值誤差
梯度下降
梯度的本意是一個向量,表示某一個函數在該點處的方向導數,沿著該方向取得最大值,即函數在該點處沿著該方向變化最快,變化率最大。梯度就是對多變量函數導數的泛化。
正規方程
我們用矩陣的形式表示:
n表示特徵的個數,m表示樣本的個數
所以損失函數可以表示為:
在上述總和中,第二項和第三項是相同的,因為它是兩個向量的內積,這意味著它是其座標的乘積之和。因此
我們需要對矩陣中的所有值取導數
scikit-learn 實現
<code># TODO: Add import statements
import pandas as pd
from sklearn.linear_model import LinearRegression
# Assign the dataframe to this variable.
# TODO: Load the data
bmi_life_data = pd.read_csv("Ames_Housing_Sales.csv")
# Make and fit the linear regression model
#TODO: Fit the model and Assign it to bmi_life_model
bmi_life_model = LinearRegression()
bmi_life_model.fit(bmi_life_data[['BMI']], bmi_life_data[['Life expectancy']])
# Mak a prediction using the model
# TODO: Predict life expectancy for a BMI value of 21.07931
laos_life_exp = bmi_life_model.predict(21.07931)/<code>
多元線性迴歸
除了房子的大小,再加入一個學校的質量。
對於多維的求解和二維的算法完全相同。
需要注意的點:
1、當數據為線性的時,線性迴歸表現最佳,如果訓練的數據不是真正的線性關係,則需要進行調整,例如添加特徵,
2、線性迴歸對異常值比較敏感
多項式迴歸
那麼如果我們擁有看起來像下圖的數據會發生什麼,直線不能很好的擬合,我們就可以使用一條曲線或多項式迴歸,可以使用與線性迴歸非常相似的算法來解決。
閱讀更多 從零單排推薦系統 的文章