聚类
2015-10-26 23:06
316 查看
北京时间 20151026 22:45
近期在做一个网页抓取,数据分析的相关项目,自己负责数据分析这块。
思路有点乱,由于抓取的数据杂而乱,难以用于最后呈现用户,需要对数据进行分析并整理,因此计划采用数据挖掘中的聚类方法,将数据进行聚类,并从簇中选择
数据用于呈现,项目中采用层次聚类,因为在去除无效数据(入库限制)、重复数据(入库限制),以及相似数据(网页相似性判断)。其中前面两项主要通过字段,即数据匹
配和数据库的特点实现,网页相似怀采用google的simhash算法,这算法挺牛的,理论看懂了,不过其深入的原理并不没吃透,说下自己理解吧。比如对于两个页面A、
B,网页划词之后包含多个关键词WORDi及其权重Wi,计算每个词的Hash值(64位),对于其中位为1,则相应位+Wi,否则-Wi,那么得到一个64位的向量,其中每位为
+Wi或者-Wi,网页所有的关键词得到的64位向量,对应位直接进行求和,得到的结果,即为一个64位向量,其中每位大于等于0则置1,否则置0,得到一个64位的二进
制数NUM(A),同理B得到NUM(B),对NUM(A)与NUM(B)进行异或操作,计算位为1的个数,个数较少则证明两篇文章相似性较高,经验值取小于等于3,则表示网页相
似,认为重复。
下面讲讲聚类逻辑,其实就是用的层次聚类,通过将文章转换为TFIDF向量,以向量之间的cos值作为相似性,以簇间最大距离作为簇间相似性,进行自底向上层次聚
类,是指:首先,将所有网页作为一个单独的簇,选择簇间距离最小的两个簇进行合并;其次,将合并后的簇作为一个新簇,并删除被合并的两个簇;循环上述过程,直
至得到指定簇的个数,或者达到某种收敛条件(簇内平均距离阈值),我采用的是根据网页数据动态调整簇的个数,从大体上来说,尽量设置大一点,因为相似的还是会到一
起,设置簇的数量太少会导致不应该聚类到一起的数据也到一起了。
鉴于博客内容主要为了MARK自己的学习进程,所以可能有些杂乱,顺便讲下自己今天稍微看了些mybatis的内容,主要是讲它如何去连接数据库,通过conf.xml进行
Mapper.xml的读取,在Mapper.xml中设置数据库与bean的对应关系,则可以通过mybatis的session之类的来调用mysql操作语句,这部分纯属mark,并不懂!!!
近期在做一个网页抓取,数据分析的相关项目,自己负责数据分析这块。
思路有点乱,由于抓取的数据杂而乱,难以用于最后呈现用户,需要对数据进行分析并整理,因此计划采用数据挖掘中的聚类方法,将数据进行聚类,并从簇中选择
数据用于呈现,项目中采用层次聚类,因为在去除无效数据(入库限制)、重复数据(入库限制),以及相似数据(网页相似性判断)。其中前面两项主要通过字段,即数据匹
配和数据库的特点实现,网页相似怀采用google的simhash算法,这算法挺牛的,理论看懂了,不过其深入的原理并不没吃透,说下自己理解吧。比如对于两个页面A、
B,网页划词之后包含多个关键词WORDi及其权重Wi,计算每个词的Hash值(64位),对于其中位为1,则相应位+Wi,否则-Wi,那么得到一个64位的向量,其中每位为
+Wi或者-Wi,网页所有的关键词得到的64位向量,对应位直接进行求和,得到的结果,即为一个64位向量,其中每位大于等于0则置1,否则置0,得到一个64位的二进
制数NUM(A),同理B得到NUM(B),对NUM(A)与NUM(B)进行异或操作,计算位为1的个数,个数较少则证明两篇文章相似性较高,经验值取小于等于3,则表示网页相
似,认为重复。
下面讲讲聚类逻辑,其实就是用的层次聚类,通过将文章转换为TFIDF向量,以向量之间的cos值作为相似性,以簇间最大距离作为簇间相似性,进行自底向上层次聚
类,是指:首先,将所有网页作为一个单独的簇,选择簇间距离最小的两个簇进行合并;其次,将合并后的簇作为一个新簇,并删除被合并的两个簇;循环上述过程,直
至得到指定簇的个数,或者达到某种收敛条件(簇内平均距离阈值),我采用的是根据网页数据动态调整簇的个数,从大体上来说,尽量设置大一点,因为相似的还是会到一
起,设置簇的数量太少会导致不应该聚类到一起的数据也到一起了。
鉴于博客内容主要为了MARK自己的学习进程,所以可能有些杂乱,顺便讲下自己今天稍微看了些mybatis的内容,主要是讲它如何去连接数据库,通过conf.xml进行
Mapper.xml的读取,在Mapper.xml中设置数据库与bean的对应关系,则可以通过mybatis的session之类的来调用mysql操作语句,这部分纯属mark,并不懂!!!
相关文章推荐
- ROS 创建package,并加入到eclipse开发环境中
- 解决JS跨域请求
- 百度、谷歌高德等网络地图经纬度偏差纠正以及相关坐标系问题
- HDU - 4300 Clairewd’s message(KMP)
- php数据库访问
- 正则/对象
- c++类继承的成员可见性
- js的event.srcElement与event.target(触发事件对象)
- Union-Find
- Servlet事件监听器
- Leetcode_263_Ugly Number
- [BZOJ1650][Usaco2006 Dec]River Hopscotch 跳石子
- sqlie3 Replace into
- Leetcode_263_Ugly Number
- NSData 和NSArray之间的转换
- Linux(Ubuntu)下如何安装JDK
- 【HDOJ】3234 Exclusive-OR
- 强联通分量
- POJ 3083 Children of the Candy Corn(BFS + DFS)
- python socket and SSL example