感知机、logistic回归 损失函数对比探讨

感知机

  假如数据集是线性可分的,感知机学习的目标是求得一个能够将正负样本完全分开的分隔超平面 \(wx+b=0\) 。其学习策略为,定义(经验)损失函数并将损失函数最小化。通常,定义损失函数的策略是:==误分类点到分隔超平面的总距离==。【李航,2.2节】

  • 如果没有误分点,则损失函数值是0.
  • 感知机学习算法若采用不用的初始值或选取不同的误分类点,得到的分隔超平面可不同。

logistic回归(对数几率回归):

  逻辑回归和感知机一样,定义一个决策面(分隔面)来区分正负两类样本。但是其学习策略为:
  定义:\(z=\theta x=ln \dfrac{p}{1-p}\),其中 \(z\in R\),\(p=P(y=1\mid x ;\theta)\),\(p\in (0,1)\),即样本点为1的概率。此时 \(z = \theta x=0\)为分类决策面,\(p=g(z)=\dfrac{1}{1+e^{-z}}\),其实可发现:
  当 \(\theta^TX\gt0\),则有 \(p\gt0.5\);若 \(\theta^TX\to+\infty\),则 \(p\to1\),即 y 为 1 类;
  当 \(\theta^TX\lt0\),则有 \(p\lt0.5\);若 \(\theta^TX\to-\infty\),则 \(p\to0\),即 y 为 0 类。
  所以,通过以上分析,可得训练样本到决策面的距离为:\(y\) 为1类的对数几率比(几率比:1类的概率/0类的概率)
  于是整个模型的公式为:
\[P(y=1\mid x ;\theta)=h_\theta (x)=g(\theta x)=\dfrac{1}{1+e^{-\theta x}}\],其中 \(z=\theta x=ln \dfrac{p}{1-p}\),几何意义为样本点到决策面的“距离”,实际意义为:\(y\) 为1类的对数几率比。注意,“距离” \(z\) 范围为\((-\infty , +\infty )\)。

这样做的好处是【周志华 P58】:

  1. 直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题(无需事先知道样本数据的分布)。
  2. 不仅预测出类别,通过 sigmoid 函数的压缩,对样本点到局侧面的“距离”——对数几率比值 \(z(z\in R)\),压缩到 \((0, 1)\), 还且给出具体的概率预测值。
  3. 对数几率函数是热一节课到的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。

  那重点来了:logistic回归的的损失函数,还会跟感知机或者下面即将提到的 SVM 一样,能根据样本点到决策面的距离来定义损失函数吗?
  答曰:不可以滴。刚才讲了,逻辑回归中的距离,是“ \(y\) 为1类的对数几率比”,这个距离既不是最大就好,也不是最小就好。所有这里的“距离”不能直接作为损失函数。
  但是,我们可以直观的理解为:Logistic回归就是要学习得到 \(\theta\),使得所有正例的距离远大于0,所有负例的距离远小于0,并强调在全部训练样本上达到这个目标
  若还是以“距离”最大化为我们的指导思想,可以用分段函数来表达,来写出我们的优化目标(注意这里的“距离”不是指 \(z\)):
  当 \(y=1\) 时候,我们让正样本到决策面的距离变大,即“\(y\)为1的对数几率比值”\(z\)大,而 \(z=ln \dfrac{p}{1-p}\)又是单调递增函数,因此,距离 \(d(y=1) \propto p \propto logp\);同理,当 \(y=0\) 时候,我们让负样本到决策面的距离变大,即“\(y\)为0的对数几率比值”\(z\)大,而 \(z=ln \dfrac{1-p}{p}\)又是单调递减函数,因此,距离 \(d(y=0) \propto 1-p \propto log(1-p)\)。
  将与“距离”成正比的函数 \(D(y|x;\theta)\) 可简化为一个式子:
\[D(y|x;\theta)=ylogp+(1-y)log(1-p),y=\{0,1\}\]
对于所有样本点的距离之和:
\[D(\theta)=\sum _{ i=1 }^{ m }{ y^{(i)}logh_\theta (x^{(i)})+(1-y^{(i)})log(1-h_\theta (x^{(i)})) } \]
最大化到分割面之和可作为我们的优化目标。

  若根据 Ng 所讲,一定要写数损失函数,如果以真实值和预测值的误差平方和来作为损失函数,理论上来讲可行,但是,这样后我们的损失函数
\[\sum _{ i=1 }^{ m }{ ({h_\theta(x^{(i)})}- y^{(i)})^2 },其中h_\theta(x)=\frac{1}{1+e^{-\theta x}}\]是非凸的(non-convex function)。
  但是,我们可以根据模型特点来设置损失函数,取对数损失函数【李航P7】:
\[Cost(h_\theta(x))=\begin{cases} -log(h_\theta(x)), & y=1 \\ -log(1-h_\theta(x)),& y=0 \end{cases}\]
最后通过最小化所有损失函数作为优化目标,会发现我们的优化目标的函数形式其实是一样的。

总结:
  ==同样是选择决策面,逻辑回归选择策略是所有点到决策面的距离之和最大。这样有个弊端是,会决策面靠近一些点,来换取另外一部分点更加远离分割面。==

感知机、logistic回归 损失函数对比探讨的更多相关文章

  1. logistic回归损失函数(非常重要,深入理解)

    2.2 logistic回归损失函数(非常重要,深入理解) 上一节当中,为了能够训练logistic回归模型的参数w和b,需要定义一个成本函数 使用logistic回归训练的成本函数 为了让模型通过学 ...

  2. 2.2 logistic回归损失函数(非常重要,深入理解)

    上一节当中,为了能够训练logistic回归模型的参数w和b,需要定义一个成本函数 使用logistic回归训练的成本函数 为了让模型通过学习来调整参数,要给出一个含有m和训练样本的训练集 很自然的, ...

  3. logistic回归具体解释(二):损失函数(cost function)具体解释

    有监督学习 机器学习分为有监督学习,无监督学习,半监督学习.强化学习.对于逻辑回归来说,就是一种典型的有监督学习. 既然是有监督学习,训练集自然能够用例如以下方式表述: {(x1,y1),(x2,y2 ...

  4. Logistic回归和SVM的异同

    这个问题在最近面试的时候被问了几次,让谈一下Logistic回归(以下简称LR)和SVM的异同.由于之前没有对比分析过,而且不知道从哪个角度去分析,一时语塞,只能不知为不知. 现在对这二者做一个对比分 ...

  5. 回归——线性回归,Logistic回归,范数,最大似然,梯度,最小二乘……

    写在前面:在本篇博客中,旨在对线性回归从新的角度考虑,然后引入解决线性回归中会用到的最大似然近似(Maximum Likelihood Appropriation-MLA) 求解模型中的参数,以及梯度 ...

  6. Logistic回归总结

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

  7. 机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

    本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 闲话:二项Logistic回归是我去年入门机器学习时学的第一个模 ...

  8. 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归

    机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...

  9. logistic 回归与线性回归的比较

    可以参考如下文章 https://blog.csdn.net/sinat_37965706/article/details/69204397 第一节中说了,logistic 回归和线性回归的区别是:线 ...

随机推荐

  1. StringUtils.isEmpty StringUtils.isBlank

    两个方法都是判断字符是否为空的.前者是要求没有任何字符,即str==null 或 str.length()==0:后者要求是空白字符,即无意义字符.其实isBlank判断的空字符是包括了isEmpty ...

  2. ucos中需要注意的全局变量

    首先聊一聊全局变量: 在慕课上学习浙大老师的C语言课程的时候,翁恺老师一直在强调在程序中我们要避免使用全局变量,C语言的程序员(尤其像我这样的野生程序员)为了方便,经常会不顾这个编码规范.全局变量有一 ...

  3. centos7 安装 transmission

    貌似官方文档 注意:是centos7才能用此方法 Step 1. First, you need to enable EPEL repository on your system. yum insta ...

  4. Tcp协议细节(三次握手,四次握手)

    利用滑动窗口实现流量控制(让发送方的发送速率不要太快,让接收方来得及接收) (发送窗口的发送窗口不能超过接收方给出的接收窗口的数值) 拥塞控制 拥塞:在某段时间,对网络中某一资源的需求超过了该资源所能 ...

  5. CSS选择器命名及常用命名

    CSS选择器命名及常用命名 CSS选择器命名及常用命名 规范的命名也是Web标准中的重要一项,标准的命名可以使代码更加易读,而且利于搜索引擎搜索,比如定义了两个div,一个 id 命名为“div1”, ...

  6. Unity2018.3全新Prefab预制件系统深入介绍视频教程+PPT+Demo源码

    Unity在2018.3推出了重新设计的Prefab预制件系统.这一全新的设计终于为一个长达十年的问题画上了完美的句号, 这个问题就是:“什么时候Unity可以提供嵌套式的预制件系统,俗称Nested ...

  7. ERROR: 9-patch image C:\...\res\drawable\appwidget.9.png malformed. Frame pixels must be either solid or transparent (not intermediate alphas).

    this is the problem with latest adt that is 20.0.3. you can instead rename the *.9.png to *.png and ...

  8. ViewPager中Fragment的重复创建、复用问题

    在ViewPager中的Fragment的生命周期  随着页面的切换 当前的展示页相邻的页面生命周期一直在变化 一开始 刚进入Activity时候,ViewPager默认初始化好前两个Fragment ...

  9. 使用idea的springboot项目出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    参考: https://www.cnblogs.com/lfm601508022/p/InvalidBoundStatement.html https://blog.csdn.net/xsggsx/a ...

  10. H5端密码控件自动化测试

    最近在做H5端UI自动化测试,其中遇到了一个棘手问题就是密码控件,因为密码控件的按钮每次都是随机不一样的,没法固定去点击输入密码.密码的输入框是div不是input,所以没法用send_keys()这 ...