目录
简介
线性回归模型:自变量和因变量万的关系为线性关系的一种回归分析模型,即y=ax+b
训练:训练样本集中有多个(x,y)的实际值,可求出参数(a,b)的预测值,即通过训练
可获得预测的线性回归模型
损失函数:通过训练样本得到的预测y值和训练样本集中的实际y值的误差(均方误差),
是预测模型最优的判定标准
优化:获得损失函数的最优解的过程
梯度下降法:通过控制步长赋值调参(即学习率)获取损失函数最小值(函数求导得最小值)的一种优化方法
测试:测试样本集同样由多个(x,y)的实际值,可以判定预测的线性回归模型是否正确
判定系数:测试模型是否正确的判定标准
过拟合/欠拟合:过份拟合样本/对样本不够拟合不够而偏离了总体趋势,从损失函数角度理解,则是损失函数过大或过小的回归模型都是不合适的
正则化:在计算损失函数中加入惩罚,避免损失函数达到最小的一种策略,有lasso回归和岭回归
总结:
使用训练样本集,通过梯度下降法(调参学习率)+正则化求得损失函数的最优解而获得预测模型
使用测试样本集,通过判定系数确定预测模型是否准确,从而确定线性回归模型
计算过程
为什么会有计算...
scikit-learn实现
这是一个不含调参的简单预测模型,帮助理解训练、预测以及判定系数:
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
diabetes = datasets.load_diabetes() #加载并返回糖尿病数据集(回归),type(diabetes)返回:sklearn.utils.Bunch
diabetes_X = diabetes.data[:, np.newaxis, 2] #取一个特征数据
#切片数据,声明训练集和测试集
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
#实例化线性回归对象,并训练模型、预测模型
regr = linear_model.LinearRegression()
regr.fit(diabetes_X_train, diabetes_y_train)
diabetes_y_pred = regr.predict(diabetes_X_test)
# The coefficients
print('Coefficients: ', regr.coef_)
# 均方误差
print("Mean squared error: %.2f"% mean_squared_error(diabetes_y_test, diabetes_y_pred))
#判定系数: 1完美预测
print('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))
# 制图
plt.scatter(diabetes_X_test, diabetes_y_test, color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
plt.xticks(()) #x轴刻度
plt.yticks(()) #y轴刻度
plt.show()