集体智慧编程——发现群组

目录

1. 监督学习和无监督学习

2. 对博客用户进行聚类

2.1 建立单词向量

2.2 层次聚类

2.3 列聚类

2.4 K-均值聚类

3. 以二维形式展现数据


1. 监督学习和无监督学习

  • 监督学习:利用样本输入和期望输出来学习如何预测,如:神经网络、决策树、支持向量机、贝叶斯过滤等等;
  • 无监督学习:在一群数据中找寻某种结构,而这些数据本身并不是我们要找的答案。

 

2. 对博客用户进行聚类

根据单词出现的频度对博客进行聚类,可以帮助我们分析出是否存在这样一类博客用户,这些人经常撰写相似的主题,或者在写作风格上十分相似。这样的分析结果对于搜索、分类和挖掘当前大量的在线博客而言是非常有价值的。

2.1 建立单词向量

对博客中的单词进行计数:

BLOG "China" "kids" "music" "yahoo"
Gothamist 0 3 3 0
GigaOM 6 0 0 2
Quick Online Tips 0 2 2 22

我们可以设定范围来减少需要考虑的单词总量,同时也可以剔除无意义的或少量单词。设置的边界可以为0.1~0.5

2.2 层次聚类

通过连续不断的合并最为相似的群组来构造出一个群组的层级结构。每一个群组都是单一元素开始的,在本例中,单一元素为微博。

在本例中,我们采用皮尔逊相似度来计算两两元素之间的相似度。

层次聚类计算量非常大,因为必须计算每两对之间的配对关系,并在合并后重新计算。

2.3 列聚类

之前我们研究的是对用户进行聚类,此外当我们进行市场研究的时候,对消费群体进行分组可以帮助我们摸清楚消费者的统计信息和产品状况,还可能有助于我们确定哪些上架商品可以进行捆绑销售。在博客数据集中,列代表的是单词在每篇博客中的出现次数,知道哪些单词时常会结合在一起使用也是非常有意义的。

直接将矩阵进行转置,然后利用分层聚类即可。

2.4 K-均值聚类

首先随机确定K个中心位置,然后将各个数据项分给最邻近的中心点,分配完成后聚类中心就会移到分配给该聚类的所有节点的平均位置处,然后整个分配过程重新开始,一直重复下去知道分配过程不在产生变化为止。

区别于KNN,KNN是分类算法,K-means是聚类算法。

 

3. 以二维形式展现数据

多维缩放算法:根据每对数据项之间的差距,尝试绘制一幅图,图中数据项之间的距离远近,对应于他们彼此间的差异程度。为了做到这一点,算法需要计算出所有项之间的目标距离。

我们采用皮尔逊相关度来定量:

  A B C D
A 0 0.2 0.8 0.7
B   0 0.9 0.8
C     0 0.1
D       0

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(集体智慧编程,聚类,K-means,层次聚类)