欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld

技术交流QQ群:433250724,欢迎对算法、技术、应用感兴趣的同学加入。

前面介绍过线性回归的基本知识,线性回归因为它的简单,易用,且可以求出闭合解,被广泛地运用在各种机器学习应用中。事实上,除了单独使用,线性回归也是很多其他算法的组成部分。线性回归的缺点也是很明显的,因为线性回归是输入到输出的线性变换,拟合能力有限;另外,线性回归的目标值可以是(−∞,+∞),而有的时候,目标值的范围是[0,1](可以表示概率值),那么就不方便了。

逻辑回归可以说是最为常用的机器学习算法之一,最经典的场景就是计算广告中用于CTR预估,是很多广告系统的核心算法。

逻辑回归Logistic Regression

逻辑回归(LR),虽然叫回归,然是从目标函数来看,它是设计用来做分类的,经典的LR是用于二分类的情况的,也就是说只有0,1两类。

定义一个样本xi∈Rm的类别是1的概率为:

P(yi=1|xi)=exp(wTxi)1+exp(wTxi)=11+exp(−wTxi)

这就是sigmoid函数的形式,绘制出来是这样的形式:



图1

可以看到,取值范围是在(0,1)的,因此近似可以理解为一个概率的取值。在神经网络模型中,sigmoid函数是一种激励函数,其他常见的还有tanh函数,以及其他一些函数。(这些激励函数后面介绍神经网络模型的时候再展开)

记sigmoid函数为

h(xi)=P(yi=1|xi)=11+exp(−wTxi)

给定一个数据集S,其中有N个样本,那么可以写出目标函数:最小化负对数似然函数:

minwL(w)=−log∏i=1Nh(xi)yi(1−h(xi))1−yi=−∑i=1N[yilogh(xi)+(1−yi)log(1−h(xi))]=−∑i=1N[yi(wTxi)−log(1+exp(wTxi))]

可以看到目标函数本质上是一个求和的形式,为了防止数值本身过大,一般会用平均值形式:

L(w)=−1N∑i=1N[yi(wTxi)−log(1+exp(wTxi))]

如何优化这个目标函数呢?采用标准的梯度下降算法,梯度下降可以参考我前面写的PRML ch5.2-5.3中关于梯度下降的部分,也可以参考一下资料[2]。

∇L(w)=∂L∂w=1N∑i=1N(h(xi)−yi)xiw=w−α⋅∇L(w)

通过梯度下降,我们就可以求出w,然后带到

P(yi=1|xi)=11+exp(−wTxi)

就可以求出属于1类的概率,只要概率大于0.5,我们就可以分类为1;当然,如果保留概率本身的数值,我们也可以认为是做了一个回归预测,只不过取值范围是(0,1)。

Softmax Regression

上面介绍的逻辑回归是针对二分类问题的,可以看下图图2,实线部分就是表示逻辑回归的model,多个输入,一个输出,



图2

如果有多类,我们可以采用多个二分类,且互相间是独立的;另外一种情况,类别之间不是独立的,而是同时在多个类中进行分类,这个时候就需要用softmax了(图2中,虚线部分又增加了一个输出,实际上逻辑回归是softmax的一个特例)。

当有k个类别时,一个样本x(i)属于第j类的概率是:

p(y(i)=j|x(i);w)=ewTjx(i)∑kl=1ewTlx(i)

(如果j=0,1,而且w0=0,那么就是逻辑回归的形式了,只不过因为只有两类,逻辑回归就只关注类1,而不关注类0了)

模仿逻辑回归,我们可以写出似然函数:

∏i=1N∏j=1k(ewTjx(i)∑kl=1ewTlx(i))1{y(i)=1}

类似的,目标函数是

minwJ(w)=−1N∑i=1N∑j=1k[1{y(i)=1}logewTjx(i)∑kl=1ewTlx(i)]

于是,可以求出目标函数对于参数的梯度,对于每一个输出目标j,其参数wj的梯度是,

∇wjL(w)=∂J(w)∂wj=−1N∑i=1Nxi(1{y(i)=j}−p(y(i)=j|x(i);w))

对于每一个wj,j=1,2,…,k,采用更新:

wj=wj−α⋅∇wjL(w)

基本的算法到这里就可以结束了,不过如果我们再看一下下面的性质,

p(y(i)=j|x(i);w)=ewTjx(i)∑kl=1ewTlx(i)=e(wj+c)Tx(i)∑kl=1e(wl+c)Tx(i)

其中c是一个常数向量。也就是说,如果学到的最优解wj经过任意平移变换以后,目标函数值不变,依然是最优解。避免数值太大,可以加入一项weight decay项(也就是正则项,可以参考前面的机器学习方法:回归(二)稀疏与正则),即目标函数是:

minwJ(w)=−1N∑i=1N∑j=1k[1{y(i)=1}logewTjx(i)∑kl=1ewTlx(i)]+λ2∑j=1k∑v=1mw2jv

对应的,梯度是:

∇wjL(w)=∂J(w)∂wj=−1N∑i=1Nxi(1{y(i)=j}−p(y(i)=j|x(i);w))+λwj

(上面的weight decay方法也可以直接用于逻辑回归,形式几乎是一样的。)

对于每一个样本、每一个类别,softmax都可以求出一个概率p(y(i)=j|x(i);w),然后概率最大的那个类别就是分类的类别。如何决定是用一个softmax Regression,还是用k个logistic Regression?一般来说可以根据类别是否mutually exclusive来决定——如果互相间有重合(或者本身在语义上并不相关,比如一张图片“是否风景照片”和“是否含有人”),那么就用k个logistic Regression;如果互相间是互斥的,那么就可以采用softmax。

前面主要讲了梯度下降来求解,实际上有非常多的优化方法可以比梯度下降做到更快更好,常见的有BFGS method,SGD,Conjugate gradient method等,具体这些方法在本文就不展开了,后面有时间分别介绍一下。

Ok,逻辑回归和softmax就介绍到这里。这两个算法也是深度学习中经常会被提到的基础算法,后面在介绍深度学习的时候,可以再回来复习下。接下来打算写一些深度学习相关的最最基础的算法。


觉得有一点点价值,就支持一下哈!花了很多时间手打公式的说~更多内容请关注Bin的专栏


参考资料

[1] http://www.cnblogs.com/daniel-D/archive/2013/05/30/3109276.html

[2] http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html

[3] PRML, ch4 , Logistic regresssion

[4] http://deeplearning.stanford.edu/wiki/index.php/Softmax_Regression

[5] http://en.wikipedia.org/wiki/Gradient_descent

机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression的更多相关文章

  1. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!

    原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...

  2. 机器学习 (三) 逻辑回归 Logistic Regression

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  3. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  4. 机器学习(四)--------逻辑回归(Logistic Regression)

    逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的   线性方程拟合的是连 ...

  5. 机器学习入门11 - 逻辑回归 (Logistic Regression)

    原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...

  6. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  7. 逻辑回归(Logistic Regression)详解,公式推导及代码实现

    逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...

  8. 逻辑回归 Logistic Regression

    逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...

  9. Logistic回归(逻辑回归)和softmax回归

    一.Logistic回归 Logistic回归(Logistic Regression,简称LR)是一种常用的处理二类分类问题的模型. 在二类分类问题中,把因变量y可能属于的两个类分别称为负类和正类, ...

随机推荐

  1. 【BZOJ 3569】DZY Loves Chinese II 随机化+线性基

    用到一个结论——[先建树,再给每个非树边一个权值,每个树边的权值为覆盖他的非树边的权值的异或和,然后如果给出的边存在一个非空子集异或和为0则不连通,否则连通](必须保证每条边的出现和消失只能由自己产生 ...

  2. Ubuntu 16.04使用python3.x相关

    下载pip3 Python 3.x版本使用pip3,它会把你想下载的包放到usr/local/lib/python3.5/dist-packages/下,而非usr/local/lib/python2 ...

  3. Codeforces Round #342 (Div. 2) C

    C. K-special Tables time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. 人工智能----TensorFlow开篇简介

    Artificial Intelligence,也就是人工智能.TensorFlow是Google在2015年底开源的项目 TensorFlow的论文地址:http://download.tensor ...

  5. php环境的安装

    一.xampp的安装 1.下载xampp安装包. 2.next下一步傻瓜式的安装. 3.输入地址127.0.0.1进入如下页面. 二.LAMP环境的安装

  6. PowerDesigner逆向生成

    人越长大话越少,我们不再说今天受了委屈,不再说谁谁谁不理我了我好难过,不再分享生活中的琐事. 我知道人和人之间没法互相理解,大家都很忙,针也没扎在别人身上. 所以把那些还没说出口的话消化在每一步走过的 ...

  7. jedis在线文档网址

    jedis在线文档网址:http://tool.oschina.net/apidocs/apidoc?api=jedis-2.1.0

  8. Confluence代码块(Code Block)宏

    有时候现在wiki上插入代码,如何让代码高亮,变的有颜色,下面这篇文章可能会帮助你,先看下django代码高亮效果图 代码块(Code Block)宏允许你在 Confluence 页面中显示代码,并 ...

  9. 【CodeForces】601 D. Acyclic Organic Compounds

    [题目]D. Acyclic Organic Compounds [题意]给定一棵带点权树,每个点有一个字符,定义一个结点的字符串数为往下延伸能得到的不重复字符串数,求min(点权+字符串数),n&l ...

  10. HDU 1548 A strange lift (广搜)

    题目链接 Problem Description There is a strange lift.The lift can stop can at every floor as you want, a ...