精华内容
下载资源
问答
  • 玩转树莓派机器学习

    2019-04-11 15:00:40
    玩转树莓派机器学习,Perf Machine Learning on Rasp Pi,by Gant Laborde。
  • Python机器学习实践

    千次阅读 2019-10-15 21:14:08
    前面几篇博文已经整理了Python做数据分析和建模以及机器学习基础知识。 这篇博文主要分享Python做数据分析和建模的实践案例应用。 分为两部分: 1、Python机器学习实践案例的算法总结。 见博文下方的算法总结...

    前面几篇博文已经整理了Python做数据分析和建模以及机器学习基础知识。

    这篇博文主要分享Python做数据分析和建模的实践案例应用。

    分为两部分:

    1、Python机器学习实践案例的算法总结。

         见博文下方的算法总结表格。

    2、案例和代码实现。

         每个案例单独用一篇博文来讲解逻辑和Python代码实现。点击对应的链接到相应的博文中去阅读。

        (1)朴素贝叶斯、费舍尔分类器模型(文档分类)

                ---引申 用gesim-word2vec实现词矢量化

        (2)优化算法模型:

                [1] 旅行行程优化问题

                [2] 住宿房间分配问题

        (3)决策树分类建模

        (4)分级聚类、K均值聚类

                  [1] 使用LSA潜在语义分析,聚类评论主题

        (5)KNN算法

                [1]数值预测、区间概率预测、概率密度图

                [2]协同过滤推荐简单实现

             ---引申  [3] 协同过滤推荐-pyspark实现

            ---引申  [4]spark的安装和Jupyter使用

        (6)寻找独立特征-非负矩阵因式分解

        (7)支持向量机

        (8)神经网络

        (9)特征工程

              [1]受限波兹曼机RBM在机器学习中的使用

              [2]在机器学习pipeline中同时使用PCA和LDA

              [3]线性判别式LDA的两种实现方式

              [4]主成分分析PCA的两种实现方式

              [5]用PCA、LDA、LR做人脸识别

     

    机器学习实践案例算法总结
    算法算法描述/原理概述适用的数据集类型Python代码实现的主要步骤优缺点说明
    贝叶斯分类器根据贝叶斯公式:P(cat|item) = P(item|cat)*P(cat)/P(item),
    其中,P(item|cat) = P(feature|cat)*P(feature|cat)*P(feature|cat)*…
    适应于所有能转换成一组特征列表的数据集。1、定义特征提取函数getfeature
    2、利用样本对分类器进行训练,得到记录了特征和某个特定分类相关联的数字概率P(feature|(cat)
    3、分类预测(朴素贝叶斯分类器)
    优点:
    1、训练和分类计算的速度快
    2、支持增量式的训练
    3、特征的概率值被保存,所以分类学习的解释相对简单
    缺点:
    1、无法处理特征组合会产生分类结果影响的情况
    决策树分类器从根部开始构造决策树,在每一步中都会选择一个属性,利用该属性以最佳的可能方式对数据进行拆分。
    对于构造完成的决策树,从树的根部节点开始,对每一个节点的判断条件进行检查,走相应的yes or no 分支直至叶节点,即代表新数据的预测分类
    适应于数值型或者名词性的有分类结果的数据集1、创建决策树。
    熵、基尼不纯度衡量集合的混乱、不纯程度。信息增益来衡量一次拆分的好坏。
    2、决策树剪枝
    3、决策树显示--树状图/文本打印
    4、决策树分类
    优点:
    1、易于对模型的解释和理解。重要的判断因素都在靠近根部的位置。
    2、能处理变量之间的相互影响。
    缺点:
    1、不擅长对数值结果的预测。
    2、不支持增量式的训练。
    神经网络    
    支持向量机SVM    
    K最近邻算法KNN对一个待预测的新数据项,将其与已经知道结果值的数据项进行比较,从中找出最为接近的若干项,并根据距离远近求其加权平均值以得到最终的预测结果。可以做数值预测的数据集1、对变量进行缩放处理和交叉验证
    2、给出一个距离度量算法/相似度度量算法
    3、加权KNN算法预测
    优点:
    1、简单易懂 2、合理的数据缩放量不但可以改善预测效果,还能知道预测过程中各个变量的重要程度。3、新的数据可以随时被添加进来,是一种online的技术。
    缺点:
    1、计算低效。每一个待预测项必须和所有其他数据进行比较。2、寻找合理的缩放因子的过程很乏味、计算和评估的计算工作量很大。
    分级聚类它是构造一颗由所有数据项构成的树的过程。
    工作方式:寻找两个距离最接近的数据项,将它们合二为一,新聚类的"位置"等于原两个数据项位置的均值。重复此过程,直到每个数据项都被包含在了一个大的聚类中为止。
    任何一个具有一个或多个数值属性的数据集1、给出一个相关系数度量方法
    2、分级聚类
    3、绘制分级聚类树状图
    优点:
    1、层级结构可以显示为树状图的形状,易于解读
    2、面对一个全新的数据集,并不清楚想要多少群组时可通过分级聚类观察出哪些群组最接近
    K-Means聚类它是将数据拆分到不同群组的方法。
    工作方式:随机产生K个中心点的位置,将每个数据项都分配到距离最近的中心点。将中心位置移到分配给原中心点的所有项的平均位置处。重复上述聚类步骤。直到中心位置不再变化或达到某阈值。
    任何一个具有一个或多个数值属性的数据集1、给出想要的群组数量
    2、给出一个相关系数度量方法
    3、K-means聚类
    4、打印分类群组结果
    优点:
    1、聚类得到的群组易于打印和识别
    模拟退火算法以一个随机推测的题解开始,以此为基准随机选择一个方向,找到另一个近似解,判断其成本值。如果新题解的成本值小,则替换原题解。如果成本值更大,则用概率觉得是否取代原题解。迭代至温度几乎为0时,返回题解。给定定义域和成本函数的优化问题1、确定变量定义域domain
    2、定义成本函数costf
     
    遗传算法以一组种群题解开始,筛选出其中成本值最低的精英题解,利用变异、交叉的修改方法将精英题解扩充到原种群大小,称新得到的这个种群为下一代。迭代至一定代数或成本值达到某阈值或种群不再改变,返回成本值最低的作为最优解。给定定义域和成本函数的优化问题1、确定变量定义域domain
    2、定义成本函数costf
     
    非负矩阵因式分解NMF    
    展开全文
  • 常见机器学习算法优缺点总结

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

    常见机器学习算法优缺点总结

    1. 回归

    回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。

    回归任务的特征是具有数值型目标变量的标注数据集。换言之,每一个用以监督算法的观察样本,都有一个数值型真值。

     

    1.1 (正则化)线性回归

    线性回归是回归任务最常用的算法。它最简的形式,是用一个连续的超平面来拟合数据集(比如,当你仅有两个变量时就用一条直线)。如果数据集内的变量存在线性关系,拟合程度就相当高。

    在实践中,简单线性回归通常会被其正则化形式(LASSO、Ridge 及弹性网络)所取代。正则化是对过多回归系数所采取的一种避免过拟合的惩罚技巧,同时,惩罚的强度需要被平衡好。

    • 优点:线性回归的理解和解释都非常直观,还能通过正则化来避免过拟合。此外,线性模型很容易通过随机梯度下降来更新数据模型。

    • 缺点:线性回归在处理非线性关系时非常糟糕,在识别复杂的模式上也不够灵活,而添加正确的相互作用项或多项式又极为棘手且耗时。

    1.2 回归树(决策树)(集成方法)

    回归树,又名决策树,通过将数据集重复分割成不同的分支来最大化每次分离的信息增益,从而让回归树很自然地学到非线性关系。

    集成的方法,如随机森林(RF)或梯度提升树(GBM),则能结合许多独立训练树的预测。我们在这里不会详述其中的机制,但在实践中,随机森林一般都有很出色的表现,梯度提升树则较难调参,但往往能有更高的性能上限。

    • 优点:决策树能学习非线性关系,对异常值也具有很强的稳健性。集成学习在实践中表现优异,经常赢得经典的(非深度学习)机器学习竞赛。

    • 缺点:由于无约束,单棵树容易过拟合,这是因为单棵树可保留分支直至记住训练的数据。不够,集成方法可以弱化这一缺点。

    1.3 深度学习

    深度学习是指能够学习极端复杂模式的多层神经网络。它们在输入层和输出层之间使用隐藏层来对数据的中间表征建模,这一点是其他算法很难做到的。

    深度学习还有几个重要的机制,如卷积、漏失等,这使该算法可以有效学习高维数据。然而,相对于其他算法,深度学习需要更多的数据来进行训练,因为该模型需要估算更大数量级的参数。

    • 优点:深度学习是当前特定领域的最先进技术,如计算机视觉与语音识别。深度神经网络在图像、音频和文本数据上表现优异,也很容易通过反向传播算法来更新数据模型。它们的架构(即层级的数量和结构)能适用于多种问题,同时隐藏层还能降低算法对特征工程的依赖。

    • 缺点:深度学习算法往往不适合用于通用目的,因为它们需要大量的数据。事实上,对于经典的机器学习问题,深度学习的表现并不比集成方法好。此外,由于训练所需的密集型计算,它们需要更多的专门知识才能进行调参(如设定架构与超参数)。

    1.4 荣誉奖:最近邻算法

    最近邻算法是“基于实例的”,也就意味着它需要保留每一个训练观察值。最近邻算法通过搜寻最相似的训练样本来预测新样本的观察值。

    它是内存密集型算法,处理高维数据时的效果并不理想,同时还需要高效的距离函数来计算相似度。在实践中,使用正则化的回归或树型集成方法通常是更好的选择。

    2.分类

    分类是一种用于分类变量建模及预测的监督学习算法,使用案例包括员工流失、邮件过滤、金融欺诈等的预测。

    正如你所见,许多回归算法都有其对应的分类形式,分类算法往往适用于类别(或其可能性)的预测,而非数值。

    2.1 (正则化)逻辑回归

    逻辑回归是线性回归所对应的分类方法,基本概念由线性回归推导而出。逻辑回归通过逻辑函数将预测映射到 0 到 1 的区间,因此预测值可被视为某一类别的概率。

    该模型依旧是线性的,只有当数据线性可分时(例如,数据可被某决策平面完全分离),这一算法才会有很好的表现。逻辑回归同样能惩罚模型系数以进行正则化。

    • 优点:输出结果会有很好的概率解释,而算法也能通过正则化以避免过拟合。逻辑模型很容易通过随机梯度下降来更新数据模型。

    • 缺点:逻辑回归在面对多元或非线性决策边界时性能较差。

    2.2 分类树(集成方法)

    对应于回归树的分类算法是分类树。通常,它们都是指决策树,更为严谨的说法是“分类回归树(CART)”,也就是非常有名的 CART 算法。

    • 优点:跟回归方法一样,分类树的集成方法在实践中的表现同样十分优异。它们在应对异常数据时有着相当的稳健性与可扩展性。由于其层级结构,分类树的集成方法能够很自然地对非线性决策边界建模。

    • 缺点:不可约束,单棵树容易过拟合,集成方法可削弱这一影响。

    2.3 深度学习

    深度学习同样很容易适应于分类问题。实际上,深度学习应用地更多的是分类任务,如图像分类等。

    • 优点:深度学习非常适合于音频、文本与图像数据的分类。

    • 缺点:与回归方法一样,深度神经网络需要大量的数据进行训练,所以也不是一个通用目的算法。

    2.4 支持向量机

    支持向量机使用一个名为核函数的技巧,来将非线性问题变换为线性问题,其本质是计算两个观测数据的距离。支持向量机算法所寻找的是能够最大化样本间隔的决策边界,因此又被称为大间距分类器。

    举例来说,使用线性核函数的支持向量机类似于逻辑回归,但更具稳健性。因而在实践中,支持向量机最大用处是用非线性核函数来对非线性决策边界进行建模。

    • 优点:支持向量机能对非线性决策边界建模,又有许多可选的核函数。在面对过拟合时,支持向量机有着极强的稳健性,尤其是在高维空间中。

    • 缺点:不过,支持向量机是内存密集型算法,选择正确的核函数就需要相当的j技巧,不太适用较大的数据集。在当前的业界应用中,随机森林的表现往往要优于支持向量机。

    2.5 朴素贝叶斯

    朴素贝叶斯是一种基于条件概率和计数的简单算法,其本质是一个概率表,通过训练数据来更新其中的概率。它预测新观察值的过程,就是根据样本的特征值在概率表中来寻找最为可能的类别。

    被称为“朴素”原因,是其核心的特征条件独立性假设(例如,每一项输入特征都相互独立),在现实中几乎是不成立的。

    • 优点:即便条件独立性假设很难成立,但实践中的朴素贝叶斯算法却能表现得很好。该算法易于实现且能伴随数据集更新。

    • 缺点:因为朴素贝叶斯的算法太过简单,所以很容易被上述分类算法所取代。

    3.聚类

    聚类是基于数据内部结构来寻找样本自然族群(集群)的无监督学习任务,使用案例包括用户画像、电商物品聚类、社交网络分析等。

    由于聚类属于无监督学习,也就不会输出“正确的答案”,评价结果时往往要用到数据可视化。如果你需要“正确的答案”,亦即训练集中存在预标注的集群,那么用分类算法会更加合适。

    3.1 K 均值

    K 均值是基于样本点间的几何距离来度量聚类的通用目的算法。由于集群围绕在聚类中心,结果会接近于球状并具有相似的大小。

    我们之所以推荐该算法给初学者,是因为它不仅足够简单,而且足够灵活,对于大多数问题都能给出合理的结果。

    • 优点:K 均值是最为流行的聚类算法,因为它足够快速、足够简单,如果你的预处理数据和特征工程都做得十分有效,那它将具备令人惊叹的灵活性。

    • 缺点:该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。

    3.2 仿射传播

    仿射传播是一种相对较新的聚类算法,它基于两个样本点之间的图形距离来确定集群,其结果倾向于更小且大小不等的集群。

    • 优点:仿射传播不需要指出明确的集群数量,但需要指定“sample preference”和“damping”等超参数。

    • 缺点:仿射传播的主要缺点是训练速度较慢,且需要大量内存,因而难于扩展到大数据集。此外,该算法同样在假定潜在的集群要接近于球状。

    3.3 分层 / 层次

    分层聚类,又名层次聚类,其算法基于以下概念来实现:

    1) 每一个集群都从一个数据点开始;

    2) 每一个集群都可基于相同的标准进行合并;

    3) 重复这一过程,直至你仅剩下一个集群,这就获得了集群的层次结构。

    • 优点:层次聚类的最主要优点,是集群不再假定为类球形。此外,它可以很容易扩展到大数据集。

    • 缺点:类似于 K 均值,该算法需要选定集群的数量,即算法完成后所要保留的层次。

    3.4 DBSCAN

    DBSCAN 是一种基于密度的聚类算法,它将样本点的密集区域组成集群;其最新进展是HDBSCAN,它允许集群的密度可变。

    • 优点:DBSCAN 不需要假定类球形集群,其性能可以扩展。此外,它不需要每个点都被分配到集群中,这就降低了集群的噪音。

    • 缺点:用户必须要调整“epsilon”和“min_sample”这两个超参数来定义集群密度。DBSCAN 对此非常敏感。

    维度灾难

    在机器学习领域,“维度(Dimensionality)”通常指数据集中的特征数量(即输入变量的个数)。

    当特征的个数特别大的时候(相对于数据集中观测样本的数量来说),训练出一个有效的模型,对算法要求就会特别高(即,用现有的算法训练出一个有效的模型特别困难)。这就是所谓的“维度灾难(Curse of Dimensionality)”,特别是对依赖于距离计算的聚类算法而言。

    对于“维度灾难”,有位 Quora 用户给出了一个非常好的类比:

    假设有一条100码的直线,而你在该直线的某处掉了一枚硬币。要找回硬币并不难,你只需沿着这条线走就行了,最多花上你2分钟时间。 然后,假设有一个长和宽都是100码的广场,而你是把硬币掉在广场的某个位置。现在再想找回它,可就不容易了,这好比在两个并排的足球场中找针,可能会耗上你几天时间。 再然后,假设是一个长、宽、高都是100码的立方体,那就好比是在30层楼高的大型体育场内找zhen找针……

    随着维度的增加,在空间中搜索的难度也会变得愈加困难。

    Quora链接:www.quora.com/What-is-the…

    这就需要数据降维的办法:特征选取和特征提取。

    4.特征选取

    特征选取是从你的数据集中过滤掉不相关或冗余的特征。特征选取与特征提取的关键区别在于:特征选取是从原特征集中选取一个子特征集,而特称提取则是在原特征集的基础上重新构造出一些(一个或多个)全新的特征。

    需要注意的是,某些监督式机器学习算法已经具备了内在的特征选取机制:比如正则回归与随机森林。通常,我们是建议一开始优先尝试这些算法,如果它们能匹配上你的问题的话。对此我们已经做过介绍。

    作为独立的任务,特征选取既可以是非监督式的(如方差阈值),又可以是监督式的(比遗传算法)。有必要的话,你还可以把多种方法以某种合理的方式整合在一起。

    4.1 方差阈值

    方差阈值会摒弃掉观测样本那些观测值改变较小的特征(即,它们的方差小于某个设定的阈值)。这样的特征的价值极小。

    举例来说,如果你有一份公共健康数据,其中96%的人都是35岁的男性,那么去掉“年龄”和“性别”的特征也不会损失重要信息。

    由于方差阈值依赖于特征值的数量级,你应该对特征值先做归一化处理。

    • 优点:使用方差阈值方式进行数据降维只需一个非常可靠的直觉:特征值不怎么改变的特征,不会带来什么有用的信息。这是在你建模初期进行数据降维相对安全的一种方式。

    • 缺点:如果你正在解决的问题并不需要进行数据降维,即便使用了方差阈值也几乎没有什么作用。此外,你需要手工设置、调整方差阈值,这个过程相当具有技术含量。我们建议从一个保守(也就是,较低)的阈值开始。

    4.2 相关性阈值

    相关性阈值会去掉那些高度相关的特征(亦即,这些特征的特征值变化与其他特征非常相似)。它们提供的是冗余信息。

    举例来说,如果你有一个房地产数据,其中两个特征分别是“房屋面积(单位:平方英尺)”和“房屋面积(单位:平方米)”,那么,你就可以去掉其中的任何一个(这非常安全,也不会给你的模型带来任何负面影响)。

    问题是,你该去掉哪一个特征呢?首先,你应该计算所有特征对的相关系数。而后,如果某个特征对的相关系数大于设定的阈值,那你就可以去掉其中平均绝对相关系数较大的那一个。

    • 优点:使用相关性阈值同样只需一个可靠的直觉:相似的特征提供了冗余的信息。对于某些含有强相关性特征较多的数据集,有些算法的稳健性并不好,因此,去掉它们可以提升整个模型的性能(计算速度、模型准确度、模型稳健性,等等)。

    • 缺点:同样,你还是必须手动去设置、调整相关性阈值,这同样是个棘手且复杂的过程。此外,如果你设置的阈值过低,那么你将会丢失掉一些有用的信息。无论在什么时候,我们都更倾向于使用那些内置了特征选取的算法。对于没有内置特征提取的算法,主成分分析是一个很好的备用方案。

    4.3 遗传算法

    遗传算法是可用于不同任务的一大类算法的统称。它们受进化生物学与自然选择的启发,结合变异与交叉,在解空间内进行高效的遍历搜索。这里有一篇非常棒的简介:“遗传算法背后的原理引入”。

    在机器学习领域,遗传算法主要有两大用处。

    其一,用于最优化,比如去找神经网络的最佳权重。

    其二,是用于监督式特征提取。这一用例中,“基因”表示单个特征,同时“有机体”表示候选特征集。“种群体”内的每一个有机体都会基于其适应性进行评分,正如在测试数据集上进行模型性能测试。最能适应环境的有机体将会生存下来,并不断繁衍,一直迭代,直至最终收敛于某个最优的解决方案。

    • 优点:在穷举搜索不可行的情况下,对高维数据集使用遗传算法会相当有效。当你的算法需要预处理数据却没有内置的特征选取机制(如最近邻分类算法),而你又必须保留最原始的特征(也就是不能用任何主成分分析算法),遗传算法就成了你最好的选择。这一情况在要求透明、可解释方案的商业环境下时有发生。

    • 缺点:遗传算法为你解决方案的实施带来了更高的复杂度,而多数情况下它们都是不必要的麻烦。如果可能的话,主成分分析或其它内置特征选取的算法将会更加高效和简洁。

    4.4 荣誉奖:逐步搜索

    逐步搜索是一个基于序列式搜索的监督式特征选取算法。它有两种形式:前向搜索和反向搜索。

    对于前向逐步搜索,你从没有任何特征开始。接着,从候选特征集中,选择一个特征来训练模型;然后,保存模型性能最好对应的那个特征;再往下,你不断往训练模型的特征集中添加特征,一次添加一个特征,直到你模型的性能不再提升。

    反向逐步搜索的过程相同,只不过顺序相反:从把所有的特征都用于训练模型,接着一次性移除一个特征,直到模型的性能骤降。

    我们提及这一算法纯粹是源于某些历史原因。尽管很多教科书都把逐步搜索算法作为一个有效的方法,但它所表现出来的性能总是不及其它监督式方法,比如正则化。逐步搜索有很多明显的缺陷,最致命的一点就是它是一个贪心算法,无法面对未来变化的冲击。我们并不推荐这个算法。

    5.特征提取

    特征提取是用来创造一个新的、较小的特征集,但仍能保留绝大部分有用的信息。值得再提的是,特征选取是用来保留原始特征集中的一部分子特征集,而特征提取则是创造全新的特征集。

    跟特征选取一样,某些算法内部已经具有了特征提取的机制。最好的案例就是深度学习,它可以通过每一层隐神经层,提取出越来越有用的能表征原始数据的特征。我们在“深度学习”部分已给出相关的讲解。

    作为独立的任务,特征提取可以是非监督式的(如主成分分析)或监督式的(如线性判别分析)。

    5.1 主成分分析

    主成分分析是一个非监督式算法,它用来创造原始特征的线性组合。新创造出来的特征他们之间都是正交的,也就是没有关联性。具体来说,这些新特征是按它们本身变化程度的大小来进行排列的。第一个主成分代表了你的数据集中变化最为剧烈的特征,第二个主成分代表了变化程度排在第二位的特征,以此类推。

    因此,你可以通过限制使用主成分的个数来达到数据降维的目的。例如,你可以仅采用能使累积可解释方差为90%的主成分数量。

    你需要在使用主成分分析之前,对数据进行归一化处理。否则,原始数据中特征值数量级最大的那个特征将会主导你新创造出来的主成分特征。

    • 优点:主成分分析是一项多用途技术,实用效果非常好。它部署起来快速、简单,也就是说,你可以很方便地测试算法性能,无论使用还是不使用主成分分析。此外,主成分分析还有好几种变体和扩展(如:核主成分分析(kernel PCA),稀疏主成分分析(sparse PCA)),用以解决特定的问题。

    • 缺点:新创造出来的主成分并不具备可解释性,因而在某些情况下,新特征与应用实际场景之间很难建立起联系。此外,你仍然需要手动设置、调整累积可解释方差的阈值。

    5.2 线性判别分析

    线性判别分析不是隐含狄利克雷分布,它同样用来构造原始特征集的线性组合。但与主成分分析不同,线性判别分析不会最大化可解释方差,而是最大化类别间的分离程度。

    因此,线性判别分析是一种监督式学习方式,它必须使用有标记的数据集。那么,线性判别分析与主成分分析,到底哪种方法更好呢?这要视具体的情况而定,“没有免费的午餐”原理在这里同样适用。

    线性判别分析同样依赖于特征值的数量级,你同样需要先对特征值做归一化处理。

    • 优点:线性判别分析是一种监督式学习,基于这种方式获取到的特征可以(但并不总是能)提升模型性能。此外,线性判别分析还有一些变体(如二次线性判别分析),可用来解决特定的问题。

    • 缺点:与主成分分析一样,新创造出来的特征不具有可解释性。而且,你同样要手动设置、调整需要保留的特征数量。线性判别分析需要已经标记好的数据,因此,这也让它更加接地气儿。

    5.3 自编码机

    自编码机是一种人工神经网络,它是用来重新构建原始输入的。例如,图像自编码机是训练来重新表征原始数据的,而非用以区分图片里面的小猫、小狗。

    但这有用吗?这里的关键,是在隐含层搭建比输入层和输出层更少数量的神经元。这样,隐含层就会不断学习如何用更少的特征来表征原始图像。

    因为是用输入图像来作为目标输出,自编码机被视为无监督学习。它们可被直接使用(如:图像压缩)或按顺序堆叠使用(如:深度学习)。

    • 优点:自编码机是人工神经网络中的一种,这表示它们对某些特定类型的数据表现会非常好,比如图像和语音数据。

    • 缺点:自编码机是一种人工神经网络。这就是说,它们的优化需要更多的数据来进行训练。它们并不能作为一般意义上的数据降维算法来用。

    小结

    基于我们的经验,以下是一些有用的建议:

    1. 练习,练习,练习。要找到一些数据集,趁热打铁。了解这些算法只是一个开头,掌握好它们就需要你不停地实践。

    2. 掌握好基础。掌握这里算法,能为你去运用机器学习打下坚实的基础,因为其他所有的算法都是基于上述算法的一些变形。举例来说,先掌握主成分分析和线性判别分析之前的区别,而后再去学习线性判别分析的相关细节以及二次线性判别分析之间的差别,效果会更好。

    3. 铁律,好的数据远胜于花哨的算法。在机器学习应用领域,算法总是可以替换的;而有效的探索性分析、数据清洗与特征工程总是能大力提升你的结果。我们会经常提及这一点,因为这就是该死的真相!

    本文为转载,感谢作者的总结 原文地址

     

    展开全文
  • 盘点十大机器学习优缺点

    千次阅读 2017-09-04 09:29:24
    1.1 优点 简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归; 可用于数值型数据和离散型数据; 训练时间复杂度为O(n),无数据输入假定; 对异常值不敏感。 1.2 缺点 ...

    1. K近邻

      算法采用测量不同特征值之间的距离的方法进行分类。

    1.1 优点

    1. 简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归;

    2. 可用于数值型数据和离散型数据;

    3. 训练时间复杂度为O(n),无数据输入假定;

    4. 对异常值不敏感。

    1.2 缺点

    1. 计算复杂性高;空间复杂性高;

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

    3. 一般数值很大的时候不用这个,计算量太大。但是单个样本又不能太少 否则容易发生误分;

    4. 最大的缺点是无法给出数据的内在含义。

    2. 朴素贝叶斯

    2.1优点

    1. 生成式模型,通过计算概率来进行分类,可以用来处理多分类问题;

    2. 对小规模的数据表现很好,适合多分类任务,适合增量式训练,算法也比较简单。

    2.2缺点

    1. 对输入数据的表达形式很敏感;

    2. 由于朴素贝叶斯的“朴素”特点,所以会带来一些准确率上的损失;

    3. 需要计算先验概率,分类决策存在错误率。

    3. 决策树

    3.1 优点

    1. 概念简单,计算复杂度不高,可解释性强,输出结果易于理解;

    2. 数据的准备工作简单, 能够同时处理数据型和常规型属性,其他的技术往往要求数据属性的单一;

    3. 对中间值得确实不敏感,比较适合处理有缺失属性值的样本,能够处理不相关的特征;

    4. 应用范围广,可以对很多属性的数据集构造决策树,可扩展性强。决策树可以用于不熟悉的数据集合,并从中提取出一些列规则 这一点强于KNN。

    3.2 缺点

    1. 容易出现过拟合;

    2. 对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征;

    3. 信息缺失时处理起来比较困难,忽略数据集中属性之间的相关性。

    4. SVM

    4.1 优点

    1. 计算开销不大,结果容易解释;

    2. 泛化能力比较强,泛化错误率低;

    3. 解决小样本情况下的机器学习问题;

    4. 可用于线性和非线性分类,也可以用于回归;

    5. 可以解决高维问题, 可以避免神经网络结构选择和局部极小点问题;

    4.2 缺点

    1. 对参数调节和和函数的选择敏感,原始分类器不加修改仅适用于处理二分类问题;

    2. 对于核函数的高维映射解释力不强,尤其是径向基函数;

    3. 对缺失数据敏感;

    5. Logistic回归

      根据现有数据对分类边界线建立回归公式,依次进行分类。

    5.1 优点

    1. 实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低;

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

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

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

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

    5.2 缺点

    1. 容易欠拟合,分类精度可能不高

    6. EM算法

      只要有一些训练数据,再定义一个最大化函数,采用EM算法,利用计算机经过若干次迭代,就可以得到所需的模型。EM算法是基于模型的聚类方法,是在概率模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量。E步估计隐含变量,M步估计其他参数,交替将极值推向最大。
      

    6.1 优点

       EM算法是自收敛的分类算法,既不需要事先设定类别也不需要数据见的两两比较合并等操作。比K-means算法计算结果稳定、准确。

    6.2 缺点

      是当所要优化的函数不是凸函数时,EM算法容易给出局部最佳解,而不是最优解。EM算法比K-means算法计算复杂,收敛也较慢,不适于大规模数据集和高维数据。

    7. AdaBoost算法

    7.1 优点

    1. 很好的利用了弱分类器进行级联。

    2. 可以将不同的分类算法作为弱分类器。

    3. AdaBoost具有很高的精度。

    4. 相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。

    7.2 缺点

    1. AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

    2. 数据不平衡导致分类精度下降。

    3. 训练比较耗时,每次重新选择当前分类器最好切分点。

    8. 人工神经网络

    8.1 优点

    1. 分类准确度高,学习能力极强。

    2. 对噪声数据鲁棒性和容错性较强。

    3. 有联想能力,能逼近任意非线性关系。

    8.2 缺点

    1. 神经网络参数较多,权值和阈值。

    2. 黑盒过程,不能观察中间结果。

    3. 学习过程比较长,有可能陷入局部极小值。

    9. CART分类与回归树

      是一种决策树分类方法,采用基于最小距离的基尼指数估计函数,用来决定由该子数据集生成的决策树的拓展形。如果目标变量是标称的,称为分类树;如果目标变量是连续的,称为回归树。分类树是使用树结构算法将数据分成离散类的方法。

    9.1 优点

    1. 常灵活,可以允许有部分错分成本,还可指定先验概率分布,可使用自动的成本复杂性剪枝来得到归纳性更强的树。

    2. 在面对诸如存在缺失值、变量数多等问题时CART 显得非常稳健。

    3. 可以生成可以理解的规则。

    4. 计算量相对来说不是很大。

    5. 可以处理连续和种类字段。

    6. 决策树可以清晰的显示哪些字段比较重要

    9.2 缺点

    1. 对连续性的字段比较难预测。

    2. 对有时间顺序的数据,需要很多预处理的工作。

    3. 当类别太多时,错误可能就会增加的比较快。

    4. 一般的算法分类的时候,只是根据一个字段来分类。

    10. Random Forests (随机森林)

      在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。

    10.1 优点

    1. 对于很多种资料,它可以产生高准确度的分类器。

    2. 它可以处理大量的输入变量。

    3. 它可以在决定类别时,评估变量的重要性。

    4. 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计。

    5. 它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度。

    6. 它提供一个实验方法,可以去侦测 variable interactions 。

    7. 对于不平衡的分类资料集来说,它可以平衡误差。

    8. 它计算各例中的亲近度,对于数据挖掘、侦测偏离者(outlier)和将资料视觉化非常有用。

    9. 使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料。

    10. 学习过程是很快速的。

    10.2 缺点

    1. 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟

    2. 对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

    展开全文
  • 机器学习优缺点汇总

    万次阅读 2018-08-30 23:05:49
    决策树优点 1、决策树易于理解和解释,可以可视化分析,容易提取出规则。 2、可以同时处理标称型和数值型数据。 3、测试数据集时,运行速度比较快。 4、决策树可以很好的扩展到大型数据库中,同时它的大小独立于...

    决策树优点
    1、决策树易于理解和解释,可以可视化分析,容易提取出规则。
    2、可以同时处理标称型和数值型数据。
    3、测试数据集时,运行速度比较快。
    4、决策树可以很好的扩展到大型数据库中,同时它的大小独立于数据库大小。
    二、决策树缺点
    1、对缺失数据处理比较困难。
    2、容易出现过拟合问题。
    3、忽略数据集中属性的相互关联。
    4、ID3算法计算信息增益时结果偏向数值比较多的特征。
    三、改进措施
    1、对决策树进行剪枝。可以采用交叉验证法和加入正则化的方法。
    2、使用基于决策树的combination算法,如bagging算法,randomforest算法,可以解决过拟合的问题
    四、应用领域
    企业管理实践,企业投资决策,由于决策树很好的分析能力,在决策过程应用较多。

    KNN算法的优点
    1、KNN是一种在线技术,新数据可以直接加入数据集而不必进行重新训练
    2、KNN理论简单,容易实现
    二、KNN算法的缺点
    1、对于样本容量大的数据集计算量比较大。
    2、样本不平衡时,预测偏差比较大。如:某一类的样本比较少,而其它类样本比较多。
    3、KNN每一次分类都会重新进行一次全局运算。
    4、k值大小的选择。
    三、KNN算法应用领域
    文本分类、模式识别、聚类分析,多分类领域

    SVM优点
    1、解决小样本下机器学习问题。
    2、解决非线性问题。
    3、无局部极小值问题。(相对于神经网络等算法)
    4、可以很好的处理高维数据集。
    5、泛化能力比较强。
    二、SVM缺点
    1、对于核函数的高维映射解释力不强,尤其是径向基函数。
    2、对缺失数据敏感。
    三、SVM应用领域
    文本分类、图像识别、主要二分类领域

    AdaBoost算法优点
    1、很好的利用了弱分类器进行级联。
    2、可以将不同的分类算法作为弱分类器。
    3、AdaBoost具有很高的精度。
    4、相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。
    二、Adaboost算法缺点
    1、AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。
    2、数据不平衡导致分类精度下降。
    3、训练比较耗时,每次重新选择当前分类器最好切分点。
    三、AdaBoost应用领域
    模式识别、计算机视觉领域,用于二分类和多分类场景

    朴素贝叶斯算法优点
    1、对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已。
    2、支持增量式运算。即可以实时的对新增的样本进行训练。
    3、朴素贝叶斯对结果解释容易理解。
    二、朴素贝叶斯缺点
    1、由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好。
    三、朴素贝叶斯应用领域
    欺诈检测中使用较多
    一封电子邮件是否是垃圾邮件
    一篇文章应该分到科技、政治,还是体育类
    一段文字表达的是积极的情绪还是消极的情绪?
    人脸识别
    logistic回归优点
    1、计算代价不高,易于理解和实现
    二、logistic回归缺点
    1、容易产生欠拟合。
    2、分类精度不高。
    三、logistic回归应用领域
    用于二分类领域,可以得出概率值,适用于根据分类概率排名的领域,如搜索排名等。
    Logistic回归的扩展softmax可以应用于多分类领域,如手写字识别等。
    信用评估
    测量市场营销的成功度
    预测某个产品的收益
    特定的某天是否会发生地震
    神经网络优点
    1、分类准确度高,学习能力极强。
    2、对噪声数据鲁棒性和容错性较强。
    3、有联想能力,能逼近任意非线性关系。
    二、神经网络缺点
    1、神经网络参数较多,权值和阈值。
    2、黑盒过程,不能观察中间结果。
    3、学习过程比较长,有可能陷入局部极小值。
    三、人工神经网络应用领域
    目前深度神经网络已经应用与计算机视觉,自然语言处理,语音识别等领域并取得很好的效果。

    展开全文
  • 机器学习算法 综述(入门)

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

    万次阅读 2018-06-30 15:16:40
    如果 K 值较大,优点是可以减少学习的估计误差,缺点是学习的近似误差增大,这时与输入实例较远的训练实例也会对预测起作用,是预测发生错误。在实际应用中,K 值一般选择一个较小的数值,通常采用交叉验证的方法来...
  • 机器学习 稀疏性的优点

    千次阅读 2019-06-13 15:40:02
    这种稀疏性带来许多优点. 参数稀疏有什么好处 1)特征选择(Feature Selection): 大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi...
  • 使用机器学习端到端图片验证码识别,通杀所有图片类型验证码类型(包括复杂的连在一起、重叠的验证码),支持java,python, c#等语言, 识别精度达95%以上。 机器学习识别验证码,提供了一个完整的图片验证码识别...
  • 机器学习入门——机器学习基础概念

    千次阅读 多人点赞 2020-03-15 17:02:02
    包括机器学习的主要任务,机器学习的分类等。 文章目录引言用到的数据机器学习的主要任务分类回归 用到的数据 鸢尾花(IRIS)是比较常见的在我们学习机器学习时用到的数据。数据来源: ...
  • 机器学习实战》–学习笔记–资料下载和运行环境 经典书+配套Python代码=实战 英文原版的官方网站有本书配套的Python代码: https://www.manning.com/books/machine-learning-in-action 使用jupyter notebook整理的...
  • 机器学习之常见学习工具介绍

    千次阅读 2019-07-27 09:50:18
    “无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。...一套完整的机器学习工...
  • 学习方式 监督式学习: 非监督式学习: 半监督式学习: 强化学习: 算法类似性 回归算法: 基于实例的算法 正则化方法 决策树学习 贝叶斯方法 基于核的算法 聚类算法 关联规则学习 人工神经网络 ...
  • 我是如何入门机器学习的呢

    千次阅读 多人点赞 2018-08-20 12:44:42
    机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。  ...
  • 在本指南中,我们将通过现代机器学习算法进行实用,简洁的介绍。虽然存在其他这样的列表,但它们并没有真正解释每种算法的实际权衡,我们希望在这里做。我们将根据我们的经验讨论每种算法的优缺点。 对机器学习算法...
  • 一文了解基于复杂网络的机器学习

    千次阅读 2020-08-26 07:00:00
    作者:莫凡来源:华章计算机(hzbook_jsj)机器学习是一门有趣的学科,它本身就是一门交叉学科,同时又继续与新的学科交叉,不断产生新的分支,就像是时时推出新口味的碳酸饮料,让贪婪的味...
  • 机器学习-阿里机器学习pai简介

    千次阅读 2019-11-07 10:36:25
    背景与目标 现在有什么? 业务数据有一定的积累 ...本博客将阐述机器学习PAI的优缺点。 常规手段 数据分析 分析需求出现的时候,找BI(Business Intelligence,业务情报)部门,BI同学按照需求和...
  • 机器学习实践总结

    千次阅读 2018-01-28 18:12:49
    机器学习的目的、必备知识、分类、学习步骤、降维技术、常用算法和结果分析
  • Python 机器学习经典实例

    万次阅读 多人点赞 2018-04-12 10:44:15
    本书首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网络,等等。 用最火的 Python 语言、通过各种各样的...
  • 机器学习实战》总结篇

    千次阅读 2019-07-17 09:02:37
    机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识...
  • 各类机器学习算法的优缺点和适用场景汇总

    千次阅读 多人点赞 2019-05-29 17:24:21
    优点: 1、可解决小样本的机器学习任务 2、可解决高维问题 3、可通过核方法解决非线性问题 缺点: 1、对缺失数据敏感 2、对于非线性问题,核函数方法选择一直是个未决问题 神经网络 优点: 1、分类的准确度极高 2、...
  • 机器学习十大经典算法C4.5分;机器学习方法的分类基于学习方式;有监督学习用于分类标定的训;无监督学习用于聚类不存在标;半监督学习结合少量的标定训;一C4.5 ;增益比率度量是用增益度量Gai;数据集如图1所示它表示的是...
  • 一、机器学习概览 1. 什么是机器学习? 机器通过分析大量数据来进行学习。比如说,不需要通过编程来识别猫或人脸,它们可以通过使用图片来进行训练,从而归纳和识别特定的目标。 ...
  • 机器学习模型优缺点及基本概念

    千次阅读 2020-06-04 15:43:49
    1. 机器学习中线性模型和非线性的区别 区别 线性模型可以是用曲线拟合样本,但是分类的决策边界一定是直线的,例如logistics模型 区分是否为线性模型,主要是看一个乘法式子中自变量x前的系数w,如果w只影响一个x...
  • 机器学习01——机器学习需要什么?

    千次阅读 2018-11-18 15:21:20
    二:机器学习与人工智能 机器学习是基础——>人工智能 三:机器学习的理解 一个婴儿,需要模仿着父母不停的学习然后学会说话和行走是一样的道理。 机器学习是给一个目标——>机器模仿实现目标——...
  • 一、随机森林算法简介: 在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而 "Random ...
  •  在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型;然后利用这个学习到的模型来对测试文档进行分类与预测。然而,我们看到机器学习算法在当前的 Web 挖掘研究中存在着一个...
  • 机器学习常见考题

    千次阅读 2020-07-08 01:03:19
    (3)Adagard在训练的时候可以自动变更学习速率,设置一个全局的学习率,而实际的学习率与以往的参数模和的开方成反比(4)Adam利用梯度的一阶矩和二阶矩估计动态调整每个参数的学习率,在经过偏置的校正后,每一次...
  • 机器学习常用激活函数

    千次阅读 2018-09-12 14:28:55
    机器学习常用激活函数   摘要: 激活函数就是神经网络输出端的一个节点,来连接两个神经网络。本文主要介绍激活函数的功能以及激活函数类型。 什么是激活函数? 激活函数就是神经网络输出端的一个节点,来...
  •   本篇主要是让大家熟悉机器学习实际项目中的全流程,并伴随案例讲解,通过让大家动手了解实际机器学习项目的大体流程,以及面对一些常见情况的处理方法 编程环境: Anaconda3:juputer notebook Python3 Pycharm...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 146,154
精华内容 58,461
关键字:

机器学习的优点