http://blog.csdn.net/pipisorry/article/details/49445387

海量数据挖掘Mining Massive Datasets(MMDs) -Jure Leskovec courses学习笔记 大规模机器学习之支持向量机Support-Vector Machines,SVM

{博客内容:the most powerful techniques available for large-scale machine learning.支持向量机主要应用于非线性分类,分类精度高,但是分类速度较慢。}

线性分类介绍

分类的应用:垃圾邮件过滤Span Filtering

分类的线性模型

二类分类中,如果x(1)代表viagra,由于大多是垃圾邮件的标志,w(1)训练的结果应该是正值;而如果x(2)代表learning,由于大多是正常邮件的标志,w(2)应该是负值。

这里,x本来是一个二值(0、1)向量,但是我们将它规格化了。

线性分类器

皮皮blog

SVM的前导数学公式Mathematical Formulation

好的线性分类器的距离和预测置信度

边缘Margin的定义

最大边缘给出类之间的最大分离性,所以应该选择最大边缘的的分离超平面MMH,其可以定义为W.X + b = 0。

其中边缘就是最大边缘超平面MMH到两个类的最近的训练元组的最短距离。

最大边缘距离的计算

Note: 向量A到B的投影是向量B的单位长。the length of the projection of vector A down to the vector B is the units of the length of vector B.

Note: 这里A到线的距离就是向量AM到w的投影长度,将w视作单位长,距离就成了||AM.w||=||AM||*cos了。

上图说明,点A到线L的距离就是w.A+b

边缘最大问题公式化

gamma就是margin的和,这里将正负统一起来了,当xi和对应的yi同时为正(或者负)时margin的值是正的,否则为负(表示分类错误,会减小max margin的值)。

其中gamma_i是离点最近的长度,也是相对w来说所有gamma中最小的gamma。

这里可以看到,分类都正确时,边缘越大越好。

SVM就是要找到边缘最大时的w,和此时的边缘大小gamma。下面的公式w.x + b >= gamma就是边缘margin线的方程。

边缘侧面的超平面方程记为H1: w.x + b >=gamma,H2: w.x + b <= -gamma。也就是说落在H1上或者上方的元组都是类+1,而落在H2上或者下方的元组都是类-1。统一一下就得到yi(w.x + b) >= gamma。

什么是最大margin,最大margin就是在w下取到的最大的一个gamma,使所有yi(w.xi+b) >= gamma。

want to find the vector w,such that it maximizes the margin.Where here is a set of constraints say the margin is simply the smallest value.Where every our confidence in every prediction is at least that value.

接下来就是如何寻找到这个w了。

皮皮blog

线性支持向量机hard-constrains SVM

{假设数据线性可分}

支持向量

落在边缘超平面H1或者H2上的任意训练元组使yi(w.x + b) >= gamma式等号成立,称为支持向量。也就是说,它们离分离面MMH一样近。本质上,支持向量是最难分类的元组,并且给出了最多的分类信息。

目标是找到一个分类线,使到线最近的点到线的距离最大。也就是说,这根线是由与它最近的一些点共同确定的,而忽略了其它比较远的点。

图中三个带圈的点就能唯一确定这条直线hyperplane,称作支持向量。

如果数据不是退化的degenerate,那么就需要d+1个支持向量来唯一确定这条d维的直线hyperplane。

求解w时存在的问题

问题就是w越大,margin就越大,这不合理。

解决方法是normalized w。并且我们需要margin的距离为单位1(因为w.x + b = 1)。

解决Solution — margin的规格化

最大边缘的计算公式1/||w||

得到margin(gamma)就是1/||w||

调整权重可以使边缘侧面的超平面方程记为H1: w.x + b >=1,H2: w.x + b <= -1,而不是w.x + b >= gamma了。也就是说落在H1上或者上方的元组都是类+1,而落在H2上或者下方的元组都是类-1。统一一下就得到yi(w.x + b) >= 1。

这样,我们的问题就成了,在条件yi(w.xi+b)>=1(能分类开)下,求解最小的w值(对应最大margin)的问题,也就是SVM如何找到最大边缘超平面MMH和支持向量?可以使用KKT条件求解,这个下面再讲。

皮皮blog

非线性支持向量机soft-margin SVM

{数据可能线性不可分}

线性不可分数据的SVM分类改进

改进:在条件yi(w.xi+b)>=1(能分类开)下,最大化边缘(最小化w)的同时,最小化mistakes的数目C。

Why do we call it the slack penalty?Is because it controls between the size of the cost of the margin.How much are we wishing to make the margin big?And how much, are we penalizing our misclassification mistakes?

不是所有mistakes都是对等的,我们要利用margin来惩罚mistakes。

松弛惩罚C

引入松弛变量slack var
ξ,对数据点错误分类而增加的限制或者惩罚。也就是错误分类点和另一边margin的距离ξ(如图),要分类正确需要移动那么长的距离ξ。

可知,使用SVM分类错误的话confidence
= yi(w.xi+b)会<=0(也就是ξi
= 1-yi(w.xi+b)大于1),要移动距离ξi才会分类正确,否则confidence
= yi(w.xi+b)>=1。

上面公式的理解:

公式中加上∑ξi是想要最小化错误分类的权重和。

下面的条件是本来分类错误confidence
= yi(w.xi+b)没有>=1(也就是<=0),加上移动的距离ξi就可以分类成功了。这样我们可以用这个条件得到ξi
= 1-yi(w.xi+b)[见下面的总结]。

we also require the confidence in our classification is at least 1.And if it's not 1,then we have to subtract the value of psi, this is basically whenever our example is correctly classified,our confidence will be greater than 1.And we can, in that case,will
be able to set the value of psi to 0.Otherwise, if that is not the case,we will have to set the value of psi to some nonzero value.Which means we will occur some penalty in the optimization problem.

C的作用

C=0时,意味着我们想要w尽量小(为0)。图没画好,不知道怎么解释了都。

非线性SVM综合公式

分类错误yi(w.xi+b)会大于1,这样就要移动距离ξi
= 1-yi(w.xi+b),也就是惩罚项。否则yi(w.xi+b)<=1,不用惩罚,即惩罚为0。

Hinge Loss的解释

在1处有一个hinge(铰链, 枢纽),而理想状态的loss应该是分类错误惩罚1,否则惩罚0(无惩罚)。

这里就有一个问题,这样做会不会使SVM对离群点过于敏感?也就是分类错误的那个点过于错误,对min项影响大?也许C的大小就是解决这个问题的关键了!

皮皮blog

皮皮blog

from:http://blog.csdn.net/pipisorry/article/details/49445387

ref:

海量数据挖掘MMDS week6: 支持向量机Support-Vector Machines,SVM的更多相关文章

  1. 【Supervised Learning】支持向量机SVM (to explain Support Vector Machines (SVM) like I am a 5 year old )

    Support Vector Machines 引言 内核方法是模式分析中非常有用的算法,其中最著名的一个是支持向量机SVM 工程师在于合理使用你所拥有的toolkit 相关代码 sklearn-SV ...

  2. [C7] 支持向量机(Support Vector Machines) (待整理)

    支持向量机(Support Vector Machines) 优化目标(Optimization Objective) 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非 ...

  3. 斯坦福第十二课:支持向量机(Support Vector Machines)

    12.1  优化目标 12.2  大边界的直观理解 12.3  数学背后的大边界分类(可选) 12.4  核函数 1 12.5  核函数 2 12.6  使用支持向量机 12.1  优化目标 到目前为 ...

  4. 机器学习课程-第7周-支持向量机(Support Vector Machines)

    1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...

  5. Ng第十二课:支持向量机(Support Vector Machines)(三)

    11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...

  6. 十二、支持向量机(Support Vector Machines)

    12.1 优化目标 参考视频: 12 - 1 - Optimization Objective (15 min).mkv 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都 ...

  7. 海量数据挖掘MMDS week6: MapReduce算法(进阶)

    http://blog.csdn.net/pipisorry/article/details/49445519 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  8. 海量数据挖掘MMDS week6: 决策树Decision Trees

    http://blog.csdn.net/pipisorry/article/details/49445465 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  9. stanford coursera 机器学习编程作业 exercise 6(支持向量机-support vector machines)

    在本练习中,先介绍了SVM的一些基本知识,再使用SVM(支持向量机 )实现一个垃圾邮件分类器. 在开始之前,先简单介绍一下SVM ①从逻辑回归的 cost function 到SVM 的 cost f ...

随机推荐

  1. log4j的终极封装

    通用型(再也不用每个类new一个logger了) public class Log { private static Map<String,Logger> loggerMap = new ...

  2. WUOJ-ACM :1003: 零起点学算法78——牛牛

    武汉科技大学ACM :1003: 零起点学算法78--牛牛Problem Description牛牛是一种纸牌游戏,总共5张牌,规则如下: 如果找不到3张牌的点数之和是10的倍数,则为没牛: 如果其中 ...

  3. 什么样的简历受HR青睐?

    简历是我们在求职过程中的名片,那么如何写出更容易受到HR青睐的简历呢? HR可能一天要看上百份的简历,他们都希望能够尽快筛选出合适的人,然后用更多的时间去跟候选人沟通.所以招聘人员一般看一份简历只会花 ...

  4. Oracle中时间和日期函数总结

    查看当前日期格式:select * from nls_session_parameters where parameter='NLS_DATE_FORMAT'; 修改日期的格式: alter sess ...

  5. Docker标准化开发测试和生产环境

    对于大部分企业来说,搭建 PaaS 既没有那个精力,也没那个必要,用 Docker 做个人的 sandbox 用处又小了点. 可以用 Docker 来标准化开发.测试.生产环境. Docker 占用资 ...

  6. ELK学习记录二 :elasticsearch、logstash及kibana的安装与配置

    注意事项: 1.ELK版本要求5.X以上,本人使用版本:elasticsearch-6.0.0.kibana-6.0.0-linux-x86_64.logstash-6.0.0.tar 2.Elast ...

  7. Android存储之SQLite数据库

    Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...

  8. Quartz学习笔记1:Quartz概述

    Quartz是开源任务调度框架中的翘楚,它提供了强大的 任务调度机制.Quartz允许开发人员灵活的定义触发器的调度时间表,并可对触发器和任务进行关联映射.此外,Quartz提供了调度运行环境的持久化 ...

  9. shiro架构

    1 shiro介绍  1.1 什么是shiro 分享牛系列,分享牛专栏,分享牛.shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会 ...

  10. ROS机器人程序设计(原书第2版)补充资料 (叁) 第三章 可视化和调试工具

    ROS机器人程序设计(原书第2版)补充资料 (叁) 第三章 可视化和调试工具 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. ~$ rosl ...