线性回归算法解决的是回归问题,简述线性回归算法的基本原理
1)简介和定义)线性回归假设特征满足线性关系,根据给定的训练数据训练模型,并使用模型进行预测。要理解这个定义,先举个简单的例子;假设线性方程Y=2x 1,x变量代表商品的大小,Y代表销量。当x=5时,我们可以根据线性模型预测y=11的销量;在上面这个简单的例子中,大致可以看到y=2x 1的回归模型;可以预测给定商品的每种尺寸的销售额;当然,这个模型是如何得到的,是我们接下来要考虑的线性回归的内容;另外,现实中影响销量(Y)的因素有很多。假设商品的大小为x,例如商品的价格为x),则:
机器学习之前,获取数据是第一步(无巧不成书)。假设样本如下。其中x1是商品的大小,x2是商品的价格,y是商品的销售量。
2)为了推导模型的推导模型,假设数据满足线性模型,线性模型可以设置为:x1特征为商品的大小,X2特征为商品的价格;
模型假定后,我们可以将训练数据代入上述配置模型,根据模型预测样本的最终值。
样本的真值y和模型训练预测的值有误差。再者,假设训练样本的数据量很大,根据中心极限定律可以得到满足u,)wjdym的分布。方程中有截距项,使用时u=0。所以满足(0,)wjdym分布;
从上面可以看出,对于每个样本x,p(y x;)因为得到Y集的概率是样本都是独立分布的。找出它的最大似然函数:
它被简化如下
得到了回归损失函数的最小二乘公式。为了引入一般线性回归的许多线性损失函数,直接给出上述公式的平方。我试着分阶段总结以上。线性回归,基于大数定律和中心极限定律,假设样本是无限的,它服从真实值和预测值的误差之和的wjdym分布,u=0,方差=,并且是独立同分布的。然后将=y-x代入公式,得到线性回归的损失函数。
第二步:优化损失函数,即找到W和B,使损失函数最小;第一种方法是使用矩阵(必须满足无损条件)。
损失函数的优化采用矩阵法,但上述方法有一定的局限性和可逆性。接下来,解释另一种优化方法,——梯度下降法。因为斜率下降法的解释和说明材料很多,这里不做深入说明。请参考。在一个名为http://www.cnblogs.com/ooon/p/4947688.html,的博客中,博主介绍了如何降低坡度。下面是最简单的过程。
如上所述,整个过程就是求每个变量的梯度;然后,沿梯度方向更新某一步a中的变量;这里,求每个变量的梯度。每个梯度的公式如下。
如上所述找到可变梯度;那么,重复代入下面的公式进行反复计算就足够了。
每次更新上面的变量,都要把所有的例子加起来,在数据量很大的情况下效率很低。有时也可以优化每个单独的样本,如下所示。这是随机梯度的减小。
根据以上优化步骤,求W和B,得到优化后的特征方程。请先说前面的代码:
#!/usr/CX DDC/python #-*-编码:utf-8-*-importnumpyasnpimportwarningsfromskneel . exceptionsimportconvergencewarningfromskneel . pipelineimportpipelinefromskneel arn . linear _ modelimportlin ear regression,RidgeCV,LassoCV,elasticnetcvimportmatplotlibasmplimportmatplotlib . pyplotaspltif _ name _= _ main _ _ :warnings . fings categs et _ print options)line width=1000
near regression(fit _ intercept=False))])mpl . RC params[ font . sans-serif ]=[u sim hei ]mpl . RC params[ axes . unicode _ MINUS ]=False NP . set _ print options(suppress=True)PLT . fig(figsize=(8,6),face color= w )d _ pool=NP . arange(1,N,1)# order m=d _ pool . size clrs=[]# color for c in NP . Lin space(166ravel () x _ hat。X.max(),num=100) x _ hat.shape=-1,1y _ hat=p . predict(x _ hat)s=p . score(x,y)z=n-1if(d==2)else 0 label=u % d Order s)PLT . plot(x _ hat,y _ hat,color=clrs[i],lw=line_width[i],alpha=0.75,label=label,Order=z) PLT.legend (loc=左上角)PLT.grid (true)
图像显示如下:
从上图可以看出,当模型的复杂度增加时,训练集的数据拟合的很好,但是会出现过拟合。为了防止这种过拟合,我们在损失函数中增加了一个惩罚项,根据惩罚项的不同分为以下几种:
最后一种是弹性网回归,将L1正则化和L2正则化按一定比例结合起来:
L1会倾向于产生少量的特征,而其他特征都是0,而L2会选择更多的特征,都接近0。Lasso在特征选择中非常有用,而Ridge只是一个规则。当只有少数特征在所有特征中起重要作用时,选择Lasso更合适,因为它可以自动选择特征。但是,如果大部分特征都能发挥作用,而且它们发挥的作用是均匀的,那么使用脊可能更合适。对于各种回归的比较,可以看到下图:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。