前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【机器学习】机器学习算法预览

【机器学习】机器学习算法预览

作者头像
陆勤_数据人网
发布2018-02-27 15:45:52
9540
发布2018-02-27 15:45:52
举报
文章被收录于专栏:数据科学与人工智能

在这篇文章中,我要带大家预览一下机器学习中最热门的算法。预览主要的机器学习算法可在某种程度上给你这样的一种感觉,让你知道什么样的方法是可靠的。

这里有很多算法都是可靠的,这也许会让你感觉吃不消,看到这么多算法的名字的时候,你也许只能感觉到它叫什么而且它出自哪个地方。

在这篇文章中,我会提供2个方法来帮助你思考和分类这些算法,而这些你也许能用得上。

  1. 我们首先可以按照算法的类型进行分组。
  2. 我们可以根据函数类型的相似度进行分组(就像对很多小动物进行分组那样)。

这些方法都是有用的,但是在这篇文章中,我们会重点讲如何根据相似度进行算法的分组,然后,我们浏览一下不同算法所体现的多样性。

看完这篇文章后,你能更好的理解监督学习里最热门的算法,并知道它们之间的相关联系。

这是一个很好的拟合例子。拟合效果较差的用灰色表示,而其组合为红色。

通过算法类型进行分组

这里有很多不同的方法可以让一个算法针对一个问题里涉及的经验,或者环境,又或者输入数据的名称进行建模。

在很多畅销的机器学习和人工智能教材中,它们首先都会考虑如何根据算法的类型进行运用。

这里,一个算法又会包含几个主要的学习风格和学习方法,然后,我们在这里通过观察这个算法的几个相关例子以及适合解决哪样的问题来预览一下。

这样的分类系统或者组织机器学习的方法是有用的,因为他要你思考输入数据集所起的作用和它的模型可视化展示,而且,你还要从中选择一个模型是最适合解决你所面对的问题,以此得出最佳结果。

下面,我们预览一下各种不同风格的机器学习算法吧。

监督学习

输入数据又可称之为训练数据集,它可以作为判定一封邮件是否为垃圾邮件的标准,或者用于预测股票价格。

模型的准备则针对我们所要进行的相关预测进行训练,而当我们得到一些错误的结果是,它会自我修正。模型的训练将会持续到这个模型能得出一个精度高且是理想范围内的值。

问题的范例则是分类问题和回归问题。

而算法的范例则是逻辑回归以及反向神经网络。

非监督学习

非监督学习的输入数据集没有什么注明,而且一般的得出的结果都是未知的。

模型的准备则是在输入数据集中决定其展示的结构。他可能会提前出一般的规则。它也许会通过相关的数学过程来对称的减少其中的冗余度,或者把数据以相似度集中起来。

它涉及的问题有聚类、降维以及关联规则学习。

它涉及的算法有Apriori算法和K均值。

半监督学习

输入数据集既有已知的,也有未知的。

它用于解决理想状态下的预测问题,而模型必须要学习其相关结构来组织里面的数据,同时做出预测。

它的范例是解决分类问题和回归问题。

其范例算法是一些如何对未标注的数据进行建模的假设所涉及的灵活方法进行延伸。

概述

当我们要处理数据进行建模处理商业决策问题的时候,你最常用的方法就是监督学习和非监督学习。

现在的热门话题就是半监督学习是如何在诸如图像分类这样有大数据库,而里面的数据没有标注那样解决相关问题的。

通过相似度进行分组

从函数(如何运行)的角度来说,算法一般都会按照相似度进行分类。例如,基于树的模型,以及求出神经网络的理想模型。

我认为,这种算法分组方法是最好的,而且,和我们现在要用的非常贴切。

这是一个很有用的分组方法,但不是完美的。这里仍然有很多函数很容易对诸如学习矢量量化来求出神经网络和以实例为基础的最优模型的多分类学习问题。这里也有很多的分类,它们有相同的名字来描述问题和算法的类别,如回归和聚类。

我们可以列举算法两次,或者选择一组主观上认为是拟合效果“最好”的算法来解决这些案例。我喜欢后面一种方法,它无需复制算法来把事情变得简单。

在这一部分的内容中,我会列举很多当今非常流行的算法,并从直观上用我认为是最好的方法进行分组。这样也许在它的组或算法里分组的并不彻底,但这很有代表性,而且随着事情的不断发展,它的作用也会越来越大。

请记住:这里在使用算法解决分类和回归问题的过程中,存在较大的偏见,而且你会遇到2种最常见的机器学习里的监督学习问题。

如果你知道还有什么算法或什么分组没列举出来,在留言板上写上它们并给我们进行分享,让我们研究它。

回归算法

我们一般认为回归算法是在变量之间存在相互关系进行建模的算法,而且通过使用在预测值产生的误差的测量标准来使用模型进行迭代提炼。

回归方法相当于统计学的机器,它与统计机器学习关联了起来。这也许看起来有点费解,那是因为我们能使用回归方法来解决分类问题以及算法的分类问题。说真的,回归就是一种过程。

其中,最热门的算法如下:

  1. 普通最小二乘法回归(OLSR)
  2. 线性回归
  3. 逻辑回归
  4. 逐步回归
  5. 多元自适应回归样条(MARS)
  6. 局部估计散点平滑(LOESS)

以实例为基础的算法

以实例为基础的学习是对实例或被视为是重要或是模型所需的样本的训练数据集的建模过程。

这种方法通常会构建含有样本数据的数据库并用相似度测量标准来与数据库里新的数据进行比较,这是为了找到拟合效果最好的模型并以此进行预测。基于这个原因,实例算法也被称之为胜者为王算法和记忆算法。它聚焦的对象则是存储的实例以及用于实例之间的相似度的展示。

最热门的实例算法如下:

1.k-最邻近

2.学习矢量量化(LQV)

3.自组织图(SOM)

4.局部加权学习(LWL)

正则化算法

这里有一个延伸,针对另一个方法(通常是回归方法)进行基于模型复杂度的惩罚,且更偏爱与更简单的模型,这样也容易进行推广。

我已经在这里分开列举了正则化算法,因为它们很流行,功能很强大,而且易于修改从而变成其他方法。

最热门的正则化算法如下:

  1. 岭回归
  2. 最小绝对值收缩和选择算子(LASSO)
  3. 弹性网络
  4. 最小角回归(LARS)

决策树算法

决策树方法就是基于数据的属性里一些特定的值进行模型构建的方法。、

树结构里的决策叉连接了一系列基于已知结果的用于预测的决策点。决策树可由相关数据训练成解决分类问题和回归问题的方法。一般来说,决策树运行速度快,而且结果精确,是机器学习里最大的宠儿。

决策树最热门的算法如下:

  1. 分类和回归树(CART)
  2. 迭代Dichotomister3(ID3)
  3. C4.5和C5.0(不同条件下有不同的版本)
  4. 卡方自动交互检测(CHAID)
  5. 决策残端
  6. M5
  7. 条件决策树

贝叶斯算法

很明显的,贝叶斯方法就是运用贝叶斯定理来解决诸如分类和回归的问题。

最热门的朴素贝叶斯算法有:

  1. 朴素贝叶斯
  2. 高斯朴素贝叶斯
  3. 多项式朴素贝叶斯
  4. 平均一个依赖估计值)(AODE)
  5. 贝叶斯信念网络(BBN)
  6. 贝叶斯网络(BN)

聚类算法

和回归一样,聚类描述问题的类型和算法的类型。

聚类方法可由诸如质心算法和层次分析法这样的建模方法组织而成。这些方法都是引用数据本身的内部结构,对数据进行最大共性的集群组织。

以下是聚类算法里最流行的算法:

  1. k均值
  2. k中位数
  3. 期望最大化
  4. 层次集群

关联规则学习算法

关联规则学习算法就是从最能解释观测值里变量与数据关系的规则进行提取的算法。这些规则可以从一个多维数据集里发现一些重要而且用途很广的关联性,而这个数据集可以组的形式进行提取。

最流行的关联规则学习算法有:

  1. Apriori算法
  2. Eclat算法

人工神经网络算法

人工神经网络算法就是由生物的神经网络结构或功能引伸出来的算法。

它们属于匹配模式,常用于解决回归问题和分类问题,但这样属于一个分支学科,它由上百个学科构成,而它的变化形式也存在各种类型的问题中。

要知道,我已经把深度学习从神经网络中分离了出来,原因在于这一领域的巨大增量和其巨大容量。

人工神经网络最流行的算法有:

  1. 感知
  2. 反向传播网络
  3. Hopfield神经网络
  4. 径向基函数网络(RBFN)

深度学习算法

深度学习算法就是人工神经网络算法的现代版,它可以提取大量廉价运算。

它们的目的在于构建一个更大而且结果更复杂的神经网络,而在前文我也提到一点,就是很多方法是用来解决半监督学习问题,而它们含有大型数据集却很少有数据是有标注的。

最流行的深度学习算法有:

  1. 深度波尔兹曼算法(DBM)
  2. 深度信念网络(DBN)
  3. 卷积神经网络(CNN)
  4. 堆叠是自动编码器

降维算法

就像聚类算法那样,降维寻求和提取数据的内部结构,但此时,在信息很少的情况下,对于非监督学习问题,或者为了归纳或者决定数据时就不适用了。

这样用于对维度数据的可视化操作时相当有效的,或者你也可以使用监督学习方法来对问题进行简化。很多这些方法可用于解决分类问题和回归问题。

热门的降维算法有:

  1. 主成分分析法(PCA)
  2. 主成分回归法(PCR)
  3. 偏最小二乘法(PLSR)
  4. Sammon映射
  5. 多维排列(MDS)
  6. 投影追踪
  7. 现行判别分析(LDA)
  8. 混合判别分析(MDA)
  9. 二次判别分析(QDA)
  10. 灵活判别分析(FDA)

集成算法

集成方法就是先对多个较弱的算法分别进行训练,然后再结合其它一些方法把这些算法整合起来使用,并进行一个整体的预测的方法。

这时,你需要花费很大的力气来把那些比较弱的模型,运用相关方法把它们组合起来。

热门的集成算法有:

  1. 经验风险最小化
  2. 引导聚类(Baggin)
  3. AdaBoost
  4. 叠加综合(Blending)
  5. 梯度提升机(GBM)
  6. 梯度提升回归树(GBRT)
  7. 随机森林

其它算法

其它算法就不再这里列举了。

举个例子,什么类会支持向量机的执行?它自己吗?

下面是一些我不会在这篇文章列举出来的机器学习算法,它们用于解决特别的任务的过程,例如:

  1. 功能选择算法
  2. 算法精度评估
  3. 性能测试

我也不会列举那些用于子领域的机器学习算法,例如:

  1. 智能运算(革命算法,等等)
  2. 计算机视觉(CV)
  3. 自然语言进程(NLP)
  4. 推荐系统
  5. 加强学习
  6. 图像模型
  7. 或者更多……

这些就是文章讲的内容:

更深的阅读

这篇文章已经给你把当今热门的算法都过了一遍,并讲述了它们的用途以及之间的相关联系。

我这里收集了一些很好的资源给你继续阅读来学习这些算法,如果你有什么问题,欢迎在留言板上留下你的问题。

其它算法

这里有很多其他很好的算法的列表,如果你有兴趣的话都可以了解一下。一下我举几个例子:

List of Machine Learning Algorithms:在维基百科,尽管这里讲的很详细,但是没有对里面的内容进行仔细的整理。

Machine Learning Algorithms Category:也在维基百科,文章比上面讲的好一些。它根据算法名字的字母进行描述。

CRAN Task View: Machine Learning & Statistical Learning:这篇文章列举了在R里可能使用到的各种包以及相关算法。这里给你一种接地气的感觉,让你知道有什么样的R包和算法,以及人们是怎样把它们运用到日常生活中的。

Top 10 Algorithms in Data Mining: Published article:这一本书讲了一些最热门的算法。这里介绍了一些通俗易懂的方法,让你能很快的学习上手。

怎样学习机器学习算法

算法是机器学习的一个大模块。这个话题我是很有兴趣的,而且之前也写了很多这方面的博客。以下这些文章,你可以根据你的兴趣有选择性的进行阅读:

How to Learn Any Machine Learning Algorithm:这本书提供了一个系统的方法让你学习、运用并理解任何一个算法,这里使用了“算法描述板块”(我就是用这种方法写了我的第一本书)。

How to Create Targeted Lists of Machine LearningAlgorithms:你如何能够自己创建一个属于自己的机器学习算法列表来让你快速的展开下个机器学习问题的解决。

How to Research a Machine Learning Algorithm:这里提供了一个系统的方法让你研究这些机器学习算法(在上面提到了的模板方法,在这里有不错的效果)。

How to Investigate Machine Learning Algorithm Behavior:这里给你提供了一个方法让你了解机器学习的工作流程,它通过创建和执行这些小任务完成这些行为。研究不止是学术上的。

How to Implement a Machine Learning Algorithm:这里提供了一个流程,一些提示和一种技巧来理解如何从研究中执行这些机器学习算法。

如何运行这些机器学习算法

有时,你需要的只是一些代码。下面这些链接可以让你明白如何运行机器学习算法,并使用常规的库来编写这些代码或者从研究者运用它们。

How To Get Started With Machine Learning Algorithms in R:这个列举有很多例子的相关代码,用于在R中进行机器学习。

Machine Learning Algorithm Recipes in scikit-learn:Python的例子代码集,展示如何用scikit学习创建预测模型。

How to Run Your First Classifier in Weka:在Weka执行你的第一个分离器的教程(没有代码要求!)

最后

我希望这篇文章对于你来说很有用。

如果你遇到什么问题或者还有什么要改进的地方,都欢迎留言。

何品言翻译,热爱英语和数据科学。

严禁修改,可以转载,请注明出自数据人网和原文链接:http://shujuren.org/index.php/Article/update/aid/169

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档