机器学习算法系列—Logistic regression

逻辑斯蒂回归

感觉这个用中文说出来有点奇怪,哈哈。逻辑斯蒂回归在机器学习算法中是一种比较经典的算法,属于对数线性模型。l虽然名字里有 “回归” 二字,但实际上是解决分类问题的一类线性模型。

本文以二项逻辑斯蒂回归为例子,参考《统计学习方法》中的内容。 由条件概率P(Y|X)表示,其中的X表示为随机 变量,Y表示为0或者1。换句话说就是,考虑具有n个独立变量的向量x=(x1,x2,x3,…,xn),设条件慨率P(y=1|x) 为根据观测量相对于某事件x发生的概率,Logistic regression可以表示为:

其中x = w0+w1x1+w2x2+…+wnxn.

这其实是sigmoid函数的一种,呈S型,值域为0到1. 在深度学习里是一种比较常见的激活函数。

那么,很简单就可以得到在X的条件下y不发生的概率为:

一个事件的几率(odds)是指发生与不发生的概率之比:

从上式子可以看出,在逻辑斯蒂回归中,输出Y=1的对数几率是输入x的线性函数

逻辑斯蒂回归模型表达式中,我们能将线性函数转化为概率。线性函数值越大,概率越接近于1;反之,概率接近于0.

参数估计

so,模型介绍完了,你会发现模型就一个x在 里面,放在机器学习里也就是输入,再仔细想想,在模型中的x是由很多参数的线性组合。在给定训练集的时候,我们需要估计出模型中的参数,才能得到逻辑斯蒂回归模型。这里自然而然就可以用 到极大似然估计法去估计模型的参数问题。

L(θ|x)=f(x|θ)

L(θ|x) 似然函数的定义,它是给定联合样本值x下关于(未知)参数θ的函数.

f(x|θ )是一个密度函数,特别地,它表示(给定)θ下关于联合样本值x的联合密度函数.

似然函数和密度函数是完全不同的两个数学对象:前者是关于的函数,后者是关于的函数。所以这里的等号 理解为函数值形式的相等,而不是两个函数本身是同一函数(根据函数相等的定义,函数相等当且仅当定义域相等并且对应关系相等)

我们的目标是求出使这一似然函数的值最大的参数估计

因为各个观测样本之间相互独立,那么它们的联合分布为各边缘分布的乘积,得到似然函数为:

其中的pai 就是逻辑斯蒂回归的表达式。

对L(w)取对数得到:

以上推倒比较简单哈,高中 数学水平,不信可以自己动手试试看。

我们的目的就是要使L(w)最大 的时候的w向量的取值。在逻辑斯蒂回归中,我们一般采用梯度下降法拟牛顿法。这里所说的梯度下降指的是一类方法,当然这里求的最大值,肯定是反过来呗,那就梯度上升咯:

上面的公式不太规范,等号应该是 := ,而不是=号。意思就是不断地迭代更新,求个偏倒不断更新w。

理论介绍完毕了,是不是非常觉得easy。确实挺简单的这个算法,不要急,先从简单的上手不是更好么?找点感觉再去看难的,就会很快的。

sklearn中的Logistic regression

找到了,就是这个了:

还记得之前的一篇文章不,写的是关于L1、L2正则化的。下面的实践就将逻辑斯蒂回归与正则化结合起来,再深入了解下正则化。下面的代码为sklearn官方文档中的example。以mnist手写数字为例:数字是8*8图像即64个像素点,数字为0-9,每个数字大概有180张,总共的图片数目为1797张。大概长这样:

开撸!!!

1.导入库

2.数据预处理

网上看到一张图片,区分sklearn中的 fit_transform 和 transform,非常形象生动,看完基本秒懂哈:

3.模型的训练

结果拿出来遛一遛:

由上面的运行结果可以看出,随着C的不断减小,L1惩罚项带来的参数的稀疏性越来越大,而L2惩罚项的参数的稀疏性并没有特别大的改变。这也是我们之前的文章提到过的,可以使用L1正则化来进行特征选择

现在是不是对正则化有更深的理解了呢?

这周毕业论文答辩,马上就快毕业了,估计这段时间不能每天更新文章了。

希望感兴趣的同学加入微信群,我们一起学习。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180523G1WD3200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券