基础入门:你不能不了解的十大机器学习算法
2019年03月02日 由 老张 发表
329025
0
1.线性回归
线性回归可能是统计学和机器学习中最知名且易于理解的算法之一。
预测建模主要关注最小化模型的误差或尽可能性做最准确的预测,但代价是牺牲可解释性。我们将借用,重用和窃取来自许多不同领域的算法,包括统计数据,并将其用于这些目的。
线性回归的表征是一个方程,描述最适合输入变量(x)和输出变量(y)之间关系的直线,方法是找到称为系数(B)的输入变量的特定权重。
例:y = B0 + B1 * x
我们将在给定输入x的情况下预测y,并且线性回归学习算法的目标是找到系数B0和B1的值。
从数据中学习线性回归模型可以采用不同的技术,如普通最小二乘的线性代数解和梯度下降优化。
线性回归已经存在了200多年,并且已经被广泛研究。使用此技术时,一些好的经验法则是删除非常相似(相关)的变量,并尽可能消除数据中的噪音。
2.Logistic回归
Logistic回归是从统计领域的机器学习中借用的另一种技术。它是二进制分类问题(具有两个类值的问题)的首选方法。
Logistic回归就像线性回归一样,目标是找到加权每个输入变量的系数的值。与线性回归不同,使用名为Logistic函数的非线性函数来转换输出的预测。
Logistic函数看起来像一个大S,并将任何值转换为0到1的范围。这很有用,因为我们可以将一个规则应用于Logistic函数的输出,以将值对齐到0和1(例如IF小于0.5,则输出1)并预测一个类值。
Logistic回归
由于模型学习的方式,通过Logistic回归所做的预测也可以被用作属于类0或类1的给定数据实例的概率。这对于需要为预测提供更多基本原理的问题非常有用。
与线性回归一样,Logistic回归在删除与输出变量无关的属性以及彼此非常相似的属性时更好。这是一个学习二元分类问题的快速模型。
3.线性判别分析
Logistic回归是一种传统的分类算法,它只局限于两类分类问题。如果有两个以上的类,那么线性判别分析算法是首选的线性分类技术。
LDA的表征非常简单。它包含数据的统计属性,为每个类计算。对于单个输入变量,这包括:
线性判别分析
预测是通过计算每个类的判别值并对最大的类进行预测来实现的。该技术假设数据具有高斯分布(钟形曲线),因此在处理之前最好从数据中删除异常值。这是一种简单有效的分类预测建模方法。
4.分类和回归树
决策树是预测建模机器学习的一种重要算法。
决策树模型的表征是二叉树。这是来自算法和数据结构的二叉树,每个节点表示单个输入变量(x)和该变量上的分割点(假设变量是数值型的)。
决策树
树的叶节点包含用于进行预测的输出变量(y)。通过遍历树的分支直到到达叶节点并在该叶节点处输出类值来进行预测。
树学习速度快,预测速度非常快。它们通常也可以解决各种问题,并且不需要对数据进行任何特殊准备。
5.朴素贝叶斯
朴素贝叶斯是一种简单但强大的预测建模算法。
该模型由两种类型的概率组成,可以直接根据你的训练数据计算:1)每个类的概率;;2)给出每个x值的每个类的条件概率。一旦计算,概率模型可用于使用贝叶斯定理对新数据进行预测。当你的数据是实值时,通常会假设一个高斯分布(钟形曲线),以便你可以轻松估计这些概率。
贝叶斯定理
朴素贝叶斯之所以是朴素的,是因为它假设每个输入变量是独立的。这是一个强有力的假设,对于实际数据是不现实的,然而,该技术对于大范围的复杂问题非常有效。
6.K-Nearest Neighbors
KNN算法非常简单且有效。KNN的模型表示是整个训练数据集。
通过在整个训练集中搜索K个最相似的实例(邻居)并总结这些K个实例的输出变量,可以对一个新的数据点进行预测。对于回归问题,这可能是平均输出变量,对于分类问题,这可能是模式或最常见的类值。
诀窍在于如何确定数据实例之间的相似性。如果你的属性具有相同的比例(例如,以英寸为单位),那么最简单的技术是使用欧几里德距离,可以根据每个输入变量之间的差异直接计算该数字。
K-Nearest Neighbors
KNN需要大量内存或空间来存储所有数据,但只有在需要预测时才会及时执行计算(或学习)。还可以随着时间的推移更新和管理您的训练实例,以保持预测的准确性。
距离或接近度的概念可以在非常高的维度(许多输入变量)中分解,这会对算法在你的问题上的性能产生负面影响。这被称为维度的诅咒。它建议你仅使用与预测输出变量最相关的输入变量。
7.学习矢量量化
K-Nearest Neighbors的缺点是你需要坚持整个训练数据集。学习矢量量化算法(LVQ)是一种人工神经网络算法,允许你选择要的训练实例数量,并准确了解这些实例应该是什么样子。
学习矢量量化
LVQ的表示是码本向量的集合。这些是在开始时随机选择的,并且适于在学习算法的多次迭代中最佳地总结训练数据集。在学习之后,可以使用码本向量来进行与K-Nearest Neighbors类似的预测。
通过计算每个码本矢量和新数据实例之间的距离来找到最相似的邻居(最佳匹配码本向量)。然后返回最佳匹配单元的类值或回归情况下的实际值作为预测。如果将数据重新缩放到相同范围(例如0到1之间),则可获得最佳结果。
如果你发现KNN在你的数据集上提供了良好的结果,请尝试使用LVQ来降低存储整个训练数据集的内存要求。
8.支持向量机
支持向量机可能是最流行和最受关注的机器学习算法之一。
超平面是分割输入变量空间的线。在支持向量机中,选择超平面以最佳地将输入变量空间中的点与它们的类(0级或1级)分开。在二维中,你可以将其视为一条线,并假设所有输入点都可以被这条线完全分开。支持向量机学习算法通过超平面找到最优分离类的系数。
支持向量机
超平面与最近数据点之间的距离称为边距。能够区分这两类的最佳或最优超平面是边距最大的直线。只有这些点与超平面的定义和分类器的构造有关。这些点称为支持向量。它们支持或定义超平面。在实际应用中,采用一种优化算法来寻找使边界最大化的系数的值。
SVM可能是最强大的开箱即用分类器之一,值得在数据集上尝试。
9.Bagging和随机森林
随机森林是最流行和最强大的机器学习算法之一。它是一种称为Bootstrap Aggregation或bagging的集成机器学习算法。
bootstrap是一种用于从数据样本中估计数量的强大的统计方法。比如均值。取大量数据样本,计算平均值,然后求平均值的平均值,这样就能更好地估计真实的平均值。
在bagging中,使用相同的方法,但是用于估计整个统计模型,最常见的是决策树。获取训练数据的多个样本,然后为每个数据样本构建模型。当需要对新数据进行预测时,每个模型都会进行预测,并对预测进行平均以更好地估计真实输出值。
随机森林
随机森林是对这种创建决策树的方法的一种改进,它不是选择最优分割点,而是通过引入随机性来进行次优分割。
因此,为每个数据样本创建的模型与其他情况相比更加不同,但仍然准确。结合预测可以更好地估计真实潜在输出值。
如果使用具有高方差的算法(如决策树)获得良好的结果,通常可以通过bagging算法获得更好的结果。
10.Boosting和AdaBoost
Boosting是一种集合技术,试图从许多弱分类器中创建一个强分类器。这是通过从训练数据构建模型,然后创建第二个模型来尝试从第一个模型中纠正错误来完成的。添加模型直到完美预测训练集或添加最大数量的模型。
AdaBoost是为二进制分类开发的第一个真正成功的增强算法。这是理解boosting的最佳起点。现代boosting方法建立在AdaBoost上,最著名的是随机梯度boosting machine。
AdaBoost
AdaBoost用于短决策树。在创建第一个树之后,每个训练实例上的树的性能用于加权创建的下一个树应该关注每个训练实例的注意力。难以预测的训练数据被赋予更多权重,而易于预测的实例被赋予更少的权重。
模型一个接一个地按顺序创建,每个模型更新训练实例上的权重,这些权重影响序列中下一个树所执行的学习。构建完所有树之后,将对新数据进行预测,并根据训练数据的准确性对每棵树的性能进行加权。由于算法在纠正错误上投入过多,因此使用去除异常值的数据是非常重要的。