LR原理

本文详细介绍了Logistic回归的理论基础,包括其作为线性回归的扩展,Sigmoid函数的应用,以及最大似然估计。接着讨论了参数求解的梯度下降算法,向量化优化,以及正则化防止过拟合的方法。最后,文章解析了Spark MLlib中Logistic回归的实现,包括LogisticRegressionWithSGD、GeneralizedLinearAlgorithm、GradientDescent和Updater等关键部分。
摘要由CSDN通过智能技术生成
1.基础理论
2.参数求解:梯度下降算法
3.防止过拟合:L1&L2正则化
4.Spark MLlib Logistic Regression源码解析
5.Spark MLlib Logistics Regression实例
--------------------------

1. 基础理论

logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)将最为假设函数来预测。g(z)可以将连续值映射到01上。预测的值可以理解为概率,在0~1之间,比如可以将>0.5的值归为1,<0.5的归为0。

它与线性回归的不同点在于:为了将线性回归输出的很大范围的数,例如从负无穷到正无穷,压缩到01之间,这样的输出值表达为可能性才能说服广大民众。当然了,把大值压缩到这个范围还有个很好的好处,就是可以消除特别冒尖的变量的影响。

https://img-blog.csdn.net/20150507171408166

Logistic函数(或称为Sigmoid函数),函数形式为:

https://img-blog.csdn.net/20150507171250271

Sigmoid 函数在有个很漂亮的“S”形,如下图所示: 

https://img-blog.csdn.net/20150507171502033

 

给定n个特征x=(x1,x2,…,xn),设条件概率P(y=1|x)为观测样本y相对于事件因素x发生的概率,用sigmoid函数表示为:

https://img-blog.csdn.net/20150507171615665

那么在x条件下y不发生的概率为:

https://img-blog.csdn.net/20150507171435306

假设现在有m个相互独立的观测事件y=(y1,y2,…,ym),则一个事件yi发生的概率为(yi= 1)

https://img-blog.csdn.net/20150507171658846

y=1的时候,后面那一项是不是没有了,那就只剩下x属于1类的概率,当y=0的时候,第一项是不是没有了,那就只剩下后面那个x属于0的概率(1减去x属于1的概率)。所以不管y0还是1,上面得到的数,都是(x, y)出现的概率。那我们的整个样本集,也就是n个独立的样本出现的似然函数为(因为每个样本都是独立的,所以n个样本出现的概率就是他们各自出现的概率相乘): 

https://img-blog.csdn.net/20150507171745381

然后我们的目标是求出使这一似然函数的值最大的参数估计,最大似然估计就是求出参数,使得https://img-blog.csdn.net/20150507171801807取得最大值,对函数取对数得到https://img-blog.csdn.net/20150507171801807

https://img-blog.csdn.net/20150507171838624

这时候,用L(θ)θ求导,得到:

https://img-blog.csdn.net/20150507171707609

 

2. 参数求解:梯度下降算法

θ更新过程:

https://img-blog.csdn.net/20150507171814877

https://img-blog.csdn.net/20150507171842395

θ更新过程可以写成:

https://img-blog.csdn.net/20150507172112112

向量化Vectorization

Vectorization是使用矩阵计算来代替for循环,以简化计算过程,提高效率。

如上式,Σ(...)是一个求和的过程,显然需要一个for语句循环m次,所以根本没有完全的实现vectorization

下面介绍向量化的过程:

约定训练数据的矩阵形式如下,x的每一行为一条训练样本,而每一列为不同的特称取值: 

https://img-blog.csdn.net/20150507172145730

g(A)的参数A为一列向量,所以实现g函数时要支持列向量作为参数,并返回列向量。由上式可知

https://img-blog.csdn.net/20150507172233201

可由

https://img-blog.csdn.net/20150507172050331

一次计算求得。

θ更新过程可以改为:

https://img-blog.csdn.net/20150507172118427

综上所述,Vectorization后θ更新的步骤如下:

1)求

https://img-blog.csdn.net/20150507172352090

2)求

https://img-blog.csdn.net/20150507172200172

3)求

https://img-blog.csdn.net/20150507172205991

 

3. 防止过拟合:正则化

在实际应该过程中,为了增强模型的泛化能力,防止我们训练的模型过拟合,特别是对于大量的稀疏特征,模型复杂度比较高,需要进行降维,我们需要保证在训练误差最小化的基础上,通过加上正则化项减小模型复杂度。在逻辑回归中,有L1L2进行正则化。 
损失函数如下: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值