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

    弱人工智能近几年取得了重大突破,悄然间,已经成为每个人生活中必不可少的一部分。以我们的智能手机为例,看看到底温藏着多少人工智能的神奇魔术。

    下图是一部典型的智能手机上安装的一些常见应用程序,可能很多人都猜不到,人工智能技术已经是手机上很多应用程序的核心驱动力。

    图解十大经典的机器学习算法

    图1 智能手机上的相关应用

    传统的机器学习算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。这篇文章将对常用算法做常识性的介绍,没有代码,也没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的。

    人工智能领域知识面广泛,推荐专注于人工智能在线教育的平台—深蓝学院。深蓝学院由中科院自动化所毕业博士团队创建,虽成立半年,但在业界已颇具口碑。

    决策树

    根据一些 feature(特征) 进行分类,每个节点提一个问题,通过判断,将数据分为两类,再继续提问。这些问题是根据已有数据学习出来的,再投入新数据的时候,就可以根据这棵树上的问题,将数据划分到合适的叶子上。

    图解十大经典的机器学习算法

    图2 决策树原理示意图

    随机森林

    在源数据中随机选取数据,组成几个子集:

    图解十大经典的机器学习算法

    图3-1 随机森林原理示意图

    S矩阵是源数据,有1-N条数据,A、B、C 是feature,最后一列C是类别:

    图解十大经典的机器学习算法

    由S随机生成M个子矩阵:

    图解十大经典的机器学习算法

    这M个子集得到 M 个决策树:将新数据投入到这M个树中,得到M个分类结果,计数看预测成哪一类的数目最多,就将此类别作为最后的预测结果。

    图解十大经典的机器学习算法

    图3-2 随机森林效果展示图

    逻辑回归

    当预测目标是概率这样的,值域需要满足大于等于0,小于等于1的,这个时候单纯的线性模型是做不到的,因为在定义域不在某个范围之内时,值域也超出了规定区间。

    图解十大经典的机器学习算法

    图4-1 线性模型图

    所以此时需要这样的形状的模型会比较好:

    图解十大经典的机器学习算法

    图4-2

    那么怎么得到这样的模型呢?

    这个模型需要满足两个条件 “大于等于0”,“小于等于1” 。大于等于0 的模型可以选择绝对值,平方值,这里用指数函数,一定大于0;小于等于1 用除法,分子是自己,分母是自身加上1,那一定是小于1的了。

    图解十大经典的机器学习算法

    图4-3

    再做一下变形,就得到了 logistic regressions 模型:

    图解十大经典的机器学习算法

    图4-4

    通过源数据计算可以得到相应的系数了:

    图解十大经典的机器学习算法

    图4-5

    图解十大经典的机器学习算法

    图4-6 LR模型曲线图

    支持向量机

    要将两类分开,想要得到一个超平面,最优的超平面是到两类的 margin 达到最大,margin就是超平面与离它最近一点的距离,如下图,Z2>Z1,所以绿色的超平面比较好。

    图解十大经典的机器学习算法

    图5 分类问题示意图

    将这个超平面表示成一个线性方程,在线上方的一类,都大于等于1,另一类小于等于-1:

    图解十大经典的机器学习算法

    点到面的距离根据图中的公式计算:

    图解十大经典的机器学习算法

    所以得到total margin的表达式如下,目标是最大化这个margin,就需要最小化分母,于是变成了一个优化问题:

    图解十大经典的机器学习算法

    举个例子,三个点,找到最优的超平面,定义了 weight vector=(2,3)-(1,1):

    图解十大经典的机器学习算法

    得到weight vector为(a,2a),将两个点代入方程,代入(2,3)另其值=1,代入(1,1)另其值=-1,求解出 a 和 截矩 w0 的值,进而得到超平面的表达式。

    图解十大经典的机器学习算法

    a求出来后,代入(a,2a)得到的就是support vector,a和w0代入超平面的方程就是support vector machine。

    朴素贝叶斯

    举个在 NLP 的应用:给一段文字,返回情感分类,这段文字的态度是positive,还是negative:

    图解十大经典的机器学习算法

    图6-1 问题案例

    为了解决这个问题,可以只看其中的一些单词:

    图解十大经典的机器学习算法

    这段文字,将仅由一些单词和它们的计数代表:

    图解十大经典的机器学习算法

    原始问题是:给你一句话,它属于哪一类 ?通过bayes rules变成一个比较简单容易求得的问题:

    图解十大经典的机器学习算法

    问题变成,这一类中这句话出现的概率是多少,当然,别忘了公式里的另外两个概率。例子:单词“love”在positive的情况下出现的概率是 0.1,在negative的情况下出现的概率是0.001。

    图解十大经典的机器学习算法

    图6-2 NB算法结果展示图

    K近邻算法

    给一个新的数据时,离它最近的 k 个点中,哪个类别多,这个数据就属于哪一类。

    例子:要区分“猫”和“狗”,通过“claws”和“sound”两个feature来判断的话,圆形和三角形是已知分类的了,那么这个“star”代表的是哪一类呢?

    图解十大经典的机器学习算法

    图7-1 问题案例

    k=3时,这三条线链接的点就是最近的三个点,那么圆形多一些,所以这个star就是属于猫。

    图解十大经典的机器学习算法

    图7-2 算法步骤展示图

    K均值算法

    先要将一组数据,分为三类,粉色数值大,黄色数值小 。最开始先初始化,这里面选了最简单的 3,2,1 作为各类的初始值 。剩下的数据里,每个都与三个初始值计算距离,然后归类到离它最近的初始值所在类别。

    图解十大经典的机器学习算法

    图8-1 问题案例

    分好类后,计算每一类的平均值,作为新一轮的中心点:

    图解十大经典的机器学习算法

    图8-2

    几轮之后,分组不再变化了,就可以停止了:

    图解十大经典的机器学习算法

    图解十大经典的机器学习算法

    图8-3 算法结果展示

    Adaboost

    Adaboost 是 Boosting 的方法之一。Boosting就是把若干个分类效果并不好的分类器综合起来考虑,会得到一个效果比较好的分类器。

    下图,左右两个决策树,单个看是效果不怎么好的,但是把同样的数据投入进去,把两个结果加起来考虑,就会增加可信度。

    图解十大经典的机器学习算法

    图9-1 算法原理展示

    Adaboost 的例子,手写识别中,在画板上可以抓取到很多features(特征),例如始点的方向,始点和终点的距离等等。

    图解十大经典的机器学习算法

    图9-2

    training的时候,会得到每个feature的weight(权重),例如2和3的开头部分很像,这个feature对分类起到的作用很小,它的权重也就会较小。

    图解十大经典的机器学习算法

    图9-3

    而这个alpha角就具有很强的识别性,这个feature的权重就会较大,最后的预测结果是综合考虑这些feature的结果。

    图解十大经典的机器学习算法

    图9-4

    神经网络

    Neural Networks适合一个input可能落入至少两个类别里:NN由若干层神经元,和它们之间的联系组成。 第一层是input层,最后一层是output层。在hidden层和output层都有自己的classifier。

    图解十大经典的机器学习算法

    图10-1 神经网络结构

    input输入到网络中,被激活,计算的分数被传递到下一层,激活后面的神经层,最后output层的节点上的分数代表属于各类的分数,下图例子得到分类结果为class 1;同样的input被传输到不同的节点上,之所以会得到不同的结果是因为各自节点有不同的weights 和bias,这也就是forward propagation。

    图解十大经典的机器学习算法

    图10-2 算法结果展示

    马尔科夫

    Markov Chains由state(状态)和transitions(转移)组成。例子,根据这一句话 ‘the quick brown fox jumps over the lazy dog’,要得到markov chains。

    步骤,先给每一个单词设定成一个状态,然后计算状态间转换的概率。

    图解十大经典的机器学习算法

    图11-1 马尔科夫原理图

    这是一句话计算出来的概率,当你用大量文本去做统计的时候,会得到更大的状态转移矩阵,例如the后面可以连接的单词,及相应的概率。

    图解十大经典的机器学习算法

    图11-2 算法结果展示

    上述十大类机器学习算法是人工智能发展的践行者,即使在当下,依然在数据挖掘以及小样本的人工智能问题中被广泛使用。


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

    万次阅读 多人点赞 2018-08-18 09:26:05
    机器学习十大算法 http://www.52cs.org/?p=1835   作者 James Le ,译者 尚剑 , 本文转载自infoQ 毫无疑问,机器学习/人工智能的子领域在过去几年越来越受欢迎。目前大数据在科技行业已经炙手可热,而...
  • 这类推荐算法可以找到用户独特的小众喜好,而且还有较好的解释性。这一类由于需要NLP的基础,本文就不多讲,在后面专门讲NLP的时候再讨论。 2)协调过滤推荐:本文后面要专门讲的内容。协调过滤是推荐算法中目前最...
  • 源 / 新智元“吴恩达的Coursera机器学习课程可以完全用Python完成!”这是Reddit论坛的机器学习看板出现一条热帖。可以说,吴恩达(Andrew Ng)的机...
  • 前言:本文是机器学习实战中的案例,餐馆菜肴推荐系统 from numpy import * from numpy import linalg as la # 载入数据 (用户-菜肴矩阵) # 行为 用户, 列为希肴, 表示用户对某个菜肴的评分 def loadExData2(): ...
  • ===============课程目录===============├01.第1课 概率论与数理统计.mkv ├02.第2课 矩阵和线性代数.mkv ├03....第7课 最大熵与EM算法.mkv ├08.第8课 特征工程.mkv ├09.第9课 模型调优.mkv ...
  • 一 软件静态分析背景 软件静态分析的相当部分的内容就是发现代码中的缺陷,缺陷的形式往往五花八门,各式各样。每当发现一个缺陷,测试人员首先会感到高兴,终于抓到了一条“虫”,可继而很可能会感到心虚,因为,...
  • 机器学习算法整理(内含代码)

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

    万次阅读 多人点赞 2019-06-16 22:19:28
    学习了一个学期机器学习算法,从什么都不懂到对十个机器学习算法有一定的了解,下面总结一下十大机器学习算法,从算法的概念、原理、优点、缺点、应用等方面来总结,如果有错误的地方,欢迎指出。 目录 1.决策树...
  • 我们先带着大家过一遍传统机器学习算法,基本思想和用途。把问题解决思路和方法应用建议提前到这里的想法也很简单,希望能提前给大家一些小建议,对于某些容易出错的地方也先给大家打个预防针,这样在理解后续相应...
  • 【机器学习】机器学习算法之旅

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

    千次阅读 2016-05-31 09:42:37
    本文主要回顾下几个常用算法的适应场景及其优缺点!...机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启
  • 在本指南中,我们将通过现代机器学习算法进行实用,简洁的介绍。虽然存在其他这样的列表,但它们并没有真正解释每种算法的实际权衡,我们希望在这里做。我们将根据我们的经验讨论每种算法的优缺点。 对机器学习算法...
  • 而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难,因为在掌握工程师的通用技能以外,还需要掌握一张不算小的机器学习算法知识网络。下面我们就将成为一名合格的算法工程师所需的技能进行...
  • 各种机器学习算法的应用场景分别是什么?   关于这个问题我今天正好看到了这个文章。讲的正是各个算法的优劣分析,很中肯。 https://zhuanlan.zhihu.com/p/25327755正好14年的时候有人做过一个实验[1],比较在...
  • 机器学习算法之分类

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

    千次阅读 2018-12-16 15:20:15
    我应该使用哪种机器学习算法? 该资源主要面向初学者到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法来解决他们感兴趣的问题。 当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该...
1 2 3 4 5 ... 20
收藏数 410,863
精华内容 164,345
关键字:

机器学习算法