本人原创作品,转载请注明出自网易博客双鱼传说!
说实话,国内的资料少之又少,去搜下GOOGLE大神的KEYWORD好了,我看到的不是求助就是论文摘要。这到底是个啥东西,为什么有人问没人说呢? 不解,我只能自己写……Davies Bouldin index,如果照中文直译的话,可以叫做戴维森堡丁指数,有的论文里叫做分类适确性指标,以下简称DBI。这个指数或者指标是来确定到底你的测试性分类哪个结果最合理。
做数据挖掘的时候,经常你不知道要做多少个Cluster,那么你就需要先按照大体构想来分那么几种测试性聚类,通过计算这个指数,来确定到底哪个Cluster最合理。当然,算法并没有十全十美的,你只能说是理论上合理了,实际这个指数能给别人多大帮助我自己真的也不得而知。
如果纯从公式理解,我相信一定会搞的一头雾水,从最基础的元素说起吧,如果从结果上理解我觉得更能说明问题。DBI其实就是将几个Rmax值叠加,当你做出了几个Cluster,就会出现几个Rmax,这些Rmax值叠加的结果越小就说明这个分类越合理。
而Rmax的取得来源于R,R的公式在下边有说明
其实他很多公式都不需要看的,之要看这一个,了解所有要素的意思,那么这个指数就很简单的算出来了。图中的S说明的是点距,假设你做了5个Cluster这5个中的任意一列就可以视为一个Cluster的分布中点,用数据源中所有的要素去跟这个中点做比对,就出现了S。
上图公式中,已经是细化到点距算法的S,一般是看不懂的,其实你只要知道S是所有要素到分布中心的距离就好了(更确切的说S是一个分布集合中所有点到分布中点的均值)。
假设沃尔玛一年内的所有商品,所有商品都有对应的product_id,把他们月销量的数据检索出以后,每一个product_id可确定为一个空间点,假设你用分析软件吧这些商品分成了5个Cluster,这5个Cluster就确定了5个分布中点,把每个product_id到每一个空间点的距离全部计算出来(这里要用点距公式,平面点你能理解的话这个也不会很难,加几个括号就好了,最后一起开方就OK了),看看这些点的距离到底离哪个Cluster最近,这个商品就属于哪个Cluster。这样就可以知道我所有商品的Cluster属性。比如我Cluster0中有2000件商品,那么把这些product_id到Cluster0的点距加权平均算个AVG这就是S0。
M是整个Cluster集合中每个点到其他点的距离。还是用我做了5个Cluster为例:
0,1,2,3,4 这5个,每个点到其他点的距离是M,就会出现
4+ 3+ 2+ 1 =10
M01 M12 M23 M34
M02 M13 M24
M03 M14
M04
换句读法可能更好理解,M01读作M"0到1",就是Cluster0到Cluster1的距离,也是算两点距离。你做了5个Cluster就有10个M,你做了9个就有36个,这都是可以慢慢自己算的
其实你看看原公式,M本身跟S长的就很像,只不过M是5个分布中点相互之间的距离而已,都是点距!
这样弄明白了S与M那么由上边的公式就不难算出R
R01=(S0+S1)/M01
对比我给的公式跟原公式看看,是不是好理解一些
由于有10个M,那么R值肯定也就是有10个,之后把一类相关的R提取出最大值,比如
R0max=MAX(R01+R02+R03+R04),最后把5个R的最大值全部加起来就是我们所求的DBI。
参考文献:http://en.wikipedia.org/wiki/Davies-Bouldin_index
转自:http://visualmall.blog.163.com/blog/static/1224063812010116046392