前言
每次上吴恩达老师的机器学习课,总是能带给我一些不同的东西(恩,换句话说,也就是我之前都学的啥??)。这次终于开始写逻辑回归了,逻辑回归真的是一个非常了不起的算法,恩,学到后来你会发现,诶,怎么哪里都有它?
这里首先向强调的一点是,逻辑回归是一个线性分类器,用做分类的,而且是线性的,千万不要以为sigmoid函数是非线性的,它就是非线性的了。
看一个算法,照李航老师所说,你应该看三部分:模型、策略、算法。
其实看的挺累的,我每次都记不住,所以导致我学的真的有点凌乱。
最近在不断的完善不断的完善,我觉得在看一个算法之前,可以先想以下三个问题:
- 这个算法是干嘛的?分类的?回归的?聚类的?首先搞清楚这个算法的目的是什么。由此可得其原始数据的大致形式。
- 这个算法的求解方式是什么?如果是分类,那他的分类超平面如何定义?回归,它的学习策略是如何计算残差的?如果是聚类,样本点之间的距离如何计算?
- 这个算法如何学习?可能是解析解,可能是梯度下降等方法?
经过这三个部分你就能很好的了解,至少是清楚一个算法的结构了。
逻辑回归
-
目的是什么
恩,首先还是先要明确这个算法是干嘛的,再三强调,逻辑回归是用来做二分类的,是一个线性分类器。
首先来看一下效果:
逻辑回归效果
这里不同颜色指的是不同类别,中间的线定义的是一个分离超平面,该线两边设置为不同的类别。当然,这里正确率很明显不是100%,但是没关系,我们这里主要是强调有一个分离超平面是用来分类的。
也就是说,我们的目的是为了得到这样的一个分离超平面,去对数据进行分类。
-
求解方式
求解方式是什么呢?也就是我们想要得到这个分离超平面,那要怎么做?
一般说来,我们有一个sigmoid函数,我们认为将和参数输入到该函数中,能得到一个该样本分类为1的概率。(实际上并不是随意认为的,有严格的数学推导,详情请见sigmoid函数推导。)
当时,我们就将它预测为类别1,否则预测为类别0。
实际上, 。
所以最终我们可以得到,分离超平面的方程式其实就是
所以我们的分离超平面就这么定义出来了,那么怎样求这个便是我们的算法部分了,也就这个算法是怎么学习的? -
算法如何学习?
根据我们对参数进行估计的方法:极大似然估计法对参数进行估计。
首先定义极大似然函数:
令:,则,则有:
对极大似然函数取对数(极大似然法的一般步骤),同时将代入,可得:
最后对上述式子进行极大化,可以采用梯度上升或者牛顿方法,最终我们可以估计出,从而得到分离超平面。当然如下损失函数所示,便是直接加了负号求最小。 -
感知器的区别
这里我还是想写这一点,因为我本人在学习的时候也是非常的困惑,既然逻辑回归也是使得的时候预测为1,否则预测为另一个类,这个和支持向量机又有什么区别呢?支持向量机不也是使得的时候预测为1,否则预测为-1。两者仿佛只是差在一个输入时标签的区别?
其实两者的差别挺小的,主要在于损失函数不同,即对应错分样本惩罚力度不同,而且逻辑回归多了一个概率解释。可以参见博客,里面讲的挺详细的。
感知器的损失函数为:
从公式中,我们可以看到,如果样本被正确分类,则,是能够有效的减小损失的。若分类错误则增加损失。这里强调一点,感知器对任意一个分类错误样本,其惩罚力度都是一样的,因为其权值都是。
而逻辑回归的损失函数是(我们前面推导的时候,w是以最大似然函数推导的,跟这里实质是一样的,可以自行推导):
至于为什么是这个损失函数,请参见博客。
在这里我们需要强调的是,对于任意分类错误样本,它对损失函数的贡献是不一样的。举个例子,如果有一个正样本,被错分,则其对损失函数的贡献为(将y=1代入上式可得),可知,对于不同的样本其贡献的大小是不一样的,取决于的值。感知器、逻辑回归和支持向量机的区别
三者都是线性分类器,而logistic和svm是由感知器发展改善而来的。区别在于三者的损失函数不同,后两者的损失函数的目的都是增加对分类影响较大的数据点的权重,SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
上述摘自博客,写的挺好的。
啰嗦一点,因为离分离平面较远的点,其预测的准确度是越高的,也就是越接近于1,则其对应的损失其实是越小的。
sigmoid函数导出
涉及指数分布簇、广义线性模型。
指数分布簇:
广义线性模型假设:
- 在给定与 参数时,服从以 为变量的指数族的分布;
- 给定时,我们的目标是来预测 的值,即求,不过在很多时候,
- 参数 ; (为什么呢? 它就是这么设计的,广义线性模型哦)
而逻辑回归是一个二分类问题,其的分布服从一个伯努利分布,其中用来表示。即
从而服从指数分簇。其,所以有。
而在广义线性模型中,,所以有。
预测时:
最后一步是因为在伯努利分布中,期望为。
由此,我们证明了sigmoid函数可以用来估计。
softmax分类器
sigmoid函数导出是一个softmax函数导出的简化版,softmax回归是逻辑回归的多分类的推广,详情请见softmax 和 logistic 分类器关系。
但是在这个博客中,有一个点需要大家注意,在最后得到
可得:
代入
可得
原来的形式为:
注意求和角标。