机器学习新手必看10大算法

文章选自TowardsDataScience,做者:James Le,机器之心编译。算法

本文介绍了机器学习新手须要了解的 10 大算法,包括线性回归、Logistic 回归、朴素贝叶斯、K 近邻算法等。bootstrap

在机器学习中,有一种叫作「没有免费的午饭」的定理。简而言之,它指出没有任何一种算法对全部问题都有效,在监督学习(即预测建模)中尤为如此。网络

例如,你不能说神经网络老是比决策树好,反之亦然。有不少因素在起做用,例如数据集的大小和结构。数据结构

所以,你应该针对具体问题尝试多种不一样算法,并留出一个数据「测试集」来评估性能、选出优胜者。机器学习

固然,你尝试的算法必须适合你的问题,也就是选择正确的机器学习任务。打个比方,若是你须要打扫房子,你可能会用吸尘器、扫帚或拖把,可是你不会拿出铲子开始挖土。函数

大原则

不过也有一个广泛原则,即全部监督机器学习算法预测建模的基础。性能

机器学习算法被描述为学习一个目标函数 f,该函数将输入变量 X 最好地映射到输出变量 Y:Y = f(X)学习

这是一个广泛的学习任务,咱们能够根据输入变量 X 的新样本对 Y 进行预测。咱们不知道函数 f 的样子或形式。若是咱们知道的话,咱们将会直接使用它,不须要用机器学习算法从数据中学习。测试

最多见的机器学习算法是学习映射 Y = f(X) 来预测新 X 的 Y。这叫作预测建模或预测分析,咱们的目标是尽量做出最准确的预测。优化

对于想了解机器学习基础知识的新手,本文将概述数据科学家使用的 top 10 机器学习算法。


1. 线性回归

线性回归多是统计学和机器学习中最知名和最易理解的算法之一。

预测建模主要关注最小化模型偏差或者尽量做出最准确的预测,以可解释性为代价。咱们将借用、重用包括统计学在内的不少不一样领域的算法,并将其用于这些目的。

线性回归的表示是一个方程,它经过找到输入变量的特定权重(称为系数 B),来描述一条最适合表示输入变量 x 与输出变量 y 关系的直线。

线性回归

例如:y = B0 + B1 * x

咱们将根据输入 x 预测 y,线性回归学习算法的目标是找到系数 B0 和 B1 的值。

可使用不一样的技术从数据中学习线性回归模型,例如用于普通最小二乘法和梯度降低优化的线性代数解。

线性回归已经存在了 200 多年,并获得了普遍研究。使用这种技术的一些经验是尽量去除很是类似(相关)的变量,并去除噪音。这是一种快速、简单的技术,能够首先尝试一下。


2. Logistic 回归

Logistic 回归是机器学习从统计学中借鉴的另外一种技术。它是解决二分类问题的首选方法。

Logistic 回归与线性回归类似,目标都是找到每一个输入变量的权重,即系数值。与线性回归不一样的是,Logistic 回归对输出的预测使用被称为 logistic 函数的非线性函数进行变换。

logistic 函数看起来像一个大的 S,而且能够将任何值转换到 0 到 1 的区间内。这很是实用,由于咱们能够规定 logistic 函数的输出值是 0 和 1(例如,输入小于 0.5 则输出为 1)并预测类别值。

Logistic 回归

因为模型的学习方式,Logistic 回归的预测也能够做为给定数据实例(属于类别 0 或 1)的几率。这对于须要为预测提供更多依据的问题颇有用。

像线性回归同样,Logistic 回归在删除与输出变量无关的属性以及很是类似(相关)的属性时效果更好。它是一个快速的学习模型,而且对于二分类问题很是有效。


3. 线性判别分析(LDA)

Logistic 回归是一种分类算法,传统上,它仅限于只有两类的分类问题。若是你有两个以上的类别,那么线性判别分析是首选的线性分类技术。

LDA 的表示很是简单直接。它由数据的统计属性构成,对每一个类别进行计算。单个输入变量的 LDA 包括:

  • 每一个类别的平均值;

  • 全部类别的方差。

线性判别分析

进行预测的方法是计算每一个类别的判别值并对具有最大值的类别进行预测。该技术假设数据呈高斯分布(钟形曲线),所以最好预先从数据中删除异常值。这是处理分类预测建模问题的一种简单而强大的方法。


4. 分类与回归树

决策树是预测建模机器学习的一种重要算法。

决策树模型的表示是一个二叉树。这是算法和数据结构中的二叉树,没什么特别的。每一个节点表明一个单独的输入变量 x 和该变量上的一个分割点(假设变量是数字)。


决策树

决策树的叶节点包含一个用于预测的输出变量 y。经过遍历该树的分割点,直到到达一个叶节点并输出该节点的类别值就能够做出预测。

决策树学习速度和预测速度都很快。它们还能够解决大量问题,而且不须要对数据作特别准备。


5. 朴素贝叶斯

朴素贝叶斯是一个简单可是很强大的预测建模算法。

该模型由两种几率组成,这两种几率均可以直接从训练数据中计算出来:1)每一个类别的几率;2)给定每一个 x 的值,每一个类别的条件几率。一旦计算出来,几率模型可用于使用贝叶斯定理对新数据进行预测。当你的数据是实值时,一般假设一个高斯分布(钟形曲线),这样你能够简单的估计这些几率。

贝叶斯定理

朴素贝叶斯之因此是朴素的,是由于它假设每一个输入变量是独立的。这是一个强大的假设,真实的数据并不是如此,可是,该技术在大量复杂问题上很是有用。


6. K 近邻算法

KNN 算法很是简单且有效。KNN 的模型表示是整个训练数据集。是否是很简单?

KNN 算法在整个训练集中搜索 K 个最类似实例(近邻)并汇总这 K 个实例的输出变量,以预测新数据点。对于回归问题,这多是平均输出变量,对于分类问题,这多是众数(或最多见的)类别值。

诀窍在于如何肯定数据实例间的类似性。若是属性的度量单位相同(例如都是用英寸表示),那么最简单的技术是使用欧几里得距离,你能够根据每一个输入变量之间的差值直接计算出来其数值。

K 近邻算法

KNN 须要大量内存或空间来存储全部数据,可是只有在须要预测时才执行计算(或学习)。你还能够随时更新和管理训练实例,以保持预测的准确性。

距离或紧密性的概念可能在很是高的维度(不少输入变量)中会瓦解,这对算法在你的问题上的性能产生负面影响。这被称为维数灾难。所以你最好只使用那些与预测输出变量最相关的输入变量。


7. 学习向量量化

K 近邻算法的一个缺点是你须要遍历整个训练数据集。学习向量量化算法(简称 LVQ)是一种人工神经网络算法,它容许你选择训练实例的数量,并精确地学习这些实例应该是什么样的。

学习向量量化

LVQ 的表示是码本向量的集合。这些是在开始时随机选择的,并逐渐调整以在学习算法的屡次迭代中最好地总结训练数据集。在学习以后,码本向量可用于预测(相似 K 近邻算法)。最类似的近邻(最佳匹配的码本向量)经过计算每一个码本向量和新数据实例之间的距离找到。而后返回最佳匹配单元的类别值或(回归中的实际值)做为预测。若是你从新调整数据,使其具备相同的范围(好比 0 到 1 之间),就能够得到最佳结果。

若是你发现 KNN 在你的数据集上达到很好的结果,请尝试用 LVQ 减小存储整个训练数据集的内存要求。


8. 支持向量机(SVM)

支持向量机多是最受欢迎和最普遍讨论的机器学习算法之一。

超平面是分割输入变量空间的一条线。在 SVM 中,选择一条能够最好地根据输入变量类别(类别 0 或类别 1)对输入变量空间进行分割的超平面。在二维中,你能够将其视为一条线,咱们假设全部的输入点均可以被这条线彻底的分开。SVM 学习算法找到了可让超平面对类别进行最佳分割的系数。

支持向量机

超平面和最近的数据点之间的距离被称为间隔。分开两个类别的最好的或最理想的超平面具有最大间隔。只有这些点与定义超平面和构建分类器有关。这些点被称为支持向量,它们支持或定义了超平面。实际上,优化算法用于寻找最大化间隔的系数的值。

SVM 多是最强大的当即可用的分类器之一,值得一试。


9. Bagging 和随机森林

随机森林是最流行和最强大的机器学习算法之一。它是 Bootstrap Aggregation(又称 bagging)集成机器学习算法的一种。

bootstrap 是从数据样本中估算数量的一种强大的统计方法。例如平均数。你从数据中抽取大量样本,计算平均值,而后平均全部的平均值以便更好的估计真实的平均值。

bagging 使用相同的方法,可是它估计整个统计模型,最多见的是决策树。在训练数据中抽取多个样本,而后对每一个数据样本建模。当你须要对新数据进行预测时,每一个模型都进行预测,并将全部的预测值平均以便更好的估计真实的输出值。

随机森林

随机森林是对这种方法的一种调整,在随机森林的方法中决策树被建立以便于经过引入随机性来进行次优分割,而不是选择最佳分割点。

所以,针对每一个数据样本建立的模型将会与其余方式获得的有所不一样,不过虽然方法独特且不一样,它们仍然是准确的。结合它们的预测能够更好的估计真实的输出值。

若是你用方差较高的算法(如决策树)获得了很好的结果,那么一般能够经过 bagging 该算法来得到更好的结果。


10. Boosting 和 AdaBoost

Boosting 是一种集成技术,它试图集成一些弱分类器来建立一个强分类器。这经过从训练数据中构建一个模型,而后建立第二个模型来尝试纠正第一个模型的错误来完成。一直添加模型直到可以完美预测训练集,或添加的模型数量已经达到最大数量。

AdaBoost 是第一个为二分类开发的真正成功的 boosting 算法。这是理解 boosting 的最佳起点。现代 boosting 方法创建在 AdaBoost 之上,最显著的是随机梯度提高。

AdaBoost

AdaBoost 与短决策树一块儿使用。在第一个决策树建立以后,利用每一个训练实例上树的性能来衡量下一个决策树应该对每一个训练实例付出多少注意力。难以预测的训练数据被分配更多权重,而容易预测的数据分配的权重较少。依次建立模型,每一个模型在训练实例上更新权重,影响序列中下一个决策树的学习。在全部决策树创建以后,对新数据进行预测,而且经过每一个决策树在训练数据上的精确度评估其性能。

由于在纠正算法错误上投入了太多注意力,因此具有已删除异常值的干净数据很是重要。


总结

初学者在面对各类机器学习算法时常常问:「我应该用哪一个算法?」这个问题的答案取决于不少因素,包括:(1)数据的大小、质量和特性;(2)可用的计算时间;(3)任务的紧迫性;(4)你想用这些数据作什么。

即便是经验丰富的数据科学家在尝试不一样的算法以前,也没法分辨哪一种算法会表现最好。虽然还有不少其余的机器学习算法,但本篇文章中讨论的是最受欢迎的算法。若是你是机器学习的新手,这将是一个很好的学习起点。

相关文章
相关标签/搜索