机器学习的算法选择

总而言之,我们可以通过问自己算法需要解决什么问题,进而发现算法的正确分类。

机器学习的算法选择

上面这张图包含了一些我们还没有讨论的技术术语:

  • 分类(Classification):当数据被用来预测一个分类,监督学习也被称为分类。这是一个例子当指定一张相作为“猫”或“狗”的图片。当只有两种选择时,称为二类(two-class)或二项式分类(binomial 
    classification)。当有更多类别的时候,当我们预测下一个诺贝尔物理学奖得住,这个问题被称为多项式分类(multi-class 
    classification)。

  • 回归(Regression):当一个值被预测时,与股票价格一样,监督学习也被称为回归。

  • 聚类(Clustering):非监督学习最常用的方法是聚类分析或者聚类。聚类是一组对象组的任务,在这样的一种方式下,在同一组中的对象(称为集群)是更加相似的(在某一种意义上),相比其他组(集群)里的对象。

  • 异常检测(Anomaly 
    detection):需要在目标里找到不寻常的数据点。在欺诈检测里,例如,任何非常不寻常的信用卡消费模式都是可以的。可能的变化很多,而训练示例很少,这看起来不是一种可行方式了解欺诈活动。异常检测需要的方法是简单地了解什么是正常的活动(使用非欺诈交易历史记录),并且确定明显不同的内容。

第2步:找到可用的算法

现在我们有分类问题,我们可以使用工具去调研和验证算法是可行的和可实践的。

Microsoft Azure已经创建了一个方便的算法表格,这个表格显示算法可以被用于哪些问题分类。虽然这个表格是针对Azure软件,它一般适用于:

机器学习的算法选择

一些值得关注的算法是:

分类(Classification):

  • 支持向量机(SVM):通过尽可能宽的边缘方式发现分离类的边界。当二分式不能清晰的切分时,算法找到最好的边界。这个算法真正的亮点是强烈的数据特征,好像文本或者染色体组(>100特性)。在这些情况下,SVMs比其许多其他算法更快递切分二项,也更少地过度拟合,除了需要少量的内存。

  • 人工神经网络(Artificial neural networks):是大脑启发学习算法,覆盖多项式分类、二项式分类,以及回归问题。它们带来了无限的多样性,包括感知和深度学习。它们花费很长时间进行训练,但是带来各种应用领域的先进性能。

  • 逻辑回归(Logistic regression):虽然包含‘回归’这个词看上去有点令人费解,逻辑回归事实上是一个对于二项式和多项式分类来说强大的功能。它很快和简单。事实是它使用了‘S’形曲线代替直线让它对于切分数据进入组变得很自然。逻辑回归给出线性分类边界(linear class boundaries),所以当你使用它来确保一个线性近似的时候,类似于你生活中可以使用的一些东西。

  • 决策树和随机树(Decision trees、random forests):决策森林(回归、二项式,以及多项式),决策丛林(二项式、多项式),以及提高决策树(回归和二项式)所有被称为决策树,一种机器学习的基本概念。决策树的变种有很多,但是它们都做了相同的事情,使用相同的标签细分特征空间到各个区域。这些可以是一致类别或者恒定值的区域,依赖于是否你正在做分类或者回归。

回归(Regression):

  • 线性回归(Linear 
    regression):线性回归拟合直接(或者平台,或者超平面)数据集。这是一个工具,简单而快速,但是对于一些问题可能过于简单。

  • 贝叶斯线性回归(Bayesian linear 
    regression):它有非常可取的品质,避免了过度拟合。贝叶斯方式实现它通过对可能分布的答案作出一些假设。这种方式的其他副产品是它们有很少的参数。

  • 提高决策树回归:如上所述,提高决策树(回归或二项式)是基于决策树的,并通过细分大多数相同标签的特征空间到区域完成。提高决策树通过限制它们可以细分的次数和每一个区域的最小数据点数量避免过度拟合。算法构造一颗序列树,每一颗树学习补偿树前留下的错误。结果是非常准确的学习者,该算法倾向于使用大量内存。

聚合(Clustering):

  • 层次聚类(Hierarchical 
    clustering):层次聚类的试图简历一个层次结构的聚类,它有两种格式。聚集聚类(Agglomerative 
    clustering)是一个“自下而上”的过程,其中每个观察从自己的聚类开始,随着其在层次中向上移动,成对的聚类会进行融合。分裂聚类(Divisive 
    clustering)则是一种“自顶向下”的方式,所有的观察开始于一个聚类,并且会随着向下的层次移动而递归式地分裂。整体而言,这里进行的融合和分裂是以一种激进的方式确定。层次聚类的结果通常表示成树状图(dendrogram)形式。

  • k-均值聚类(k-means 
    clustering)的目标是将n组观测值分为k个聚类,其中每个观测值都属于其接近的那个均值的聚类,这些均值被用作这些聚类的原型。这会将数据空间分割成Voronoidan单元。

异常检测(Anomaly detection):

  • K最近邻(k-nearest 
    neighbors/k-NN)是用于分类和回归的非参数方法。在这两种情况下,输入都是由特征空间中与k最接近的训练样本组成的。在k-NN分类中,输出是一个类成员。对象通过其k最近邻的多数投票来分类,其中对象被分配给k最近邻并且最常见的类(k是一个正整数,通常较小)。在k-NN回归中,输出为对象的属性值。该值为其k最近邻值的平均值。

  • 单类支持向量机(One-class 
    SVM):使用了非线性支持向量机的一个巧妙的扩展,单类支持向量机可以描绘一个严格概述整个数据集的边界。远在边界之外的任何新数据点都是足够非正常的,也是值得特别关注的。

第3步:实现所有适用的算法

对于给定的问题,通常会有一些候选算法可以适用。所以我们如何知道哪一个可以挑选?通常,这个问题的答案不是那么直截了当的,所以我们必须反复试验。

原型开发最好分两步完成。第一步,我们希望通过最小化特征工程快速而简单地完成几种算法的实现。在这个阶段,我们主要兴趣在粗略来看那个算法表现更好。这个步骤有点类似招聘:我们会尽可能地寻找可以缩短我们候选算法列表的理由。

一旦我们将列表缩减为几个候选算法,真正的原型开发开始了。理想地,我们想建立一个机器学习流程,使用一组经过精心挑选的评估标准比较每个算法在数据集上的表现。在这个阶段,我们只处理一小部分的算法,所以我们可以把注意力转到真正神奇的地方:特征工程。

 

 

摘自:http://www.infoq.com/cn/news/2017/03/Learning-machine-Demand-selectio













本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6517927.html,如需转载请自行联系原作者



上一篇:定制一款漂亮的终端


下一篇:加密算法说明(Base64、MD5、DES)