过拟合与欠拟合
过拟合:一个假设在训练数据上能够获得比其他假设更好的拟合, 但是在训练数据外的数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)
欠拟合:一个假设在训练数据上不能获得更好的拟合, 但是在训练数据外的数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)
模型复杂度
数据的特征和目标值之间的关系,不仅仅是线性关系。
欠拟合原因以及解决办法
原因:
学习到数据的特征过少
解决办法:
增加数据的特征数量
过拟合原因以及解决办法
原因:
原始特征过多,存在一些嘈杂特征,
模型过于复杂是因为模型尝试去兼顾
各个测试数据点
解决办法:
进行特征选择,消除关联性大的特征(很难做)
交叉验证(让所有数据都有过训练)
正则化(了解)
根据结果现象判断:欠拟合和过拟合
交叉验证:训练集结果:表现不行,测试集:表现不行(欠拟合)
特征选择有:过滤式:低方差特征;嵌入式:正则化,决策树,神经网络
正则化
L2正则化:解决过拟合
作用:可以使得W的每个元素都很小,都接近于0
优点:越小的参数说明模型越简单,越简单的模型则越不
容易产生过拟合现象
如果模型函数是:
尽量减小高次项特征的影响,减小他们的权重,这就是正则化
线性回归:LInearRegression 容易出现过拟合,为了把训练集数据表现得更好
所以就出现了L2正则化:Ridge:岭回归 带有正则化的线性回归
带有正则化的线性回归-Ridge
将高系数函数降低
sklearn.linear_model.Ridge(alpha=1.0)
具有l2正则化的线性最小二乘法
alpha:正则化力度
coef_:回归系数
正则化程度的变化,对结果的影响
正则化力度越来越大,模型越来越简单(权重趋向于0)
# 岭回归进行房价预测
rd = Ridge(alpha=1.0)
rd.fit(x_train, y_train)
print("岭回归回归系数:", rd.coef_)
# 预测测试集的房子价格
y_rd_predict = std_y.inverse_transform(rd.predict(x_test))
print("岭回归测试集里每个房子的预测价格:", y_rd_predict)
print("岭回归方程均方误差", mean_squared_error(std_y.inverse_transform(y_test), y_rd_predict))
线性回归 LinearRegression与Ridge对比
岭回归:回归得到的回归系数更符合实际,更可靠。另外,能让
估计参数的波动范围变小,变的更稳定。在存在病态数据偏多的研
究中有较大的实用价值。
来源:CSDN
作者:2034丶
链接:https://blog.csdn.net/qq_45315982/article/details/103475356