大数据频道 频道

机器学习的第一步:先学会这6种常用算法

  【IT168 资讯】机器学习领域不乏算法,但众多的算法中什么是最重要的?哪种是最适合您使用的?哪些又是互补的?使用选定资源的非常好的顺序是什么?今天笔者就带大家一起来分析一下。

  通用的机器学习算法包括:

  * 决策树方法

  * SVM

  * 朴素贝叶斯方法

  * KNN

  * K均值

  * 随机森林方法

  下图是使用Python代码和R代码简要说明的常见机器学习算法。

  决策树方法

  决策树是一种主要用于分类问题的监督学习算法,它不仅适用于分类,同时也适用于连续因变量。在这个算法中,把种群组分为两个或两个以上更多的齐次集合。基于显著的属性和独立变量使群组尽可能地不同。

  Python代码:


  R代码:


  SVM

  SVM属于分类方法的一种。在这个算法中,可以将每个数据项绘制成一个n维空间中的一个点(其中n是拥有的特征数量),每个特征的值都是一个特定坐标的值。例如,我们只有两个特征:身高和头发长度,首先将这两个变量绘制在一个二维空间中,每个点有两个坐标(称为支持向量)。然后找到一些能将两个不同分类的数据组之间进行分割的数据。

  Python代码:


  R代码:


  朴素贝叶斯方法

  这是一种基于贝叶斯定理的分类技术,在预测变量之间建立独立的假设。简而言之,朴素贝叶斯分类器假定类中特定特征的存在与任何其他特征存在之间无关。朴素贝叶斯模型很容易构建,对于大型的数据集来说,朴素贝叶斯模型特别有用。最让人心动的是,虽然朴素贝叶斯算法很简单,但它的表现不亚于高度复杂的分类方法。

  贝叶斯定理提供了一种计算P(c),P(x)和P(x | c)的后验概率的方法:P(c | x)。

  P(c | x)是给定预测器(属性)的类(目标)的后验概率。

  P(c)是类的先验概率。

  P(x | c)是预测器给定类的概率的可能性。

  P(x)是预测器的先验概率。

  Python代码:


  R代码:


  KNN

  KNN可以用于分类和回归问题。但在机器学习行业中分类问题更为广泛。K近邻是一种简单的算法,存储所有可用的案例,并通过其K个邻居的投票情况来分类新案例。KNN方法可以很容易地映射到我们的真实生活中,例如想了解一个陌生人,最好的方法可能就是从他的好朋友和生活子中获得信息!

  选择KNN之前需要考虑的事项:

  * 计算上昂贵。

  * 变量需要被标准化,否则较高范围的变量可能会产生偏差。

  * 在进行KNN之前,要进行很多预处理阶段工作。

  Python代码:


  R代码


  K均值

  K均值是一种解决聚类问题的无监督算法。其过程遵循一个简单易行的方法,通过一定数量的集群(假设K个聚类)对给定的数据集进行分类。集群内的数据点对同组来说是同质且异构的。

  K-均值是如何形成一个集群:

  * K-均值为每个群集选取K个点,称为质心。

  * 每个数据点形成具有最接近的质心的群集,即K个群集。

  * 根据现有集群成员查找每个集群的质心。筛选出新的质心。

  * 由于出现了有新的质心,请重复步骤2和步骤3,从新质心找到每个数据点的最近距离,并与新的K个聚类关联。重复这个过程。

  如何确定K的价值

  在K-均值中,我们有集群,每个集群都有各自的质心。集群内质心和数据点之差的平方和构成了该集群的平方和的总和。另外,当所有群集的平方和的总和被加上时,它成为群集解决方案的平方和的总和。随着集群数量的增加,这个值会不断下降,但如果绘制结果的话,您可能会看到,平方距离的总和急剧下降到某个K值,然后会减缓下降速度。在这里,可以找到非常好的的集群数。

  Python代码:


  R代码:


  随机森林方法

  随机森林是一个决策树集合的术语。在随机森林里,我们有一系列被称为森林的决策树。为了根据属性对一个新的对象进行分类,每棵树都给出了一个分类。

  每棵树形成过程如下:

  * 如果训练集中的例数为N,则随机抽取N个例样本,并进行替换。这个样本将成为树生长的的训练集。

  * 如果有M个输入变量,则指定一个数m << M,从M中随机选择每个m变量,并且使用m上的非常好的划分来分割节点。在森林生长期间,m的值保持不变。

  * 让每棵树都尽可能地长到最大。

  Python代码:


  R代码:


0
相关文章