在机器学习中,有一个定理叫“天下没有免费的午餐”。 简而言之,它指出没有一种算法适合所有问题,这对于监督学习(即预测建模)尤其重要。
例如,你不能说神经网络总是比决策树更好,反之亦然。 有很多因素在起作用,例如数据集的大小和结构。
因此,您应该针对您的问题尝试多种不同的算法,同时使用数据的“测试集”来评估性能并选择获胜者。
当然,你尝试的算法必须适合你的问题,这就是选择正确的机器学习任务的意义所在。打个比方,如果你需要打扫你的房子,你会使用吸尘器、扫帚或拖把,但你不会用铲子来挖。
大原则
然而,所有用于预测建模的监督机器学习算法都有一个共同原则。
机器学习算法被描述为学习目标函数 (f),该目标函数将输入变量 (X) 最佳地映射到输出变量 (Y):Y = f(X)
这是一个一般的学习任务,我们想要预测未来(Y)输入变量(X)的新例子。 我们不知道函数 (f) 是什么样子或者它的形式是什么。 如果我们这样做,我们会直接使用它,而不使用机器学习算法从数据中学习它。
最常见的机器学习类型是学习映射 Y = f(X) 来预测新的 X。这称为预测建模或预测分析,我们的目标是尽可能做出最准确的预测。
对于那些渴望学习机器学习基础知识的机器学习新手,请浏览数据科学家使用的十大机器学习算法。
1 - 线性回归
线性回归可能是统计学和机器学习领域最著名和最容易理解的算法之一。
预测建模主要关注最小化模型的误差或以牺牲可解释性为代价做出最准确的预测。 我们将借用、重用和窃取来自包括统计学在内的许多不同领域的算法,并将它们用于这些目的。
线性回归的表示是一个方程,通过找到称为系数 (B) 的输入变量的特定权重来描述最适合输入变量 (x) 和输出变量 (y) 之间关系的直线。
例如:y = B0 + B1 * x
给定一个输入x,我们将预测y,线性回归学习算法的目标是找到系数B0和B1的值。
可以使用不同的技术从数据中学习线性回归模型,例如普通最小二乘的线性代数解决方案和梯度下降优化。
线性回归已经存在 200 多年,并且得到了广泛的研究。 使用此技术的一些经验法则是删除非常相似(相关)的变量并删除数据中的噪声(如果可能)。 这是一种快速而简单的技术,也是一种很好的算法。
2 - 返回
逻辑回归是机器学习借鉴统计学领域的另一种技术。 这是二元分类问题(具有两个类值的问题)的首选方法。
逻辑回归与线性回归类似,其目标是找到对每个输入变量进行加权的系数值。 与线性回归不同,输出的预测是使用称为逻辑函数的非线性函数进行转换的。
逻辑函数看起来像一个大S,并将任何值转换为0到1的范围。这很有用,因为我们可以对逻辑函数的输出应用规则,将值设置为0和1(例如,如果IF小于 0.5,输出 1) 并预测一个分类值。
由于模型的学习方式,逻辑回归的预测也可以视为给定数据实例属于 0 类或 1 类的概率。这对于需要更多预测依据的问题非常有用。
与线性回归一样,逻辑回归更适合去除与输出变量不相关的属性以及非常相似(相关)的属性。 这是一个快速学习且有效的二元分类问题模型。
3 - 线性判别分析
回归是一种传统上仅限于二类分类问题的分类算法。 如果您有两个以上的类,那么线性判别分析算法是首选的线性分类技术。
LDA的表示非常简单。 它由针对每个类别计算的数据统计属性组成。 对于单个输入变量,这包括:
·所有类别计算的方差
·线性判别分析
预测是通过计算每个类别的识别值并对具有最大值的类别进行预测来进行的。 该技术假设数据具有高斯分布(钟形曲线),因此最好事先从数据中删除异常值。 这是对预测建模问题进行分类的简单而强大的方法。
4 - 分类和回归树
决策树是机器学习预测建模的重要算法。
决策树模型的表示是二叉树,源自算法和数据结构,没有什么特别的。 每个节点代表一个单独的输入变量 (x) 和该变量上的一个分割点(假设该变量是数字)。
树的叶节点包含用于进行预测的输出变量 (y)。 预测是通过遍历树的分裂直到到达叶节点并输出该叶节点的类值来进行的。
树学习得很快,预测也很快。 它们通常还可以准确地解决各种问题,并且不需要对数据进行任何特殊准备。
5 - 朴素贝叶斯
朴素贝叶斯是一种简单但功能强大的预测建模算法。
该模型由两个概率组成,可以直接根据训练数据计算:1)每个类别的概率; 2) 给定每个 x 值的每个类别的条件概率。 计算完成后,概率模型可用于利用贝叶斯定理对新数据进行预测。 当您的数据是实值时,通常会假设高斯分布(钟形曲线),以便您可以轻松估计这些概率。
朴素贝叶斯假设每个输入变量都是独立的,这是一个强有力的假设,对于真实数据来说是不切实际的。 然而,这种技术对于解决各种复杂问题都非常有效。
6-K最近邻算法
KNN算法非常简单而且非常有效。 KNN的模型表示是整个训练数据集,比较简单。
通过在整个训练集中搜索 K 个最相似的实例(邻居)并总结这些 K 个实例的输出变量来预测新的数据点。 对于回归问题,这可能是平均输出变量,对于分类问题,这可能是众数(或最常见的)类值。
诀窍在于如何确定数据实例之间的相似性。 最简单的方法是使用距离,您可以根据每个输入变量之间的差异直接计算一个数字。
KNN 可能需要大量内存或空间来存储所有数据,但仅在需要预测时才执行计算(或学习)。 您还可以随时更新和管理您的训练实例,以保持预测准确性。
距离或接近度的概念可能会在非常高的维度(大量输入变量)中被分解,这可能会对算法在您的问题上的性能产生负面影响。 它建议您仅使用与预测输出变量最相关的输入变量。
7 - 学习矢量量化
KNN 的一个缺点是您需要保留整个训练数据集。 学习矢量量化(简称 LVQ)是一种人工神经网络算法,允许您选择所需的训练实例并准确了解这些实例应该是什么样子。 的。
LVQ的表示是一个集合。 这些是在开始时随机选择的,适合在学习算法的多次迭代中最好地总结训练数据集。 学习后可以像KNN一样用来进行预测。 通过计算每个数据实例与新数据实例之间的距离来找到最相似的邻居(最佳匹配码本向量)。 然后将类值或(回归情况下的实际值)最佳匹配单元作为预测返回。 如果您重新缩放数据以使其具有相同的范围(例如在 0 和 1 之间),您将获得最佳结果。
如果您发现 KNN 在数据集上给出了良好的结果,请尝试使用 LVQ 来减少存储整个训练数据集的内存需求。
8 - 支持向量机
支持向量机可能是最流行和讨论最多的机器学习算法之一。
超平面是划分输入变量空间的线。 在 SVM 中,选择的超平面能够最好地将输入变量空间中的点按其类别(类别 0 或类别 1)分开。 在二维中,这可以被认为是一条线,我们假设所有输入点都可以被这条线完全分开。 SVM 学习算法找到通过超平面实现最佳类分离的系数。
超平面和最近的数据点之间的距离称为边界。 可以分隔两个类的最佳超平面是具有最大边界的直线。 只有这些点与定义超平面和分类器的构造相关。 这些点称为支持向量,它们支持或定义超平面。 在实践中,优化算法用于查找最大化边界的系数值。
支持向量机可能是最强大的现成分类器之一,值得在您的数据集上尝试。
9 - 和随机森林
随机森林是最流行和最强大的机器学习算法之一。 它是一种称为 OR 的集成机器学习算法。
是一种强大的统计方法,用于估计数据样本的数量。 你需要大量的数据样本,计算平均值,然后对所有平均值进行平均,才能更好地估计真实平均值。
在 中,使用了相同的方法,但用于估计整个统计模型,最常见的是决策树。 获取训练数据的多个样本,并为每个数据样本构建一个模型。 当您需要对新数据进行预测时,每个模型都会进行预测并对预测进行平均,以获得对真实输出值的更好估计。
随机森林是这种方法的改进,其中创建决策树,并且不是选择最佳分割点,而是通过引入随机性来进行次优分割。
因此,为每个数据样本创建的模型比原本的模型有更大的不同,但它们仍然以其独特和不同的方式准确。 结合他们的预测可以更好地估计产出的真实潜在价值。
如果使用高方差算法(例如决策树)获得更好的结果,则通常可以使用该算法获得更好的结果。
10 - 增强和
它是一种尝试从多个弱分类器创建强分类器的集成技术。 这是通过根据训练数据构建模型,然后创建第二个模型来尝试纠正第一个模型的错误来完成的。 添加模型,直到完美预测训练集或添加最大数量的模型。
是第一个为二元分类开发的真正成功的增强算法。 这是理解举重的最佳起点。 现代增强方法是建立在最著名的随机梯度增强机的基础上的。
与短决策树一起使用。 创建第一棵树后,使用该树在每个训练实例上的性能来衡量创建的下一棵树应将多少注意力集中在每个训练实例上。 难以预测的训练数据被赋予更大的权重,而易于预测的实例被赋予更少的权重。 模型是按顺序创建的,每个模型都会更新影响序列中下一棵树执行的学习的训练实例的权重。 构建所有树后,对新数据进行预测,并根据训练数据的准确性对每棵树的性能进行加权。
由于纠正算法错误受到如此多的关注,因此清除数据中的异常值非常重要。
初学者在面对各种机器学习算法时提出的一个典型问题是“我应该使用哪种算法?” 这个问题的答案取决于许多因素,包括: (1) 数据的规模、质量和性质; (2)可用计算时间; (三)任务的紧迫性; (4) 您希望如何处理数据。
即使是经验丰富的数据科学家,在尝试不同的算法之前也无法判断哪种算法表现最好。 尽管还有许多其他机器学习算法,但这些算法是最流行的。 如果您是机器学习新手,那么这是一个很好的起点。