什么是多项式回归
多项式回归思路与多元线性回归相似,只是为原来的数据样本添加新的特征,而新的特征是原有特征的多项式组合。在线性回归不能很好的拟合现有数据的情况下,可能对某一特征进行平方、立方之后得到的曲线可以很好地拟合数据,这种回归方式就称为多项式回归。
scikit-learn中的多项式回归与pipeline
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
# 模拟数据集
x = np.random.uniform(-2, 3, size=100)
X = x.reshape(-1, 1)
y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, 100)
# 为数据集增加特征(原特征只有一个)
poly = PolynomialFeatures(degree=2)
poly.fit(X)
X2 = poly.transform(X)
print(X2.shape)
# 使用线性回归进行预测
lin_reg = LinearRegression()
lin_reg.fit(X2, y)
y_predict = lin_reg.predict(X2)
print(lin_reg.coef_)
# 使用pipeline
poly_reg = Pipeline([
('poly', PolynomialFeatures(degree=2)),
('std_scaler', StandardScaler()),
('lin_reg', LinearRegression())
])
poly_reg.fit(X, y)
y_predict = poly_reg.predict(X)
过拟合与欠拟合
过拟合指的是模型对于训练数据拟合程度过当的情况。
当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了。这意味着训练数据中的噪音或者随机波动也被当做概念被模型学习了。而问题就在于这些概念不适用于新的数据,从而导致模型泛化性能的变差。
过拟合更可能在无参数非线性模型中发生,因为学习目标函数的过程是易变的具有弹性的。同样的,许多的无参数器学习算法也包括限制约束模型学习概念多少的参数或者技巧。
欠拟合指的是模型在训练和预测时表现都不好的情况。
一个欠拟合的机器学习模型不是一个良好的模型并且由于在训练数据上表现不好这是显然的。
欠拟合通常不被讨论,因为给定一个评估模型表现的指标的情况下,欠拟合很容易被发现。矫正方法是继续学习并且试着更换机器学习算法。虽然如此,欠拟合与过拟合形成了鲜明的对照。
为什么要训练数据集与测试数据集
过拟合的解决方式:使用训练数据集、测试数据集进行模型的选择。
即使用训练数据集进行模型训练,而我们选择在测试数据集上得到的误差更小的模型,而非对训练数据集拟合更好的模型。模型在测试数据集上的预测能力称为泛化能力。
模型准确率与模型复杂度的关系: