机器学习算法选用指南

标签: geek | 发表时间:2018-02-27 00:00 | 作者:
出处:http://itindex.net/relian

在从事数据科学工作的时候,经常会遇到为具体问题选择最合适算法的问题。虽然有很多有关机器学习算法的文章详细介绍了相关的算法,但要做出最合适的选择依然非常困难。

在这篇文章中,我将对一些基本概念给出简要的介绍,对不同任务中使用不同类型的机器学习算法给出一点建议。在文章的最后,我将对这些算法进行总结。

首先,你应该能区分以下四种机器学习任务:

  • 监督学习
  • 无监督学习
  • 半监督学习
  • 强化学习

监督学习

监督学习是从标记的训练数据中推断出某个功能。通过拟合标注的训练集,找到最优的模型参数来预测其他对象(测试集)上的未知标签。如果标签是一个实数,我们称之为 回归。如果标签来自有限数量的值,这些值是无序的,那么称之为 分类

1.png

无监督学习

在无监督学习中,我们对于物体知道的信息比较少,特别是训练集没有做过标记。那现在的目标是什么呢?观察对象之间的相似性,并将它们划分到不同的群组中。某些对象可能与其他群组中的对象都有很大的区别,那么我们就认为这些对象是异常的。

2.png

半监督学习

半监督学习包括了前面描述的两个问题:同时使用标记和未标记的数据。对于那些无法标注所有数据的人来说,这是一个很好的方法。该方法能够显著提高准确性,因为在使用训练集中未标记数据的同时,还能使用少量带有标记的数据。

3.png

强化学习

强化学习跟上面提到的方法不太一样,因为在这里并没有标记或未标记的数据集。强化学习涉及到软件代理应该如何在某些环境中采取行动来最大化累积奖励。

4.png

想象一下,你是一个在陌生环境中的机器人,你可以执行一些动作,并从中获得奖励。在每执行一个动作之后,你的行为会变得越来越复杂越来越聪明,也就是说 ,你正在训练自己在执行每一个动作之后让自己表现得更为有效。在生物学中,这被称为适应自然环境。

常用的机器学习算法

现在,我们对机器学习的类型有了一定的了解,下面,我们来看一下最流行的算法及其在现实生活中的应用。

线性回归和线性分类器

这些可能是机器学习中最简单的算法了。假设有对象(矩阵A)的特征x1,... xn和标签(向量B)。我们的目标是根据某些损失函数(例如 MSEMAE)找到最优权重w1,... wn和这些特征的偏差。 在使用MSE的情况下,有一个来自最小二乘法的数学公式:

5.jpeg

在实践中,使用梯度下降来进行优化则更为容易,计算上更有效率。尽管这个算法很简单,但是在存在成千上万个特征的时候,这个方法依然能够表现良好。更复杂的算法可能会遇到过拟合特征或者是没有足够大的数据集的问题,而线性回归则是一个不错的选择。

6.jpg

为了防止过拟合,可使用像lasso和ridge这样的规则化技术。其主要思路是分别把权重总和以及权重平方的总和加到损失函数中。

逻辑回归

逻辑回归执行的是二元分类,所以输出的标签是二元的。给定输入特征向量 x,定义P(y=1|x)为输出 y等于1时的条件概率。系数 w是模型要学习的权重。

7.png

由于该算法需要计算每个类别的归属概率,因此应该考虑概率与0或1的差异程度,并像在线性回归中一样对所有对象取平均值。这种损失函数是交叉熵的平均值:

8.png

逻辑回归有什么好处呢?它采用了线性组合的特征,并对其应用非线性函数(sigmoid),所以它是一个非常小的神经网络实例!

决策树

另一个比较流行、并且容易理解的算法是决策树。它的图形能让你看到你自己的想法,它的引擎有一个系统的、有记录的思考过程。

这个算法很简单。在每个节点中,我们选择所有特征和所有可能的分割点之间的最佳分割。选择每个分割以最大化某些功能。在分类树中使用交叉熵和基尼指数。在回归树中,最小化该区域中的点的目标值的预测变量与分配给它的点之间的平方误差的总和。

9.png

算法会在每个节点上递归地完成这个过程,直到满足停止条件为止。

K-means

有的时候你并不知道标签,而目标是根据对象的特征来分配标签。这被称为 集聚化任务

假设要把所有的数据对象分成k个簇,则需要从数据中随机选择k个点,并将它们命名为簇的中心。其他对象的簇由最近的簇中心定义。然后,聚类的中心会被转换并重复该过程直到收敛。

10.jpg

虽然这个技术非常不错,但它仍然有一些缺点。首先,我们并不知道簇的数量。其次,结果依赖开始时随机选择的那个点,算法无法保证我们能够实现功能的全局最小值。

主成分分析(PCA)

昨晚或者最近的几个小时里你有没有在准备考试?你无法记住所有的信息,但是想要在可用的时间内最大限度地记住信息,例如,首先学习考试中经常出现的定理等等。

主成分分析基于类似的思想。该算法提供了降维的功能。有时,你有很多的特征,并且彼此之间强相关,模型可以很容易地适应大量的数据。然后,你可以应用PCA。

你应该计算某些向量上的投影,以使数据的方差最大化,并尽可能少地丢失信息。而这些向量是来自数据集特征的相关矩阵的特征向量。

11.png

算法的内容现在已经很清楚了:

  1. 计算特征列的相关矩阵,找出该矩阵的特征向量。
  2. 将这些多维向量计算出来,并计算所有特征的投影。

新特征是投影中的坐标,其数量取决于投影的特征向量的数量。

神经网络

在上文讲到逻辑回归的时候,就已经提到了神经网络。在一些具体的任务中,有很多不同的体系结构都非常有价值。而神经网络更多的时候是一系列的层或组件,它们之间存在线性连接并遵循非线性。

如果你正在处理图像,那么卷积深度神经网络能展现出不错的结果。而非线性则通过卷积层和汇聚层表现出来,它能够捕捉图像的特征。

12.jpg

要处理文本和序列,最好选择 递归神经网络。 RNN包含了LSTM或GRU模块,并且能够数据一同使用。也许,最有名的RNN应用是 机器翻译吧。

结论

我希望能向大家解释最常用的机器学习算法,并就针对具体问题如何选择机器学习算法提供建议。为了能让你更轻松的掌握这些内容,我准备了下面这个总结。

线性回归和线性分类器。尽管看起来简单,但当其他算法在大量特征上遇到过拟合的问题时,它的优势就表现出来了。

Logistic回归是最简单的非线性分类器,具有二元分类的参数和非线性函数(S形)的线性组合。

决策树通常与人类的决策过程相似,并且易于解释。但它们最常用于随机森林或梯度增强这样的组合中。

K-means是一个更原始、但又非常容易理解的算法。

PCA是降低信息损失最少的特征空间维度的绝佳选择。

神经网络是机器学习算法的新武器,可以应用于许多任务,但其训练的计算复杂度相当大。

文章原标题《Machine Learning Algorithms: Which One to Choose for Your Problem》,作者: Daniil Korbut,译者:夏天,审校:主题曲。

文章为简译,更为详细的内容请查看 原文

本文由北邮@爱可可-爱生活老师 推荐,阿里云云栖社区组织翻译。

相关 [机器学习 算法] 推荐:

机器学习算法Boosting

- - 标点符
机器学习通常会被分为2大类:监督学习和非监督学习. 在监督学习中,训练数据由输入和期望的输出组成,然后对非训练数据进行预测输出,也就是找出输入x与输出y之间的函数关系F:y = F(x). 根据输出的精确特性又可以分为分类和回归. 分类和回归的区别在于输出变量的类型. 定量输出称为回归,或者说是连续变量预测.

Mahout实现的机器学习算法

- - ITeye博客
使用命令:mahout -h.   在Mahout实现的机器学习算法见下表:. EM聚类(期望最大化聚类). 并行FP Growth算法. 并行化了Watchmaker框架. 非Map-Reduce算法. 扩展了java的Collections类. Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能.

机器学习算法选用指南

- - IT瘾-geek
在从事数据科学工作的时候,经常会遇到为具体问题选择最合适算法的问题. 虽然有很多有关机器学习算法的文章详细介绍了相关的算法,但要做出最合适的选择依然非常困难. 在这篇文章中,我将对一些基本概念给出简要的介绍,对不同任务中使用不同类型的机器学习算法给出一点建议. 在文章的最后,我将对这些算法进行总结.

机器学习实战——k-近邻算法 - panpannju

- - 博客园_首页
(一)什么是k-近邻分类算法. (二)怎样从文件中解析和导入数据. (三)使用Matplotlib创建扩散图. (一) 什么是k-近邻分类算法. 简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类,k-近邻是一种有监督的分类算法. k-近邻的工作原理:存在一个样本数据集,也称之为训练样本集,并且样本集中的每个数据都存在标签,即每个样本所属的类别.

Mahout实现的机器学习算法一览表

- - ITeye博客
         Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序,并且,在 Mahout 的最近版本中还加入了对Apache Hadoop 的支持,使这些算法可以更高效的运行在云计算环境中.

流行的机器学习算法概述

- - CSDN博客推荐文章
  本文我们会概述一些流行的机器学习算法. 机器学习算法很多,并且它们自身又有很多延伸. 因此,如何确定解决一个问题的最好算法是很困难的. 下面我们先说基于学习方式对算法的分类和算法之间的相似性,让大家有个整体意识;接着再陈述各类算法. 一、基于学习方式对算法的分类. 根据如何处理经验、环境或者任何我们称之为输入的数据,算法分为不同种类.

机器学习的分类与主要算法对比

- - CSDN博客综合推荐文章
重要引用: Andrew Ng Courera Machine Learning; 从机器学习谈起; 关于机器学习的讨论; 机器学习常见算法分类汇总; LeNet Homepage; pluskid svm.   首先让我们瞻仰一下当今机器学习领域的执牛耳者:.   这幅图上的三人是当今机器学习界的执牛耳者.

基于机器学习方法的POI品类推荐算法 -

- -
在美团商家数据中心(MDC),有超过100w的已校准审核的POI数据(我们一般将商家标示为POI,POI基础信息包括:门店名称、品类、电话、地址、坐标等). 如何使用这些已校准的POI数据,挖掘出有价值的信息,本文进行了一些尝试:利用机器学习方法,自动标注缺失品类的POI数据. 例如,门店名称为“好再来牛肉拉面馆”的POI将自动标注“小吃”品类.

[译] 如何选择正确的机器学习算法?

- - IT瘾-dev
机器学习既是一门科学,也是一种艺术. 纵观各类机器学习算法,并没有一种普适的解决方案或方法. 事实上,有几个因素会影响你对机器学习算法的选择. 有些问题是非常特别的,需要用一种特定的解决方法. 例如,如果你对推荐系统有所了解,你会发现它是一类很常用的机器学习算法,用来解决一类非常特殊的问题. 而其它的一些问题则非常开放,可能需要一种试错方法(例如:强化学习).

机器学习算法之主成分分析PCA

- - 标点符
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一. 在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用. 一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结. 首先考虑一个问题:对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有样本进行恰当的表达.