数据分析、数据挖掘之聚类、分类
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据分析、数据挖掘之聚类、分类
总结:此聚类的模型相对简单,
模型:
集合{
itemN:{col1:n1,col2:n2,col3:n3,...,coln:n}
}
⼆维表形式:column1 column2 column3 ... columnN item
关键在于数据准备阶段,⽐如,对博客进⾏聚类的时候,按照"每个单词在出现在博客列表中的次数(注意是不论在⼀篇博客中出现多少次,都算只能算⼀次),取次数/博客总数,取10%-50%区间中的单词",做为col,来构建模型
然后根据随机选取的k个点,遍历整个集合,将元素放到距离⾃⼰最近的k个点之⼀
重新计算k个集合的中⼼点,重新迭代;直到k个集合不在变化
优化:
1.对连续型数据⽤⽪尔逊距离(两个元素相同时为1,不同时为0,所以⽤1-⽪尔逊距离)代替欧⼏⾥得距离,来避免博客篇幅较⼤时对群组划分不准确的影响
2.对离散型数据,⽐如在{物品:{persion1:1,persion2:0,...,persionN:1}}模型中,客户购买与否被数据化为1、0,所以⽤Tanimote系数来衡量两个物品间的距离,其计算公式为1-(float)(共同购买的⼈数)/(单独购买物品1的⼈数+单独购买物品2的⼈数-共同购买的⼈数),即并集与交集的商
3.对模型转置后,可对列进⾏聚类,但是在⾏、列较⼩的维度上进⾏聚类时,得到的模式更加有意义,例如,单词的数量⽐博客多,此时在⾏上进⾏聚类,得到的模式更为合理
1.⽬的
是⼀种⽤于寻找紧密相关的事、⼈和观点,并将其可视化的⽅法
场景:
利⽤常规的消费者消费记录⾃动检测出具有相似购买模式的消费者群体
在⽣物学⾥寻找具有相似⾏为的基因组
2.监督学习和⽆监督学习
监督学习(supervised learning):通过检查⼀组输⼊和期望的输出来进⾏“学习”,传⼊⼀组数据,利⽤学习到的知识产⽣⼀个输出,如神经⽹络、决策树、向量⽀持机和贝叶斯过滤
⽆监督学习:从⼀组数据中寻找某种结构,如聚类算法⾮负矩阵因式分解⾃组织映射
3.聚类算法:
a.数据准备
定义⼀组公共的数值型属性,利⽤这些属性对数据项进⾏⽐较,⽐如上⼀章的对delicious⽹站上的标签⽤0 1来进⾏数据化
b.运⽤算法:
分级聚类:
原理:通过连续不断的将最为相似的群组两两合并,来构造⼀个群组的层级结构;其中每个群组都是从单个元素开始的
可视化:通过树状图按层级排列节点,有效的确定⼀个聚类中各个元素见的相似程度,并以此来描述聚类的紧密程度
K-means聚类:
原理:根据随机选取的K个中⼼位置,将各个数据项分配给最邻近的中⼼点,然后根据群组的元素调整中⼼点的位置,重新进⾏分配,直到分配过程不再产⽣变化未知
4.例⼦:
1)对博客⽤户进⾏分类:
数据准备:
a.RSS订阅源包含⼀个标题和⼀组⽂章条⽬,每个⽂件条⽬都有⼀段摘要,对摘要的单词进⾏统计
b.构造数据如下数据模型:
Rss 单词1 单词2
url num Num
c.计算每个单词在出现在博客列表中的次数(注意不是对num的求和,⽽是对单词变量博客列表,出现在此博客,count++),取次数/博客总数,取10%-50%区间中的单词,主要是过滤掉常见和不常见的单词
算法计算(分级聚类):
初始时,每个元素都是⼀个群组;
然后,计算每个群组间的距离(向量间的距离,可以⽤欧⼏⾥得距离),将距离最近的两个群组组成在⼀起,并计算此时的群组的位置(为元素的中间位置)
迭代
直到只剩下⼀个群组为⽌
结果展现:
树状图:
按层级排列节点,利⽤群组间的距离标识群组间的距离
优化:
紧密度(closeness):利⽤(1-⽪尔逊系数)来定义,使得相似度越⼤的元素其距离越⼩。
⽤途:排除博客篇幅较⼤,对群组划分带来的负影响
将距离的算法变为⽪尔逊算法,采取分级聚类的思想进⾏计算
2)列聚类
同时在⾏和列上对数据进⾏聚类是很有必要的。
在进⾏市场研究时,对消费者进⾏分组是⾮常有意义的,有助于了解消费者的统计信息和产品的状况,同时还能有助于我们确定哪些商品可以进⾏捆绑销售
最简单的⽅法就是对数据集进⾏转置,然后对每个单词按照上⾯的⽅法进⾏聚类计算,其数据模型如下:
Rss url1 url2
单词 url url
算法2:K-均值聚类
分级聚类缺点:对结果还需要认为的进⾏分类,同时计算每个配对项间的距离,在数据项特别⼤的时候,速度⾮常慢
流程:
1. 随机定义k个中⼼点
2. 将数据项分配给最邻近的中⼼点,分配完成后,重新计算群组的中⼼点
3. 再次进⾏数据项的分配,直到分配的过程不再产⽣变化,即中⼼点不再变化为⽌
3)例⼦2:针对编号的聚类:
1.数据源:
⽤户在Zebo()上对列举⾃⼰最想拥有的物品
2.从⽹站上抓取数据,构建模型
etl:过滤掉some a new more my own等物品属性词
将数据构建为指定的模型:⾏为物品,列为匿名⽤户,某⽤户想拥有此物品记为1,否则计0;
3.选取距离计算⽅法:
Tanimote系数:代表的是交集与并集的⽐率,数据只有0 1两种取值,代表有和⽆。
4.结果展⽰。