机器学习技法总结(一):支持向量机(linear support vector machine,dual support vector machine)
第一阶段技法:
large margin (the relationship between large marin and regularization), hard-SVM,soft-SVM,dual problem(解对偶问题),kernel trick,kernel logistic regression,
主要思路是:(这里不区分线性与非线性,差别只是特征空间转换,X空间与Z空间的关系)
1. 从PLA出发,对于二维平面的二分类问题,PLA可能得出一堆能够正确分类的直线,但是哪一条直线会是最好的呢?我们应当如何评价分类的好坏呢?从而导出了large margin 和 support vector的概念。
具有large margin的那条直线具有更好的抗干扰能力,鲁棒性好。而影响margin大小的其实就是在fat边界上的那些数据,这些数据叫做support vector(candidate)。所以,就有了这样的一个优化目标,如何通过调节w使得margin最大。后面就是一系列的数学优化推导,最后转化为二次规划问题得到解决。
下面说明large margin背后所隐藏的一些可以解释为何large margin会“好”的原因:1)从regularization角度看,large margin所对应的优化函数,类似于加了regularizer的线性分类/回归问题,也就是说,large margin对应着regularization;
2)从VC dimension的角度来讲,large margin其实是减少了hypothesis能够shutter的dichotomy(二分类)的数量,也就是说减少了VC dimension,使得模型可以控制overfitting。
2. 我们另一个动机就是:能不能将X特征空间转化到无限维度的特征空间呢?同时为了保证Hoeffding's 不等式对VC dimension的限制及计算量上的限制,则希望转化后的Z空间的VC dimension不跟W的自由度d相关。
因此,开始研究svm的dual problem(对偶问题)。在不断的推导和求解dual support vector machine问题时,用到了著名的KKT条件:
通过上面给的推导和解释,我们可以看到,实际上W值是由on fat boundary上面的support vector线性表出的(这就是后面要讲到的表示定理)。数学的推导与理论分析都说明support vector才是主导我们进行模型选择所用到的数据。
所以,现在重新限制support vector,刚开始我们提出的边界上的data叫做support vector(candidate),而这个通过解dual问题得到的决定W的alpha不为零的data就叫做support vector。
回想PLA,类似support vector machine,这个W都是可以通过样本点线性表出的;PLA实际上是通过犯错误的点表出,而support vector machine则是通过support vector线性表出的。
这就是原始的svm和dual svm的对比。
到目前为止,我们还没有解决W的维度d和计算量的评估,下面将通过一个叫做kernel trick的方法,实现无限维度的特征转换。
机器学习技法总结(一):支持向量机(linear support vector machine,dual support vector machine)的更多相关文章
- 机器学习技法笔记:01 Linear Support Vector Machine
Roadmap Course Introduction Large-Margin Separating Hyperplane Standard Large-Margin Problem Support ...
- 机器学习技法:06 Support Vector Regression
Roadmap Kernel Ridge Regression Support Vector Regression Primal Support Vector Regression Dual Summ ...
- 机器学习技法笔记:06 Support Vector Regression
Roadmap Kernel Ridge Regression Support Vector Regression Primal Support Vector Regression Dual Summ ...
- 机器学习技法笔记(2)-Linear SVM
从这一节开始学习机器学习技法课程中的SVM, 这一节主要介绍标准形式的SVM: Linear SVM 引入SVM 首先回顾Percentron Learning Algrithm(感知器算法PLA)是 ...
- 机器学习技法之Aggregation方法总结:Blending、Learning(Bagging、AdaBoost、Decision Tree)及其aggregation of aggregation
本文主要基于台大林轩田老师的机器学习技法课程中关于使用融合(aggregation)方法获得更好性能的g的一个总结.包含从静态的融合方法blending(已经有了一堆的g,通过uniform:voti ...
- 机器学习技法课之Aggregation模型
Courses上台湾大学林轩田老师的机器学习技法课之Aggregation 模型学习笔记. 混合(blending) 本笔记是Course上台湾大学林轩田老师的<机器学习技法课>的学习笔记 ...
- 【Matrix Factorization】林轩田机器学习技法
在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了. 林首先介绍了机器学习里面比较困难的一种问题:categorical features 这种 ...
- 机器学习常见面试题—支持向量机SVM
前言 总结了2017年找实习时,在头条.腾讯.小米.搜狐.阿里等公司常见的机器学习面试题. 支持向量机SVM 关于min和max交换位置满足的 d* <= p* 的条件并不是KKT条件 Ans: ...
- Coursera台大机器学习技法课程笔记01-linear hard SVM
极其淡腾的一学期终于过去了,暑假打算学下台大的这门机器学习技法. 第一课是对SVM的介绍,虽然之前也学过,但听了一次感觉还是很有收获的.这位博主总结了个大概,具体细节还是 要听课:http://www ...
随机推荐
- ARTS-week7
Algorithm 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. Two Sum 编写一个 SQL 查询,满足条件:无论 ...
- 1220 Vue与Django前后端的结合
目录 vue的安装 Vue前端的设置 页面的分布 后台数据的替换 css样式 Django的配置 国际化配置 axios插件安装 CORS跨域问题(同源策略) 处理跨域问题: cors插件 axios ...
- Python中实现count(distinct )
假设一个表有6个字段c1,c2,c3,c4,c5,c6,有如下的sql语句: select c1,count(distinct(c6)) from tbl where c3>1 group by ...
- node爬虫爬取中文时乱码问题 | nodejs gb2312、GBK中文乱码解决方法
iconv需要依赖native库,这样一来,在一些不支持native模块安装的虚拟主机和windows平台上,我们还是无法安心处理GBK编码. 老外写了一个通过纯Javascript转换编码的模块 i ...
- 手机代理调试Charles Proxy和Fiddler
一.Charles Proxy Charles是一个HTTP代理/HTTP监控/反向代理的工具. 使用它开发者可以查看设备的HTTP和SSL/HTTPS网络请求.返回.HTTP头信息 (cookies ...
- 题解 LA2889
题目大意 多组数据,每组数据给出一个正整数 \(n\),输出第 \(n\) 大的回文数(即 \(1,2,3,\cdots\)). 分析 不难发现,\(n\) 位的回文数有 \(9*10^{\lfloo ...
- shell脚本 基础应用
变量分为普通变量可只读变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...
- cube.js 最近版本的一些更新
有一段时间没有关注cube.js 了,刚好晚上收到一封来自官方的更新介绍,这里简单说明下 更多的数据驱动支持 bigquey, clickhouse snowflake,presto (很棒),hiv ...
- 开源项目 02 HttpLib
using JumpKick.HttpLib; using Newtonsoft.Json; using System; using System.Collections.Generic; using ...
- 廖雪峰Python笔记
△命令行模式和Python交互模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:\>:在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就 ...