机器学习算法之旅

在这篇文章中, 我们将介绍最流行的机器学习算法.

浏览该领域的主要算法以了解可用的方法有哪些是有用的.

有很多算法是可用的, 当算法名称被抛出时, 它会让人感到无所适从, 而你只需要知道它们是什么以及它们适合用在哪里.

我想给你两种方法来思考和分类你可能在机器学习领域遇到的算法:

  • 第一种是按学习风格进行分组的算法.
  • 第二种是按照形式或功能上的相似性进行分组的算法(如将相似的动物分组在一起).
  • 这两种方法都是有用的, 但我们重点放在按相似性对算法进行分组, 继续浏览各种不同的算法类型.

    阅读完这篇文章之后, 你将更好地理解最受欢迎的监督学习机器学习算法以及它们之间的关系.

    一个线性拟合一个很酷的例子. 弱成员是灰色的, 综合预测是红色的.

    来自维基百科的绘图, 在公共领域许可.

    按学习风格分组的算法
    算法可以根据与经验或环境的交互方式或任何我们想要调用输入数据的方式对问题进行建模.

    在机器学习和人工智能教科书中, 把考虑算法可以采用的学习风格作为第一位的内容很常见.

    算法只有少数几种主要的学习风格或学习模型, 我们将在这里通过几个对应的算法和问题类型的例子.

    这种机器学习算法的分类或组织方法很有用, 因为它会迫使你考虑输入数据的角色和模型准备的过程, 并选择最适合你的问题的方法, 以获得最佳结果.

    让我们来看看机器学习算法中的三种不同的学习风格:

    1.监督学习

    输入数据称为训练数据, 并具有已知的标签或结果, 例如垃圾邮件/非垃圾邮件或某次股票价格.

    模型是通过一个训练过程来准备的. 在训练过程中模型需要进行预测, 并在预测错误时予以纠正. 训练过程要一直持续到模型达到训练数据所需的准确度.

    示例的问题是关于分类和回归的.

    示例算法包括Logistic Regression(逻辑回归)和Logistic Regression(后向传播)神经网络.

    2.无监督学习

    输入数据没有经过标记, 也没有一个已知的结果.

    通过推导输入数据中存在的结构来准备模型. 这可能是提取一般规则. 可能是通过数学过程来系统地减少冗余, 也可能是通过相似性来组织数据.

    示例问题是聚类, 降维和关联规则学习.

    示例算法包括: Apriori(先验)算法和k-Means算法.

    3.半监督学习

    输入数据是标记和未标记的混合示例.

    有一个理想的预测问题, 但模型必须学习结构来组织数据以及做出预测.

    示例问题是分类和回归.

    示例算法是对其他灵活方法的扩展, 这些方法对如何对未标记数据建模进行了假设.

    概览
    在处理数据来建模业务决策时, 最典型的是使用有监督和无监督的学习方法.

    目前的热门话题是半监督学习方法, 如在图像分类领域中存在大量数据集且带标签的样例很少.

    相似性分组算法
    算法通常根据其功能(或它们如何工作)的相似性分组. 例如, 基于树的方法和神经网络的启发方法.

    我认为这是分组算法最有用的方法, 这也是我们将在这里使用的方法.

    这是一种有用但并不完美的分组方法. 还有一些算法可以很轻松地适合多个类别, 例如学习向量量化, 这既是神经网络启发的方法, 也是基于实例的方法. 也有同样的名称来描述问题和算法的类, 如回归和聚类.

    我们可以通过两次列表算法来处理这些情况, 或者通过选择主观上是“最佳”的组. 我喜欢后一种不重复算法的方法来让事情保持简单.

    在本节中, 我列出了很多流行的机器学习算法, 按我认为最直观的方式进行分组. 这个列表并不是在所有的组或算法中都是详尽的, 但是我认为它是有代表性的, 并且对你从这片知识的土地中得到一个想法会有帮助.

    请注意: 对于用于分类和回归的算法存在强烈的偏见, 这两个算法是你将遇到的最普遍的受监督的机器学习问题.

    如果你知道一个或一组算法这里没有列出来的, 请在评论中与我们分享. 让我们可以学习探究.

    回归算法

    回归是关于建模变量之间关系的模型, 这些关系使用模型预测中的错误度量来迭代地改进模型.

    回归方法是统计学中的一个重要手段, 并已被纳入统计机器学习领域. 这可能会令人感到困惑, 因为我们可以使用回归来指代问题的类别和算法的类别. 事实上, 回归是一个过程.

    最流行的回归算法是:

  • 普通最小二乘回归算法(Ordinary Least Squares Regression, OLSR)
  • 线性回归算法(Linear Regression)
  • 逻辑回归算法(Logistic Regression)
  • 逐步回归(Stepwise Regression)
  • 多变量自适应回归样条曲线(Multivariate Adaptive Regression Splines, MARS)
  • 局部估计散射平滑算法(Locally Estimated Scatterplot Smoothing, LOESS)
  • 基于实例的算法

    基于实例的学习模型是一个决定性问题, 具有被认为对模型重要或需要的训练数据的实例或例子.

    这样的方法通常建立示例数据的数据库, 并使用相似性度量将新数据与数据库进行比较, 以便找到最佳匹配并进行预测. 基于这个原因, 基于实例的方法也被称为赢家通吃(winner-take-all)方法和基于记忆的学习. 重点放在实例之间使用的存储实例和相似性度量的表示上.

    最流行的基于实例的算法是:

  • k-最近邻算法(k-Nearest Neighbor, kNN)
  • 学习向量量化算法(Learning Vector Quantization, LVQ)
  • 自组织映射(Self-Organizing Map, SOM)
  • 本地加权学习(Locally Weighted Learning, LWL)
  • 正则化算法

    对另一种方法(通常是回归方法)进行的扩展是对基于其复杂性的模型进行惩罚, 有利于简化模型, 也能更好的泛化.

    我在这里分别列出了正则化算法, 因为它们是流行的, 功能强大且对其他方法进行了简单的修改.

    最流行的正则化算法是:

  • 脊回归(或岭回归, Ridge Regression)
  • 最少绝对收缩和选择算法(Least Absolute Shrinkage and Selection Operator, LASSO)
  • 弹性网(Elastic Net)
  • 最小角度回归算法(Least-Angle Regression, LARS)
  • 决策树算法

    决策树方法根据数据中属性的实际值构建决策模型.

    决定分叉树形结构, 直到对给定记录作出预测决定. 用分类和回归问题的数据训练决策树. 决策树通常是快速而准确的, 是机器学习中最受欢迎的.

    最流行的决策树算法是:

  • 分类和回归树(Classification and Regression Tree, CART)
  • 迭代二分法3(Iterative Dichotomiser 3, ID3)
  • C4.5和C5.0(一个强大的方法的不同版本核心算法是ID3算法, 译者注)
  • 卡方自动交互检测(Chi-squared Automatic Interaction Detection, CHAID)
  • 决策树桩(Decision Stump)
  • M5
  • 条件决策树(Conditional Decision Trees)
  • 贝叶斯算法

    贝叶斯方法是那些显式应用贝叶斯定理的问题, 如分类和回归问题.

    最流行的贝叶斯算法是:

  • 朴素贝叶斯(Naive Bayes)
  • 高斯朴素贝叶斯(Gaussian Naive Bayes)
  • 多项式朴素贝叶斯(Multinomial Naive Bayes)
  • 平均单个相关估计量(Averaged One-Dependence Estimators, AODE)
  • 贝叶斯信仰网络(Bayesian Belief Network , BBN)
  • 贝叶斯网络Bayesian Network (BN)
  • 聚类算法

    类似回归算法, 聚类描述了问题的类别和方法的类别.

    聚类方法通常由诸如基于质心和分层的建模方法来组织. 所有的方法都关注于使用数据中的固有结构来将数据尽可能地组织成具有最大通用性的组.

    最流行的聚类算法是:

  • K-均值(k-Means)
  • K-中位数(k-Medians)
  • 预期最大化(Expectation Maximisation, EM)
  • 分层聚类(Hierarchical Clustering)
  • 关联规则学习算法

    关联规则学习方法提取最能解释数据中变量之间观察关系的规则.

    这些规则可以发现大型多维数据集中重要且商业上有用的关联, 这些关联可以被组织利用.

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

  • 先验算法(Apriori Algorithm)
  • Eclat算法
  • 人工神经网络算法

    人工神经网络是受生物神经网络的结构和(或)功能启发的模型.

    它们是模式匹配的一类, 通常用于回归和分类问题, 但实际上它们是一个巨大的子域, 包含数百种算法和各种问题类型的变体.

    请注意, 由于在该领域的高速增长和普及, 我已将神经网络中的深度学习分离出来. 这里我们关心的是更经典的方法.

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

  • 感知(Perceptron)
  • 反向传播(Back-Propagation)
  • Hopfield网络
  • 径向基函数网络(Radial Basis Function Network, RBFN)
  • 深度学习算法

    深度学习方法是对人工神经网络的现代更新, 利用了丰富的廉价计算.

    他们关心的是构建更大更复杂的神经网络, 正如上面所写的, 许多方法都与半监督学习问题有关, 这些问题中大规模数据集包含的标记数据非常少.

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

  • 深度玻尔兹曼机器(Deep Boltzmann Machine, DBM)
  • 深度信仰网络(Deep Belief Networks, DBN)
  • 卷积神经网络(Convolutional Neural Network, CNN)
  • 堆叠自动编码器(Stacked Auto-Encoders)
  • 降维算法

    与聚类方法一样, 降维算法也寻找和利用数据中的固有结构, 但是在这种情况下是使用更少的信息, 以无监督的方式或顺序来总结或描述数据.

    这对于可视化空间的数据或简化随后可用于监督学习方法的数据是有用的. 这其中许多方法可以适用于分类和回归.

  • 主成分分析(Principal Component Analysis, PCA)
  • 主成分回归(Principal Component Regression, PCR)
  • 偏最小二乘回归(Partial Least Squares Regression, PLSR)
  • Sammon映射
  • 多维度缩放(Multidimensional Scaling, MDS)
  • 投影追踪(Projection Pursuit)
  • 线性判别分析(Linear Discriminant Analysis, LDA)
  • 混合判别分析(Mixture Discriminant Analysis, MDA)
  • 二次判别分析(Quadratic Discriminant Analysis, QDA)
  • 灵活判别分析(Flexible Discriminant Analysis, FDA)
  • 集成算法

    集成方法是由多个较弱的模型组成的模型, 这些模型是经过独立训练的, 它们各自的预测以某种方式进行组合以作出整体预测.

    要把哪些类型的弱学习者结合起来, 以及如何把它们结合起来, 需要付出很多的努力. 这是一个非常强大的技术类, 因此非常受欢迎.

  • 推进(Boosting)
  • Bootstrapped聚合(Bagging)
  • AdaBoost
  • 堆叠泛化(混合)
  • 梯度提升机器(GBM)
  • 梯度提升回归树(GBRT)
  • 随机森林
  • 其他算法
    还有许多算法没被覆盖到.

    例如, 支持向量机器会进入哪个组? 它自己的吗?

    我没有涵盖机器学习过程中的专业任务算法, 例如:

  • 特征选择算法(Feature selection algorithms)
  • 算法精度评估(Algorithm accuracy evaluation)
  • 绩效评估(或表现评估, Algorithm accuracy evaluation)
  • 我也没有涵盖机器学习专业子领域的算法, 例如:

  • 计算智能(Computational intelligence)(进化算法等)
  • 计算机视觉(Computer Vision, CV)
  • 自然语言处理(Natural Language Processing, NLP)
  • 推荐系统(Recommender Systems)
  • 强化学习(Reinforcement Learning)
  • 图形模型(Graphical Models)
  • 和更多…
  • 这些算法可能会在未来的文章中提到。

    文章转载自:腾讯云社区