Andrew机器学习课程笔记(3)—— K均值、SVM、PCA
来源:互联网 发布:mac系统升级教程 编辑:程序博客网 时间:2024/06/01 10:16
支撑向量机(SVM)
探讨 SVM 算法的五个问题:SVM的目标、SVM的机理、非线性SVM、多类别SVM、LR/SVM/NN算法的选择
SVM的目标
以二维特征为例,SVM旨在找到一条分类线,使得边界样本与之有最大的距离(margin):
图1-1. SVM分类器(图片来源:andrew机器学习课程视频)
如图1-1所示,SVM希望找到黑线作为分类准则,两条经过边界样本的蓝线与黑线确定了margin值
SVM的机理
教程从LR算法的目标函数出发,介绍了SVM的算法思路(简直碉堡了有没有)
比较LR和SVM的目标函数(图1-2),可以发现,两者实际上是几乎等价的,唯一的区别是cost函数由LR的对数形式换成了逼近它的折线形式(图2-1下)
图1-2. LR与SVM的目标函数(图片来源:andrew机器学习课程视频)
cost函数修改带来的差别是,SVM的边界筛选条件比LR更严格(图1-3):
图1-3. SVM的筛选边界(图片来源:andrew机器学习课程视频)
此外,另一个不同是,LR输出的是该样本属于正样本的概率,而SVM输出0或1作为分类结果
那么,SVM是如何找到使得margin最大化的那条分类线的呢?
为了方便,首先改写SVM的目标函数
约束条件中,sita和x的乘积如果从向量内积的角度看,等价于sita的模 * x在sita方向上投影的模(图1-4)
图1-4. 向量内积(图片来源:andrew机器学习课程视频)
考虑一个极端的例子:两类样本分布在Y轴两侧,当然最好的分类线就是Y轴(图1-5右),现在假设当前分类线为过原点135度角的直线(图1-5左)
图1-5. SVM分类线的调整(图片来源:andrew机器学习课程视频)
可以看到,左图中x1在分类线的法线sita上的投影长度较短,为了保证内积大于1,必须增大sita的模值,但SVM的目标函数是最小化sita的模值。因此为了增加x1的投影长度,SVM需要将分类线往Y轴方向旋转。
需要说明的是,在这里假设了sita向量的第一个值为0(这样sita向量是过原点的)
非线性SVM
前面介绍的都是线性分类器,与LR基本差不多,然而SVM真正牛逼的地方在于非线性情况的处理
当决策面很复杂时,一种容易想到的方法是:增加特征数目(图1-6)
图1-6. 增加特征复杂度(图片来源:andrew机器学习课程视频)
但特征构造实在是一件太麻烦,太经验化的事情
非线性SVM引入了核函数这样一个东西,听上去很高大上,但其实很简单:首先选择m个marks,然后计算由所有样本点组成的样本向量X与这些marks的相似度,每个相似度(一共m个)即为一个特征(加上sita0,一共有m+1个特征)
图1-7. 非线性SVM(图片来源:andrew机器学习课程视频)
其中这个相似度计算函数就是核函数,一般用高斯核函数
那么随之而来的问题是:这m个marks如何选择?很简单,在样本点里选m个就好了
那为什么通过这种相似度计算的方式可以构造出一个高维的分类面呢?我的理解是:相似度计算实际反映的是每个样本点与marks的距离,这些距离的分布就构成了可能由常见函数都无法描述的分类曲线(对二维),所以实在是一种很天才的思路
多类别SVM
一个SVM一般只能对两类进行划分,如果类别数K大于2,则需要构造K个SVM达到多类别分类的目的
LR/SVM/NN算法的选择
假设特征数为n,样本数为m
K均值
探讨 K-Mean 算法的两个问题:位置初始化、聚类数目K的选取
位置初始化
图2-1展示了由于初始位置的不同,最终可能得到的3种聚类结果(当然我们希望得到第一种)。
那么怎么避免这种不确定性呢?很简单,重复初始化多次(比如100次),每次得到一种聚类结果,最后选择总体误差最小的那个
注意:当K足够大时,重复初始化的次数可以减少,甚至一次就够了(类别较多时随机分布也会更均衡)
K的选取
同样是重复试验的方法,比较不同K值对应的误差值(图2-2):
图2-2. K值的选取(图片来源:andrew机器学习课程视频)
课程提出了“肘点”这一概念(图2-2左),认为选取肘点对应的K值即可。
但图左只是一种理想状况,更多时候的曲线其实是图2-2右的样子,因此Andrew表示,K值的选取最好还是按照实际需求来定(所以扯肘点只是聊聊天咯?。。。)
主成分分析(PCA)
探讨 PCA 的四个问题:PCA的目的、PCA的方法、维度K的选取、PCA的误区
PCA的目的
主成分分析的目标是,找到一种映射,将高维样本压缩为低维(K)样本:
图3-1. PCA的目标(图片来源:andrew机器学习课程视频)
PCA的关键是,找到一组向量(图左是u1,图右是(u1,u2)),使得所有样本到该向量(平面)的距离之和最小
PCA的方法
1. 数据预处理
计算所有样本点的均值,将所有样本值减去均值作为新的特征
如果不同特征的尺度相差较大,还需将每种特征归一化(再除以标准差)
2. 计算样本的协方差矩阵
在这里假设共有m组样本,每个样本有n维
3. 计算协方差矩阵的特征向量
选取从大到小K个特征值对应的特征向量即为所求
在这里教程使用了更方便的 奇异值分解(svd):
图3-2. SVD方法求reduce映射矩阵(图片来源:andrew机器学习课程视频)
如图3-2,选取U中前K个向量,即组成了reduce映射矩阵,乘以原始数据矩阵(n*m)即为降维后的新样本
维度K的选取
到底将维数压缩为多少合适呢?
Andrew建议在平均均方误差与样本方差之比尽可能小的情况下选取尽可能小的K值(下图左):
图3-3. 维度的选择
如图3-3左所示,k值从1开始,不断计算平均均方误差与样本方差的比值,直到其小于0.01(原本数据的偏差有99%保存下来了)
图3-3右展示了一种更简单的方式:利用之前SVD计算得到的对角阵S,前K个对角线值之和与对角线上所有值之和的比例大于99%时即为所求
PCA的误区
1. PCA不是线性回归
图3-4. 线性回归(左)PCA(右)
2. 不要为了解决过拟合问题采用PCA(应该用正则化的方法),因为PCA不考虑结果变量y,可能会丢失一些重要的特征
3. PCA只在由于样本维数太大,导致算法运行太慢,或运行空间不足时才考虑,不要把其当成必备的数据预处理步骤
- Andrew机器学习课程笔记(3)—— K均值、SVM、PCA
- 斯坦福大学公开课 :机器学习课程(Andrew Ng)——13、无监督学习:Principal Component Analysis (PCA)
- 机器学习——Andrew NG老师课程学习笔记
- Andrew机器学习课程笔记(2)——神经网络、机器学习Tips
- Andrew机器学习课程笔记(6)[End]—— 机器学习的一个应用实例
- 斯坦福大学公开课 :机器学习课程(Andrew Ng)——9、无监督学习:K-means Clustering Algorithm
- Andrew机器学习课程笔记(1)——梯度下降、逻辑回归
- Andrew机器学习课程笔记(4)—— 异常检测
- Andrew Ng机器学习笔记ex7 K-means聚类和PCA
- 【学习笔记】机器学习-K均值(k-means)
- Andrew机器学习课程笔记(5)—— 推荐系统、大数据下的机器学习
- Andrew NG机器学习课程笔记系列之——机器学习之逻辑回归(Logistic Regression)
- Andrew NG机器学习课程笔记系列之——机器学习之正则化(Regularization)
- Andrew NG机器学习课程笔记系列之——机器学习之神经网络模型-上(Neural Networks: Representation)
- Andrew NG机器学习课程笔记系列之——机器学习之神经网络模型-下(Neural Networks: Representation)
- Andrew NG机器学习课程笔记系列之——机器学习之逻辑回归(Logistic Regression)
- Stanford机器学习课程笔记——SVM
- Andrew NG 机器学习课程笔记(一)
- jquery操作select
- ListView的listitem为EditText无法输入内容问题
- Linux常用命令(足以应付面试&转载)
- android 在Bitmap上进行绘图操作
- 【bzoj1149】【ctsc2007】【风铃】【dp】
- Andrew机器学习课程笔记(3)—— K均值、SVM、PCA
- Io 异常: The Network Adapter could not establish the connection 解决方法
- Linux下计算文件哈希值和文件比较
- Java数据库简介
- javascript中闭包
- MyEclipse8.5连接mysql数据库遇到的_SET问题
- erl_线性结构-Josephu(约瑟夫问题 )问题
- Java中集合框架(1)
- 《剑指offer》二进制中1的个数