最近邻方法:基于存储的推理和协同过滤
基础:当面对新的形势、人们自然地被过去曾经历的记忆所引导。
基于存储的推理
协同过滤会增加更多的信息,因为它不仅使用邻居之中的相似性,还同时考虑他们的不同喜好。
最近邻方法最主要两个概念:从过去寻找类似的记录+把邻居信息结合起来
基于存储的推理
从一个已知记录数据库中搜寻与一条新的记录相类似的预分类记录,然后把这些邻居记录应用于分类和估计。
涉及:欺诈探测、客户响应预测、医学治疗、把相应分类
特点:原样使用数据
关注两种计算:一是距离函数,用于计算在任何两个记录之间的距离;二是组合函数,用于结合几个邻居的结果形成一个答案。
MBR缺点是数据贪婪者,为找到邻居,需要使用大量历史记录,相对训练好的神经网络或已建立的决策树等方法比,更加耗时。
实例:
通过MBR估计某镇的房租
通过结合几个相似城镇的租金数据,估计目标城镇中一套公寓的租金。
MBR首先要找到最近邻居,然后把他们的数据结合起来。
邻居的概念可以从各个角度来理解。在这里,描述邻居的两个重要变量是 人口和中值住宅价格。
两个变量,可以散点图
这里设置找top2邻居,找到两个
组合邻居数据,这里取平均或取中位数量
MBR 面临的挑战
MBR一般包括以下几个选项
1)选择一个适当的训练记录集
2)选择最有效的方法表达训练记录
3)选择距离函数、组合函数和邻居的数目。
1.选择一组平衡的历史记录
每个类有大约相等数目的记录。
2.表示训练数据
找最近邻居的最简单方法,找出未知事件与训练集中每一个记录的距离,并选出距离最小的训练记录。但当记录数目增加的时候,为一条新纪录寻找邻居需要的时间会增加地很快。
案例研究:分类新闻报导
本案例使用基于存储的推理为不同的新闻报导分配类别代码。
1.类别代码?
类别代码是用来描述新闻报导内容的关键词。由新闻检索服务添加到报导中,帮助使用者寻找感兴趣的报导。帮助把关于特别事件的报导自动发送给特别客户,而且帮助实现个性化的描述。
六大种类、361个独立代码 对不同报导所赋予代码的数目和类型各不相同。
2.应用基于存储的推理
功能:分配新闻报导代码
1)选择训练集
近5万条报导,每条8个指定的代码。具有总体代表性。
2)选择距离函数
测量两个文档中包含单词的相似性的相关性反馈为基础。最类似的文档就是基于存储的推理所使用的邻居。
==================================================================
文本数据库中所有的文件都被评分,然后返回那些最相似的文档,同时给出相似性的程度大小,即相关性反馈得分。
本案方法:
1)常用但无意义的词去掉(如的、和)
2)最常用的词语也去掉,大概20%,无法区别文档。
3)剩余词组被收集入一个可搜寻术语的字典,每个词语给个权重(频率取2为底的负对数),反比于数据库中出现的频率。
4)以大写字母打头的词组(“United States")被自动识别,包含在可搜寻术语的字典里。
5)为计算两个报导的相关性反馈得分,将两个报导中可搜寻术语的权重相加。当可搜寻术语在两个报导中表现及其相近的时候,算法计算出一个附加分。
相关性反馈得分是改编自一个已知函数的实例。下面是将得分转换为"距离"的函数
d(A,B)=1-score(A,B)/score(A,A) 这是一个用来发现最近邻居的距离函数
==========================================================================
3).选择组合函数
采用加权和技术。由于最大的距离为1,权重只是1-距离,所以距离小的邻居权重大,距离大的邻居权重小。
未分类报导中的邻居分类
邻居 距离 权重 代码
1 0.076 0.924 R/FE,R/CA,R/CO
2 0.346 0.654 R/FE,R/JA,R/CA
3 0.369 0.631 R/FE,R/JA,R/MI
4 0.393 0.607 R/FE,R/JA,R/CA
一个代码总得分是包含该代码的邻居的权重总和,得分低于某一个阈值的代码将被除去。
如 R/FE的得分是另据1,2,3,4的权重之和,因为它们全部包含R/FE,这样产生一个2.816的得分。
下显示了被至少4个邻居之一包含的5个区域代码的得分结果。
未分类报导中的代码得分
代码 1 2 3 4 得分
R/CA 0.924 0 0 0.607 1.531
。。。。。。。。
1.0阈值之留下3个代码,如R/CA 可保留
4).选择邻居的数目
本案最近邻居的数目只在1-11之间变化
3.结果
正确率符合要求
===================================================================================
测量距离
譬如你想去小地方旅游,想了解天气,你可以把它周围大城市情况做个平均或某种加权估计。
1.什么是距离函数
距离是测量相似性的一种手段
1)定义明确 确定且d(A,B)>0
2)同一性:d(A,A)=0
3)可交换性:d(A,B)=d(B,A)
4)满足三角不等式
对于基于存储的推理,点就是一条数据库记录,当一些约束放宽时,有时仍可较好完成工作。
在数据库中的某处,每个记录都有一个邻居---基于存储的推理需要找到邻居才能正常工作。
给定记录最相似的记录就是记录本身。
====================================================
测量分配代码的有效性:查全率和查准率。增加较多邻居可增加查全率,减少查准率;反过来,提高阈值会增加查准率,但是会减少查全率。
======================================================
2.每次每个字段只建立一个距离函数
如何为具有许多不同类型不同字段的记录来定义距离?
给每个字段距离下定义,然后把每个字段的距离函数组合在一起
如
记录号 性别 年龄 薪金
1 女 27 19000
2 男 51 64000
3
4
5
可以画一个三维的散点图
数值字段四个常用距离函数是:
差的绝对值、差的平方、归一化绝对值(|A-B|/最大差值)、标准差的绝对值(|A-B|/标准差)
归一化比较好的0-1,不会造成谁主导的问题
基于客户年龄的距离矩阵
==========略
性别为分类数据,性别相同为1,性别不同为0
三个字段组合成一个单个记录的距离函数
三种常用办法
距离和(代数和)、归一化求和、欧几里德几何距离。
可增加权重(突出某变量重要性)
3.其它距离函数
邮政编码的距离函数(有趣)。
4.当距离度量已经存在时
=======================================================
协同过滤:可以做出推荐的最近邻方法
已相似群体口味为依据,发现某些物品是否适合个人的技术。
自动协同过滤系统一般为一个新客户推荐有三步骤
1)让新用户挑选或填写一些东西,建立一个客户简档。
2)使用某种相似性度量,比较新客户的简档与其他客户的简挡。
3)按照相似性把客户分级,然后预测项目
===================================
小结:
其他数据挖掘技术,训练集产生个模型,然后抛开训练集工作;而基于存储的推理,它的训练集实际上是模型本身。
基于存储的推理是寻找k个邻居的方法,距离函数决定邻居远近,确定邻居数目,组合函数,好的应用就是推荐。

浙公网安备 33010602011771号