线性回归
什么是线性回归:利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。
一个变量就是单变量回归,多个变量就是多变量回归。
(突然想到了相机校正就是找三维到二维之间的关系,这思想感觉都是一样的只是复杂程度不同)
线性回归又分为线性和非线性
API:
from sklearn.linear_model import LinearRegression
estimator=LinearRegression()
estimator.fit(x,y)
estimator.coef_#回归参数
线性回归损失函数
优化算法:如何去求W,使得损失最小
常用优化算法:正规方程、梯度下降
梯度下降:需要学习率,需要迭代求解、特征数量较大可以使用
正规方程:一次运算得出,需要计算公式时间复杂度高。
正规方程:LinearRegression(小规模数据)–不能解决拟合问题
梯度下降法:SGDRegressor(大规模数据)
模型评估
模型中的系数:estimator.coef_
模型中的偏置:estimator.intercept_
均方误差:mean_squared_error(y_test,y_predict)
欠拟合和过拟合
欠拟合:学习到数据的特征过少
解决办法:添加其他特征项、添加多项式特征
过拟合:原始特征过多,存在一些嘈杂特征,模型过于复杂是因为模型尝试去兼容各个测试数据点
解决办法:重新清晰数据,增大数据的训练量、正则化、减少特征维度防止维度灾难
正则化:通过限制高次项的系数防止过拟合。
L1:直接把高次相前面的系数变为0。
L2:把高次项前面的系数变成特别小的值2。
岭回归模型:
限制系数值的大小
sklearn.linear_model.Ridge
模型的保存和加载
from sklearn.externals import joblib
保存:joblib.dump(estimator,‘test.pkl’)
加载:estimator=joblib.load(‘test.pkl’)