机器学习:过拟合和欠拟合:岭回归

荒凉一梦 提交于 2019-12-10 15:53:26

过拟合与欠拟合

过拟合:一个假设在训练数据上能够获得比其他假设更好的拟合, 但是在训练数据外的数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)

欠拟合:一个假设在训练数据上不能获得更好的拟合, 但是在训练数据外的数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)

在这里插入图片描述
模型复杂度

数据的特征和目标值之间的关系,不仅仅是线性关系。
在这里插入图片描述

欠拟合原因以及解决办法

原因
学习到数据的特征过少

解决办法
增加数据的特征数量

过拟合原因以及解决办法

原因
原始特征过多,存在一些嘈杂特征,
模型过于复杂是因为模型尝试去兼顾
各个测试数据点

解决办法
进行特征选择,消除关联性大的特征(很难做)
交叉验证(让所有数据都有过训练)
正则化(了解)

根据结果现象判断:欠拟合和过拟合
交叉验证:训练集结果:表现不行,测试集:表现不行(欠拟合)

特征选择有:过滤式:低方差特征;嵌入式:正则化,决策树,神经网络

正则化

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对比

岭回归:回归得到的回归系数更符合实际,更可靠。另外,能让
估计参数的波动范围变小,变的更稳定。在存在病态数据偏多的研
究中有较大的实用价值。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!