美文网首页
初学者的十大机器学习算法

初学者的十大机器学习算法

作者: iOSDevLog | 来源:发表于2018-11-10 23:25 被阅读45次

    介绍

    “哈佛商业评论”(Harvard Business Review)的文章将“数据科学家”称为“21世纪最性感的工作”,对ML算法的研究获得了极大的吸引力。因此,对于那些从ML领域开始的人,我们决定重新启动我们非常受欢迎的黄金博客10个算法机器学习工程师需要知道 - 虽然这篇文章是针对初学者的。

    ML算法是那些可以从数据中学习并从经验中提高而无需人工干预的算法。学习任务可以包括学习将输入映射到输出的功能,学习未标记数据中的隐藏结构; 或“基于实例的学习”,其中通过将新实例(行)与训练数据中的实例(存储在存储器中)进行比较,为新实例生成类标签。“基于实例的学习”不会从特定实例创建抽象。

    ML算法的类型

    ML算法有3种类型:

    监督学习:

    监督学习可以解释如下:使用标记的训练数据来学习从输入变量(X)到输出变量(Y)的映射函数。

    Y = f(X)

    监督学习问题可以有两种类型:

    • 分类:预测输出变量为类别形式的给定样本的结果。例子包括男性和女性,病态和健康的标签。

    • 回归:预测给定样本的结果,其中输出变量以实际值的形式出现。例子包括表示降雨量,人的身高的实值标签。

    我们在本博客中介绍的前5种算法 - 线性回归,Logistic回归,CART,NaïveBayes,KNN--都是监督学习的例子。

    集成是一种监督学习。这意味着结合多个不同的弱ML模型的预测来预测新样本。我们覆盖的算法9-10-使用随机森林进行装袋,使用XGBoost进行提升是集合技术的示例。

    无监督学习:

    无监督学习问题只包含输入变量(X)但没有相应的输出变量。它使用未标记的训练数据来建模数据的基础结构。

    无监督学习问题可以有 3 种类型:

    关联:发现集合中项目共现的概率。它广泛用于市场篮子分析。示例:如果客户购买面包,他有80%也可能购买鸡蛋。

    聚类:对样本进行分组,使得同一聚类中的对象彼此更相似,而不是来自另一个聚类的对象。

    降维:正如其名称一样,降维意味着减少数据集的变量数量,同时确保仍传达重要信息。可以使用特征提取方法和特征选择方法来降低维度。特征选择选择原始变量的子集。特征提取执行从高维空间到低维空间的数据转换。示例:PCA算法是一种特征提取方法。

    我们在这里介绍的算法6-8 - Apriori,K-means,PCA是无监督学习的例子。

    强化学习:

    强化学习是一种机器学习算法,允许代理根据其当前状态决定最佳下一步动作,通过学习最大化奖励的行为。

    强化算法通常通过反复试验来学习最佳动作。它们通常用于机器人技术 - 机器人可以通过在遇到障碍物后接收负面反馈以及在视频游戏中学习避免碰撞 - 其中试验和错误显示可以射击玩家奖励的特定动作。然后,代理可以使用这些奖励来了解游戏的最佳状态并选择下一个动作。

    量化ML算法的流行度

    诸如此类的调查报告已经量化了10种最流行的数据挖掘算法。然而,这些列表是主观的,并且与引用的论文的情况一样,被轮询参与者的样本规模非常狭窄,并且由数据挖掘的高级从业者组成。被调查者是ACM KDD创新奖,IEEE ICDM研究贡献奖的获奖者; KDD-06,ICDM'06和SDM'06的计划委员会成员; 以及ICDM'06的145名与会者。

    本博客中的前十大算法适用于初学者,主要是我在孟买大学计算机工程学士学位期间从“数据仓库和挖掘”(DWM)课程中学到的算法。DWM课程是ML算法领域的一个很好的介绍。我特别包括最后2种算法(合奏方法),基于它们的盛行来赢得Kaggle比赛。希望你喜欢这篇文章!

    监督学习算法

    1.线性回归

    在ML中,我们有一组输入变量(x),用于确定输出变量(y)。输入变量和输出变量之间存在关系。ML的目标是量化这种关系。

    线性回归

    图1:线性回归表示为y = a + bx形式的线。资源

    在线性回归中,输入变量(x)和输出变量(y)之间的关系表示为y = a + bx形式的等式。因此,线性回归的目标是找出系数a和b的值。这里,a是截距,b是线的斜率。

    图1显示了数据集的绘制x和y值。目标是拟合最接近大多数点的线。这将减少数据点的y值与线之间的距离(“误差”)。

    2. Logistic回归

    线性回归预测是连续值(以cm为单位的降雨量),逻辑回归预测是应用转换函数后的离散值(学生是否通过/失败)。

    Logistic回归最适合二进制分类(y = 0或1的数据集,其中1表示默认类。例如:在预测事件是否发生时,它发生的事件被归类为1.在预测是否人生病与否,生病的例子表示为1)。它以其中使用的变换函数命名,称为逻辑函数h(x)= 1 /(1 + ex),它是S形曲线。

    在逻辑回归中,输出采用默认类的概率形式(与线性回归不同,其中直接产生输出)。由于它是概率,输出位于0-1的范围内。通过使用逻辑函数h(x)= 1 /(1 + e ^ -x)对x值进行对数变换来生成输出(y值)。然后应用阈值以将该概率强制为二进制分类。

    物流用功能

    图2:Logistic回归以确定肿瘤是恶性的还是良性的。如果概率h(x)> = 0.5,则分类为恶性。资源

    在图2中,为了确定肿瘤是否是恶性的,默认变量是y = 1(肿瘤=恶性); x变量可以是肿瘤的测量值,例如肿瘤的大小。如图所示,逻辑函数将数据集的各种实例的x值转换为0到1的范围。如果概率超过阈值0.5(由水平线显示),则将肿瘤分类恶毒的。

    逻辑回归方程P(x)= e ^(b0 + b1x)/(1 + e(b0 + b1x))可以转换为ln(p(x)/ 1-p(x))= b0 + b1x

    逻辑回归的目标是使用训练数据来找到系数b0和b1的值,使得它将最小化预测结果与实际结果之间的误差。使用最大似然估计技术估计这些系数。

    3. CART

    分类和回归树(CART)是决策树的实现,其中包括ID3,C4.5。

    非终端节点是根节点和内部节点。终端节点是叶节点。每个非终端节点表示单个输入变量(x)和该变量上的分裂点; 叶节点表示输出变量(y)。该模型用于进行预测:遍历树的分裂以到达叶节点并输出叶节点处存在的值。

    图3中的决策树根据年龄和婚姻状况分类是否会购买跑车或小型货车。如果这个人超过30年并且没有结婚,我们按照以下步骤走过树:“超过30年?” - >是 - >'结婚了?' - >不。因此,该模型输出了跑车。

    决策树图

    图3:决策树的各个部分。资源

    4.朴素贝叶斯

    为了计算事件发生的概率,假设已经发生了另一个事件,我们使用贝叶斯定理。为了计算给定某个变量的值的结果的概率,即,根据我们的先验知识(d)计算假设(h)的概率,我们使用贝叶斯定理如下:

    P(h | d)=(P(d | h)P(h))/ P(d)

    哪里:

    • P(h | d)=后验概率。假设数据d,假设h的概率为真,其中P(h | d)= P(d1 | h)P(d2 | h)...... P(dn | h)P(d)
    • P(d | h)=可能性。给出假设h为真的数据的概率。
    • P(h)=类先验概率。假设h的概率为真(无论数据如何)
    • P(d)=预测器先验概率。数据的概率(不论假设)

    这种算法被称为“朴素”,因为它假设所有变量彼此独立,这是在现实世界的例子中做出的天真假设。

    朴素贝叶斯

    图4:使用朴素贝叶斯使用变量'weather'预测'play'的状态。

    以图4为例,如果天气='晴天',结果如何?

    为了确定结果play ='yes'或'no'给定变量weather ='sunny'的值,计算P(yes | sunny)和P(no | sunny)并选择概率较高的结果。

    • P(是|晴天)=(P(晴天|是)* P(是))/ P(晴天)=(3/9 * 9/14)/(5/14)= 0.60

    • P(没有|晴天)=(P(晴天|否)* P(否))/ P(晴天)=(2/5 * 5/14)/(5/14)= 0.40

    因此,如果天气='晴天',结果是play ='yes'。

    5. KNN

    k近邻算法使用整个数据集作为训练集,而不是将数据集拆分为训练集和测试集。

    当新数据实例需要结果时,KNN算法遍历整个数据集以查找新实例的k最近实例,或者与新记录最相似的k个实例,然后输出平均值分类问题的结果(对于回归问题)或模式(最常见的类)。k的值是用户指定的。

    使用诸如欧几里德距离和汉明距离之类的度量来计算实例之间的相似性。

    无监督学习算法

    6. Apriori

    Apriori算法用于事务数据库中以挖掘频繁项集,然后生成关联规则。它广泛用于市场购物篮分析,其中检查数据库中经常共同出现的产品组合。一般来说,我们为'如果一个人购买物品X,然后他购买物品Y'作为:X - > Y编写关联规则。

    例如:如果一个人购买牛奶和糖,那么他很可能会购买咖啡粉。这可以以关联规则的形式写成:{milk,sugar} - >咖啡粉。在超过支持和置信度的阈值之后生成关联规则。

    公式换支持

    图5:关联规则X-> Y的支持,置信度和提升的公式。资源

    支持度量有助于修剪在频繁项集生成期间要考虑的候选项集的数量。这项支持措施以Apriori原则为指导。Apriori原则指出,如果一个项集是频繁的,那么它的所有子集也必须是频繁的。

    7. K-means

    K-means是一种迭代算法,它将类似的数据分组成簇。它计算k个簇的质心,并将数据点分配给在其质心和数据点之间距离最小的簇。

    k均值算法

    图6:K-means算法的步骤。资源

    第1步:k-means初始化:

    a)选择k的值。在这里,让我们取k = 3.b)将每个数据点随机分配给3个簇中的任何一个.c)计算每个簇的簇质心。红色,蓝色和绿色星形表示3个星团中每个星团的质心。

    第2步:将每个观察与群集相关联:

    将每个点重新分配给最近的群集质心。这里,上面的5个点被分配给具有蓝色质心的簇。按照相同的步骤将点分配给包含红色和绿色中心的聚类。

    第3步:重新计算质心:

    计算新群集的质心。灰色恒星显示旧的质心,而新的质心是红色,绿色和蓝色恒星。

    第4步:迭代,如果不变则退出。

    重复步骤2-3,直到没有点从一个簇切换到另一个簇。一旦没有切换2个连续步骤,退出k-means算法。

    8. PCA

    主成分分析(PCA)用于通过减少变量的数量来使数据易于探索和可视化。这是通过将数据中的最大方差捕获到具有称为“主成分”的轴的新坐标系统中来完成的。每个分量是原始变量的线性组合,并且彼此正交。组件之间的正交性表明这些组件之间的相关性为零。

    第一个主成分捕获数据中最大可变性的方向。第二个主成分捕获数据中的剩余方差,但具有与第一个成分不相关的变量。类似地,所有连续的主成分(PC3,PC4等)捕获剩余的方差,同时与前一个成分不相关。

    PCA

    图7:3个原始变量(基因)被简化为2个新变量,称为主成分(PC)。资源

    集成学习技巧:

    集成意味着通过投票或平均来组合多个学习者(分类器)的结果以改善结果。在分类期间使用投票并且在回归期间使用平均。这个想法是学习者的合奏比单个学习者表现得更好。

    有三种类型的集合算法:Bagging,Boosting和Stacking。我们不打算在这里介绍“堆叠”,但是如果您想详细解释它,请在下面的评论部分告诉我,我可以在其上写一个单独的博客。

    9.随机森林套袋

    随机森林(多个学习者)是对袋装决策树(单个学习者)的改进。

    装袋:装袋的第一步是使用Bootstrap Sampling方法创建包含数据集的多个模型。在Bootstrap Sampling中,每个生成的训练集由来自原始数据集的随机子样本组成。这些训练集中的每一个都与原始数据集具有相同的大小,但是一些记录重复多次并且一些记录根本不出现。然后,整个原始数据集用作测试集。因此,如果原始数据集的大小为N,则每个生成的训练集的大小也为N,唯一记录的数量约为(2N / 3); 测试集的大小也是N.

    装袋的第二步是通过在不同生成的训练集上使用相同的算法来创建多个模型。在这种情况下,让我们讨论随机森林。与决策树不同,在决策树中,每个节点都被划分为最小化错误的最佳特征,在随机森林中,我们选择随机选择的特征来构建最佳分割。随机性的原因是:即使使用装袋,当决策树选择最佳特征进行拆分时,它们最终会得到类似的结构和相关的预测。但是,在分割随机特征子集之后的装袋意味着来自子树的预测之间的相关性较小。

    在每个分割点处要搜索的特征的数量被指定为随机森林算法的参数。

    因此,在使用随机森林的装袋中,使用随机的记录样本构建每个树,并且使用随机的预测变量构建每个分割。

    10.用AdaBoost提升

    a)Bagging是一个平行的整体,因为每个模型都是独立构建的。另一方面,提升是一种顺序集合,其中每个模型都是基于纠正先前模型的错误分类而构建的。

    b)套袋主要涉及“简单投票”,每个分类者投票以获得最终结果 - 由大多数平行模型决定; 提升涉及“加权投票”,其中每个分类者投票以获得由多数决定的最终结果 - 但顺序模型是通过为先前模型的错误分类实例分配更大权重而建立的。

    Adaboost代表Adaptive Boosting。

    Adaboost的

    图9:决策树的Adaboost。资源

    在图9中,步骤1,2,3涉及一个称为决策树桩的弱学习者(一级决策树基于仅一个输入特征的值进行预测;一个决策树,其根立即连接到其叶子) 。构建弱学习者的过程一直持续到用户定义的弱学习者数量或者在训练期间没有进一步改善为止。步骤4组合了先前模型的3个决策树桩(因此在决策树中具有3个分裂规则)。

    步骤1:从1个决策树桩开始,对1个输入变量做出决定:

    数据点的大小表明我们已经应用了相等的权重来将它们分类为圆形或三角形。决策树桩在上半部分生成了一条水平线来对这些点进行分类。我们可以看到有2个圆被错误地预测为三角形。因此,我们将为这两个圆圈分配更高的权重并应用另一个决策树桩。

    第2步:移动到另一个决策树桩,以决定另一个输入变量:

    我们观察到上一步中2个误分类圆的大小大于其余点。现在,第二个决策树桩将尝试正确预测这两个圈子。

    作为分配较高权重的结果,这两个圆圈已被左侧的垂直线正确分类。但现在这导致错误分类顶部的3个圆圈。因此,我们将在顶部的这3个圆圈中分配更高的权重,并应用另一个决策树桩。

    步骤3:训练另一个决策树桩以决定另一个输入变量。

    上一步中的3个错误分类的圆圈大于其余数据点。现在,生成了右侧的垂直线以对圆和三角形进行分类。

    第4步:结合决策树桩:

    我们结合了之前3个模型中的分离器,并观察到与任何单个弱学习者相比,此模型中的复杂规则正确地对数据点进行了分类。

    结论:

    回顾一下,我们了解到:

    • 5种监督学习技术 - 线性回归,Logistic回归,CART,NaïveBayes,KNN。
    • 3种无监督学习技巧 - Apriori,K-means,PCA。
    • 2种集成技术 - 随机森林,用XGBoost提升。

    原文:https://www.kdnuggets.com/2017/10/top-10-machine-learning-algorithms-beginners.html
    作者:Reena Shaw,KDnuggets。

    相关文章

      网友评论

          本文标题:初学者的十大机器学习算法

          本文链接:https://www.haomeiwen.com/subject/hswtfqtx.html