1.线性模型的基本概念:
在机器学习领域,常用的线性模型包括线性回归,岭回归,套索回归,逻辑回归和线性SVC等。
线性模型的一般公式:
y=w[0]·x[0]+w[1]·x[1]+···+w[p]·x[p]+b 式中x[0],x[1],···,x[p]为数据集中特征变量的数量(这个公式表示数据集中的数据点一共有p个特征),w和b为模型的参数,y为模型对于数据的预测值。
2.线性模型的特点:
使用线性模型的前提条件,是假设目标y是数据特征的线性组合。但需要注意的是,使用一维数据集进行验证会让我们有一点偏颇,而对于特征变量较多的数据集来说,线性模型酒显得十分强大。尤其是,当训练数据集的特征变量大于数据点的数量多的时候,线性模型可以对训练数据做出近乎完美的预测。
3.最基本的线性模型——线性回归
线性回归,也称为最小二乘法(OLS),是在回归分析中最简单也是最经典的线性模型。
- 线性回归的基本原理:
线性回归的原理是,找到当训练数据集中y的预测值和其真实值的平方差最小的时候,所对应的w值和b值。 线性回归没有可供用户调节的参数,这是它的优势,但是也代表我们无法控制模型的复杂性。例子如下:
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
X,y=make_regression(n_samples=100,n_features=2,n_informative=2,random_state=2)
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=1)
lr=LinearRegression()
lr.fit(X_train,y_train)
print('lr.coef_:{}'.format(lr.coef_[:]))
print('lr.intercept_:{}'.format(lr.intercept_))
结果如下: 2. 线性回归的性能表现:
print('训练集数据得分:{}'.format(lr.score(X_train,y_train)))
print('测试集数据得分:{}'.format(lr.score(X_test,y_test)))
3. 结果分析: 这是一个令人振奋的分数,模型在训练集和测试集上都取得了满分,这是因为我们的数据本身就是按照回归数据分布的,没有向数据集中添加噪声noisy。 下面我们将使用来自真实世界的数据集——糖尿病情数据集,再来测试一下线性模型的表现。 4.糖尿病情数据集实战:
from sklearn.datasets import load_diabetes
X,y=load_diabetes().data,load_diabetes().target
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=1)
lr=LinearRegression().fit(X_train,y_train)
print('训练集得分:{}'.format(lr.score(X_train,y_train)))
print('测试集得分:{}'.format(lr.score(X_test,y_test)))
结果分析: 由于真实世界中数据的复杂程度比我们手工合成的数据高得多,所以使得线性回归的表现大幅下降。此外,由于线性回归自身的特点,非常容易出现过拟合的现象。在训练集和测试集的得分巨大差异是过拟合的问题的一个明确信号,因此,我们应该找到一个模型,使我们能够控制模型的复杂度。标准线性回归最常用的替代模型之一是岭回归。
|