一、 K近邻

KNN算法的基本思想就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

其中在计算距离时采用欧氏距离或曼哈顿距离:

k值的选择:当k值较小时,预测结果对近邻的实例点非常敏感,容易发生过拟合;如果k值过大模型会倾向大类,容易欠拟合;通常k是不大于20的整数

优点:精度高,对异常值不敏感

缺点:k值敏感,空间复杂度高(需要保存全部数据),时间复杂度高(平均O(logM),M是训练集样本数)

二、感知机

PLA全称是Perceptron Linear Algorithm,即线性感知机算法,属于一种最简单的感知机(Perceptron)模型。它是支持向量机和神经网络的基础。感知机模型是机器学习二分类问题中的一个非常简单的模型。它的基本结构如下图所示:

假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面。如果是非线性可分的数据,则最后无法获得超平面。所以感知机的目标函数为一条直线或者一个超平面,其输出为:

其中wx+b表示空间中的一点的坐标,我们的目标取找到合适的w和b,使得f(x)和真实的y值相符合,当然不可能达到完全符合,所以应当是尽可能多的点被正确分类。换句话说就是让那些分错类的点越接近边界线越好。这时我们就可以用距离来定义损失函数了:损失值=错误的点到边界的距离的总和。优化的对象便是让这个距离之和最小。

由点到平面的距离公式我们可以得到任意一点距离我们上面定义的模型的距离为:

有了计算距离的方式,我们来看看损失函数究竟怎么定义。这里需要注意的是我们的目标是那些分错类的点,而不是所有点,因此不能直接将距离作为损失函数,所以我们需要找出那些分错类的点,建立他们的损失函数。这里正好可以利用绝对值来进行区分正确点和错误点。对于模型来说,在分类错误的情况下,若wxi+b>0,去掉绝对值不变,则实际的yi应该是等于-1,为了使原式保持正值,则添加一个负号。而当wxi+b<0时,去掉绝对值加负号,此时yi等于1,上式为正值。因此由这个特性我们可以去掉上面的绝对值符号,将公式转化为:

去掉||w||后得到最终的损失函数为:

这里求最小值采用的是随机梯度下降算法,因为我们每次取一个点来判断他是不是错误点,然后才能带入优化。

三、支持向量机SVM

支持向量机与感知机相似。他的目的也是取寻找一条直线或一个超平面将数据进行二分类。只不过感知机的原理是到边界的距离最小,而SVM的原理则是“间隔最大化”。

从上图可以看出,如果数据集线性可分,那么这样的直线又无数条,但是我们的目标是找到一条容忍度最好的直线,即黄色的那条。

  1. 为什么要间隔最大呢?

一般来说,一个点距离分离超平面的远近可以表示分类预测的确信度,如图中的A B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大

2. 怎么计算间隔

f(x)=wTx+b 表示空间中一点的坐标。当f(x) 等于0的时候,x便是位于超平面上的点,而f(x) 大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点。这里的y=1和-1都是可以随意指定的,相当于两种label,为了方便计算就取1和-1了。

根据上述原理我们可以总结为一个表达式:

实际上该公式等价于yi(WTxi+b)≥ +1。这就是最大间隔假设

3. 什么是支持向量

距离超平面最近的这几个样本点满足yi(WTxi+b)=1,它们被称为“支持向量”。虚线称为边界,两条虚线间的距离称为间隔(margin)所谓的支持向量,就是使得上式等号成立,即最靠近两条虚边界线的向量。如果WTxi+b>1,那就说明更加支持了。

所以我们在计算最大间隔的时候,其实关注的是支持向量到超平面的距离。

由上述两式联立可得

对于支持向量,WTxi+b=1或-1,所以最大间隔变为:

这样我们们便确定了目标函数

等价于:

SVM函数的求解属于凸二次规划问题,采用拉格朗日乘数法求解。添加拉格朗日乘子 αi≥0,则整个拉格朗日函数可写成:

4. 非线性支持向量机与核函数技

对于非线性分类问题,显然无法用一个线性分离超平面来把不同的类别的数据点分开,那么可以用以下思路解决这个问题:

  • 首先使用一个变换 z=ϕ(x)将非线性特征空间x映射到新的线性特征空间z
  • 在新的z特征空间里使用线性SVM学习分类的方法从训练数据中学习分类模型

但是,这里有一个问题: ϕ(xi)⋅ϕ(xj)计算起来要分两步,先映射x到z空间,然后在z空间(一般是较高维度)作高维度的內积zi⋅zj。

为了简化这个运算过程,如果我们找到一个核函数K(xi,xj), 即K是关于x的函数,其运算在低维空间上进行,然后使得K(xi,xj)=ϕ(xi)⋅ϕ(xj),那么只需要计算一个比较好计算的核函数K(xi,xj),就可以避免先映射,再在高维空间內积的复杂运算。

常见的核函数有:二次多项式核、高斯核

5. 软间隔

我们一直假设训练样本在样本空间或特征空间食线性可分的,即存在一个超平面能将不同类的样本完全划分开。然而,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分;退一步说,即便恰好找到了某个核函数使训练样本在特征空间中线性可分,也很难断定这个貌似线性可分的结果不是由于过拟合造成的缓解该问题的一个方法是允许支持向量机在一些样本上出错,为此要引入“软间隔”的概念。当然我们还要限制这些分错的样本个数应当越少越好

之前做了一个最大间隔的假设,即所有样本都满足:

也就是说所有的样本都得被分对,这称之为“硬间隔”,而软间隔则允许某些样本不满足约束条件,于是,目标函数可写为

其中C是常数,L0/1是0/1的损失函数:

当C越大,模型的容忍程度就越小,边界越瘦,C越小,边界越胖,越多的样本被分错,所以C为无穷大时迫使所有样本都得满足约束

直接使用0/1的损失函数求解不好求,一般都是将其变为hinge损失函数:

此时,我们的优化目标函数也就变成了:

引入一个变量ξn=1− yi(Wx+b),我们成为“松弛因子”,如果yi(Wx+b)<1,带入hinge损失中,损失值大于0,说明样本被分错,因此ξn代表犯了多少错。优化的目标函数最终变为:

5. LR和SVM不同点

  • LR采用log损失,SVM采用合页(hinge)损失

逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值(基于统计的,其损失函数是人为设定的凸函数) 。支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面.(有严格的推导)

  • LR对异常值敏感,SVM对异常值不敏感

支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用,虽然作用会相对小一些)。LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。

  • 对非线性问题的处理方式不同

LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,还可以通过kernel(因为只有支持向量参与核计算,计算复杂度不高)。(由于可以利用核函数,。SVM则可以通过对偶求解高效处理。LR则在特征空间维度很高时,表现较差。)

  • 正则化不同

SVM的损失函数就自带正则(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因,而LR必须另外在损失函数上添加正则项

svm算法原理_机器学习——分类算法(1)相关推荐

  1. k近邻算法_机器学习分类算法之k近邻算法

    本编文章将介绍机器学习入门算法-k近邻算法,将会用demo演示机器学习分类算法. 在先介绍算法时,先回顾分类和回归的区别.像文章分类识别也是这样处理的,如1代表体育,2代表科技,3代表娱乐属于分类问题 ...

  2. 机器学习分类算法_机器学习分类算法

    人们曾在自身的神经元得到启发,将机器学习中给出的特征输入与权重之积作为输出与阈值作比较,得到0或者1的输出. 这就是我们感知器的实现原理 感知器在实现过程中的步骤如下: ①将权值初始化称为一个很小的向 ...

  3. 开根号的笔算算法图解_机器学习KNN算法之手写数字识别

    1.算法简介 手写数字识别是KNN算法一个特别经典的实例,其数据源获取方式有两种,一种是来自MNIST数据集,另一种是从UCI欧文大学机器学习存储库中下载,本文基于后者讲解该例. 基本思想就是利用KN ...

  4. 【机器学习原理】决策树分类算法

    上一篇:朴素贝叶斯分类算法 文章目录 一.决策树分类 1. if - else 2. 如何种植一棵有灵魂的"树" 3. 决策条件的选择艺术 节点纯度的度量规则 纯度的度量方法 4. ...

  5. 15分钟带你入门sklearn与机器学习——分类算法篇

    作者 | 何从庆 本文转载自AI算法之心(ID:AIHeartForYou) [导读]众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机 ...

  6. 深度学习算法原理_用于对象检测的深度学习算法的基本原理

    深度学习算法原理 You just got a new drone and you want it to be super smart! Maybe it should detect whether ...

  7. [转载] python机器学习第三章:使用scikit-learn实现机器学习分类算法

    参考链接: 使用Scikit-Learn在Python中进行embedding/投票分类 训练机器学习算法所涉及的五个主要步骤可以概述如下: 1.特征的选择 2.确定性能评价标准 3.选择分类器及其优 ...

  8. 时间序列分类算法_时间序列分类算法简介

    时间序列分类算法 A common task for time series machine learning is classification. Given a set of time serie ...

  9. 来!一起捋一捋机器学习分类算法

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:算法与数学之美 可是,你能够如数家珍地说出所有常用的分类算法,以及他们的特征.优 ...

最新文章

  1. 详解携程与去哪儿的“去携之战”
  2. 大话移动开发之QT-Quick
  3. 2019年5月21号总结
  4. 【SAP】PO中“交货已完成”的功能解析
  5. 剑网三缘起应老玩家要求调整规则,几分钟就能搞定,获得足够声望
  6. 仿VS窗体效果+outlookbar效果
  7. 要不要买保险,看这篇就够了
  8. 【Vue2.0】—vue-router(二十六)
  9. C++折半查找的实现
  10. 设置共享后其他计算机无法访问,Win7局域网共享设置疑难大全(无法访问,没有访问权限,看不到共享电脑)...
  11. 上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域: 0区 1区 2区 3区 4区 同城 临近两省 1500公里(含)以内 1500——2500公里 2500公里以上 上海 江苏
  12. 我为何在 CSDN 乐在其中
  13. MySQL数据库中,字符串拆分(如将英文姓名拆分为姓氏和名字两个字段)
  14. hmailserver配置(图)
  15. 网页设计~登陆页面源代码
  16. elasticSearch学习笔记04-同义词,停用词,拼音,高亮,拼写纠错
  17. DaVinci:Camera Raw(CinemaDNG)
  18. Python FAQ from newsmth.net
  19. html验证座机号码_JS校验手机号 座机 邮箱 微信号详解
  20. 论企业IT信息化与企业文化的关系

热门文章

  1. AT91SAM9260EK-38k产生原理
  2. asp.net winform 实现复制,粘贴,剪切功能
  3. wp8.1 Study11:APP里文件读写和使用XML和Json序列化
  4. 法兰程序CAD开发的进展
  5. Android应用程序变量
  6. linux的常用操作——open函数
  7. 计算机网络(六)-传输介质
  8. Leetcode--621. 任务调度器
  9. 动态规划--Leetcode121.买卖股票的最佳时机
  10. python map函数返回类型_使用map和lambda函数发送两个参数并返回两个值