1 线性回归

回归就是对已知公式的未知参数进行估计。线性回归就是对于多维空间中的样本点,用特征的线性组合去拟合空间中点的分布和轨迹,比如已知公式是y=a∗x+b,未知参数是a和b,利用多真实的(x,y)训练数据对a和b的取值去自动估计。估计的方法是在给定训练样本点和已知的公式后,对于一个或多个未知参数,机器会自动枚举参数的所有可能取值,直到找到那个最符合样本点分布的参数(或参数组合)。也就是给定训练样本,拟合参数的过程,对y= a*x + b来说这就是有一个特征x两个参数a b,多个样本的话比如y=a*x1+b*x2+...,用向量表示就是y =  ,就是n个特征,n个参数的拟合问题(假设x0 与最后的偏置项写在一起)。

2 Logistic 回归

回归一般是针对输出Y为连续性变量的,当Y离散时,问题就变成了分类。

Logistic regression (逻辑回归)是当前业界常用于分类的机器学习方法,用于估计某种事物的可能性。可以简单把这个模型想象为一个服从参数为θ的概率分布,给定向量x,得到的y值就是分布函数值,最后根据分布函数值的大小来判断分类的类别。事实上这个分布也确实存在,就是Logistic 分布。

2.1 Logistic分布:

若随机变量X服从Logistic分布,则

对应的图形如下:

公式中u代表f(x)的中心位置,也是F(x)拐点的横坐标,r控制速率,r越小,F(x)的图形越陡,x的取值为实数域R,y取值为0-1,下面来看logistic模型

对输入向量,其取值也是整个x轴的,假设服从Logistic(0,1),即u=0,r=1,带入到logistic分布中有

这便是标准的logistic函数,也可用如下公式表示:

2.2二分类问题

用标签 0,1分别表示不同类别,对于训练样本x进行如下映射,便能得到一个介于0-1之间的值,对于2分类问题,该值>0.5,就分类为1,否则分类为0,该数值结余0-1之间,比如该数值是0.7,则说明了分类为1的概率是0.7,所以0.7分类为1;若为0.3,则说明分类为1的概率为0.3,也即分类为0的概率为0.7,所以最后0.3分类为0,用Y来表示类别,有:

    公式2.1

所以训练好的模型也就有了参数ϴ,直接对向量x进行映射即可得到分类结果。

Logistic模型的训练

根据公式2.1,有P(Y=1|x,ϴ) = f(x),P(Y=0|x,ϴ) = 1- f(x)

则P(y|x,ϴ) = f(x)y(1-f(x))1-y,y取0或者1即对应分类为0或者1的问题

Logistic的有一个特性,首先用p表示P(y=1|x,ϴ),则1-p表示P(y=0|x,ϴ),一个事件发生的机率(odds)定义为事件发生的概率与不发生的概率的比值。设发生的概率为p,不发生的概率为1-p,那么事件的机率是

p1−p     代入公式有

θ

可见事件发生的对数几率为x的线性函数。

2.3 Logistic的参数

1)极大似然估计法MLE

训练过程可以采用MLE算法,求解参数ϴ

取n个训练样本极对应标签,对每个样本p(y|x,ϴ),似然函数的形式如下:

写成对数似然的形式

于是问题转变成了对l(ϴ)求极大值,另l(ϴ)最大的ϴ即为所求参数。怎么样求ϴ呢,这里可以采用梯度上升算法,因为要求得ϴ的最大值

注意g(ϴTx)的到导数g'(ϴTx)=g(ϴTx)(1 - g'(ϴTx))

对每个ϴ均执行梯度上升即可求得最终结果ϴ,从而得到最终模型。

for each ϴin ϴ:

2)对数损失函数

  对于logistic回归的参数估计除了最大似然外,还可以定义log损失函数

可见当实际标签为1时,hϴ(x)介于(0,1)之间,-log(hϴ(x))的图形如上所示,可见hϴ(x)越大,损失函数值(-log(hϴ(x))就越小,反之对于y=0

根据损失函数的定义,J(ϴ) = 1/m(Cost(ϴ(x) , y)),并且把logistic的损失函数写到一起有:

当y=1与y=0时,分别对应了不同的损失函数,且y也只能取0或者1。

-log(1-z)的图形如右图所示,其损失函数的示意图如左图所示,这样一个数学公式,巧妙地解决了logistic的损失函数问题。

这便是是最终的损失函数,现在只要求出使得损失函数极小化的ϴ即可。因为log损失函数也为凹函数,所以可以选择梯度下降来求解,且其求解的公式类似于liner regression。

顺带提一下除了Graident Descent之外,还有其他的优化算法:

分别为共轭梯度下降法(CGD),拟牛顿法(BFGS)与L-BFGS。求缺点如上所示。

2.4 决策边界:

下图为sigmod函数的图形,当ϴTx>0时,有g(ϴTx)>0.5,则可预测为类别1.

可见要把ϴTx映射到sigmod函数里,它就对应了一个决策边界,因为sigmode函数为0.5对应了一个阈值,可以看下面线性决策边界示意图。

下面为非线性决策边界的示意图:

哎,这个线性不可分数据的参数是怎么来的呢? 请听下回分解。

2.5 线性不可分时的处理

2.6多分类问题

如果y不是在[0,1]中取值,而是在K个类别中取值,这时问题就变为一个多分类问题。有两种方式可以出处理该类问题:一种是我们对每个类别训练一个二元分类器(One-vs-all),当K个类别不是互斥的时候,比如用户会购买哪种品类,这种方法是合适的。如果K个类别是互斥的,即 y=i 的时候意味着 y 不能取其他的值,比如用户的年龄段,这种情况下 Softmax 回归更合适一些。举个例子,判断一些动物的图片,并且将其归类为老鹰、鸟类,这种情况下,one -vs-all的分类方法是对老鹰和鸟类分别建立参数模型,从而老鹰也可以被分到鸟类,而softmax老鹰和鸟类根本不会分到一个类别,所以说softmax适用于对互斥类别的分类。Softmax 回归是直接对逻辑回归在多分类的推广,相应的模型也可以叫做多元逻辑回归(Multinomial Logistic Regression)。

one-vs-all 法

假设有n个类别,则为每个类别与其他类别的组合建立一个关于参数ϴ的模型,这样就会有n个参数向量ϴ1...ϴN,分别套用每个参数向量方程,选取属于类别1-N中可能性最大的一个即可。如下所示:

Softmax Regression

在softmax回归中,首先给定训练样本,这时分类标签y不再只取0-1,而是有,比如在MNIST手写识别数据库,有0-9 这10个数字,所以需要k=10

对输入x

3 总结

logistic在分类的同时,会给出其可能性,比如某用户买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。(注意这里是:“可能性”,而非数学上的“概率”,logisitc回归的结果并非数学定义中的概率值,不可以直接当做概率值来用。该结果往往用于和其他特征值加权求和,而非直接相乘),logistic回归会给出一个分类的数值,此数值介于0-1之间,比如预测一个女生是否喜欢你,它不像SVM那样直接给出0或者1,而是给出0.4,0.6这样的数值,这样就会知道喜欢的程度,很多情况下我们需要回归产生一个类似概率值的0~1之间的数值(比如某一双鞋子今天能否卖出去?或者某一个广告能否被用户点击? 我们希望得到这个数值来帮助决策鞋子上不上架,以及广告展不展示)。这个数值必须是0~1之间,于是引入了Logistic方程,来做归一化。这里再次说明,该数值并不是数学中定义的概率值。

那么既然得到的并不是概率值,为什么我们还要费这个劲把数值归一化为0~1之间呢?归一化的好处在于数值具备可比性和收敛的边界,这样当你在其上继续运算时(比如你不仅仅是关心鞋子的销量,而是要对鞋子卖出的可能、当地治安情况、当地运输成本 等多个要素之间加权求和,用综合的加和结果决策是否在此地开鞋店时),归一化能够保证此次得到的结果不会因为边界 太大/太小 导致 覆盖其他feature 或 被其他feature覆盖。(举个极端的例子,如果鞋子销量最低为100,但最好时能卖无限多个,而当地治安状况是用0~1之间的数值表述的,如果两者直接求和治安状况就完全被忽略了)这是用logistic回归而非直接线性回归的主要原因。到了这里,也许你已经开始意识到,没错,Logistic Regression 就是一个被logistic方程归一化后的线性回归,仅此而已。至于所以用logistic而不用其它,是因为这种归一化的方法往往比较合理(人家都说自己叫logistic了嘛 呵呵),能够打压过大和过小的结果(往往是噪音),以保证主流的结果不至于被忽视。

3.1 Logistic Regression的适用性

1) 可用于概率预测,也可用于分类。
并不是所有的机器学习方法都可以做可能性概率预测(比如SVM就不行,它只能得到1或者-1)。可能性预测的好处是结果又可比性:比如我们得到不同广告被点击的可能性后,就可以展现点击可能性最大的N个。这样以来,哪怕得到的可能性都很高,或者可能性都很低,我们都能取最优的topN。当用于分类问题时,仅需要设定一个阈值即可,可能性高于阈值是一类,低于阈值是另一类。
3) 各feature之间不需要满足条件独立假设,但各个feature的贡献是独立计算的。
逻辑回归不像朴素贝叶斯一样需要满足条件独立假设(因为它没有求后验概率)。但每个feature的贡献是独立计算的,即LR是不会自动帮你combine 不同的features产生新feature的 (时刻不能抱有这种幻想,那是决策树,LSA, pLSA, LDA或者你自己要干的事情)。举个例子,如果你需要TF*IDF这样的feature,就必须明确的给出来,若仅仅分别给出两维 TF 和 IDF 是不够的,那样只会得到类似 a*TF + b*IDF 的结果,而不会有 c*TF*IDF 的效果。

参考文献:

http://blog.sina.com.cn/s/blog_890c6aa301015mya.html

http://www.cnblogs.com/guyj/p/3800519.html

http://blog.csdn.net/songrotek/article/details/41310861

http://dataunion.org/17006.html

http://blog.csdn.net/han_xiaoyang/article/details/49123419

Andrew Ng讲义

《统计学习方法》#Logistic一章

(四)Logistic Regression的更多相关文章

  1. 转载 Deep learning:四(logistic regression练习)

    前言: 本节来练习下logistic regression相关内容,参考的资料为网页:http://openclassroom.stanford.edu/MainFolder/DocumentPage ...

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

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

  3. Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression

    原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性 ...

  4. Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression & Regularization

    原文:http://blog.csdn.net/abcjennifer/article/details/7716281 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  5. Machine Learning - 第3周(Logistic Regression、Regularization)

    Logistic regression is a method for classifying data into discrete outcomes. For example, we might u ...

  6. Python实践之(七)逻辑回归(Logistic Regression)

    机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Pyth ...

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

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

  8. 李宏毅机器学习笔记3:Classification、Logistic Regression

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  9. Logistic Regression总结

    转自:http://blog.csdn.net/dongtingzhizi/article/details/15962797 Logistic回归总结 作者:洞庭之子 微博:洞庭之子-Bing (20 ...

随机推荐

  1. UITableView多选全选

    自定义cell和取到相应的cell就行了 TableViewCell.h #import <UIKit/UIKit.h> @interface TableViewCell : UITabl ...

  2. 2015年4月 非常干货之Python资源大全

    [非常干货之Python资源大全]Python是一门美妙的语言,简单易用,容易提升.它是一门主流语言,却没有其它专业语言的弊病,从游戏,ML,GUI到科学和数学有着巨量的函数库. 直击现场 <H ...

  3. Javascript 正则表达式_3

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. 很不错的文章---【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群

    [导读]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设. 大规模流量的网站架构,从来都是慢慢“成长”而来.而这 ...

  5. C难点分析

    1. 形参和实参 调用函数时,写在括号里面的就是实参,函数本身用的就是形参. 2.字符串问题 char a[5]={"abcd"};注意是4个字符,而不是5个  字符串数组后面带  ...

  6. 4 tips for staying productive on Friday

    4 tips for staying productive on Friday如何让你的周五和周一一样有效率1.Schedule Your Day with Tasks 用任务计划一天 Sometim ...

  7. Bootstrap的clearfix

    1.div的内容太多会导致后面的div错位 <!DOCTYPE html> <html> <head> <title>自定义占满wgnu</tit ...

  8. QT中显示GIF图片

    在QT中要显示GIF图片,不能通过单单的添加部件来完成. 还需要手动的编写程序. 工具:QT Creator 新建一个工程,我们先在designer中,添加一个QLabel部件. 如下图: 将QLab ...

  9. Java:包的使用Pack

    在包A中创建一个类并在类中定义一个方法 package packA; public class PackDemoA { public void show() { System.out.println( ...

  10. Sublime Text2 多行编辑快捷键

    鼠标选中多行,按下 Ctrl Shift L (Command Shift L) 即可同时编辑这些行:鼠标选中文本,反复按 CTRL D (Command D) 即可继续向下同时选中下一个相同的文本进 ...