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 实现
# 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)
多元线性回归
除了房子的大小,再加入一个学校的质量。
对于多维的求解和二维的算法完全相同。
需要注意的点:
1、当数据为线性的时,线性回归表现最佳,如果训练的数据不是真正的线性关系,则需要进行调整,例如添加特征,
2、线性回归对异常值比较敏感
多项式回归
那么如果我们拥有看起来像下图的数据会发生什么,直线不能很好的拟合,我们就可以使用一条曲线或多项式回归,可以使用与线性回归非常相似的算法来解决。