机器学习算法基础(带Python和R代码)(下)

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

7、K-平均数算法


这是一个非监督算法。解决的是分类问题。它采用简单容易的方法将给定数据分成特定数量的簇(假设的K个簇)。在一个簇中的数据点都是同类的,并且都异于其他簇中的点。


记得识别墨水点的例子吗?K-平均数算法有点像这个过程。你看着墨水点,并尝试分辨到底有多少个不同的簇或群。

25.jpg


K-平均数算法怎样形成簇:


1、k-平均数算法为每个簇(共K个)选择一个中心点。

2、每个数据点同其最近的中心点形成一个簇。

3、基于现有的簇,找到每个簇现在的中心点。

4、利用新的中心点,重复2和3,找到每个数据点同新的中心点的最近距离,新成新的K个簇,重复这一过程直到出现聚合,即中心点不变。


如何决定K的值:


在K-平均数算法中,我们有一些簇,每个簇都有自己的中心点。一个簇中的各点同中心点的差的平方和构成了这个簇的平方和值。所有簇的平方和值相加就是这个分簇方案的总平方和值。


我们知道,随着簇的数量的增加,这个值(总平方和值)是递减的。但如果你将簇数与相应的总平方和值画在图里就会发现,在某个K值之前总平方和值下降的很快,而过了这个值后下降的就变缓了。这个K值,就是我们认为的最佳簇数量。

26.jpg


Python Code

27.jpg


R Code

28.jpg


8、随机森林算法


随机森林是表示决策树集合的标志性名词。在随机森林中,我们有决策树集(也叫作森林)。为了基于新对象的属性来分类该对象,每颗树(针对该对象)都给出了一个分类,我们说这棵树“赞成”该分类。森林选择多数树赞成的分类。


每颗树都按以下方式培育:


1、如果训练集的案例数是N,那么使用重置随机抽样N次产生一个样本,该样本将会作为决策树的训练集。

2、如果有M个输入变量,那就指定一个数m(m<<M)使得对每个节点,m个变量都从M个输入变量中随机选取,而且让这m个变量的分法应用于分类节点。m的值在整个森林生长过程中不变。

3、每棵树都长到最大,全程不剪枝。


更多关于这个算法的细节,请比较决策树和优化模型参数。我推荐你读一读下面几篇文章:

1、随机森林介绍——简化版

2、CART模型与随机森林比较(第一部分)

3、CART模型与随机森林比较(第二部分)

4、随机森林模型的参数调优


Python Code

29.jpg


R Code

30.jpg


9、降维算法


过去的4-5年中,各个领域中收集到的数据都呈指数级增长。政府和机构不仅有新的数据来源,而且获得的数据也更详细。


例如,电子商务公司捕捉到了像客户群特征、网站浏览历史、他们的喜好、购买历史等这样的更详细的客户数据,使电子商务公司能比他们(客户们)最近的杂货店主都更准确的给予客户个性化的关注。


作为一个数据科学家,提供给我们的数据也包含了很多特征,这听起来对构建健壮模型是个好消息。但其中也存在着挑战。你如何从1000或2000个变量中识别出那些关键的变量呢?在这里,降维算法和其他的像决策树算法,随机森林算法,PCA算法,因子分析法一起,在相关矩阵、缺失值比例等基础上帮我们确定(关键变量)。


要了解更多关于本算法的介绍,请阅读“学习降维技术的初学者指南”。


Python Code

31.jpg


R Code

32.jpg


10、Gradient Boosting和AdaBoost算法


GBM和AdaBoost算法都是boosting算法,用于处理大量数据,作出高精度预测。Boosting是一种聚集算法,它在几个基础估算子的基础上决策,相对于单一估算子,它提高了健壮性。它组合多个弱的或一般的预测器形成一个强预测器。这些boosting算法在数据科学竞赛(像Kaggle,AV Hackathon,CrowdAnalytix)中表现的总是很好。


更多的请查看:详细了解Gradient Boosting和AdaBoost算法


Python Code

33.jpg


R Code

34.jpg


GradientBoostingClassifier和随机森林是两种不同的boosting树分类器,而且人们也经常问到两种算法的不同


后记


到现在,我确定你已经有了常用机器学习算法的概念了。我写本文并提供R和Python代码的唯一目的就是让你可以快速开始。如果你热切的想掌握机器学习,立即开始吧。带着问题,获得(应用这些代码)过程中的具体理解,并体会其中的乐趣吧。





英文原文:https://www.analyticsvidhya.com/blog/2015/08/common-machine-learning-algorithms/
译者:yuezy3
 

2月15日11:00到13:00网站停机维护,13:00前恢复