机器学习包括三方面:协同过滤(主要用于推荐)、分类器和聚类(无监督学习)。
1.协同过滤
协同过滤是推荐系统中使用的技术
• 简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的资讯
基于用户的协同过滤(基于用户的协同过滤算法 UserCF)
简单讲就是,给用户推荐和他兴趣相似的其他用户喜欢的物品
基于物品的协同过滤
简单讲就是,给用户推荐和他之前喜欢的物品相似的物品
程序mahoutSingle
两者的关系及区别:
2.贝叶斯分类器
机器学习算法中,有种依据概率原则进行分类的朴素贝叶斯算法,正如气象学家预测天气一样,朴素贝叶斯算法就是应用先前事件的有关数据来估计未来事件发生的概率
运用朴素贝叶斯分类器建立短信过滤器:
如果我们知道P(垃圾邮件)和P(Viagra)是相互独立的,则容易计算P(垃圾邮件&Viagra),即这两个事件同时发生的概率。20%*5%=1%
贝叶斯公式:独立事件我们可以简单的应用这个方法计算,但是在显示中,P(垃圾邮件)和P(Viagra)更可能是高度相关的,因此上述计算是不正确的,我们需要一个精确的公式来描述这两个事件之间的关系,即贝叶斯公式。
P(垃圾邮件|Viagra)=P(Viagra|垃圾邮件)*P(垃圾邮件)/P(Viagra)=(4/20)*(20/100)/(5/100)=0.8
因此,如果电子邮件含有单词Viagra,那么该电子邮件是垃圾邮件的概率为80%。所以,任何含有单词Viagra的消息都需要被过滤掉。
3.聚类(无监督学习)
定义:聚类:给事物打标签,寻找同一组内的个体之间的一些潜在的相似模式。力图找到数据的自然分组
理 解:聚类是一种无监督的机器学习任务,它可以自动将数据划分成类cluster。因此聚类分组不需要提前被告知所划分的组应该是什么样的。因为我们甚至可 能都不知道我们再寻找什么,所以聚类是用于知识发现而不是预测;聚类原则是一个组内的记录彼此必须非常相似,而与该组之外的记录截然不同。所有聚类做的就 是遍历所有数据然后找到这些相似性
如何找到适合的聚类数:可使用肘部法
聚类步骤Mahout:
• 利用输入数据生成向量
• 将向量写入输入目录
• 写入初始簇中心(optional)
• 运行聚类作业
• 从输出目录中读取簇
k-means是一种通用的聚类算法,它可以容易地应用在大部分场合,它通俗易懂,而且可以很容易的在多台机器上并行执行
canopy聚类的优势在于它得到簇的速度非常快,它只需要遍历一次数据即可得到结果。不需要像k-means那样预先指定簇数量k
模糊k-means聚类(Fuzzy):可以把它看作是k-means的扩展,模糊k-means尝试从数据集中生成有重叠的簇(FuzzyKMeansDriver)
狄利克雷聚类(Dirichlet):创建一个空模型,并尝试将点分配给它。然后,模型粗略地上下调整其参数,试着去拟合数据。(狄利克雷初始状态是一个数据点的集合以及一个ModelDistribution)
TF-IDF加权Mahout(Term Frequency - Inverse Document Frequency):如果一个单词在所有文档中被使用的越频繁,那它对向量中的值得作用就会被抵消得越多
TF:单条文档中的词频
DF:词在多少个文章中出现过,在一个文章中出现多次,只计算一次
N:总文章数