最近邻方法:基于存储的推理和协同过滤

基础:当面对新的形势、人们自然地被过去曾经历的记忆所引导。

基于存储的推理

协同过滤会增加更多的信息,因为它不仅使用邻居之中的相似性,还同时考虑他们的不同喜好。

最近邻方法最主要两个概念:从过去寻找类似的记录+把邻居信息结合起来

 

基于存储的推理

从一个已知记录数据库中搜寻与一条新的记录相类似的预分类记录,然后把这些邻居记录应用于分类和估计。

涉及:欺诈探测、客户响应预测、医学治疗、把相应分类

特点:原样使用数据

       关注两种计算:一是距离函数,用于计算在任何两个记录之间的距离;二是组合函数,用于结合几个邻居的结果形成一个答案。

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个邻居的方法,距离函数决定邻居远近,确定邻居数目,组合函数,好的应用就是推荐。

 

 

posted @ 2009-05-21 16:10  minmin8110  阅读(325)  评论(0)    收藏  举报