线性回归-初步
1.1.1. Ordinary Least Squares
from sklearn import linear_model
reg = linear_model.LinearRegression()
reg.fit([[0,0],[1,1],[2,2]],[0,1,2])
-
reg使用的参数:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
reg.coef_
array([0.5, 0.5])
最小二乘法的代价函数表述为:
1.1.2 Ridge Regression
岭回归通过对最小二乘法的系数做出惩罚以解决部分的问题,最小化了惩罚的残差平方和
- 现行回归含有惩罚项的代价函数表述为:
- 正则化的背后的概念是引入额外的信息(偏差)来对极端参数的权重做出惩罚,此处的正则化则是引入的L2正则化。
- 代价函数的参数α的变化导致权重稀疏的变化,岭回归即L2正则化(L2收缩),也叫权重衰减:
from sklearn import linear_model
reg= linear_model.Ridge(alpha=0.5)
reg.fit([[0,0],[0,0],[1,1]],[0,0.1,1])
- reg使用的参数
Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
normalize=False, random_state=None, solver='auto', tol=0.001)
reg.intercept_
0.1363636363636364
reg.coef_
array([0.34545455, 0.34545455])
1.1.2.1 Setting the regularization parameter: generalized Cross-Validation 通过交叉验证获得回归效果最恰当的惩罚项的参数
from sklearn import linear_model
reg=linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])
reg.fit([[0,0],[0,0],[1,1]],[0,0.1,1])
- reg使用的参数
RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, gcv_mode=None,
normalize=False, scoring=None, store_cv_values=False)
reg.alpha_
0.1
1.1.3 Lasso(权重稀疏)
- L1正则化可生成稀疏的特征向量,且大多数的权值为0,当高维的数据集中包含许多不想管的特征,尤其是在不相关的特征数量大于样本数量是,权重的稀疏化可以发挥特征选择的作用。
- 损失函数可以表示为:
from sklearn import linear_model
reg= linear_model.Lasso(alpha=0.1)
reg.fit([[0,0],[1,1]],[0,1])
-
reg使用的参数:
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
normalize=False, positive=False, precompute=False, random_state=None,
selection='cyclic', tol=0.0001, warm_start=False)
import numpy as np
reg.predict([[1,1]])
# 如果是一维数组的话,需要使用np.array([1,1]).reshape(1,-1) 保证是一行多列数据,如果是(-1,1)保证是一列多行数据。-1 表示会根据原始数据的shape自动的更改
array([0.8])
reg
-
reg使用的参数:
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
normalize=False, positive=False, precompute=False, random_state=None,
selection='cyclic', tol=0.0001, warm_start=False)
reg.coef_
array([0.6, 0. ])
reg.intercept_
0.2