LizierTowardsDataScience
译者:James Le
电脑之心校对
参予:程耀彤、路雪
责任编辑如是说了电脑自学初学者须要介绍的 10 大演算法,主要包括非线性重回、Logistic 重回、朴实可计算性、K 比邻算法等。
在电脑自学中,有一类叫作「没完全免费的早餐」的不等式。具体内容来说,它表示没任何人一类演算法对大部份难题都有效率,在监督管理自学(即预估可视化)中特别这般。
比如,你无法说数学模型常常比计算机程序好,与此相反。有许多不利因素在起促进作用,比如统计数据集的大小不一和内部结构。
因而,你假如特别针对具体内容难题试著多种演算法,并腾出两个统计数据「测试集」来评估结果操控性、挑选出获胜者。
总之,你试著的演算法要适宜你的难题,也就是优先选择恰当的电脑自学各项任务。维米县,假如你须要清扫新房子,你可能会用微波炉、手杖或螺丝刀,但你无法掏出钳子已经开始石堆。
大准则
但也有两个两极化准则,即大部份监督管理电脑自学演算法预估可视化的此基础。
电脑自学演算法被叙述为自学两个最终目标表达式 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)你想用这些统计数据做什么。
即使是经验丰富的统计数据科学家在试著不同的演算法之前,也无法分辨哪种演算法会表现最合适。虽然还有许多其他的电脑自学演算法,但本篇文章中讨论的是最受欢迎的演算法。假如你是电脑自学的初学者,这将是两个很好的自学起点。
原文链接:https://towardsdatascience.com/a-tour-of-the-top-10-algorithms-for-machine-learning-newbies-dde4edffae11
责任编辑为电脑之心校对,。
✄————————————————
加入电脑之心(全职记者/实习生):[email protected]
投稿或寻求报道:[email protected]
广告&商务合作:[email protected]