在不同的任务中,我应该选择哪种机器学习算法?

2017年11月01日 由 yining 发表 435314 0
当开始研究数据科学时,我经常面临一个问题,那就是为我的特定问题选择最合适的算法。在本文中,我将尝试解释一些基本概念,并在不同的任务中使用不同类型的机器学习算法。在文章的最后,你将看到描述算法的主要特性的结构化概述。

首先,你应该区分机器学习任务的四种类型:




  • 监督式学习

  • 无监督学习

  • 半监督学习

  • 强化学习


监督式学习
监督式学习是指从有标签的训练数据中推断一个函数的任务。通过对标签训练集的拟合,我们希望找到最优的模型参数来预测其他对象(测试集)的未知标签。如果标签是一个实数,我们就把任务叫做“回归(regression)”。如果标签来自无序的值的有限的数量,那么它就是分类。机器学习算法


无监督学习
在无监督的学习中,我们关于对象的信息知道地较少,特别是,训练集是没有标签的。那么,我们现在的目标是什么? 我们可以观察对象组之间的一些相似性,并将它们包含在适当的集群中。有些对象可能与所有集群都有很大的不同,因此我们假定这些对象是异常的。机器学习算法


半监督学习
半监督学习任务包括我们前面提到的两个问题:它们使用有标签的和没有标签的数据。对于那些不能给自己的数据贴上标签的人来说,这是一个绝佳的机会。该方法使我们能够显著地提高精确度,因为我们可以在训练集中使用少量带有标签的数据。机器学习算法


强化学习
强化学习与前面几个任务不同,因为我们没有带有标签或没有标签的数据集。强化学习是机器学习的一个领域,它关注的是软件agent应该如何在某些环境中采取行动,以最大化累积奖励的概念。机器学习算法


想象一下,你是一个机器人,在一个陌生的地方,你可以完成活动并从所处的环境中获得奖励。经过每次行动之后,你的行为变得更加复杂和聪明,所以,你在训练每一步都表现出了最有效的方式。在生物学中,这被称为适应自然环境。


常用的机器学习算法
现在我们对机器学习任务的类型有了一些直观的认识,让我们来探索一下在现实生活中应用的最流行的算法。


1.线性回归和线性分类器
这可能是机器学习中最简单的算法。你有对象(矩阵A)和标签(向量b)的x1,…xn特征,你的目标是找到最优权重w1,…wn,并且根据一些损失函数来确定这些特征的偏差,例如,用于回归问题的MSE或MAE。在MSE的例子中有一个从最小二乘法中得到的数学方程:机器学习算法


在实践中,用梯度下降法来优化它更容易,它在计算上更有效率。尽管这个算法很简单,但是当你有成千上万个特征时,比如在文本分析中,有成千上万的单词或n-gramm,它就能很好地工作。更复杂的算法会受到很多特征的影响,并且不是庞大的数据集,而线性回归则正相反。


为了防止过度拟合,我们经常使用像lasso和ridge这样的正则化技术。我们的想法是将权重的模块总和和权重的平方和分别加到我们的损失函数中。


2.逻辑回归
不要将这些分类算法与在它的标题中使用“回归”的回归方法混淆。逻辑回归执行二进制分类,因此标签输出是二进制的。我们把P(y=1|x)定义为条件概率,即条件是在给定输入特征向量x的情况下,输出y为1,系数w是模型想要学习的权重。机器学习算法


由于这个算法计算了属于每个类的概率,你应该考虑到概率与0或1的不同,并将其与所有对象的平均值进行比较,就像我们在线性回归中所做的那样。这样的损失函数是交叉熵的平均值:机器学习算法


让y成为正确的答案:0或1,y_pred是预测的答案。根据对数的性质,如果y=0,那么在总和下的第一个加数等于0,并且第二个加数让我们所预测的y_pred越接近0。在y=1的情况下也是类似的。


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




3.决策树
另一种流行且易于理解的算法是决策树。决策树的图形可以帮助你了解你在想什么,它们的引擎需要一个系统的、有记录的思维过程。


这个算法的想法很简单。在每个节点中,我们选择了所有特征和所有可能的分割点之间的最佳分割。每一个分割都被选择,以最大化某些泛函。在分类树中,我们使用交叉熵和Gini指数。在回归树中,我们最小化了下降区域的点的目标值的预测变量和我们分配给它的值之间的平方误差的总和。机器学习算法


我们为每个节点递归地完成这个过程,并在遇到停止条件时完成。它们可以从一个节点上的树叶到树的高度的最小数量上变化。单棵树很少使用,但在与其它许多树的组合中,它们构建了非常高效的算法,如随机森林或梯度树提升。


4.K-Means
有时你不知道任何标签,并且你的目标是根据对象的特征来分配标签。这就是所谓的集群化(clusterization)任务。


假设你想将所有的数据对象划分为k个集群。你需要从你的数据中选择随机的k点,并将它们命名为集群的中心。其他对象的集群由最近的集群中心定义。然后,集群的中心被转换,直到收敛之前,过程都在不断地重复。


这是最清晰的聚类技术,但它仍然有一些缺点。首先,我们不知道集群的数量。其次,结果取决于在开始时随机选择的点,而且算法并不能保证我们能达到泛函的全局的最小值。




5.主成分分析(PCA)
你是否曾在考试的前一天傍晚甚至最后几个小时才开始准备? 一般来说,你不太可能记住所有的信息,但是你想要最大化你能记住的信息,例如,首先复习很多考试中出现的定理,等等。


主成分分析是基于相同的思想。该算法提供了降维。有时,你的特征范围很广,彼此之间的关系可能高度相关,而且模型可以很容易地覆盖大量的数据。然后,你就可以应用PCA了。


你应该在一些向量上计算投影,以最大化你的数据的方差,并且尽可能地将信息丢失的概率降低。令人惊讶的是,这些向量是来自数据集的特征相关矩阵的特征向量。机器学习算法


现在算法变得很明确:




  • 我们计算特征列的相关矩阵,并找到这个矩阵的特征向量。

  • 我们取这些多维向量并计算它们的所有特征的投影。


新特征是投影的坐标,并且它们的数量依赖于特征向量的计数,在你计算的投影上。


6.神经网络
当我们讨论逻辑回归的时候,我已经提到过神经网络。在非常具体的任务中,有许多不同的架构是有价值的。更常见的是,它由一系列的层或组件组成,它们之间有线性连接,并遵循非线性关系。如果你在处理图像,卷积神经网络会显示出很棒的结果。非线性是由卷积和池化层来表示的,能够捕捉图像的性能特点。机器学习算法


为了处理文本和序列,你最好选择重复的神经网络。对于我们预先知道的维度,递归神经网络(RNNs)包含LSTM或GRU模块,并且可以与数据一起工作。


结论
我希望向大家解释最常用的机器学习算法,并就如何根据特定的问题选择一种算法给出建议。为了简化你的工作,我已经准备好了它们的主要特征的结构化概述。




  • 线性回归和线性分类器:尽管表面上看起来很简单,但它们在大量的特征上非常有用,在这些特征中,更好的算法会因过度拟合而受到影响。

  • 逻辑回归:是一种最简单的非线性分类器,它具有参数和非线性函数(sigmoid函数)的线性组合,用于二进制分类。

  • 决策树:通常类似于人们的决策过程,并且易于理解。但它们通常被用于诸如随机森林或gradient boosting之类的组合中。

  • K-means:更原始,但很容易理解算法,它可以完美地作为各种问题的基准。

  • 主成分分析:是一个很好的选择,它可以减少你的特征空间的维度,并尽可能减少信息的丢失。

  • 神经网络:机器学习算法的新时代,可以应用于许多任务,但它们的训练需要巨大的计算复杂性。


推荐:
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消