线性回归模型

5 篇文章 0 订阅
2 篇文章 0 订阅

一、线性回归模型

1.建立模型

假设使用向量 x = ( x ( 1 ) , x ( 2 ) , x ( 3 ) , . . . , x ( N ) ) {\bf x}=(x^{(1)},x^{(2)},x^{(3)},...,x^{(N)}) x=(x(1),x(2),x(3),...,x(N))代表影响结果的各个特征因素,最终结果为 h ( x ) h(x) h(x),向量 w = ( w 1 , w 2 , w 3 , . . . , w N ) {\bf w} = ({w\tiny 1},{w\tiny 2},{w\tiny 3},...,{w\tiny N}) w=(w1,w2,w3,...,wN)表示各个特征的权重, b b b为偏置常数,则有函数表达式:
h ( x ) = w 1 x ( 1 ) + w 2 x ( 2 ) + w 3 x ( 3 ) + . . . w N x ( N ) + b h(x)={w\tiny 1}x^{(1)}+{w\tiny 2}x^{(2)}+{w\tiny 3}x^{(3)}+...{w\tiny N}x^{(N)}+b h(x)=w1x(1)+w2x(2)+w3x(3)+...wNx(N)+b写为矩阵形式: h ( x ) = w x + b h({\bf x}) = {\bf wx}+b h(x)=wx+b

2.策略确定

对于回归问题,采用最小均方误差损失来描述模型的好坏。损失函数:
min ⁡ w , b L ( w , b ) = min ⁡ w 1 2 ∑ i = 1 M [ h ( x i ; w ; b ) − y i ] 2 \min_{\mathclap {w,b}}L({\bf w},b)= \min_{\mathclap w}{1\over 2}\displaystyle\sum_{i=1}^{M}[h({\bf {x\tiny i};w};b)-{y\tiny i}]^2 w,bminL(w,b)=wmin21i=1M[h(xi;w;b)yi]2使用梯度下降法求解损失函数:
∂ ∂ w L ( w , b ) = ∂ ∂ w [ 1 2 ∑ i = 1 M [ h ( x i ; w ; b ) − y i ] 2 ] = ( w x i + b − y i ) x i {\partial \over \partial \bf w}L({\bf w},b)={\partial \over \partial \bf w}\big[{1\over 2}\displaystyle\sum_{i=1}^{M}[h({\bf {x\tiny i};w};b)-{y\tiny i}]^2\big]=({\bf wx\tiny i}+b-{y\tiny i})\bf x\tiny i wL(w,b)=w[21i=1M[h(xi;w;b)yi]2]=(wxi+byi)xi
∂ ∂ b L ( w , b ) = ∂ ∂ b [ 1 2 ∑ i = 1 M [ h ( x i ; w ; b ) − y i ] 2 ] = ( w x i + b − y i ) {\partial \over \partial b}L({\bf w},b)={\partial \over \partial b}\big[{1\over 2}\displaystyle\sum_{i=1}^{M}[h({\bf {x\tiny i};w};b)-{y\tiny i}]^2\big]=({\bf wx\tiny i}+b-{y\tiny i}) bL(w,b)=b[21i=1M[h(xi;w;b)yi]2]=(wxi+byi)由以上两式可得权重系数 w \bf w w和偏置常数 b b b的更新式为:
w ← w − η ( w x i + b − y i ) x i {\bf w}\larr {\bf w}-\eta ({\bf wx\tiny i}+b-{y\tiny i})\bf x\tiny i wwη(wxi+byi)xi
b ← b − η ( w x i + b − y i ) b\larr b-\eta ({\bf wx\tiny i}+b-{y\tiny i}) bbη(wxi+byi)学习率 η \eta η 0 < η ⩽ 1 0<\eta\leqslant1 0<η1。重复更新 w {\bf w} w b b b直到模型满足要求。

3.使用scikit-learn实现

在scikit-learn中通过linear_model类实现,其方法有:

  1. fit(X_train,y_train):在训练集(X_train,y_train)上训练模型。
  2. score(X_test,y_test):返回模型在测试集上的预测准确率,其值越大表示模型预测性能越好。
  3. predict(X):用训练好的模型来预测待测数据集X,返回预测结果。

普通线性回归

class sklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,n_jobs=1)
'''
参数:
fit_intercept;选择是否计算偏置常数b,默认为True。
normalize:在拟合数据前是否对其进行归一化,默认为False
n_jobs:指定计算机并行工作时的CPU核数,默认为1;-1表示使用所有可用的核
输出:
coef_:权重向量 w
intercept_:偏置常数 b
'''

Lasso回归

在基本的线性回归上加一个L1正则化项: α ∣ ∣ w ∣ ∣ 1    α ⩾ 0 {\alpha ||w||\tiny 1}\space\space\alpha\geqslant0 α∣∣w∣∣1  α0

class sklearn.linear_model.Lasso(alpha=1.0,fit_intercept=True,normalize=False,precompute=False,max_iter=1000,tol=0.0001,warm_start=False,positive=False,selection='cyclic')
'''
参数:
alpha:L1正则化项前面带的常数调节因子
precompute:是否使用预先计算的Gram矩阵来加快计算,默认为False
max_iter:最大迭代次数,默认1000
tol:判断迭代收敛的阈值,默认0.0001
warm_start:是否使用前一次训练的结果继续训练,默认False,表示每次都从头开始训练
positive:强制所有权重系数为正值,默认为False
selection:每轮迭代时选择哪个权重系数进行更新,默认为cycle,表示从前往后依次选择;若为random,表示随机选择一个权重系数进行更新
其它同普通线性回归
输出:
n_iter_:用于输出实际迭代的次数
其它同普通线性回归
'''

岭回归

在基本的线性回归上加一个L2正则化项: α ∣ ∣ w ∣ ∣ 2 2    α ⩾ 0 \alpha\mathop{||w||}_2^2\space\space\alpha\geqslant0 α∣∣w∣∣22  α0

class sklearn.linear_model.Ridge(alpha=1.0,fit_intercept=True,normalize=False,max_iter=None,tol=0.001,solver='auto')
'''
参数:
alpha:L2正则化项前面带的常数调节因子
solver:指定求解最优化问题的算法,默认auto,自动选择。更多取值选项:
	svd:用奇异值分解计算回归系数;
	cholesky:使用scipy.linalg.solve函数求解;
	sparse_cg:使用scipy.sparse.linalg.cg中的共轭梯度求解器求解;
	lsqr:使用正则化最小二乘法scipy.sparse.linalg.lsqr,速度最快;
	sag:使用随即平均梯度下降法求解
其它同Lasso回归
输出:
同Lasso回归
'''

ElasticNet回归

弹性网络回归是将L1和L2正则化进行融合。混合正则化项: α ρ ∣ ∣ w ∣ ∣ 1 + α ( 1 − ρ ) 2 ∣ ∣ w ∣ ∣ 2 2    α ⩾ 0 , 1 ⩾ ρ ⩾ 0 {\alpha\rho ||w||\tiny 1}+{\alpha(1-\rho)\over 2}\mathop{||w||}_2^2\space\space\alpha\geqslant0,1\geqslant\rho\geqslant0 αρ∣∣w∣∣1+2α(1ρ)∣∣w∣∣22  α0,1ρ0

class sklearn.linear_model.ElasticNet(alpha=1.0,l1_ratio=0.5,fit_intercept=True,normalize=False,precompute=False,max_iter=1000,tol=0.0001,warm_start=False,positive=False,selection='cyclic')
'''
参数:
alpha:L1正则化项前面带的常数调节因子
l1_ratio:上式p值,默认为0.5
其它同岭回归
输出:
同岭回归
'''

== --------------------------------------------------------华丽的分割线--------------------------------------------------------==

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值