数据挖掘模型介绍之四:最近邻方法和基于记忆的推理
2014-04-15 10:58
323 查看
1. 原理
最近邻方法的基本原理是:距离最近的个体之间是最相似的,会表现出相同的行为。比如,如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。基于记忆的推理算法和协同过滤算法都是基于这个基本思想的。
基于记忆的推理算法,是在过去的个体中,找到和当前样本最相似的一个或者多个个体,用这些个体的结果作为当前样本的预测结果。
协同过滤算法,是找到和当前样本最相似的其他样本,通过这些最相似的样本的偏好,预测当前样本的偏好。
“相似度”是所有这些算法的核心思想。相似度通常使用距离来度量。
2. 基于记忆的推理
2.1 用途
(1)对新样本进行类别预测或者连续值预测;(2)应用场景包括欺诈监测、响应预测、其他分类预测和连续值预测等。
2.2 基本过程
(1)获取一个训练集,里面包含了各种用于计算相似度的特征变量,和分类结果或估计结果变量,这些特征变量和结果变量都是已知的。(2)计算待预测样本和训练集里每个记录的相似度。
(3)找到和待预测样本最相似的N个记录,N>=1。
(4)根据最相似的N个记录的分类结果或估计结果,预测待预测样本的分类或者估计结果。
2.3 训练集的形成
MBR方法对训练集的平衡性要求比较高,平衡性是指:训练集中预测变量的每个类别包含的样本数应该大体相同。如果某个类别包含的样本数很少,那么,本来属于这个类别的待预测样本,在计算相似度时,很可能因为训练集里这个类别的样本数太少而找到其他类别的相似样本,从而产生误分类。训练集中,每个类有几十个样本是最低要求。
2.4 计算待预测样本和训练集里每个样本的相似度,找到最相似的样本(距离最近的样本,最近邻)
计算相似度过程主要是解决两个问题:一是使用什么方法计算相似度,二是每个待预测样本和训练集中的哪个样本计算相似度。(1)计算相似度的方法
计算相似度的方法主要包括基于距离度量的方法和基于相似度度量的方法(参见另一篇文章《数据挖掘模型介绍之一:相似度模型》)。
(2)待预测样本和训练集中的哪个样本计算相似度
最简单的方式是,待预测样本和训练集中的每个样本计算相似度,找到最相似的样本。
对于训练集特别大的情况或者实时性要求高的场景,可以采取基于聚类的方法,减少训练集样本个数,或者R-树数据结构,提高计算效率。
2.5 根据N个最近邻的结果,产生待预测样本的结果
根据N个最近邻来产生待预测样本的结果的一个关键环节是使用最合适的组合函数。所谓组合函数,是指怎么把N个最近邻的分类结果或者连续型变量的结果组合起来,形成待预测样本的结果。如果N=1,也就是指使用一个最近邻,那么根本不需要组合函数,直接把最近邻的分类或者连续型变量的结果作为待预测样本的结果即可。
如果N>1,就需要使用适当的组合函数来产生待预测样本的预测结果。
对于分类预测,可以采用以下组合函数:
(1)均等投票:用N个最近邻中所属分类最多的那个分类作为待预测样本的分类。相当于让N个最近邻投票,票数最多的类别作为待预测样本的分类。这种方式要注意的是,N的设置应该确保有一个类别得票数高于其他类别,不能出现票数最高类别不止一个的情况。
(2)权重投票:仍然是让N个最近邻投票,但每个最近邻投票的权重不一样,权重值和最近邻与待预测样本的距离成反比,距离越远的邻居,投票的权重越低。最后算出每个类别的加权票数,得票最多的类别就是待预测样本的类。
对于连续值预测,可以使用以下组合函数:
(1)平均值:使用N个最近邻结果的均值。
(2)加权平均值:使用N个最近邻结果的加权平均值,权重和最近邻与待预测样本的距离成反比。
2.6 MBR方法的优缺点
(1)优点原理简单好理解。
因为只需要计算样本之间形似度,所以可以用在非结构化数据上,比如文本数据、音视频数据、图片数据上,只要使用合理的特征提取和表示技术能计算相似度,MBR方法可以用在任何数据形式上。
(2)缺点
需要进行大量计算,因为MBR方法需要计算待预测样本和训练集中所有样本的相似度。
相似度计算,最近邻个数确定,组合函数选取上灵活度高,需要大量的实验。
2.7 MBR方法的关键点(也是主要挑战)
(1)使用一个各类别样本数平衡的训练集。(2)使用适当的距离函数。
(3)找到合适的最近邻个数。
(4)选择合适的组合函数。
相关文章推荐
- mac 单独安装gcc
- UML类图关系-转
- 如何在myeclipse中更改servlet模板
- delphi身份证验证
- 取视频的第一帧作为初始页面
- Android 下paint各大方法小结
- 文件尾追加资源,做成自解压
- myeclipse 和 eclipse 报错总结(查看第三发jar源码)
- STL 之find,find_if,find_end,find_first_of
- apache kafka系列之在zookeeper中存储结构
- Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值
- Android菜鸟的成长笔记(9)——Intent与Intent Filter(下)
- Android ToggleButton(自定义可滑动的ToggleButton控件)
- 文件操作《11》学生成绩的保存和打开
- 浏览器地址栏显示
- win8.1 update推送迟迟没有收到怎么办?
- ubuntu mysql中中文乱码问题
- 实用的一些博客
- 通过SpringMVC整合基于注解的JPA的实例教程代码下载
- ZooKeeper 安装、配置