在我们了解了需要解决的机器学习问题的类型之后,我们可以开始考虑搜集来的数据的类型以及我们可以尝试的机器学习算法。在这个帖子里,我们会介绍一遍最流行的机器学习算法。通过浏览主要的算法来大致了解可以利用的方法是很有帮助的。

  可利用的算法非常之多。困难之处在于既有不同种类的方法,也有对这些方法的扩展。这导致很快就难以区分到底什么才是正统的算法。在这个帖子里,我希望给你两种方式来思考和区分在这个领域中你将会遇到的算法。

  第一种划分算法的方式是根据学习的方式,第二种则是基于形式和功能的相似性(就像把相似的动物归为一类一样)。两种方式都是有用的。

学习方式

  基于其与经验、环境,或者任何我们称之为输入数据的相互作用,一个算法可以用不同的方式对一个问题建模。在机器学习和人工智能教科书中,流行的做法是首先考虑一个算法的学习方式。

  算法的主要学习方式和学习模型只有几个,我们将会逐一介绍它们,并且给出几个算法和它们适合解决的问题类型来作为例子。

  • 监督学习:输入数据被称为训练数据,它们有已知的标签或者结果,比如垃圾邮件/非垃圾邮件或者某段时间的股票价格。模型的参数确定需要通过一个训练的过程,在这个过程中模型将会要求做出预测,当预测不符时,则需要做出修改。

  • 无监督学习:输入数据不带标签或者没有一个已知的结果。通过推测输入数据中存在的结构来建立模型。这类问题的例子有关联规则学习和聚类。算法的例子包括Apriori算法和K-means算法。

  • 半监督学习:输入数据由带标记的和不带标记的组成。合适的预测模型虽然已经存在,但是模型在预测的同时还必须能通过发现潜在的结构来组织数据。这类问题包括分类和回归。典型算法包括对一些其他灵活的模型的推广,这些模型都对如何给未标记数据建模做出了一些假设。

  • 强化学习:输入数据作为来自环境的激励提供给模型,且模型必须作出反应。反馈并不像监督学习那样来自于训练的过程,而是作为环境的惩罚或者是奖赏。典型问题有系统和机器人控制。算法的例子包括Q-学习和时序差分学习(Temporal Difference Learning)。

  当你处理大量数据来对商业决策建模时,通常会使用监督和无监督学习。目前一个热门话题是半监督学习,比如会应用在图像分类中,涉及到的数据集很大但是只包含极少数标记的数据。

算法相似性

  通常,我们会把算法按照功能和形式的相似性来区分。比如树形结构和神经网络的方法。这是一种有用的分类方法,但也不是完美的。仍然有些算法很容易就可以被归入好几个类别,比如学习矢量量化,它既是受启发于神经网络的方法,又是基于实例的方法。也有一些算法的名字既描述了它处理的问题,也是某一类算法的名称,比如回归和聚类。正因为如此,你会从不同的来源看到对算法进行不同的归类。就像机器学习算法自身一样,没有完美的模型,只有足够好的模型。

  在这个小节里,我将会按照我觉得最直观的方式列出许多流行的机器学习算法。虽然不管是类别还是算法都不是全面详尽的,但我认为它们都具有代表性,有助于你对整个领域有一个大致的了解。如果你发现有一个或一类算法没有被列入,将它写在回复里和大家分享。让我们来开始吧。

回归分析

  回归是这样一种建模方式,它先确定一个衡量模型预测误差的量,然后通过这个量来反复优化变量之间的关系。回归方法是统计学的主要应用,被归为统计机器学习。这有些让人迷惑,因为我们可以用回归来指代一类问题和一类算法。实际上,回归是一个过程。以下是一些例子:

  • 普通最小二乘法

  • 逻辑回归

  • 逐步回归

  • 多元自适应样条回归(MARS)

  • 局部多项式回归拟合(LOESS)

基于实例的方法

  基于实例的学习模型对决策问题进行建模,这些决策基于训练数据中被认为重要的或者模型所必需的实例。这类方法通常会建立一个范例数据库,然后根据某个相似性衡量标准来把新数据和数据库进行比较,从而找到最匹配的项,最后作出预测。因此,基于实例的方法还被叫做“赢者通吃”方法和基于记忆的学习。这种方法的重点在于已有实例的表示以及实例间相似性的衡量标准。

  • K最近邻算法(kNN)

  • 学习矢量量化(LVQ)

  • 自组织映射(SOM)

正则化方法

  这是对另一种方法(通常是回归分析方法)的扩展,它惩罚复杂度高的模型,倾向推广性好的更加简单的模型。我在这里列下了一些正则化的方法,因为他们流行、强大,而且通常只是对其他方法简单的改进。

  • 岭回归

  • 套索算法(LASSO)

  • 弹性网络

决策树学习

  决策树方法对决策过程进行建模,决策是基于数据中属性的实际数值。决策在树形结构上分叉直到对特定的某个记录能做出预测。在分类或者回归的问题中我们用数据来训练决策树。

  • 分类与回归树算法(CART)

  • 迭代二叉树3代(ID3)

  • C4.5算法

  • 卡方自动互动检视(CHAID)

  • 单层决策树

  • 随机森林

  • 多元自适应样条回归(MARS)

  • 梯度推进机(GBM)

贝叶斯算法

贝叶斯方法是那些明确地在分类和回归问题中应用贝叶斯定理的算法。

  • 朴素贝叶斯算法

  • AODE算法

  • 贝叶斯信度网络(BBN)

核函数方法

核函数方法中最为出名的是流行的支持向量机算法,它其实是一系列方法。核函数方法关心的是如何把输入数据映射到一个高维度的矢量空间,在这个空间中,某些分类或者回归问题可以较容易地解决。

  • 支持向量机(SVM)

  • 径向基函数(RBF)

  • 线性判别分析(LDA)

聚类方法

就像回归一样,聚类既表示一类问题,也表示一类方法。聚类方法一般按照建模方式来划分:基于质心的或者层级结构的。所有的方法都是利用数据的内在结构来尽量地把数据归入具有最大共性的一类里。

  • K均值法

  • 最大期望算法(EM)

关联规则学习

关联规则学习是提取规则的一类算法,这些规则能最好地解释观测到的数据中的变量之间的关系。这些规则能在大型多维数据集中发现重要且在商业上有用的关联,然后进一步被利用。

  • Apriori算法

  • Eclat算法

人工神经网络

人工神经网络是受启发于生物神经网络的结构和/或功能的算法。它们是一类常用在回归和分类问题中的模式匹配方法,但其实这个庞大的子类包含了上百种算法和算法的变形,可以解决各种类型的问题。一些经典流行的方法包括(我已经把深度学习从这个类中分出来了):

  • 感知器

  • 反向传播算法

  • Hopfield神经网络

  • 自适应映射(SOM)

  • 学习矢量量化(LVQ)

深度学习

深度学习方法是利用便宜冗余的计算资源对人工神经网络的现代改进版。这类方法试图建立大得多也复杂得多的神经网络,就如前面说到的,许多方法都是基于大数据集中非常有限的标记数据来解决半监督学习问题。

  • 受限玻尔兹曼机(RBM)

  • 深度信念网(DBN)

  • 卷积神经网络

  • 层叠自动编码器(SAE)

降维方法

如同聚类方法,降维方法试图利用数据中的内在结构来总结或描述数据,所不同的是它以无监督的方式利用更少的信息。这对于可视化高维数据或者为之后的监督学习简化数据都有帮助。

  • 主成分分析(PCA)

  • 偏最小二乘法回归(PLS)

  • 萨蒙映射

  • 多维尺度分析(MDS)

  • 投影寻踪

集成方法

集成方法由多个较弱模型组合而成,这些子模型独立训练,它们的预测结果以某种方式整合起来得出总的预测。很多努力都集中在选择什么类型的学习模型作为子模型,以及用什么方式整合它们的结果。这是一类非常强大的技术,因此也很流行。

  • 推进技术(Boosting)

  • 自展集成(Bagging)

  • 适应性推进(AdaBoost)

  • 层叠泛化策略(Blending)

  • 梯度推进机(GBM)

  • 随机森林

这是一个最适曲线集成的例子。弱成员用灰色线表示,整合后的预测用红色。这个图显示了温度/臭氧数据,曲线出自使用局部多项式回归拟合(LOESS)的模型。

对机器学习算法的环顾的目的是让你对目前存在的算法有一个大概的了解,也给你一些工具来把这些你有可能遇到的算法相互联系起来。

这个帖子附上的资源如你所期待的是其他一些很棒的关于机器学习算法的列表。不要觉得压力太大,知道很多算法固然有用,但是对少数几个关键算法的深入了解和有效执行也是很有用的。

转载于:https://www.cnblogs.com/gotodsp/articles/3874706.html

机器学习算法基础知识相关推荐

  1. 重构机器学习算法的知识体系 - 《终极算法》读书笔记

    2019独角兽企业重金招聘Python工程师标准>>> 最近有幸从图书馆借阅了Pedro Domingos的<The Master Alogrithm>一书,这本书的中文 ...

  2. 算法基础知识——二叉树

    算法基础知识--二叉树 目录: 基础知识 基本定义 应用实例 重建二叉树[剑指Offer_编程题] 二叉树的镜像[剑指Offer_编程题] 从上往下打印二叉树[剑指Offer_编程题] 二叉搜索树的后 ...

  3. 算法基础知识总结(基础算法)

    算法基础知识总结 Efficient procedures for solving problems on large inputs. 一.基础算法 1.快速排序 1.类别:快速排序是一种 交换排序, ...

  4. 算法基础知识——动态规划

    算法基础知识--动态规划 目录: 基础知识 分治法和动态规划的区别 动态规划算法设计步骤 最优子结构性质定义 动态规划两种等价的实现方法(自顶向下带备忘.自底向上) 子问题图 经典问题 钢条切割 矩阵 ...

  5. 【Java面试高频问题】Java数据结构和算法基础知识汇总

    文章目录 Java数据结构和算法基础知识 一.Java数据结构 1. 线性结构:数组.队列.链表和栈 1.1 数组(Array) 1.2 稀疏数组 1.3 队列(Queue) 1.4 链表(Linke ...

  6. AI入门:机器学习领域基础知识

    本章要点: AI与人类大脑的联系: 对输入/输出建模: 分类和回归: 时间序列: 训练. 外行人都以为人工智能是人造大脑,并且总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能 ...

  7. 机器学习算法基础——数据降维

    12.数据的降维之特征选择 特征选择 冗余:部分特征的相关度高,容易消耗计算性能 噪声:部分特征对预测结果有负影响 特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择 ...

  8. python必备基础代码-机器学习算法基础(使用Python代码)

    介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...

  9. 机器学习与知识发现_01机器学习算法整体知识体系与学习路线攻略

    入行机器学习有一年多了,做过大大小小的机器学习项目,参加数据竞赛等实践活动,从最初的懵懵懂懂到现在逐步的深入,也渐渐的有了很多的体会和理解,本篇文章主要来阐述机器学习的知识体系,以让更多人明白机器学习 ...

最新文章

  1. 使用触发器即时同步两个表的实例
  2. 由mysql分区想到的分表分库的方案
  3. 【Java进阶】Spring Cloud中Zuul配置与案例实现
  4. 移动app测试的多样性_快速搞定APP移动端自动化测试
  5. cuda加速的头文件_如何从C ++头文件调用CUDA文件?
  6. 【MySQL】MySQL监视器无法启动的可能情况
  7. 提高篇 第二部分 字符串算法 第1章 哈希和哈希表
  8. 行为设计模式 - 模板方法设计模式
  9. (cljs/run-at (JSVM. :browser) 简单类型可不简单啊~)
  10. 使用STAR方法完善简历
  11. Design:功能结构分类描述
  12. python基础教程免费下载-《Python机器学习基础教程》高清版免费PDF下载
  13. 限流, 熔断,降级笔记
  14. CABAC 基础二-算术编码
  15. php 如何添加备案号,wordpress如何添加备案信息
  16. 分享50个优秀的电子商务网站设计案例
  17. MNN Interpreter and Session
  18. Windows7下安装Ubuntu 16.04双系统
  19. 群晖服务器名修改,闻上云刷黑群晖后免拆机修改序列号和mac地址
  20. Java博客项目(重点)

热门文章

  1. 如何在您HTML中嵌入视频和音频
  2. 1136 A Delayed Palindrome 需再做
  3. linux中怎么退出执行过程,(进程)处理过程中的Linux:从执行到退出
  4. gitee查看当前账号_upic+gitee图床,自由书写Markdown
  5. 找java培训机构有哪些参考标准
  6. 成为优秀UI设计师需要具备哪些条件?
  7. 软件测试的准入准出是什么?标准是什么?
  8. php redis管理系统,php+redis实现小型的用户管理系统
  9. Python 之 pip拒绝访问
  10. JavaScript - 数据类型和变量