Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Chapter 6:Similarity-Based Methods

Chapter 6:Similarity-Based Methods

作者头像
西红柿炒鸡蛋
发布于 2019-03-05 03:03:37
发布于 2019-03-05 03:03:37
6660
举报
文章被收录于专栏:自学笔记自学笔记

①Similarity Measure

相似度的衡量方法: Euclidean Distance(欧几里得距离):

Mahalanobi Distance(马氏距离):

,其中Q是一个半正定的协方差矩阵,是多维度数据之间的方差。马氏距离比高斯距离考虑的更全面,因为他把数据的维度和数据的大小都考虑了进来。中间的Q矩阵就是起到这个作用,

Cossim Similarity:这个是余弦距离,

常用于在文本向量相似度的比较之中。 Jccard Coeffcient:

这个比较方法常用于在集合的对比,也就是推荐系统的优良性度量里面。

②Nearest Neighbor

Two competing Principles: ①拟合数据并且得到较低的in-sample error ②in-sample error必须是可信的,可以作为out-of-sample的估计 规则:用最近邻的k个点的变量的类别来指定当前点的类别 Voronoi图:是由一组连续的两邻点直接的垂直平分线组成的连续多边形。 最近邻算法不需要训练过程,所以它是可以实现In-sample error为0的,因为in-sample error就是训练集里面产生的。

③VC Dismension

由于kNN算法理论上是可以拟合任何数据,所以它是可以shatter任何数据,所以它的VC维是无限的,这和凸边型是一样的。

④Feasible of Nearest

在KNN里面的label是一个固定的值,它的概率是百分之一百,我们假设他和logistic regression一样,label是由一定的概率组成。

,当

再假设

因为f(x)是我们的最优分类器,所以上面的

就是我们能够对一个点做到最好的

的结果了。

上面就是最好情况,现在来看看普通情况:

这个时候x的类别是由离x最近的那个点决定的。所以:

当N足够大的时候,在一个有限的空间里面,

可以无限接近,那么

,两边取期望:

这只是一种大概的证明方法,如果要更加细致一点: 首先由

,回到上面的式子:

,两边取期望:

如果上面的不等式满足N是非常大的一个数,而且

是平滑的而且是连续的,那么

,所以后面那一项就可以去掉了。

⑤The power of the nearest neighbor

KNN的能力上面已经证明过了,虽然VC维是无穷,以至于表面上看起来没有上面作用,但是实际证明已经表面他的最高错误界限是最优的两倍,也就是说他至少是可以做到最优化分类器的两倍。 K参数控制了这个模型的复杂度,大的K可以使我们得到更加平滑的结果。当k = N的时候,那么整一个分类器就是一个常数的了。

⑥Proper K value

一般是K = 3就够了:

很明显,k = 5的效果肯定是比k = 3要好的,但是相对来说,增长这么一点准确率根本不算什么,hardly worth the effort,不值得我们这么做。 但是这必须要满足两个假设:

这是为了保证这k个点一定要和当前点足够接近 k->+

是为了保证有足够多靠近的点 满足上面情况那么这个knn分类器是就是最优的。

⑧Improving the efficiency of Nearest Neighbor

对于KNN,有好处也有坏处。 不需要任何的训练过程,直接就可以运行,但是他的训练复杂度转移到了预测上面。优化方法有两个:

Data Condensing

数据压缩,按照最完美的方法,完美要求保留下来的数据集S要和原来的数据空间是一样的,也就是R整体实数,这是一个很苛刻的条件,基本达不到,所以退一步,只要求保留下来的数据集S和训练集空间上匹配就好了,也就是和训练集得到的预测结果一样即可。

Condensed nearest neighbor algorithm

1.初始化压缩数据集S为随机的K个来自训练集的点。 2.选择一个点,使得这个点在训练集合压缩集上的分类不是一致的。 3.把这个不一致点的最近的点放进压缩集 最多重复N步。

Data Editing and Data Condensing Data Editing是数据编辑,是去掉噪音点,如果有一个点是和大致数据走向是不一致点的,那么这个点很有可能就是噪音点。 Data Condensing是数据压缩,把一些多余的点去掉减少计算复杂度。

Efficient Search

首先要提到的就是分支界限法: 1.把整一个数据集S分成

2.如果当前点到

的中心

的距离比到

的中心

要短,我们就可以忽略

了。 3.假设a是在集合

的最近点,如果存在

,那么a就是最近点了。

Cluster algorithm for Technique above

前面的算法提到了需要聚类,现在就来提一下聚类算法。 目标是选择M个聚类出来。 1.随便选择一个初始点作为中心点。 repeat: 2.选择一个离当前的中心点最远的点,作为第二个中心点,直到凑够了M个中心点。 end; 3.用在当前聚类里面的均值来更新中心点,直到收敛即可。

⑧Nonparametric and Parametric

无参数的模型: 1.没有参数。 2.一般是存储训练数据作为预测使用。 3.如果k或者N选择适当的话,是一定收敛的。 收敛性是无参模型的一大特征。 参数模型: 1.有参数 2.使用一些参数来代表从训练数据里面学习的信息,而无需存储训练数据。 3.只有假设集包含了target function的情况下才会收敛,否则是不会收款的。 半参数模型: 1.需要特定的参数 2.总是会收敛 最典型的参数模型就是线性回归了,逻辑回归,SVM都是,而无参模型就是KNN,半参模型神经网络就是。因为神经网络在理论上是可以拟合任何的数据。

⑨The Confusing Matrix

混淆矩阵是一种可以用来痕量分类效果的一种方法。

这个矩阵就很容易可以看出哪个类别和哪个类别容易混淆。只需要计算有多少个原本类别是

分类成

的即可。

⑩KNN for regression

做回归就很简单了,直接可以使用K个最近点的均值即可。 如果k=1的时候,那么函数就会是阶梯型的阶梯函数。当

,函数是一个常数。

11.Radial Basis Function

在KNN里面,只有K个最近点会影响x的类别判断。在RBF里面,所以的点都会不同程度的为当前点做出贡献。常用的核函数有两个:高斯核,window。

高斯函数

一般我们看到的都是归一化之后的,但是这里还不需要,后面的密度估计会需要了。另外一个重要的组成部分就是r,scale。这是指定了核函数的宽度。

意思是r是长度的单位,也就是随着x增长而增长的单位长度。scale r越小,那么我们会越重视近距离点的贡献。

加上分母的原因是使得权值相加为1. 最后得到的就当前的类别。可以直接类比KNN左回归,也可以做分类,或者加上sigmoid函数做逻辑回归。

window 函数

代会原式子其实就是KNN本身。

12.RBF Networks

解释的两个方向:

一个就是刚刚的式子。这样是把高斯函数隆起的这个小山峰放在当前判断的x点上:

第二种方法就是改写上面的式子:

这样就是把高斯函数的小山峰放在了每一个点x上,在X点处就是对x左的贡献:

高度是W,在预测中需要计算的。在当前的这些bump里面,高度是不一样的,如果我们把它改写一下,把w都变成是固定的,或者说把他们变成参数在训练的时候固定下来:

这样就变成了RBF Networks了。

可以看到参数型的RBF会衰减到0,而非参数的不会。具体证明如下:

13.overfitting

N个参数,对于数据的拟合能力肯定是很强的了,那么过拟合的可能性肯定很高,这个时候就需要处理过拟合的问题了。 解决办法很简单,既然是参数多,那么减少一点参数即可:

偏执项是需要的,如果没有偏执项,在类别的均值不是0的话,整个学习曲线可能会变的扭曲。需要注意的是因为u是在高斯函数里面,所以u参数不是线性的,也就是说这个时候运行基础函数是依赖于参数的,这种情况下对于模型的性能提升是很大的。k指定的是假设集的大小,r值的就是一个假设的复杂度。

14.Learning for RBF Networks

有两个参数是需要学习,而u参数是非线性的,直接求导计算的话玩不来,所以需要先确定:

根据上面的各种需求就可以求导即可,比如regression,或者是带regular的regression直接套公式即可。

15.KMean均值

上面RBF Network的第一步就是要确定中心点,这里就可以使用k均值算法了。

对上述式子求导即可。

聚类问题是一个NP-hard的问题,但有时候没有必要找到最好的问题,只需要找到比较好的就可以了,然后后面还有w线性参数的优化调整。

16.Probability Density Estimation

x的概率密度是将聚类推广到更精细的表达。密度估计的任务是估计对于给定的x点有多少可能会生成和x相似的点。要知道这个问题,就需要知道数据集里面有多少个和x相似的点。这里的相似度指的其实是距离。

①直方图

把当前空间分成m个相等大小而互不相交的立方体,然后计算每一个立方体里面的点的个数:

加上1/N是为了积分为1,密度积分一定要为1。

但是要满足两个假设,v->0,每一个小空间要趋向于0,这样可以保证空间里面的点是足够接近x的,N*V->

,这样可以保证有足够多喝x相邻的点存在。

②KNN

KNN方法做密度估计问题。对每一个点进行按圆扩张,知道包含了k个点。

比如要计算x的密度,那么在x点按圆形扩张,知道包含了k个点,然后按照如下公式:

很明显,这样画出来的图像有小尖快,局部对称。但是要注意的是,KNN估计密度的空间必须要有边界,因为上面的参数c就是归一化的,如果没有边界,归一化参数c是求不出来的。k要趋向无穷而k/N要趋向于0使得n远大于k,这样可以保证收敛。

RBF估计

继承了高斯函数形状以及收敛性,如果想要减少bump的话是可以增大scale r的。

17.GMMs

高斯混合模型。一个数据点是有多高斯模型互相贡献而成的,需要求这些高斯模型的参数。

w是这个模型贡献百分比,积分为1。 最大似然估计:

E-M算法求解: 先假设一个变量

,这个变量是指定当前第i个高斯分布对第j个数据点左贡献的百分比。

learning from data这本书对于E-M算法没有过多的讲解,都是直观解释,在李航老师的统计学习方法里面的公式推导较为完善,前面的博客也提到。但是对于E-M算法是有两种解释方法的,但是结果都是一样的,一般通俗的是比较好理解的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.01.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【算法面经】:机器学习面试算法梳理
机器学习算法面试一直是大家比较苦恼的事情,各种算法经常弄混,或者无法透彻理解。分享一篇非常好的机器学习算法面试干货总结,梳理算法原理,优缺点。
Python数据科学
2018/12/14
4770
机器学习十大经典算法入门[通俗易懂]
一,SVM(Support Vector Machine)支持向量机 a. SVM算法是介于简单算法和神经网络之间的最好的算法。 b. 只通过几个支持向量就确定了超平面,说明它不在乎细枝末节,所以不容易过拟合,但不能确保一定不会过拟合。可以处理复杂的非线性问题。 c. 高斯核函数 d. 缺点:计算量大
全栈程序员站长
2022/09/07
9940
机器学习十大经典算法入门[通俗易懂]
机器学习算法梳理
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。 纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有相关职位
IT派
2018/03/29
9640
机器学习算法梳理
Radial Basis Function Network
使用高斯核函数方式把数据维度扩展到无限维度进而得到一条粗壮的分界线。仔细看一下这个分割函数,其实就是一些Gaussian函数的线性组合,y就是增长的方向。 Gaussian函数还有另外一个叫法——径向基函数,这是因为这个base function的结果只和计算这个x和中心点xn的距离有关,与其他的无关。 从其他方面来看SVM,先构造一个函数: g(x) = y_nexp(-γ|x - x_n|^2)指数求出来的其实就是x点和中心点的相似度,相似度越高,那么=晚y这个方向投票的票数就会越多。不同的g(x)有不同的权重,他们的线性组合就成了SVM,g(x)函数称为是radial function。所以Gaussian SVM就是把一些radial function联合起来做linear aggregation。
西红柿炒鸡蛋
2018/09/07
7840
机器学习算法总结(面试用到)
找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。   下面是在找机器学习岗位工作时,总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想,希望对大家找机器学习岗位时有点帮助。 实际上在面试过程中,懂这些算法的基本思
机器学习AI算法工程
2018/03/14
1.1K0
机器学习算法总结(面试用到)
中国台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network
红色石头
2017/12/28
9570
中国台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network
人工智能和机器学习面试题
1.简述机器学习常用的分类算法,Logistic回归,SVM,Decision Tree,随机森林等相关分类算法的原理,公式推导,模型评价,模型调参。模型使用场景。
张哥编程
2025/01/19
1420
K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!
什么是聚类算法?聚类是一种机器学习技术,它涉及到数据点的分组。给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。
mantch
2019/07/30
6.7K0
K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!
【通俗理解】RBF网络
在SVM中引入Gaussian Kernel就能在无限多维的特征转换中得到一条“粗壮”的分界线(或者高维分界平面、分界超平面)。从结果来看,Gaussian SVM其实就是将一些Gaussian函数进行线性组合,而Gaussian函数的中心就位于Support Vectors上,最终得到预测模型gsvm(x)。
用户1594945
2019/07/31
1.9K0
【通俗理解】RBF网络
数据挖掘算法汇总_python数据挖掘算法
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说数据挖掘算法汇总_python数据挖掘算法,希望能够帮助大家进步!!!
Java架构师必看
2022/07/06
5940
数据挖掘算法汇总_python数据挖掘算法
干货 | kNN 的花式用法
AI 科技评论按,本文作者韦易笑,本文首发于知乎专栏简单代码(zhuanlan.zhihu.com/skywind3000),AI 科技评论获其授权转载。以下为原文:
AI科技评论
2019/05/15
9940
干货 | kNN 的花式用法
机器学习算法总结(面试用到)
找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。   纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有相关职位,另
陆勤_数据人网
2018/02/26
2.8K0
机器学习算法总结(面试用到)
干货 | 17个机器学习的常用算法!
根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。
Python数据科学
2019/06/21
5350
干货 | 17个机器学习的常用算法!
常见面试之机器学习算法思想简单梳理
导语:今天小编从别的地方推送一篇更广泛的文章供你们学习参考,总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想,希望对大家找机器学习岗位时有点帮助。 前言 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。 纵观IT行业的招
IT派
2018/03/29
6460
常见面试之机器学习算法思想简单梳理
非监督学习
想比于监督学习,非监督学习的输入数据没有标签信息,需要通过算法模型来挖掘数据内在的结构和模式。非监督学习主要包含两大类学习方法:数据聚类和特征变量关联。其中,聚类算法往往是通过多次迭代来找到数据的最优分割,而特征变量关联则是利用各种相关性分析来找到变量之间的关系。
全栈程序员站长
2022/06/29
4730
【陆勤践行】面试之机器学习算法思想简单梳理
找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。 纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有相关职位,另外一
陆勤_数据人网
2018/02/26
8560
【陆勤践行】面试之机器学习算法思想简单梳理
我愿称之为史上最全的深度学习面经总结(附答案详解)
来源丨https://zhuanlan.zhihu.com/p/391954665
小白学视觉
2024/09/23
2940
我愿称之为史上最全的深度学习面经总结(附答案详解)
常见面试之机器学习算法思想简单梳理
前言:   找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。   纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有
小莹莹
2018/04/20
6960
常见面试之机器学习算法思想简单梳理
相关推荐
【算法面经】:机器学习面试算法梳理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档