数据挖掘之相似性度量

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据挖掘之相似性度量

机器学习或数据挖掘,就是在数据中寻求答案的算法。

而寻求的答案就是训练完成的数据模型。

大部分的数据建模方法都属于这两种:

1)数据汇总,对数据进行简洁的近似描述

如pagerank、聚类

2)特征抽取

如频繁项集(同时频繁出现的元素子集)、相似项(共同元素比例较高的集合对)

在机器学习或数据挖掘之前,还需要概率,或信息论的一些相关知识,现实世界的对象需要转换为计算机的度量方式。

1. TF.IDF

2. 熵的相关概念

3. 相似度的度量及计算

4. 对文本相似度的分析

5. 局部敏感Hash的分析LSH

6. 查找相似项的处理流程

7. 几种距离度量方式

相关知识:

1. TF.IDF

文本分类时,一个重要指标:TF.IDF,分为两个阶段:同一文档中的统计;以文档为粒度,所有文档的统计。

TF: term frequency 词项频率,同一篇文档中,所有词项出现频率的归一化

IDF:inverse document frequency 逆文档频率,所有文档数目,与某一词出现的

文档的数目的比率关系

其中的关系:

不仅仅是一个公式,里面包含了信息论中熵的概念。IDF就是一个特定条件下关键词的概率分布的交叉熵。应用了对数运算。

2. 熵的相关概念

熵,表示信息量的大小,与概率相关。随机变量的不确定性越大,即概率小,其熵也就越大,将其搞清楚,所需的信息量也就越大。 -Pi * log(2, Pi) 求和。一个系统越混乱,则每个变量的概率越小,其熵也就越大。

信息论在通信编码的表示也是一样的,一个变量,在系统中的概率越小,其编码也就越长,因为短的编码要留给概率大的变量。即熵越大,其编码也就越长,这样压缩的效率就比较高。发送一段信息,其需要的编码长度(二进制),也就是 -Pi * log(2, Pi) 求和。或者,可以说,熵越大,信息量越大,一个概率较低的词,可能就是系统信息比较关键的词。

互信息:两个随机变量的相关/依赖程度,可以用来解释一个变量已知时,另外一个变量的不确定的变化。即不确定信息的减少量。

自信息:一个随机变量(信源)发出的信息,这个信息所带来的信息量的度量。一次事件发生的提供的信息量-log(2, Pi),有时与熵的含义相同(当事件只发生一次时)。

而熵是平均信息量,所有自信息的期望。当信息确定时,确定场(无随机性)的熵最小。等概场的熵最大。

熵率:又称字符熵、词熵。信息量的大小随着消息长度的增加而增加。-(1/n)(求和Pi*log(2, Pi))

联合熵:同联合分布函数的形式类似,联合随机变量所表示的平均信息量(期望)。H(x, y) = -求和P(x,y) log(2, P(x, y))

条件熵:H(y|x) = -求和P(x,y) log(2, P(y|x))

联合熵 = 条件熵 + 单变量熵, H(x, y) = H(y|x) + H(x)

互信息的熵 I (x; y) = H(x) - H(y | x) = H(y) - H(y|x), 描述了X中包含有多少Y的信息量,或者是Y中包含了多少X的信息量。

当X, Y相互独立,则其互信息为0. 当I(x; y) >> 0,则两个事件X,Y高度相关;当I(x; y)<<0,则两个事件X,Y 互补分布。

交叉熵:随机变量X的分布p(x)未知,则通过统计手段估计出X的近似分布q(x),则随机变量的交叉熵为H(x, q) = -求和p * log(2,q),H(X,q) >= H(X)

相对熵:Kullback-Leibler divergence,K-L发散度,K-L距离D(p || q) = H(p, q) - H(p)。用来描述当概率密度函数估计有偏差错误时,增加的信息量有多少。因为概率分布的类型,可能会估计错误,如均匀分布,被估计成高斯/正态分布。两个分布的差异,带来的信息量差别。

3. 相似度的度量和计算

Jaccard 度量:A, B两个集合,其相似性为: (A交B) / (A并B), 其值域为[0, 1] 而直接求解A,B集合的相似度时,普通的遍历算法复杂度为N^2, 而采用排序的遍历算法,最优的复杂度也为N*(logN).

如何获取更好的性能计算那?

可以采用minHash的方法。其定义为:已知一个hash函数h(x),具有良好的均匀性,一个集合S, 集合内所有元素,经过hash之后,得到最小hash值的那个元素。hash函数,A、B相同的元素,必定都会hash散列到一个位置/桶内。

若minHash(A) = minHash(B),则说明A, B同时包含最小hash值的那个元素,即这个元素必定是A,B共同的集合。而P (minHash(A) = minHash(B)): 两个minHash值相等的概率等于 A, B的相似度 Jaccard度量。从统计上来讲,二者是无偏估计的关系,但若只选取一个值,方差就显得过高,可以选取多个值,即多个样本。

过程推导? .......

而计算概率P (minHash(A) = minHash(B)) ,可以采用采样的方法,对样本进行统计,然后近似估计。这样利用统计的方式进行理解minHash,后面就简单多了。

如何生成minHash的样本?

有两种方式:1. 选取多个hash函数,而且hash函数之间尽量相互独立,如k个,每个集合就会有k个minHash的样本;2. 选取一个hash函数,而对每个集合只需选取k 个最小hash值的元素。第一种方法的计算复杂度相对较高,若集合元素有N个,则需要k*N次运算,而第二种只需对集合遍历一次。

利用抽样的数据,估计P (minHash(A) = minHash(B)) ,若minHash后,由A计算的新集合为A1, B计算出的新集合为B1,其相似度(A1交B1) / (A1并B1)。而且,由统计学的大数定律,此时估计的期望误差上界为O(1/√k)。

最小hash的应用场景: web文档中的聚类,消除重复近似;或者侦测web网页欺诈;电子文档剽窃检测方法;关联规则的学习工具。

相关文档
最新文档