首先回顾了几个Linear Model的共性:都是算出来一个score,然后做某种变化处理。

既然Linear Model有各种好处(训练时间,公式简单),那如何把Linear Regression给应用到Classification的问题上呢?到底能不能迁移呢?

总结了如下的集中Linear Model的error functions的表达式:

这里都提炼出来了ys这一项,y表示需要更正的方向{+1,-1},s表示需要更正的幅度(score)

三种error function可以这么理解:

(1)0/1 error : 幅度s固定,y表示方向

(2)square error : y很正或很负,error都非常大(注意这里只需要y很大或很下,error就收不住了);只有当ys很接近1的时候,error才可能接近0

(3)cross-entropy error : 如果ys很负的话,那么error就无穷大;如果ys很正的话,那么error无限接近0

再画出几种model的error function,可以看到:

(1)square error是不太合适的,ys>>1的时候,error衡量的过了,不合适。

(2)cross-entropy error也不太合适,因为在0到-1之间位于0/1 error下面了

如果想合适的话,可以对cross-entropy进行放缩:把ln换成log2,就OK了。

这里有个Point值得关注,为啥要放缩呢?错误率低不是更好么?

其实这跟目的有关:

(1)首先我们的目的是要用regression来代替classification(为啥要替代?因为PLA/Pocket是NP-hard的问题,不好整;而Linear Model在最优化之后,求解比较容易了),如果regression和classification在性能上差不多,那就可以替代了。

(2)因此,我们把cross-entropy error来scale成0/1 error的upper bound,目的就是让cross-entropy error低的时候,0/1error也低,放缩一下是为了说bound住这个事情。

再简单些就是说,如果实际中linear model用regression给出来的方法分类效果好,那么PLA/Pocket分类效果也好。

接下来对比了PLA、Linear Regression 和 Logistic Regression的方法优缺点:

(1)PLA:线性可分时候很犀利;如果不可分,那就只好Pocket

(2)Linear Regression:最优化可以求出来analytics close solution;但是当|ys|很大的时候,positive direction和negative direction的bound都太松太松了

(3)Logistic Regression:gradient descent可以求解;但是negatvie direction方向bound比较松

总结一些实际经验:linear regression可以作为PLA/Pocket/Logistic Regression的初始值设置。

接下来讲了一种Stochastic Gradient Descent的方法:

(1)原来是所有点在算梯度,然后取平均,再更新w;随机梯度下降,是不用每次算所有点了,每次算一个点,用这个点代替所有点的平均。

(2)敢这么做的原因:是因为 stochastic gradient = true gradient + zero-mean 'noise' directions;因为是zero-mean的noise,所以可以得到average true gradient ≈ average stochastic gradient

(3)SGD方法在logistic regression的应用公式,非常像PLA的公式

(4)从实际情况出发,一般迭代次数达到一定,可以认为SGD已经获得了最佳的结果;ita在实际经验中,一般取值为0.1左右合适。

随后,由binary classification问题延伸到了multiclass的问题,总体来说有两种方法:

1. One-Versus-ALL (OVA) Decomposition

意思就是

(1)每次把一个class和非这个class的当成目标两类,用logistic regression分这两类

(2)分类时输入某个点,然后看这个点上取哪一类的概率最大

这里有一点点儿问题:(2)点中不一定所有类别的概率和是1,虽然实际中影响不大,但是统计学的还是有严谨的方法(multinomial logistic regression)

当类别很多的时候(比如,K=100)那么,每次用logistic regression的时候,正样本和负样本的差别非常大,这样不容易得出正确结果。

为了解决OVA的unbalance问题:每次只取两个类,一共有K类,做C(K,2)次logistic regression就OK了;当给一个输入点的时候,用这C(K,2)个分类器给所有K个类别投票,取票数大的作为输出结果。

这种方法的缺点是:可能效率会低一些(K次变成C(K,2)次)。

但是,如果类别很多,每一类的样本量都差不多的时候,其实OVO的方法不一定比OVA方法效率低。

【Linear Models for Binary Classification】林轩田机器学习基石的更多相关文章

  1. (转载)林轩田机器学习基石课程学习笔记1 — The Learning Problem

    (转载)林轩田机器学习基石课程学习笔记1 - The Learning Problem When Can Machine Learn? Why Can Machine Learn? How Can M ...

  2. 【Linear Regression】林轩田机器学习基石

    这一节开始讲基础的Linear Regression算法. (1)Linear Regression的假设空间变成了实数域 (2)Linear Regression的目标是找到使得残差更小的分割线(超 ...

  3. 【 Logistic Regression 】林轩田机器学习基石

    这里提出Logistic Regression的角度是Soft Binary Classification.输出限定在0~1之间,用于表示可能发生positive的概率. 具体的做法是在Linear ...

  4. 【The VC Dimension】林轩田机器学习基石

    首先回顾上节课末尾引出来的VC Bound概念,对于机器学习来说,VC dimension理论到底有啥用. 三点: 1. 如果有Break Point证明是一个好的假设集合 2. 如果N足够大,那么E ...

  5. 【Theory of Generalization】林轩田机器学习基石

    紧接上一讲的Break Point of H.有一个非常intuition的结论,如果break point在k取到了,那么k+1, k+2,... 都是break point. 那么除此之外,我们还 ...

  6. 【Training versus Testing】林轩田机器学习基石

    接着上一讲留下的关子,机器学习是否可行与假设集合H的数量M的关系. 机器学习是否可行的两个关键点: 1. Ein(g)是否足够小(在训练集上的表现是否出色) 2. Eout(g)是否与Ein(g)足够 ...

  7. 林轩田机器学习基石课程学习笔记5 — Training versus Testing

    上节课,我们主要介绍了机器学习的可行性.首先,由NFL定理可知,机器学习貌似是不可行的.但是,随后引入了统计学知识,如果样本数据足够大,且hypothesis个数有限,那么机器学习一般就是可行的.本节 ...

  8. 林轩田机器学习基石笔记3—Types of Learning

    上节课我们主要介绍了解决线性分类问题的一个简单的方法:PLA.PLA能够在平面中选择一条直线将样本数据完全正确分类.而对于线性不可分的情况,可以使用Pocket Algorithm来处理.本节课将主要 ...

  9. 【Linear Support Vector Machine】林轩田机器学习技法

    首先从介绍了Large_margin Separating Hyperplane的概念. (在linear separable的前提下)找到largest-margin的分界面,即最胖的那条分界线.下 ...

随机推荐

  1. git/github初级运用自如(转自:虫师)

    注:本文来源于 虫师博客(http://www.cnblogs.com/fnng/archive/2012/01/07/2315685.html) ,内容详尽,真实有用. 另:发一个github使用教 ...

  2. percona-toolkit 工具集安装

    下载地址: www.percona.com/downloads/percona-toolkit     安装方法一,源码安装: perl Makefile.PL make:make install   ...

  3. cocos2d-x推断sprite点击

    我们经常须要推断用户的点击操作是否落于某个sprite之上,进而让这个sprite做出响应. 可是假设我们通过继承CCSprite类来实现自己的Sprite类的时候,产生的视图尺寸会充满屏幕.多个Sp ...

  4. 后缀数组入门(二)——Height数组与LCP

    前言 看这篇博客前,先去了解一下后缀数组的基本操作吧:后缀数组入门(一)--后缀排序. 这篇博客的内容,主要建立于后缀排序的基础之上,进一步研究一个\(Height\)数组以及如何求\(LCP\). ...

  5. 动态数组第k小,Poj(1442)

    题目链接:http://poj.org/problem?id=1442 本来想复制一下,然后直接sort,结果T了. 在网上看了一下,有用两个队列做的,想了半天,没看懂什么意思.后来模拟一边,总算是懂 ...

  6. centos6 yum 安装 install c++4.8 gcc4.8

    cd /etc/yum.repos.d wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo yum --enablerep ...

  7. 第22章 常用存储器介绍—零死角玩转STM32-F429系列

    第22章     常用存储器介绍 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...

  8. C#定义常量的两种方法

    在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant).前者用“const”来定义,后者用“readonl ...

  9. sup inf max min

    来自这里,觉得定义和举例都是最清楚的.http://www.math.illinois.edu/~ajh/347.summer14/completeness.pdf

  10. shell脚本结构化语句

    本文中记录一下shell中的两种循环语句:for和while for循环 for循环是linux shell中最常用的结构,for循环有三种结构:1.列表for循环.2.不带列表for循环.3.C风格 ...