精华内容
下载资源
问答
  • 机器学习算法的几主要类型

    千次阅读 2020-09-25 18:55:30
    今天对这个常规的机器学习算法来做一个总结。 机器学习的工作过程 机器学习解决问题的过程主要还是分成个部分,一个呢是数据 data,第二个呢是解决问题的模型 model,最后呢是如何根据这个数据训练数据啊,通过这...

    最近的培训课程是围绕着 scikit-learn 展开的。今天对这个常规的机器学习算法来做一个总结。

    机器学习的工作过程

    机器学习解决问题的过程主要还是分成三个部分,一个呢是数据 data,第二个呢是解决问题的模型 model,最后呢是如何根据这个数据训练数据啊,通过这个 fit 的方法来对这个模型进行训练优化。

    在这里插入图片描述

    当算法模型训练优化完成以后,我们就可以拿来应用了。我们给这个模型一个输入量X,然后呢,它就可以通过 predict 方法来生成一个预测值 y。

    机器学习的主要类型

    我首先给出一个列表。接下来主要根据机器学习模型的一个 fit 函数和 predict 函数的区别对这个机器学习模型进行分类。

    在这里插入图片描述
    根据这个模型的 fit 函数的参数,我们可以把训练过程分成有监督学习和无监督学习。我们看这个有监督学习啊,它的fit 参数是两个,一个是 X 一个是 Y 呢,是训练样本的标签,X呢是训练数据,对这个无监督学习来讲,只需要训练数据 X就可以了,它不需要事先来制作这个训练的标签。

    然后根据模型的predict函数,它的输出数据类型啊,其实我们也可以把模型分成两类啊,一类呢,是这个predict它的输出是数值类型。另外一种类型的输出是一个文字标签。

    所以从这个表里边可以看出来,对于有监督学习来讲,如果他的输出是这个数值类型的,这个是属于回归模型。如果呢是输出是一个文字标签,这个就是分类模型。对于无监督学习来讲的话,如果输出的是数值标签,那么这一类问题呢,大部分情况下属于降维模型,或者是数据编码这一类的模型。如果无监督学习,它输出的数据类型是文字标签的话,那一般来讲它对应这个聚类算法。

    当然机器学习算法林林总总很多,但是要分类的话,我想大概呢,就可以从这个它的训练方法,输入输出的数据类型来做一个大致的分类。

    展开全文
  • 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已的知识结构使之不断改善自身的...

    目录

    机器学习

    机器学习的步骤

    01  线性回归

    02 逻辑回归

    03 线性判别分析

    04 分类和回归树

    05 朴素贝叶斯

    06 K近邻

    07 学习矢量量化

    08 支持向量机

    09 bagging和随机森林

    10 Boosting和AdaBoost

     每文一语


    机器学习

    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论凸分析算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的基础,更是我们现在社会进步的源泉。

    随着社会的进步和发展,我们在科技领域不断的创新,当人类的第一台计算机诞生之后,技术的迭代就已经被装上了风火轮了。我们希望计算机可以帮助我们计算我们人类无法涉及到的领域,但是野心永远是人类进化的动力,我们还希望我们的机器可以帮助我们解决我们的工作,那么机器学习就应运而生了。

     

    人工智能是追求目标,机器学习是实现手段,深度学习是其中一种方法

    机器学习的步骤

    作为一个初学者,机器学习需要掌握怎样的技术呢?首先必须要有一门熟练的编程语言

    Python,Java,R语言.....其实Python主要在一些大数据集模型背后占有强大的优势,而R语言在科研统计比较的吃香,因为R语言拥有很多个第三方程序包,利用少量简洁的代码就可以解决我们的科研工作。

    1. 选择一个合适的模型,这通常需要依据实际问题而定,针对不同的问题和任务需要选取恰当的模型,模型就是一组函数的集合。
    2、判断一个函数的好坏,这需要确定一个衡量标准,也就是我们通常说的损失函数(Loss Function),损失函数的确定也需要依据具体问题而定,如回归问题一般采用欧式距离,分类问题一般采用交叉熵代价函数。
    3、找出“最好”的函数,如何从众多函数中最快的找出“最好”的那一个,这一步是最大的难点,做到又快又准往往不是一件容易的事情。常用的方法有梯度下降算法,最小二乘法等和其他一些技巧(tricks)。

    这就是为什么我们说机器学习,底层基础是数学理论,其他的应该在编程上面下功夫

    差不多认识了我们机器学习,接下来我们就开始从机器学习最常见的10大算法入门,介绍它们的概念知识,最后我们将开启机器学习的大门,详细记录我们学习过程中的点点滴滴!

     

    在机器学习领域,有种说法叫做“世上没有免费的午餐”,简而言之,它是指没有任何一种算法能在每个问题上都能有最好的效果,这个理论在监督学习方面体现得尤为重要。

    举个例子来说,你不能说神经网络永远比决策树好,反之亦然。模型运行被许多因素左右,例如数据集的大小和结构。

    因此,你应该根据你的问题尝试许多不同的算法,同时使用数据测试集来评估性能并选出最优项。

    当然,你尝试的算法必须和你的问题相切合,其中的门道便是机器学习的主要任务。打个比方,如果你想打扫房子,你可能会用到吸尘器、扫帚或者拖把,但你肯定不会拿把铲子开始挖坑吧。这个道理很多人都懂,哈哈哈。

    01  线性回归

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

    由于预测建模主要关注最小化模型的误差,或者以可解释性为代价来做出最准确的预测。 我们会从许多不同领域借用、重用和盗用算法,其中涉及一些统计学知识。

    线性回归用一个等式表示,通过找到输入变量的特定权重(B),来描述输入变量(x)与输出变量(y)之间的线性关系。

    图片

    Linear Regression

    举例:y = B0 + B1 * x

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

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

    线性回归已经存在了200多年,并且已经进行了广泛的研究。 如果可能的话,使用这种技术时的一些经验法则是去除非常相似(相关)的变量并从数据中移除噪声。 这是一种快速简单的技术和良好的第一种算法。

    02 逻辑回归

    逻辑回归是机器学习从统计领域借鉴的另一种技术。 这是二分类问题的专用方法(两个类值的问题)。

    逻辑回归与线性回归类似,这是因为两者的目标都是找出每个输入变量的权重值。 与线性回归不同的是,输出的预测值得使用称为逻辑函数的非线性函数进行变换。

    逻辑函数看起来像一个大S,并能将任何值转换为0到1的范围内。这很有用,因为我们可以将相应规则应用于逻辑函数的输出上,把值分类为0和1(例如,如果IF小于0.5,那么 输出1)并预测类别值。

    图片

    Logistic Regression

    由于模型的特有学习方式,通过逻辑回归所做的预测也可以用于计算属于类0或类1的概率。这对于需要给出许多基本原理的问题十分有用。

    与线性回归一样,当你移除与输出变量无关的属性以及彼此非常相似(相关)的属性时,逻辑回归确实会更好。 这是一个快速学习和有效处理二元分类问题的模型。

    03 线性判别分析

    传统的逻辑回归仅限于二分类问题。 如果你有两个以上的类,那么线性判别分析算法(Linear Discriminant Analysis,简称LDA)是首选的线性分类技术。

    LDA的表示非常简单。 它由你的数据的统计属性组成,根据每个类别进行计算。 对于单个输入变量,这包括:

    • 每类的平均值。

    • 跨所有类别计算的方差。

    图片

    Linear Discriminant Analysis

    LDA通过计算每个类的判别值并对具有最大值的类进行预测来进行。该技术假定数据具有高斯分布(钟形曲线),因此最好先手动从数据中移除异常值。这是分类预测建模问题中的一种简单而强大的方法。

    04 分类和回归树

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

    决策树模型可用二叉树表示。对,就是来自算法和数据结构的二叉树,没什么特别。 每个节点代表单个输入变量(x)和该变量上的左右孩子(假定变量是数字)。

    图片

    Decision Tree

    树的叶节点包含用于进行预测的输出变量(y)。 预测是通过遍历树进行的,当达到某一叶节点时停止,并输出该叶节点的类值。

    决策树学习速度快,预测速度快。 对于许多问题也经常预测准确,并且你不需要为数据做任何特殊准备。

    05 朴素贝叶斯

    朴素贝叶斯是一种简单但极为强大的预测建模算法。

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

    图片

    Bayes Theorem

    朴素贝叶斯被称为朴素的原因,在于它假设每个输入变量是独立的。 这是一个强硬的假设,对于真实数据来说是不切实际的,但该技术对于大范围内的复杂问题仍非常有效。

    06 K近邻

    KNN算法非常简单而且非常有效。KNN的模型用整个训练数据集表示。 是不是特简单?

    通过搜索整个训练集内K个最相似的实例(邻居),并对这些K个实例的输出变量进行汇总,来预测新的数据点。 对于回归问题,新的点可能是平均输出变量,对于分类问题,新的点可能是众数类别值。

    成功的诀窍在于如何确定数据实例之间的相似性。如果你的属性都是相同的比例,最简单的方法就是使用欧几里德距离,它可以根据每个输入变量之间的差直接计算。

    图片

    K-Nearest Neighbors

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

    距离或紧密度的概念可能会在高维环境(大量输入变量)下崩溃,这会对算法造成负面影响。这类事件被称为维度诅咒。它也暗示了你应该只使用那些与预测输出变量最相关的输入变量。

    07 学习矢量量化

    K-近邻的缺点是你需要维持整个训练数据集。 学习矢量量化算法(或简称LVQ)是一种人工神经网络算法,允许你挂起任意个训练实例并准确学习他们。

    图片

    Learning Vector Quantization

    LVQ用codebook向量的集合表示。开始时随机选择向量,然后多次迭代,适应训练数据集。 在学习之后,codebook向量可以像K-近邻那样用来预测。 通过计算每个codebook向量与新数据实例之间的距离来找到最相似的邻居(最佳匹配),然后返回最佳匹配单元的类别值或在回归情况下的实际值作为预测。 如果你把数据限制在相同范围(如0到1之间),则可以获得最佳结果。

    如果你发现KNN在您的数据集上给出了很好的结果,请尝试使用LVQ来减少存储整个训练数据集的内存要求。

    08 支持向量机

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

    超平面是分割输入变量空间的线。 在SVM中,会选出一个超平面以将输入变量空间中的点按其类别(0类或1类)进行分离。在二维空间中可以将其视为一条线,所有的输入点都可以被这条线完全分开。SVM学习算法就是要找到能让超平面对类别有最佳分离的系数。

    图片

    Support Vector Machine

    超平面和最近的数据点之间的距离被称为边界,有最大边界的超平面是最佳之选。同时,只有这些离得近的数据点才和超平面的定义和分类器的构造有关,这些点被称为支持向量,他们支持或定义超平面。在具体实践中,我们会用到优化算法来找到能最大化边界的系数值。

    SVM可能是最强大的即用分类器之一,在你的数据集上值得一试。

    09 bagging和随机森林

    随机森林是最流行和最强大的机器学习算法之一。 它是一种被称为Bootstrap Aggregation或Bagging的集成机器学习算法。

    bootstrap是一种强大的统计方法,用于从数据样本中估计某一数量,例如平均值。 它会抽取大量样本数据,计算平均值,然后平均所有平均值,以便更准确地估算真实平均值。

    在bagging中用到了相同的方法,但最常用到的是决策树,而不是估计整个统计模型。它会训练数据进行多重抽样,然后为每个数据样本构建模型。当你需要对新数据进行预测时,每个模型都会进行预测,并对预测结果进行平均,以更好地估计真实的输出值。

    图片

    Random Forest

    随机森林是对决策树的一种调整,相对于选择最佳分割点,随机森林通过引入随机性来实现次优分割。

    因此,为每个数据样本创建的模型之间的差异性会更大,但就自身意义来说依然准确无误。结合预测结果可以更好地估计正确的潜在输出值。

    如果你使用高方差算法(如决策树)获得良好结果,那么加上这个算法后效果会更好。

    10 Boosting和AdaBoost

    Boosting是一种从一些弱分类器中创建一个强分类器的集成技术。 它先由训练数据构建一个模型,然后创建第二个模型来尝试纠正第一个模型的错误。 不断添加模型,直到训练集完美预测或已经添加到数量上限。

    AdaBoost是为二分类开发的第一个真正成功的Boosting算法,同时也是理解Boosting的最佳起点。 目前基于AdaBoost而构建的算法中最著名的就是随机梯度boosting。

    图片

    AdaBoost

    AdaBoost常与短决策树一起使用。 在创建第一棵树之后,每个训练实例在树上的性能都决定了下一棵树需要在这个训练实例上投入多少关注。难以预测的训练数据会被赋予更多的权重,而易于预测的实例被赋予更少的权重。 模型按顺序依次创建,每个模型的更新都会影响序列中下一棵树的学习效果。在建完所有树之后,算法对新数据进行预测,并且通过训练数据的准确程度来加权每棵树的性能。

    • 数据的大小,质量和性质; 

    • 可用的计算时间; 

    • 任务的紧迫性; 

    • 你想要对数据做什么。

    是我们选择那种机器学习算法的关键

    scikit-learn作为一个丰富的python机器学习库,实现了绝大多数机器学习的算法,有相当多的人在使用,于是我这里很无耻地把machine learning cheat sheet for sklearn搬过来了,原文可以看这里。哈哈,既然讲机器学习,我们就用机器学习的语言来解释一下,这是针对实际应用场景的各种条件限制,对scikit-learn里完成的算法构建的一颗决策树,每一组条件都是对应一条路径,能找到相对较为合适的一些解决方法,具体如下:

     每文一语

    既然选择,就像当时一样,不问未来

    展开全文
  • 我应该使用哪种机器学习算法

    千次阅读 2018-12-16 14:56:05
    该资源主要面向初学者到中级数据科学家或分析师,他们兴趣识别和应用机器学习算法来解决他们感兴趣的问题。 当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该使用哪算法?” 问题的答案因...

    我应该使用哪种机器学习算法?

    该资源主要面向初学者到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法来解决他们感兴趣的问题。

    当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该使用哪种算法?”   问题的答案因许多因素而异,包括:

    • 数据的大小,质量和特性。
    • 可用的计算时间。
    • 任务的紧迫性。
    • 您想要对数据做什么。

    即使是经验丰富的数据科学家也无法确定哪种算法在尝试不同的算法之前表现最佳。我们并不主张采用一种方法,但我们希望根据一些明确的因素提供一些指导,以便首先尝试哪种算法。

    机器学习算法备忘单

    流程图显示了何时使用哪种算法

    该  机器学习算法小抄  帮助您从各种机器学习算法选择找到适合您的具体问题适当的算法。本文将指导您完成如何使用工作表的过程。

    由于备忘单是为初学者数据科学家和分析师设计的,因此我们将在讨论算法时做出一些简化的假设。

    这里推荐的算法来自多个数据科学家和机器学习专家和开发人员的汇编反馈和提示。有几个问题我们没有达成协议,对于这些问题,我们试图强调共性并调和差异。

    随着我们的库增长以包含更完整的可用方法集,稍后将添加其他算法。

    如何使用备忘单

    将图表上的路径和算法标签读作“如果  <路径标签>  然后使用  <算法>”。例如:

    • 如果要执行降维,请使用主成分分析。
    • 如果您需要快速进行数字预测,请使用决策树或逻辑回归。
    • 如果需要分层结果,请使用分层聚类。

    有时会应用多个分支,有时候它们都不会完美匹配。重要的是要记住这些路径旨在成为经验法则,因此有些建议并不准确。我与之交谈的几位数据科学家表示,找到最佳算法的唯一可靠方法是尝试所有这些算法。

    机器学习算法的类型

    本节概述了最流行的机器学习类型。如果您熟悉这些类别并希望继续讨论特定算法,则可以跳过本节并转到下面的“何时使用特定算法”。

    监督学习

    监督学习算法基于一组示例进行预测。例如,历史销售额可用于估计未来价格。通过监督学习,您可以获得一个输入变量,该变量由标记的训练数据和所需的输出变量组成。您可以使用算法分析训练数据,以了解将输入映射到输出的功能。该推断函数通过从训练数据中推广以预测在看不见的情况下的结果来映射新的未知示例。

    • 分类:当数据用于预测分类变量时,监督学习也称为分类。将标签或指示器(狗或猫)分配给图像时就是这种情况。当只有两个标签时,这称为二进制分类。当有两个以上的类别时,这些问题被称为多类分类。
    • 回归:在预测连续值时,问题会成为回归问题。
    • 预测:这是根据过去和现在的数据对未来进行预测的过程。它最常用于分析趋势。一个常见的例子可能是根据当年和前几年的销售情况估算下一年的销售额。

    半监督学习

    监督学习的挑战是标签数据可能既昂贵又耗时。如果标签有限,您可以使用未标记的示例来增强监督学习。因为在这种情况下机器没有完全监督,我们说机器是半监督的。使用半监督学习,您可以使用带有少量标记数据的未标记示例来提高学习准确性。

    无人监督的学习

    在执行无监督学习时,机器会显示完全未标记的数据。它被要求发现作为数据基础的内在模式,例如聚类结构,低维流形或稀疏树和图。

    • 聚类:对一组数据示例进行分组,以使一个组(或一个集群)中的示例(与某些标准相比)与其他组中的示例更相似(根据某些标准)。这通常用于将整个数据集分成几个组。可以在每个组中执行分析以帮助用户找到内在模式。
    • 降维:减少所考虑的变量数量。在许多应用程序中,原始数据具有非常高的维度特征,并且某些特征是冗余的或与任务无关。减少维度有助于找到真实的潜在关系。

     强化学习

    强化学习根据环境反馈分析并优化代理的行为。机器尝试不同的场景来发现哪些动作产生最大的回报,而不是被告知要采取哪些动作。试错法和延迟奖励将强化学习与其他技术区分开来。

    选择算法时的注意事项

    在选择算法时,请始终考虑以下因素:准确性,培训时间和易用性。许多用户将准确性放在第一位,而初学者倾向于专注于他们最熟悉的算法。

    当提供数据集时,首先要考虑的是如何获得结果,无论结果如何。初学者倾向于选择易于实现且可以快速获得结果的算法。这很好,只要它只是这个过程的第一步。获得一些结果并熟悉数据后,您可能会花更多时间使用更复杂的算法来加强对数据的理解,从而进一步改善结果。

    即使在这个阶段,最好的算法可能不是已经达到最高报告准确度的方法,因为算法通常需要仔细调整和广泛的训练以获得其最佳可实现的性能。

    何时使用特定算法

    更仔细地查看单个算法可以帮助您了解它们提供的内容以及它们的使用方式。这些描述提供了更多详细信息,并提供了何时使用特定算法的附加提示,与备忘单一致。

    线性回归和逻辑回归    

    线性回归

    逻辑回归

     

    线性回归是一种建模连续因变量y之间关系的方法ÿ和一个或多个预测变量X。X与Y之间的关系可以线性建模为给出训练样例,参数矢量β 可以学习到。

    如果因变量不是连续的但是是分类的,则可以使用logit链接函数将线性回归转换为逻辑回归。Logistic回归是一种简单,快速但功能强大的分类算法。这里我们讨论因变量y的二进制情况ÿ只取二进制值(它可以很容易地扩展到多类分类问题)。

    在逻辑回归中,我们使用不同的假设类来尝试预测给定示例属于“1”类的概率与它属于“-1”类的概率。具体来说,我们将尝试学习形式的函数:。这里是一个sigmoid函数。给出训练样例,参数矢量β可以通过最大化β的对数似然来学习β 给定数据集。

        

    按线性回归分组

    SAS Visual Analytics中的逻辑回归

     

     

    线性SVM和内核SVM

    内核技巧用于将非线性可分离函数映射到更高维度的线性可分函数。支持向量机(SVM)训练算法找到由法向量w表示的分类器w ^和偏见bb超平面的 这个超平面(边界)以尽可能宽的边距分隔不同的类。问题可以转换为约束优化问题:

     

    支持向量机(SVM)训练算法找到由超平面的法向量和偏差表示的分类器。这个超平面(边界)以尽可能宽的边距分隔不同的类。问题可以转换为约束优化问题:

    线性和内核SVM图表

    内核技巧用于将非线性可分离函数映射到更高维度的线性可分函数。

    当类不是线性可分的时,可以使用内核技巧将非线性可分离空间映射到更高维度的线性可分离空间。

    当大多数因变量是数字时,逻辑回归和SVM应该是分类的第一次尝试。这些模型易于实现,参数易于调整,性能也相当不错。所以这些模型适合初学者。

    决策树

    预测模型的决策树。

    预测模型的决策树

    决策树,随机森林和梯度增强都是基于决策树的算法。决策树有许多变体,但它们都做同样的事情 - 将特征空间细分为大多数相同标签的区域。决策树易于理解和实施。然而,当我们耗尽树枝并深入树木时,它们往往会过度拟合数据。随机森林和梯度增强是使用树算法实现良好准确性以及克服过度拟合问题的两种常用方法。

    神经网络和深度学习

    卷积神经网络架构(图像源:维基百科创意共享

    由于其并行和分布式处理能力,神经网络在20世纪80年代中期蓬勃发展。但是,该领域的研究受到反向传播训练算法的无效性的阻碍,该算法被广泛用于优化神经网络的参数。支持向量机(SVM)和其他更简单的模型,通过求解凸优化问题可以很容易地训练,逐渐取代机器学习中的神经网络。

    近年来,诸如无人监督的预训练和分层贪婪训练等新的和改进的训练技术已经引起对神经网络的兴趣的复苏。越来越强大的计算能力,如图形处理单元(GPU)和大规模并行处理(MPP),也刺激了神经网络的复兴。神经网络中的复兴研究已经产生了具有数千层的模型的发明。

    神经网络

    SAS Visual Analytics中的神经网络

    换句话说,浅层神经网络已演变为深度学习神经网络。深度神经网络在监督学习方面非常成功。当用于语音和图像识别时,深度学习的表现与人类一样好,甚至更好。应用于无监督学习任务,例如特征提取,深度学习还从原始图像或语音中提取特征,而人为干预少得多。

    神经网络由三部分组成:输入层,隐藏层和输出层。训练样本定义输入和输出层。当输出层是分类变量时,神经网络是解决分类问题的一种方法。当输出层是连续变量时,则可以使用网络进行回归。当输出层与输入层相同时,网络可用于提取内在特征。隐藏层的数量定义了模型的复杂性和建模能力。

    深度学习:它是什么以及它为何重要

    k-means/k-modes,GMM(高斯混合模型)聚类

    K均值聚类

    高斯混合模型

     

     

    Kmeans/k-modes,GMM聚类旨在将n个观测值划分为k个聚类。K-means定义硬分配:样本只与一个集群相关联。然而,GMM为每个样本定义了一个软分配。每个样本都有可能与每个群集相关联。当给出簇k的数量时,两种算法都是简单且快速的,以便进行聚类。

    DBSCAN

     

    DBSCAN插图

    DBSCAN插图(图片来源:维基百科

    当没有给出簇数k时,可以通过密度扩散连接样本来使用DBSCAN(基于密度的空间聚类)。

    分层聚类

    可以使用树结构(树形图)可视化分层分区。它不需要簇的数量作为输入,并且可以使用不同的K在不同粒度级别(即,可以细化/粗化簇)查看分区。

    PCA,SVD和LDA

    我们通常不希望将大量特征直接馈送到机器学习算法中,因为一些特征可能是不相关的,或者“内在”维度可能小于特征的数量。主成分分析(PCA),奇异值分解(SVD)和 潜在Dirichlet分配(LDA)都可用于执行降维。

    PCA是一种无监督的聚类方法,它将原始数据空间映射到较低维空间,同时保留尽可能多的信息。PCA基本上找到最能保留数据方差的子空间,子空间由数据协方差矩阵的主要特征向量定义。

    SVD与PCA有关,因为中心数据矩阵的SVD(特征与样本)提供了主要的左奇异向量,这些向量定义了与PCA相同的子空间。然而,SVD是一种更通用的技术,因为它也可以做PCA可能不会做的事情。例如,用户对电影矩阵的SVD能够提取可以在推荐系统中使用的用户简档和电影简档。此外,SVD还被广泛用作自然语言处理(NLP)中的主题建模工具,称为潜在语义分析。

    NLP中的相关技术是潜在Dirichlet分配(LDA)。LDA是概率主题模型,它以类似于高斯混合模型(GMM)将连续数据分解为高斯密度的方式将文档分解为主题。与GMM不同,LDA模拟离散数据(文档中的单词),并且它约束主题是根据Dirichlet分布的先验分布。

     结论

    这是易于遵循的工作流程。尝试解决新问题时的外卖消息是:

    • 定义问题。你想解决什么问题?
    • 从简单开始。熟悉数据和基线结果。
    • 然后尝试更复杂的事情。

     

    来源:https://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/#prettyPhoto

    展开全文
  • 机器学习常见算法分类

    千次阅读 2021-02-03 19:32:43
    在维基百科上对机器学习提出以下几定义: “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的...

    1 机器学习概念

    1.1 机器学习的定义

    在维基百科上对机器学习提出以下几种定义:

    • “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。
    • “机器学习是对能通过经验自动改进的计算机算法的研究”。
    • “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。” 一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E。

    可以看出机器学习强调三个关键词:算法、经验、性能,其处理过程如下图所示。
    这里写图片描述

    上图表明机器学习是数据通过算法构建出模型并对模型进行评估,评估的性能如果达到要求就拿这个模型来测试其他的数据,如果达不到要求就要调整算法来重新建立模型,再次进行评估,如此循环往复,最终获得满意的经验来处理其他的数据。

    1.2 机器学习的分类

    1.2.1 监督学习

    监督是从给定的训练数据集中学习一个函数(模型),当新的数据到来时,可以根据这个函数(模型)预测结果。监督学习的训练集要求包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注(标量)的。在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”、“非垃圾邮件”,对手写数字识别中的“1”、“2”、“3”等。在建立预测模型时,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断调整预测模型,直到模型的预测结果达到一个预期的准确率。常见的监督学习算法包括回归分析和统计分类:

    • 二元分类是机器学习要解决的基本问题,将测试数据分成两个类,如垃圾邮件的判别、房贷是否允许等问题的判断。
    • 多元分类是二元分类的逻辑延伸。例如,在因特网的流分类的情况下,根据问题的分类,网页可以被归类为体育、新闻、技术等,依此类推。
      监督学习常常用于分类,因为目标往往是让计算机去学习我们已经创建好的分类系统。数字识别再一次成为分类学习的常见样本。一般来说,对于那些有用的分类系统和容易判断的分类系统,分类学习都适用。

    监督学习是训练神经网络和决策树的最常见技术。神经网络和决策树技术高度依赖于事先确定的分类系统给出的信息。对于神经网络来说,分类系统用于判断网络的错误,然后调整网络去适应它;对于决策树,分类系统用来判断哪些属性提供了最多的信息,如此一来可以用它解决分类系统的问题。
    这里写图片描述

    1.2.2 无监督学习

    与监督学习相比,无监督学习的训练集没有人为标注的结果。在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法和k-Means算法。这类学习类型的目标不是让效用函数最大化,而是找到训练数据中的近似点。聚类常常能发现那些与假设匹配的相当好的直观分类,例如基于人口统计的聚合个体可能会在一个群体中形成一个富有的聚合,以及其他的贫穷的聚合。

    这里写图片描述

    非监督学习看起来非常困难:目标是我们不告诉计算机怎么做,而是让它(计算机)自己去学习怎样做一些事情。非监督学习一般有两种思路:第一种思路是在指导Agent时不为其指定明确的分类,而是在成功时采用某种形式的激励制度。需要注意的是,这类训练通常会置于决策问题的框架里,因为它的目标不是产生一个分类系统,而是做出最大回报的决定。这种思路很好地概括了现实世界,Agent可以对那些正确的行为做出激励,并对其他的行为进行处罚。
    因为无监督学习假定没有事先分类的样本,这在一些情况下会非常强大,例如,我们的分类方法可能并非最佳选择。在这方面一个突出的例子是Backgammon(西洋双陆棋)游戏,有一系列计算机程序(例如neuro-gammon和TD-gammon)通过非监督学习自己一遍又一遍地玩这个游戏,变得比最强的人类棋手还要出色。这些程序发现的一些原则甚至令双陆棋专家都感到惊讶,并且它们比那些使用预分类样本训练的双陆棋程序工作得更出色。

    1.2.3 半监督学习

    半监督学习(Semi-supervised Learning)是介于监督学习与无监督学习之间一种机器学习方式,是模式识别和机器学习领域研究的重点问题。它主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。主要算法有五类:基于概率的算法;在现有监督算法基础上进行修改的方法;直接依赖于聚类假设的方法等,在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理地组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测,如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。
    半监督学习分类算法提出的时间比较短,还有许多方面没有更深入的研究。半监督学习从诞生以来,主要用于处理人工合成数据,无噪声干扰的样本数据是当前大部分半监督学习方法使用的数据,而在实际生活中用到的数据却大部分不是无干扰的,通常都比较难以得到纯样本数据。

    这里写图片描述

    1.2.4 强化学习

    强化学习通过观察来学习动作的完成,每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻做出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning 以及时间差学习(Temporal difference learning)。

    这里写图片描述

    在企业数据应用的场景下,人们最常用的可能就是监督式学习和非监督式学习的模型。在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据,目前半监督式学习是一个很热的话题。而强化学习更多地应用在机器人控制及其他需要进行系统控制的领域。

    1.3 机器学习的常见算法

    常见的机器学习算法有:

    • 构造条件概率:回归分析和统计分类;
    • 人工神经网络;
    • 决策树;
    • 高斯过程回归;
    • 线性判别分析;
    • 最近邻居法;
    • 感知器;
    • 径向基函数核;
    • 支持向量机;
    • 通过再生模型构造概率密度函数;
    • 最大期望算法;
    • graphical model:包括贝叶斯网和Markov随机场;
    • Generative Topographic Mapping;
    • 近似推断技术;
    • 马尔可夫链蒙特卡罗方法;
    • 变分法;
    • 最优化:大多数以上方法,直接或者间接使用最优化算法。

    根据算法的功能和形式的类似性,我们可以把算法分类,比如说基于树的算法,基于神经网络的算法等等。当然,机器学习的范围非常庞大,有些算法很难明确归类到某一类。而对于有些分类来说,同一分类的算法可以针对不同类型的问题,下面用一些相对比较容易理解的方式来解析一些主要的机器学习算法:

    1.3.1 回归算法

    回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。在机器学习领域,人们说起回归,有时候是指一类问题,有时候是指一类算法,这一点常常会使初学者有所困惑。常见的回归算法包括:最小二乘法(Ordinary Least Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)。
    这里写图片描述

    1.3.2 基于实例的算法

    基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor (KNN),、学习矢量量化(Learning Vector Quantization, LVQ)以及自组织映射算法(Self-Organizing Map,SOM)
    这里写图片描述

    1.3.3 正则化方法

    正则化方法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。常见的算法包括:Ridge Regression、Least Absolute Shrinkage and Selection Operator(LASSO)以及弹性网络(Elastic Net)。
    这里写图片描述

    1.3.4 决策树学习

    决策树算法根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree, CART)、 ID3 (Iterative Dichotomiser 3)、C4.5、Chi-squared Automatic Interaction Detection (CHAID)、Decision Stump、机森林(Random Forest)、多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine,GBM)。
    这里写图片描述

    1.3.5 贝叶斯学习

    贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法、平均单依赖估计(Averaged One-Dependence Estimators, AODE)以及 Bayesian Belief Network(BBN)。
    这里写图片描述

    1.3.6 基于核的算法

    基于核的算法中最著名的莫过于支持向量机(SVM)了。基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易解决。 常见的基于核的算法包括:支持向量机(Support Vector Machine,SVM)、径向基函数(Radial Basis Function,RBF)以及线性判别分析(Linear Discriminate Analysis,LDA)等。
    这里写图片描述

    1.3.7 聚类算法

    聚类就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所有的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means 算法以及期望最大化算法(Expectation Maximization,EM)。
    这里写图片描述

    1.3.8 关联规则学习

    关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori 算法和 Eclat 算法等。
    这里写图片描述

    1.3.9 人工神经网络算法

    人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法(其中深度学习就是其中的一类算法,我们会单独讨论)。重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network)、反向传递(Back Propagation)、Hopfield 网络、自组织映射(Self-Organizing Map, SOM)、学习矢量量化(Learning Vector Quantization,LVQ)。
    这里写图片描述

    1.3.10 深度学习算法

    深度学习算法是对人工神经网络的发展,在近期赢得了很多关注,特别是百度也开始发力深度学习后,更是在国内引起了很多关注。在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann Machine, RBN)、 Deep Belief Networks(DBN)、卷积网络(Convolutional Network)、堆栈式自动编码器(Stacked Auto-encoders)。
    这里写图片描述

    1.3.11 降低维度算法

    像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式,试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis, PCA)、偏最小二乘回归(Partial Least Square Regression,PLS)、 Sammon 映射、多维尺度(Multi-Dimensional Scaling, MDS)、投影追踪(Projection Pursuit)等。
    这里写图片描述

    1.3.12 集成算法

    集成算法用一些相对较弱的学习模型独立地对同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting、Bootstrapped Aggregation(Bagging)、AdaBoost、堆叠泛化(Stacked Generalization, Blending)、梯度推进机(Gradient Boosting Machine, GBM)、随机森林(Random Forest)。
    这里写图片描述

    参考:https://blog.csdn.net/yirenboy/article/details/47844663 

    https://github.com/Wasabi1234/Spark-MLlib-Tutorial

    https://cloud.tencent.com/developer/article/1411034

    展开全文
  • 十大机器学习算法的一个小总结

    千次阅读 2019-10-11 19:09:02
    在公众号看到来一篇不错的文章,讲解机器学习算法的,感觉挺好的,所以这里对常用的机器学习算法做一个小的总结, 然后根据学习李航老师的《统计学习方法》做得笔记,对这些算法进行补充。 简介   关于机器学习...
  • 此资源主要面向初级到中级数据科学家或分析师,他们兴趣识别和应用机器学习算法以解决他们感兴趣的问题。 初学者在面对各种机器学习算法时提出的一个典型问题是“我应该使用哪算法?”问题的答案取决于许多因素...
  • 机器学习算法一览表

    千次阅读 2018-03-31 18:07:33
    尴尬的是,按理说,机器学习介绍与算法一览应该放在最前面写,详细的应用建议应该在讲完机器学习常用算法之后写,突然莫名奇妙在中间插播这么一篇,好像有点打乱主线。  老话说『亡羊补牢,为时未晚』,前面开头忘...
  • 机器学习算法分类

    千次阅读 2020-05-02 22:39:59
    一、监督学习 二、无监督学习 、半监督学习 四、强化学习
  • 如何选择最佳机器学习算法

    千次阅读 2021-01-21 19:05:53
    没有任何一种机器学习算法,能够做到针对任何数据集都是最佳的。通常,拿到一个具体的数据集后,会根据一系列的考量因素进行评估。这些因素包括 :要解决的问题的性质、数据集大小、数据集特征、有无标签等。了...
  • [量化学院]机器学习有哪些常用算法

    千次阅读 2019-01-12 10:58:19
    导语:通过文章《什么是机器学习》我们大概知晓了机器学习,那么机器学习里面究竟多少经典的算法呢?本文简要介绍一下机器学习中的常用算法。这部分介绍的重点是这些方法内涵的思想,数学与实践细节不会在这讨论。...
  • 机器学习种9常用算法

    千次阅读 多人点赞 2017-12-18 22:26:07
    一、常见算法分类 分类方法KNN 逻辑斯蒂回归(logiscic) 决策树 朴素贝叶斯 支持向量机SVC 回归方法KNN 普通线性回归(linear) 岭回归(ridge) lasso回归 决策树 ...K均值算法(K-means) (无监督学习
  • 各类机器学习算法的优缺点和适用场景汇总

    千次阅读 多人点赞 2019-05-29 17:24:21
    贝叶斯系列算法的优缺点 决策树的优缺点 支持向量机的优缺点 神经网络的优缺点 降维算法的优缺点 聚类算法的优缺点 kNN的优缺点 线性模型的优缺点
  • 【机器学习】机器学习算法之旅

    千次阅读 2018-05-19 20:57:56
    在这篇文章中,我们将介绍最流行的机器学习算法。 浏览该领域的主要算法以了解可用的方法是有用的。 很多算法可用,当算法名称被抛出时,它会感到压倒性的,并且您只需要知道它们是什么以及它们在哪里适合。 我想...
  • 常见的十大机器学习算法

    千次阅读 2017-07-01 12:24:23
    机器学习算法的广义分类大概有三种:监督式学习、无监督学习、强化学习。 监督学习由一个目标变量或结果变量(或因变量)组成。这些变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个...
  • 各种机器学习算法的应用场景分别是什么?   关于这个问题我今天正好看到了这个文章。讲的正是各个算法的优劣分析,很中肯。 https://zhuanlan.zhihu.com/p/25327755正好14年的时候人做过一个实验[1],比较在...
  • 机器学习算法地图

    千次阅读 多人点赞 2018-07-05 12:10:07
    其它机器学习、深度学习算法的...文章《机器学习算法地图》系SIGAI原创,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。如需获取原版PDF全文,可搜索关注VX公众号SIGAICN。(https://0x9.me/dxRg5) ...
  • 机器学习算法 无监督学习 算法

    千次阅读 2019-06-26 14:51:22
    本文介绍无监督学习算法: 聚类算法 Apriori算法 FP-growth 算法 1 聚类算法 2 Apriori算法 3 FP-growth 算法
  • 机器学习算法背后的数学原理

    千次阅读 多人点赞 2020-09-06 09:29:04
    机器学习算法类型 机器学习算法大致可以分为以下四类: **监督学习:**用于预测的目标是已知的情况。这些算法生成一个函数,该函数将输入映射到输出变量。回归和分类算法都属于这一类。在回归中,输出变量是连续的...
  • 机器学习十大算法

    万次阅读 多人点赞 2018-08-18 09:26:05
    机器学习十大算法 http://www.52cs.org/?p=1835   作者 James Le ,译者 尚剑 , 本文转载自infoQ 毫无疑问,机器学习/人工智能的子领域在过去几年越来越受欢迎。目前大数据在科技行业已经炙手可热,而...
  • 学习方式 监督式学习: 非监督式学习: 半监督式学习: 强化学习算法类似性 回归算法: 基于实例的算法 正则化方法 决策树学习 贝叶斯方法 基于核的算法 聚类算法 关联规则学习 人工神经网络 ...
  • 机器学习算法介绍

    千次阅读 2019-03-13 09:36:53
    谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一让计算机更聪明、更个性化的技术。 也许我们生活在人类历史上最关键的时期:从使用大型...
  • 常见机器学习算法优缺点总结

    千次阅读 2019-08-04 17:49:46
    常见机器学习算法优缺点总结 1. 回归 回归是一用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。 回归任务的特征是具有数值型目标变量的标注数据集。换言之...
  • 常见机器学习算法背后的数学

    千次阅读 2020-08-05 08:46:20
    机器学习算法类型 机器学习算法大致可以分为以下四类: 监督学习:预测的目标或输出变量是已知的。这些算法生成一个函数,该函数将输入映射到输出变量。回归和分类算法属于这一类。在回归中,输出变量是连续的,而在...
  • 一直想找本书,能在机器学习复杂的算法原理和高效的编程实战之间达到合适的平衡:让感兴趣的同学拿到就能用的代码,还有基本原理的介绍,因为了解原理才知道什么时候用什么算法最合适,以及如何调整参数。...
  • 机器学习常见算法

    万次阅读 2018-08-21 21:47:27
    线性回归可能是统计学和机器学习中最知名和最易理解的算法之一。 由于预测建模主要关注最小化模型的误差,或者以可解释性为代价来做出最准确的预测。 我们会从许多不同领域借用、重用和盗用算法,其中涉及一些...
  • 机器学习实战》学习笔记(一):机器学习基础

    万次阅读 多人点赞 2019-08-19 17:01:32
    专栏【机器学习】 【机器学习】《机器学习实战》读书笔记及代码 总目录 ... ————————————————...目录专栏【机器学习】本章内容何谓机器学习2、关键术语3、机器学习的主要任务4、如何选择合适的算法5...
  • 8常见机器学习算法比较

    万次阅读 2018-09-13 19:48:11
    机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM...
  • 一、一般使用机器学习算法遵循的步骤 摘自《机器学习实战》,感觉思路比较清晰 1.收集数据。 可以使用很多方法收集样本数据,例如制作网络爬虫从网站上爬取数据,从RSS反馈或者API中得到信息,设备发送过来的实测...
  • 机器学习算法分类及数据集划分

    千次阅读 2020-10-06 11:08:37
    2.2 机器学习算法分类 监督学习:既特征值又目标值。 无监督学习:只有特征值,无目标值。 2.3 监督学习 2.3.1 分类 (离散型) 1. K-近邻算法: 2. 贝叶斯分类: 3.决策树与随机森林: 4.逻辑回归: 5.神经网络...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 182,284
精华内容 72,913
关键字:

机器学习算法有三种类型