一、mahout简介
mahout是Apache SoftWare Foundation旗下的一个开源项目,提供一些可扩展的机器学习领域的经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
二、mahout中的数据表示
mahout中的数据以向量的形式存储。
稠密向量:用一个double型的数组实现。当向量具有很少的非0值时,这种向量表示法效率高,能快速访问
随机访问向量:类似于HashMap的结构,键是int型、值是double型。
序列访问向量:使用int和double的并行数组表示向量。因此,使用它按序遍历整个向量的各个维度是很快的
如:k-means算法,需要重复计算向量的大小,因此选择序列访问向量比随机访问向量要好。
三、将文本装换成向量
在信息时代,文本文件的数量爆炸性增长。公司或者机构可以使用诸如聚类、分类的机器学习算法去发现这些知识。学习用向量表示文本是从海量数据中发现只是的第一步。
TF-IDF介绍:
如果某一个单词或者短语在一篇文章中出现的频率TF高,并且在其他稳重中很少出现的话,那么此单词或者短语就可以用来分类。TF=Term Frequency(单词出现频率),IDF=Inverse Document Frequency(反文档频率)。
四、mahout的聚类、分类算法
分类是指有监督的学习,即要分类的样本是有标记的,类别是已知的;聚类是指无监督的学习,样本没有标记,根据某种相似度度量把样本聚为k类。
1、聚类算法
常使用canopy+k-means两者结合
(1)k-means算法
先确立k个类别,然后各自选取初始化中心,然后不断求平均值,迭代的过程
(2)canopy算法
(3)聚类示例
主要步骤:将文本转化成序列文件->将序列文件转化成向量->运行聚类算法
五、推荐算法
Taste的框架介绍
主要包括下面五个组件
1、基于用户的推荐
结果:把D推荐给用户A,因为C喜欢ACD,A喜欢AC,所以推荐D给A
2、基于商品的推荐
结果:如果一个商品有多个人喜欢,就把这个商品推荐给其他人
3、slope one推荐策略