机器学习算法_机器学习算法总结 - CSDN
机器学习算法 订阅
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 [1]  它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。 展开全文
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 [1]  它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
信息
外文名
Machine Learning Algorithm
领    域
多领域交叉学科
应用学科
概率论、统计学、逼近论
中文名
机器学习算法
应    用
智能控制、图形图像处理
机器学习算法发展史
机器学习是人工智能研究较为年轻的分支,它的发展过程大体上可分为4个时期。第一阶段是在20世纪50年代中叶到60年代中叶,属于热烈时期。第二阶段是在20世纪60年代中叶至70年代中叶,被称为机器学习的冷静时期。第三阶段是从20世纪70年代中叶至80年代中叶,称为复兴时期。 [2]  机器学习的最新阶段始于1986年。机器学习进入新阶段的重要表现在下列诸方面:(1) 机器学习已成为新的边缘学科并在高校形成一门课程。它综合应用心理学、生物学和神经生理学以及数学、自动化和计算机科学形成机器学习理论基础。(2) 结合各种学习方法,取长补短的多种形式的集成学习系统研究正在兴起。特别是连接学习符号学习的耦合可以更好地解决连续性信号处理中知识与技能的获取与求精问题而受到重视。(3) 机器学习与人工智能各种基础问题的统一性观点正在形成。例如学习与问题求解结合进行、知识表达便于学习的观点产生了通用智能系统SOAR的组块学习。类比学习与问题求解结合的基于案例方法已成为经验学习的重要方向。(4) 各种学习方法的应用范围不断扩大,一部分已形成商品。归纳学习的知识获取工具已在诊断分类型专家系统中广泛使用。连接学习在声图文识别中占优势。分析学习已用于设计综合型专家系统。遗传算法与强化学习在工程控制中有较好的应用前景。与符号系统耦合的神经网络连接学习将在企业的智能管理与智能机器人运动规划中发挥作用。(5) 与机器学习有关的学术活动空前活跃。国际上除每年一次的机器学习研讨会外,还有计算机学习理论会议以及遗传算法会议。
收起全文
精华内容
参与话题
  • 机器学习常见算法

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

    1. 线性回归

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

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Linear Regression

    举例:y = B0 + B1 * x

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

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

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

    2. 逻辑回归

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

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Logistic Regression

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

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

    3. 线性判别分析

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

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

    • 每类的平均值。
    • 跨所有类别计算的方差。

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Linear Discriminant Analysis

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

    4. 分类和回归树

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Decision Tree

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

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

    5. 朴素贝叶斯

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Bayes Theorem

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

    6. K近邻

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

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    K-Nearest Neighbors

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

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

    7. 学习矢量量化

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Learning Vector Quantization

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

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

    8. 支持向量机

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Support Vector Machine

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

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

    9. bagging和随机森林

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

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    Random Forest

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

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

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

    10. Boosting和AdaBoost

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

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

    收藏|数据分析师最常用的10个机器学习算法!(附图解)

     

    AdaBoost

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

    因为算法极为注重错误纠正,所以一个没有异常值的整洁数据十分重要。

    选择那种机器学习算法:

    • 数据的大小,质量和性质;
    • 可用的计算时间;
    • 任务的紧迫性;
    • 你想要对数据做什么。
    展开全文
  • 8种常见机器学习算法比较

    万次阅读 2018-09-13 19:48:11
    机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM...

    简介

    机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM,GBDT,Adaboost,现在深度学习很火热,神经网络也是一个不错的选择。假如你在乎精度(accuracy)的话,最好的方法就是通过交叉验证(cross-validation)对各个算法一个个地进行测试,进行比较,然后调整参数确保每个算法达到最优解,最后选择最好的一个。但是如果你只是在寻找一个“足够好”的算法来解决你的问题,或者这里有些技巧可以参考,下面来分析下各个算法的优缺点,基于算法的优缺点,更易于我们去选择它。

    偏差&方差

    在统计学中,一个模型好坏,是根据偏差和方差来衡量的,所以我们先来普及一下偏差和方差:

    偏差:描述的是预测值(估计值)的期望E’与真实值Y之间的差距。偏差越大,越偏离真实数据。

    8种常见机器学习算法比较

    方差:描述的是预测值P的变化范围,离散程度,是预测值的方差,也就是离其期望值E的距离。方差越大,数据的分布越分散。

    8种常见机器学习算法比较

    模型的真实误差是两者之和,如下图:

                           8种常见机器学习算法比较

    如果是小训练集,高偏差/低方差的分类器(例如,朴素贝叶斯NB)要比低偏差/高方差大分类的优势大(例如,KNN),因为后者会过拟合。但是,随着你训练集的增长,模型对于原数据的预测能力就越好,偏差就会降低,此时低偏差/高方差分类器就会渐渐的表现其优势(因为它们有较低的渐近误差),此时高偏差分类器此时已经不足以提供准确的模型了。

    当然,你也可以认为这是生成模型(NB)与判别模型(KNN)的一个区别。

    为什么说朴素贝叶斯是高偏差低方差?

    以下内容引自知乎:

    首先,假设你知道训练集和测试集的关系。简单来讲是我们要在训练集上学习一个模型,然后拿到测试集去用,效果好不好要根据测试集的错误率来衡量。但很多时候,我们只能假设测试集和训练集的是符合同一个数据分布的,但却拿不到真正的测试数据。这时候怎么在只看到训练错误率的情况下,去衡量测试错误率呢?

    由于训练样本很少(至少不足够多),所以通过训练集得到的模型,总不是真正正确的。(就算在训练集上正确率100%,也不能说明它刻画了真实的数据分布,要知道刻画真实的数据分布才是我们的目的,而不是只刻画训练集的有限的数据点)。而且,实际中,训练样本往往还有一定的噪音误差,所以如果太追求在训练集上的完美而采用一个很复杂的模型,会使得模型把训练集里面的误差都当成了真实的数据分布特征,从而得到错误的数据分布估计。这样的话,到了真正的测试集上就错的一塌糊涂了(这种现象叫过拟合)。但是也不能用太简单的模型,否则在数据分布比较复杂的时候,模型就不足以刻画数据分布了(体现为连在训练集上的错误率都很高,这种现象较欠拟合)。过拟合表明采用的模型比真实的数据分布更复杂,而欠拟合表示采用的模型比真实的数据分布要简单。

    在统计学习框架下,大家刻画模型复杂度的时候,有这么个观点,认为Error = Bias + Variance。这里的Error大概可以理解为模型的预测错误率,是有两部分组成的,一部分是由于模型太简单而带来的估计不准确的部分(Bias),另一部分是由于模型太复杂而带来的更大的变化空间和不确定性(Variance)。

    所以,这样就容易分析朴素贝叶斯了。它简单的假设了各个数据之间是无关的,是一个被严重简化了的模型。所以,对于这样一个简单模型,大部分场合都会Bias部分大于Variance部分,也就是说高偏差而低方差。

    在实际中,为了让Error尽量小,我们在选择模型的时候需要平衡Bias和Variance所占的比例,也就是平衡over-fitting和under-fitting。

    偏差和方差与模型复杂度的关系使用下图更加明了:

               8种常见机器学习算法比较

    当模型复杂度上升的时候,偏差会逐渐变小,而方差会逐渐变大。

    常见算法优缺点

    1.朴素贝叶斯

    朴素贝叶斯属于生成式模型(关于生成模型和判别式模型,主要还是在于是否是要求联合分布),非常简单,你只是做了一堆计数。如果注有条件独立性假设(一个比较严格的条件),朴素贝叶斯分类器的收敛速度将快于判别模型,如逻辑回归,所以你只需要较少的训练数据即可。即使NB条件独立假设不成立,NB分类器在实践中仍然表现的很出色。它的主要缺点是它不能学习特征间的相互作用,用mRMR中R来讲,就是特征冗余。引用一个比较经典的例子,比如,虽然你喜欢Brad Pitt和Tom Cruise的电影,但是它不能学习出你不喜欢他们在一起演的电影。

    优点:

    • 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。

    • 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练;

    • 对缺失数据不太敏感,算法也比较简单,常用于文本分类。

    缺点:

    • 需要计算先验概率;

    • 分类决策存在错误率;

    • 对输入数据的表达形式很敏感。

    2.Logistic Regression(逻辑回归)

    属于判别式模型,有很多正则化模型的方法(L0, L1,L2,etc),而且你不必像在用朴素贝叶斯那样担心你的特征是否相关。与决策树与SVM机相比,你还会得到一个不错的概率解释,你甚至可以轻松地利用新数据来更新模型(使用在线梯度下降算法,online gradient descent)。如果你需要一个概率架构(比如,简单地调节分类阈值,指明不确定性,或者是要获得置信区间),或者你希望以后将更多的训练数据快速整合到模型中去,那么使用它吧。

    Sigmoid函数

    8种常见机器学习算法比较

    优点

    • 实现简单,广泛的应用于工业问题上;

    • 分类时计算量非常小,速度很快,存储资源低;

    • 便利的观测样本概率分数;

    • 对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题;

    缺点

    • 当特征空间很大时,逻辑回归的性能不是很好;

    • 容易欠拟合,一般准确度不太高

    • 不能很好地处理大量多类特征或变量;

    只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;

    对于非线性特征,需要进行转换;

    3.线性回归

    线性回归是用于回归的,而不像Logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为:

    8种常见机器学习算法比较

    而在LWLR(局部加权线性回归)中,参数的计算表达式为:

    8种常见机器学习算法比较

    由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。

    优点: 实现简单,计算简单;
    缺点: 不能拟合非线性数据.

    4.最近领算法——KNN

    KNN即最近邻算法,其主要过程为:

    1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);2. 对上面所有的距离值进行排序;3. 选前k个最小距离的样本;4. 根据这k个样本的标签进行投票,得到最后的分类类别;

    如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。

    近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

    KNN算法的优点

    • 理论成熟,思想简单,既可以用来做分类也可以用来做回归;

    • 可用于非线性分类;

    • 训练时间复杂度为O(n);

    • 对数据没有假设,准确度高,对outlier不敏感;

    缺点

    • 计算量大;

    • 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);

    • 需要大量的内存;

    5.决策树

    易于解释。它可以毫无压力地处理特征间的交互关系并且是非参数化的,因此你不必担心异常值或者数据是否线性可分(举个例子,决策树能轻松处理好类别A在某个特征维度x的末端,类别B在中间,然后类别A又出现在特征维度x前端的情况)。它的缺点之一就是不支持在线学习,于是在新样本到来后,决策树需要全部重建。另一个缺点就是容易出现过拟合,但这也就是诸如随机森林RF(或提升树boosted tree)之类的集成方法的切入点。另外,随机森林经常是很多分类问题的赢家(通常比支持向量机好上那么一丁点),它训练快速并且可调,同时你无须担心要像支持向量机那样调一大堆参数,所以在以前都一直很受欢迎。

    决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。

    信息熵的计算公式如下:

    8种常见机器学习算法比较

    其中的n代表有n个分类类别(比如假设是2类问题,那么n=2)。分别计算这2类样本在总样本中出现的概率p1和p2,这样就可以计算出未选中属性分枝前的信息熵。

    现在选中一个属性xixi用来进行分枝,此时分枝规则是:如果xi=vxi=v的话,将样本分到树的一个分支;如果不相等则进入另一个分支。很显然,分支中的样本很有可能包括2个类别,分别计算这2个分支的熵H1和H2,计算出分枝后的总信息熵H’ =p1H1+p2 H2,则此时的信息增益ΔH = H - H’。以信息增益为原则,把所有的属性都测试一边,选择一个使增益最大的属性作为本次分枝属性。

    决策树自身的优点:

    • 计算简单,易于理解,可解释性强;

    • 比较适合处理有缺失属性的样本;

    • 能够处理不相关的特征;

    • 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

    缺点

    • 容易发生过拟合(随机森林可以很大程度上减少过拟合);

    • 忽略了数据之间的相关性;

    • 对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征(只要是使用了信息增益,都有这个缺点,如RF)。

    5.1 Adaboosting

    Adaboost是一种加和模型,每个模型都是基于上一次模型的错误率来建立的,过分关注分错的样本,而对正确分类的样本减少关注度,逐次迭代之后,可以得到一个相对较好的模型。是一种典型的boosting算法。下面是总结下它的优缺点。

    优点

    • adaboost是一种有很高精度的分类器。

    • 可以使用各种方法构建子分类器,Adaboost算法提供的是框架。

    • 当使用简单分类器时,计算出的结果是可以理解的,并且弱分类器的构造极其简单。

    • 简单,不用做特征筛选。

    • 不容易发生overfitting。

    • 关于随机森林和GBDT等组合算法,参考这篇文章:机器学习-组合算法总结

    缺点:对outlier比较敏感

    6.SVM支持向量机

    高准确率,为避免过拟合提供了很好的理论保证,而且就算数据在原特征空间线性不可分,只要给个合适的核函数,它就能运行得很好。在动辄超高维的文本分类问题中特别受欢迎。可惜内存消耗大,难以解释,运行和调参也有些烦人,而随机森林却刚好避开了这些缺点,比较实用。

    优点

    • 可以解决高维问题,即大型特征空间;

    • 能够处理非线性特征的相互作用;

    • 无需依赖整个数据;

    • 可以提高泛化能力;

    缺点

    • 当观测样本很多时,效率并不是很高;

    • 对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;

    • 对缺失数据敏感;

    对于核的选择也是有技巧的(libsvm中自带了四种核函数:线性核、多项式核、RBF以及sigmoid核):

    • 第一,如果样本数量小于特征数,那么就没必要选择非线性核,简单的使用线性核就可以了;

    • 第二,如果样本数量大于特征数目,这时可以使用非线性核,将样本映射到更高维度,一般可以得到更好的结果;

    • 第三,如果样本数目和特征数目相等,该情况可以使用非线性核,原理和第二种一样。

    对于第一种情况,也可以先对数据进行降维,然后使用非线性核,这也是一种方法。

    7. 人工神经网络的优缺点

    人工神经网络的优点

    • 分类的准确度高;

    • 并行分布处理能力强,分布存储及学习能力强,

    • 对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系;

    • 具备联想记忆的功能。

    人工神经网络的缺点

    • 神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;

    • 不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;

    • 学习时间过长,甚至可能达不到学习的目的。

    8、K-Means聚类

    之前写过一篇关于K-Means聚类的文章,博文链接:机器学习算法-K-means聚类。关于K-Means的推导,里面有着很强大的EM思想。

    优点

    • 算法简单,容易实现 ;

    • 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。

    • 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

    缺点

    • 对数据类型要求较高,适合数值型数据;

    • 可能收敛到局部最小值,在大规模数据上收敛较慢

    • K值比较难以选取;

    • 对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果;

    • 不适合于发现非凸面形状的簇,或者大小差别很大的簇。

    • 对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

    算法选择参考

    之前翻译过一些国外的文章,有一篇文章中给出了一个简单的算法选择技巧:

    1. 首当其冲应该选择的就是逻辑回归,如果它的效果不怎么样,那么可以将它的结果作为基准来参考,在基础上与其他算法进行比较;

    2. 然后试试决策树(随机森林)看看是否可以大幅度提升你的模型性能。即便最后你并没有把它当做为最终模型,你也可以使用随机森林来移除噪声变量,做特征选择;

    3. 如果特征的数量和观测样本特别多,那么当资源和时间充足时(这个前提很重要),使用SVM不失为一种选择。

    通常情况下:【GBDT>=SVM>=RF>=Adaboost>=Other…】,现在深度学习很热门,很多领域都用到,它是以神经网络为基础的,目前我自己也在学习,只是理论知识不是很厚实,理解的不够深,这里就不做介绍了。

    算法固然重要,但好的数据却要优于好的算法,设计优良特征是大有裨益的。假如你有一个超大数据集,那么无论你使用哪种算法可能对分类性能都没太大影响(此时就可以根据速度和易用性来进行抉择)。

    展开全文
  • 机器学习十大经典算法入门

    万次阅读 多人点赞 2018-06-20 20:11:46
    SVM算法是介于简单算法和神经网络之间的最好的算法。 b. 只通过几个支持向量就确定了超平面,说明它不在乎细枝末节,所以不容易过拟合,但不能确保一定不会过拟合。可以处理复杂的非线性问题。 c. 高斯核函数 ...

    一,SVM(Support Vector Machine)支持向量机
    a. SVM算法是介于简单算法和神经网络之间的最好的算法。
    b. 只通过几个支持向量就确定了超平面,说明它不在乎细枝末节,所以不容易过拟合,但不能确保一定不会过拟合。可以处理复杂的非线性问题。
    c. 高斯核函数
    d. 缺点:计算量大
    这里写图片描述

    二,决策树(有监督算法,概率算法)
    a. 只接受离散特征,属于分类决策树。
    b. 条件熵的计算 H(Label |某个特征) 这个条件熵反映了在知道该特征时,标签的混乱程度,可以帮助我们选择特征,选择下一步的决策树的节点。
    c. Gini和entropy的效果没有大的差别,在scikit learn中默认用Gini是因为Gini指数不需要求对数,计算量少。
    d. 把熵用到了集合上,把集合看成随机变量。
    e. 决策树:贪心算法,无法从全局的观点来观察决策树,从而难以调优。
    f. 叶子节点上的最小样本数,太少,缺乏统计意义。从叶子节点的情况,可以看出决策树的质量,发现有问题也束手无策。
    优点:可解释性强,可视化。缺点:容易过拟合(通过剪枝避免过拟合),很难调优,准确率不高
    g. 二分类,正负样本数目相差是否悬殊,投票机制
    h. 决策树算法可以看成是把多个逻辑回归算法集成起来。
    这里写图片描述

    三,随机森林(集成算法中最简单的,模型融合算法)
    随机森林如何缓解决策树的过拟合问题,又能提高精度?
    a. Random Forest, 本质上是多个算法平等的聚集在一起。每个单个的决策树,都是随机生成的训练集(行),随机生成的特征集(列),来进行训练而得到的。
    b. 随机性的引入使得随机森林不容易陷入过拟合,具有很好的抗噪能力,有效的缓解了单棵决策树的过拟合问题。
    c. 每一颗决策树训练样本是随机的有样本的放回抽样。

    四,逻辑回归(线性算法)
    它是广义线性模型GLM的一种,可以看成是一个最简单的神经网络,损失函数是一个对数似然函数,损失函数的值越大越好。(梯度上升法)
    a. 多次训练,多次测试,目的是看逻辑回归这个算法适不适合这个应用场景。

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    五,朴素贝叶斯
    应用场景:源于推理的需要,例如:通过商品的描述(特征X)来推理商品的类别(Y)。
    “朴素”:特征与特征之间是独立的,互不干扰。如果特征比较多时,往往独立性的条件不重要(互相抵消),可以用朴素贝叶斯。
    训练的时候:得出条件概率表
    推理的时候:比较条件概率的大小
    特点:训练容易,推理难

    这里写图片描述

    六,KNN(K Nearest Neighbor) K近邻(有监督算法,分类算法)
    K表示K个邻居,不表示距离,因为需要求所有邻居的距离,所以效率低下。
    优点:可以用来填充缺失值,可以处理非线性问题
    调优方法:K值的选择,k值太小,容易过拟合
    应用:样本数少,特征个数较少,kNN更适合处理一些分类规则相对复杂的问题,在推荐系统大量使用
    KNN算法和贝叶斯算法有某种神秘的联系,用贝叶斯算法估算KNN的误差。
    这里写图片描述

    七,K-means K均值(无监督算法,聚类算法,随机算法)
    a. 最常用的无监督算法
    b. 计算距离方法:欧式距离,曼哈顿距离
    c. 应用:去除孤立点,离群点(只针对度量算法);可以离散化
    d. 最常用归一化预处理方法
    f. k-means设置超参数k时,只需要设置最大的k值。
    g. k-means算法最终肯定会得到稳定的k个中心点,可以用EM(Expectation Maximum)算法解释
    h. k-means算法k个随机初始值怎么选? 多选几次,比较,找出最好的那个
    i. 调优的方法:1. bi-kmeans 方法(依次“补刀”)
    j. 调优的方法:2. 层次聚类(逐步聚拢法)k=5 找到5个中心点,把中心点喂给k-means。初始中心点不同,收敛的结果也可能不一致。
    k. 聚类效果怎么判断?用SSE误差平方和指标判断,SSE越小越好,也就是肘部法则的拐点处。也可以用轮廓系数法判断,值越大,表示聚类效果越好,簇与簇之间距离越远越好,簇内越紧越好。
    l. k-means算法最大弱点:只能处理球形的簇(理论)
    这里写图片描述

    八,Adaboost(集成算法之一)

    九,马尔可夫
    a. 马尔可夫线没有箭头,马尔可夫模型允许有环路。
    b. affinity亲和力关系,energy(A,B,C),发现A,B,C之间有某种规律性东西,但不一定是概率,但是可以表示ABC之间的一种亲和力。
    c. potential = e1*e2*e3*en potential函数一般来说不是概率
    d. 归一化 -> 概率分布probability
    e. 贝叶斯模型与马尔可夫模型:任何一个贝叶斯模型对应于唯一的一个马尔可夫模型,而任意一个马尔可夫模型,可以对应于多个贝叶斯模型。
    f. 贝叶斯模型类似于象棋,等级分明;马尔可夫模型类似于围棋,人人平等。
    g. 马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。
    这里写图片描述

    十,EM算法
    EM算法是概率图算法的一个简单

    附录:
    这里写图片描述

    这里写图片描述
    模型是已知的:条件概率表(射线)已知(P(Xi|C1)),类别的概率是已知的(P(C1)

    展开全文
  • 机器学习十大算法

    万次阅读 多人点赞 2018-08-18 09:26:05
    机器学习十大算法 http://www.52cs.org/?p=1835   作者 James Le ,译者 尚剑 , 本文转载自infoQ 毫无疑问,机器学习/人工智能的子领域在过去几年越来越受欢迎。目前大数据在科技行业已经炙手可热,而...

    机器学习十大算法

    http://www.52cs.org/?p=1835

     

    作者 James Le ,译者 尚剑 , 本文转载自infoQ

    毫无疑问,机器学习/人工智能的子领域在过去几年越来越受欢迎。目前大数据在科技行业已经炙手可热,而基于大量数据来进行预测或者得出建议的机器学习无疑是非常强大的。一些最常见的机器学习例子,比如Netflix的算法可以根据你以前看过的电影来进行电影推荐,而Amazon的算法则可以根据你以前买过的书来推荐书籍。

    所以如果你想了解更多有关机器学习的内容,那么你该如何入门?对于我来说,我的入门课程是我在哥本哈根出国留学时参加的人工智能课。当时我的讲师是丹麦技术大学(Technical University of Denmark)的应用数学和计算机科学的全职教授,他的研究方向是逻辑与人工智能,侧重于使用逻辑学来对人性化的规划、推理和解决问题进行建模。这个课程包括对理论/核心概念的讨论和自己动手解决问题。我们使用的教材是AI经典之一:Peter Norvig的Artificial Intelligence—A Modern Approach(中文译本:《人工智能:一种现代的方法》),这本书主要讲了智能体、搜索解决问题、对抗搜索、概率论、多智能体系统、社会AI和AI的哲学/伦理/未来等等。在课程结束时,我们三个人的团队实现了一个简单的编程项目,也就是基于搜索的智能体解决虚拟环境中的运输任务问题。

    在那门课程上我已经学到了很多知识,并决定继续学习相关的课题。在过去的几个星期里,我在旧金山参加了多次相关的技术讲座,涉及到深度学习、神经网络和数据结构,并且参加了一个有很多该领域的知名专家学者参加的机器学习会议。最重要的是,我在6月初参加了Udacity上的Intro to Machine Learning(机器学习入门)在线课程,前几天才完成。在这篇文章中,我想分享一下我从课程中学到的一些最常用的机器学习算法。

    机器学习算法可以分为三大类:监督学习、无监督学习和强化学习。监督学习可用于一个特定的数据集(训练集)具有某一属性(标签),但是其他数据没有标签或者需要预测标签的情况。无监督学习可用于给定的没有标签的数据集(数据不是预分配好的),目的就是要找出数据间的潜在关系。强化学习位于这两者之间,每次预测都有一定形式的反馈,但是没有精确的标签或者错误信息。因为这是一个介绍课程,我没有学习过强化学习的相关内容,但是我希望以下10个关于监督学习和无监督学习的算法足以让你感兴趣。

    监督学习

    1.决策树(Decision Trees)

    决策树是一个决策支持工具,它使用树形图或者决策模型以及可能性序列,包括偶然事件的结果、资源成本和效用。下图是其基本原理:

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/0.jpg

    从业务决策的角度来看,决策树是人们必须了解的最少的是/否问题,这样才能评估大多数时候做出正确决策的概率。作为一种方法,它允许你以结构化和系统化的方式来解决问题,从而得出合乎逻辑的结论。

    2.朴素贝叶斯分类(Naive Bayesian classification)

    朴素贝叶斯分类器是一类简单的概率分类器,它基于贝叶斯定理和特征间的强大的(朴素的)独立假设。图中是贝叶斯公式,其中P(A|B)是后验概率,P(B|A)是似然,P(A)是类先验概率,P(B)是预测先验概率。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/1.jpg

    一些应用例子:

    • 判断垃圾邮件
    • 对新闻的类别进行分类,比如科技、政治、运动
    • 判断文本表达的感情是积极的还是消极的
    • 人脸识别

    3.最小二乘法(Ordinary Least Squares Regression)

    如果你懂统计学的话,你可能以前听说过线性回归。最小二乘法是一种计算线性回归的方法。你可以将线性回归看做通过一组点来拟合一条直线。实现这个有很多种方法,“最小二乘法”就像这样:你可以画一条直线,然后对于每一个数据点,计算每个点到直线的垂直距离,然后把它们加起来,那么最后得到的拟合直线就是距离和尽可能小的直线。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/2.jpg

    线性指的是你用来拟合数据的模型,而最小二乘法指的是你最小化的误差度量。

    4.逻辑回归(Logistic Regression)

    逻辑回归是一个强大的统计学方法,它可以用一个或多个解释变量来表示一个二项式结果。它通过使用逻辑函数来估计概率,从而衡量类别依赖变量和一个或多个独立变量之间的关系,后者服从累计逻辑分布。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/3.jpg

    总的来说,逻辑回归可以用于以下几个真实应用场景:

    • 信用评分
    • 计算营销活动的成功率
    • 预测某个产品的收入
    • 特定的某一天是否会发生地震

    5.支持向量机(Support Vector Machine,SVM)

    SVM是二进制分类算法。给定N维坐标下两种类型的点,SVM生成(N-1)维的超平面来将这些点分成两组。假设你在平面上有两种类型的可以线性分离的点,SVM将找到一条直线,将这些点分成两种类型,并且这条直线尽可能远离所有这些点。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/4.jpg

    从规模上看,使用SVM(经过适当的修改)解决的一些最大的问题包括显示广告、人类剪切位点识别(human splice site recognition)、基于图像的性别检测,大规模图像分类……

    6.集成方法(Ensemble methods)

    集成方法是学习算法,它通过构建一组分类器,然后通过它们的预测结果进行加权投票来对新的数据点进行分类。原始的集成方法是贝叶斯平均,但是最近的算法包括纠错输出编码、Bagging和Boosting。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/5.jpg

    那么集成方法如何工作?并且为什么它们要优于单个模型?

    • 它们平均了单个模型的偏差:如果你将民主党的民意调查和共和党的民意调查在一起平均化,那么你将得到一个均衡的结果,不偏向任何一方。
    • 它们减少了方差:一组模型的总体意见比其中任何一个模型的单一意见更加统一。在金融领域,这就是所谓的多元化,有许多股票的组合比一个单独的股票的不确定性更少,这也为什么你的模型在数据多的情况下会更好的原因。
    • 它们不太可能过拟合:如果你有单个的模型没有过拟合,那么把这些模型的预测简单结合起来(平均、加权平均、逻辑回归),那么最后得到的模型也不会过拟合。

    无监督学习

    7.聚类算法(Clustering Algorithms)

    聚类是将一系列对象分组的任务,目标是使相同组(集群)中的对象之间比其他组的对象更相似。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/6.jpg

    每一种聚类算法都不相同,下面是一些例子:

    • 基于质心的算法
    • 基于连接的算法
    • 基于密度的算法
    • 概率
    • 降维
    • 神经网络/深度学习

    8.主成分分析(Principal Component Analysis,PCA)

    PCA是一个统计学过程,它通过使用正交变换将一组可能存在相关性的变量的观测值转换为一组线性不相关的变量的值,转换后的变量就是所谓的主分量。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/7.jpg

    PCA的一些应用包括压缩、简化数据便于学习、可视化等。请注意,领域知识在选择是否继续使用PCA时非常重要。 数据嘈杂的情况(PCA的所有成分具有很高的方差)并不适用。

    9.奇异值分解(Singular Value Decomposition,SVD)

    在线性代数中,SVD是复杂矩阵的因式分解。对于给定的m * n矩阵M,存在分解使得M=UΣV,其中U和V是酉矩阵,Σ是对角矩阵。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/8.jpg

    实际上,PCA是SVD的一个简单应用。在计算机视觉中,第一个人脸识别算法使用PCA和SVD来将面部表示为“特征面”的线性组合,进行降维,然后通过简单的方法将面部匹配到身份,虽然现代方法更复杂,但很多方面仍然依赖于类似的技术。

    10.独立成分分析(Independent Component Analysis,ICA)

    ICA是一种统计技术,主要用于揭示随机变量、测量值或信号集中的隐藏因素。ICA对观测到的多变量数据定义了一个生成模型,这通常是作为样本的一个大的数据库。在模型中,假设数据变量由一些未知的潜在变量线性混合,混合方式也是未知的。潜在变量被假定为非高斯分布并且相互独立,它们被称为观测数据的独立分量。

    http://cdn1.infoqstatic.com/statics_s1_20170718-0237/resource/articles/10-algorithms-machine-learning-engineers-need-to-know/zh/resources/9.jpg

    ICA与PCA有关,但是当这些经典方法完全失效时,它是一种更强大的技术,能够找出源的潜在因素。 其应用包括数字图像、文档数据库、经济指标和心理测量。

    现在运用你对这些算法的理解去创造机器学习应用,为世界各地的人们带来更好的体验吧。

    展开全文
  • 图解十大经典机器学习算法入门

    万次阅读 多人点赞 2018-02-05 09:07:01
    弱人工智能近几年取得了重大突破,悄然间,已经成为每个人生活中必不可少的一部分。以我们的智能手机为例,看看到底温...传统的机器学习算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。这篇文章将对
  • 机器学习算法之分类

    万次阅读 2018-05-24 19:35:32
    机器学习算法是一类能从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法 [1]。机器学习(Machine Learning)是人工智能(AI)中很重要的一部分,因为在目前的实践过程中,大多数人工智能问题是由机...
  • 机器学习:初学者的十大基本算法

    万次阅读 多人点赞 2018-02-11 14:56:57
    共同学习具体网址为:https://www.kdnuggets.com/2017/10/top-10-machine-learning-algorithms-beginners.html/2一,导言 “哈佛商业评论” 这篇文章称 “数据科学家”是“21世纪最性感的工作”,对ML算法的研究...
  • 机器学习算法 综述(入门)

    万次阅读 多人点赞 2019-06-16 22:19:28
    学习了一个学期机器学习算法,从什么都不懂到对十个机器学习算法有一定的了解,下面总结一下十大机器学习算法,从算法的概念、原理、优点、缺点、应用等方面来总结,如果有错误的地方,欢迎指出。 目录 1.决策树...
  • 机器学习算法整理(内含代码)

    万次阅读 多人点赞 2018-01-26 20:36:31
    一般来说,机器学习有三种算法: 1.监督式学习  监督式学习算法包括一个目标变量(也就是因变量)和用来预测目标变量的预测变量(相当于自变量).通过这些变量,我们可以搭建一个模型,从而对于一个自变量,我们可以得到...
  • 机器学习算法有哪些?

    万次阅读 2018-06-02 09:18:05
    机器学习算法有哪些? 1、分层聚类 2、KNN 3、基于密度的聚类DBSCAN 4、K-means 5、自组织映射SOM 6、PCA 7、LDA 8、MDS 9、朴素贝叶斯 10、数据降维 11、感知机 12、GMM 13、EM 14、LVQ 15、HMM 16...
  • 机器学习——几种分类算法的汇总

    千次阅读 2019-06-25 01:03:45
    https://www.cnblogs.com/Zhi-Z/p/8912396.html
  • 一、机器学习算法工程师笔试题 机器学习笔试题目—-网易2016春招 BAT机器学习面试1000题系列 机器学习-算法工程师 -面试/笔试准备-重要知识点梳理 总结一点面试问题--算法工程师(机器学习) 2018 年大疆机器...
  • 机器学习之KNN(k近邻)算法详解

    万次阅读 多人点赞 2020-07-19 08:13:57
    1-1 机器学习算法分类 一、基本分类: ①监督学习(Supervised learning) 数据集中的每个样本有相应的“正确答案”, 根据这些样本做出 预测, 分有两类: 回归问题和分类问题。 步骤1: 数据集的创建和...
  • 习题全解,答案;
  • 为什么现在大家都用深度学习,而传统机器学习无论在科研中还是实践中都用的很少了?
  • 机器学习 - 竞赛网站,算法刷题网站

    万次阅读 多人点赞 2017-08-03 10:45:16
    Kaggle阿里巴巴天池大数据比赛DataCastleCCF大数据与计算智能大赛Di-Tech算法大赛KDD-CupKDnuggets Competition全国高校云计算应用创新大赛Byte Cup国际机器学习竞赛WID数据竞赛数据火车竞赛网站DrivenData ...
  • 人工智能之机器学习常见算法

    万次阅读 多人点赞 2019-04-11 11:18:17
    摘要之前一直对机器学习很感兴趣,一直没时间去研究,今天刚好是...这里IT经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考。 机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有
  • 10种机器学习算法(附Python代码)

    万次阅读 多人点赞 2018-01-15 11:22:15
    sklearn python API LinearRegression from sklearn.linear_model import LinearRegression # 线性回归 # module = LinearRegression() module.fit(x, y) module.score(x, y) module.predict(test) ...Lo
  • 机器学习的13种算法和4种学习方法,推荐给大家

    万次阅读 多人点赞 2018-09-18 21:08:45
    机器学习算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的分类。 一、4大主要学习...
  • 机器学习十大算法都是何方神圣?看完你就懂了

    万次阅读 多人点赞 2017-08-26 18:06:46
    雷锋网按:机器学习与人工智能变得越来越热。大数据原本在工业界中就已经炙手可热,而基于大数据的机器学习则更加流行,...跟我们生活息息相关的最常见机器学习算法包括电影推荐算法、图书推荐算法。这些算法都是基
1 2 3 4 5 ... 20
收藏数 394,416
精华内容 157,766
关键字:

机器学习算法