精华内容
下载资源
问答
  • 机器学习几种分类识别问题

    千次阅读 2018-11-04 20:56:12
    比如之前非常火热的 ImageNet 挑战赛,还有人脸识别,人脸表情识别等,接触机器学习的一般来说,都是从识别开始,因为识别比较简单直观,而且大家都对目前识别领域比较常见的个数据集比如 MNIST, CIFAR-10, CIFAR-...

    分类和识别是机器学习领域非常常见的一类问题,比如之前非常火热的 ImageNet 挑战赛,还有人脸识别,人脸表情识别等,接触机器学习的一般来说,都是从识别开始,因为识别比较简单直观,而且大家都对目前识别领域比较常见的几个数据集比如 MNIST, CIFAR-10, CIFAR-100 还有 ImageNet 等都比较熟悉了,这些都是为了解决分类识别问题而设计的数据集。

    随着深度学习的蓬勃发展,在分类识别领域,又分化出来很多不同的方式,虽然这些概念在深度学习出来之前,就已经有了,但是有了深度神经网络结合大数据,以前的这些概念又被重新翻出来,不管是新瓶装旧酒,还是焕发了第二春,反正这些概念最近又开始被吵的火热了,什么 few-shot learning, zero-shot learning, incremental-learning,meta-learning 之类的又开始受到了越来越多的关注。虽然这些概念不仅仅用于分类识别,不过用分类识别问题来解释这些概念简单直白。

    一般来说,给定一个数据集 X = { x i } i = 1 N \mathcal{X}=\{ \mathbf{x}_i \}_{i=1}^{N} X={xi}i=1N,这个数据集属于 K K K类,假设标签空间为 Y = { y j } j = 1 N \mathcal{Y}=\{ \mathbf{y}_j \}_{j=1}^{N} Y={yj}j=1N x \mathbf{x} x 一般表示为图像,比如手写数字的MNIST数据集,一张图就是一个数字比如 0, 1, 2, 3, 4 等等,或者ImageNet 的图像,一张图表示某一个物体,比如猫啊, 狗啊什么的, y \mathbf{y} y 表示一个标签,就是我们常说的 one-hot 向量,比如 MNIST 的标签是 10 维的向量,ImageNet 的标签是 1000 维的向量, 只有一个位置是1,其他位置都是0,每个类的标签按列拼在一起,就可以组成一个标准的单位矩阵。分类问题,简单来说,就是把属于同一类的图像聚到一起,都是手写数字 0 的图像,应该都归为一类,都是手写数字 2 的图像,应该归为另外一类,不能把手写数字 8 的图像,归到 0 这一类,所以分类问题,简单来说,就是物以类聚。

    从数学的角度上来说,分类识别就是图像到标签的一个映射过程 :

    X ⇒ Y \mathcal{X} \Rightarrow \mathcal{Y} XY

    说了这么多,我们把什么是分类识别问题解释了,现在来看看,经过这么多年的发展,学术界把分类识别问题又做了不同的划分,根据不同的设定,着手解决不同的问题,归纳起来,主要有以下几类:

    • 有监督学习(supervised learning)
    • 无监督学习(unsupervised learning)
    • 半监督学习(semi-supervised learning)
    • 小样本学习(few-shot learning)
    • 零样本学习(zero-shot learning)
    • 增量学习(incremental learning)
    • 元学习(meta-learning)
    • open question (classification in the real-world, open environment)

    有监督学习

    有监督学习,应该是最常见,发展最成熟的一种分类识别问题了,所谓的有监督,那就是类别的标签是已知的,目前学术界研究的大多数分类识别问题都属于这一类,所以我们见到的数据集一般都是带着标签的,这类问题,都是希望找到一个映射,图像空间到类别空间的一个映射,借着类别标签的 “指引”,把同一类的图像尽可能的映射到一块,聚在一起,因为有标签的“指引”,所以这类问题,相对来说比较容易解决,特别是随着深度神经网络与算力的发展,各大从前的榜单都在被不断刷新,ImageNet 火了几年之后,也不再举办了,估计这榜再刷下去也没什么意思了,有监督学习,发展到现在,越来越像在烧钱,比拼的是数据和计算资源。

    无监督学习

    有监督学习,正如上面说的,需要有标签做“指引”,所以需要很多有标签的数据,而且深度学习需要消耗大量的数据,有标签的数据越来越难获取,需要消耗大量的人力与物力。所以,就有人想,能不能研究一种学习模式,可以不需要类别标签,也能让模型学会分类,所以就发展出了所谓的无监督学习,无监督学习,顾名思义,是不需要类别标签做“指引”的, 直接从数据图像中寻找每一类内在的联系,把同一类图像的特征耦合在一起,不过,到目前为止,这类无监督学习的效果一直不太理想,没有标签的指引,模型好像很难学好。

    半监督学习

    介绍了有监督学习和无监督学习,接下来介绍半监督学习,半监督学习结合了有监督学习和无监督学习,半监督学习,既不需要有监督学习那么多的有标签数据,不过与无监督学习相比,又多了一些标签数据做 “指引”,所以基本上一种把有标签数据和无标签数据混合在一起学习的一种模式。

    小样本学习 (Few-shot learning)

    小样本学习,在深度学习火热起来之前,也有一些人研究,最近两年,这个课题又开始受到越来越多的关注,小样本学习,应该还是属于有监督学习的一种,只是与常规的有监督学习相比,每一类的有标注的数据非常少,学术界经常说的的 1-shot, 5-shot 等等,就是说每一类都只有一个或者五个有标签的样本,这个课题的起源,是为了更好的研究模拟人的认知能力,因为人去学习识别一个东西,是不需要去看那么多的有标签的数据的,不过,从目前学术界发表的研究成果来看,基本还是基于 metric-learning 或者 meta-learning 的方式,利用 迁移学习的概念,先在大量的有标签的数据上训练网络,让网络学到一种有效的特征提取或者学到一套有效的模型参数,然后再在小样本数据集上进行训练。目前,这个方向发表出来的结果,在 Mini-Image Net 上的识别率还不是很高,还有进一步的提升空间。

    零样本学习 (Zero-shot learning)

    零样本学习,是比小样本学习更进一步,最近两年也变得火热起来了, 所谓零样本,那就是完全不需要样本的参考,而去推断识别新的类别,这个研究目前还处于起步阶段,用到的最多的方式,就是基于属性的识别,可以把每个类别进一步拆分成很多个不同属性的组合,某些属性的组合,可能就大概率的对应某个类别,所以,虽然新的类别,没有带标签的样本,但是,从之前的数据集上,可以让模型先学习识别不同的属性,碰到新样本的时候,先识别出该样本的属性,然后再结合不同的属性,进而判断出该样本属于什么类。

    增量学习 (Incremental learning)

    这个也是目前比较火热的一个研究方向,所谓增量学习,与之前见识的学习问题不太一样,早期的分类识别,都假设类别是已知的,并且是固定的,也就是说,我们会先分好训练集,测试集,并且知道训练集与测试集的类别都是已知的,但是增量学习,提出了另外一种学习问题,在真实的环境中,数据肯定不是一次性就全部给定的,而是在逐渐增加的,逐渐增加的数据,有可能是新的类别,也有可能是原来的类别,这样的话,就需要找到一种学习策略,让模型能够不断的去适应环境,增量学习最想解决的一个问题就是“参数遗忘”,我们知道,神经网络在训练的时候,都是尽可能地去拟合它所见到的数据,如果神经在学习的过程中,只能见到当前的数据,而以前的数据无法再见到的话, 那么之前学到的关于之前数据的性质,都将被遗忘,这就有点像狗熊掰棒子一样,只能顾到当下,以前的全给忘了,增量学习就是想解决这个问题,让模型随着见到的数据越来越多,模型的识别能力可以逐步提升。

    元学习(meta-learning)

    meta-learning, 号称,learning to learn,是目前比较火的一种学习策略,说通俗一点,就是希望让模型自己学会怎么训练,类似 auto-ML 的一些东西,这个在 few-shot learning 领域,有些研究已经结合了 meta-learning 的思想,去训练网络。

    Open question

    最后,说一些题外话,现在学术界,考虑分类识别的时候,更多的时候还是在一种可控的环境下来做,比如 ImageNet 1000 类,听起来似乎很多,但是与真实的环境相比,这 1000 类一点也不多,目前所有主流的测评,都是基于这 1000 类来进行比较,而忽略了其他类,这就是我们所说的开放环境,学术界是不考虑开放环境的,因为开放环境太复杂,没有办法做,如果模型在一个封闭的环境下学习,只能认识有限的类别,那这种模型永远没有办法在实际环境中工作。

    所以,虽然现在 AI 引爆了一股股的热潮,但是离通用的 AI 还很遥远,即使是在简单的分类识别问题上,学术界的AI 研究,很多时候,都是基于 100% 的已知可控,数据集被研究了无数遍,但是真实环境中,可能 90% 都是未知的,如何用 10% 的已知去应对 90% 的未知,这可能是机器学习最大的难点。

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

    千次阅读 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

    展开全文
  • 机器学习中常用的聚类算法

    千次阅读 2020-04-08 21:30:13
    聚类是机器学习中重要的无监督算法,它可以将数据点归结为一系列特定的组合。理论上归为一类的数据点具有相同的特性,而不同类别的数据点则具有各不相同的属性。在数据科学聚类会从数据发掘出很多分析和理解...

    聚类是机器学习中一种重要的无监督算法,它可以将数据点归结为一系列特定的组合。理论上归为一类的数据点具有相同的特性,而不同类别的数据点则具有各不相同的属性。在数据科学中聚类会从数据中发掘出很多分析和理解的视角,让我们更深入的把握数据资源的价值、并据此指导生产生活。以下是五种常用的聚类算法。

    K均值聚类

    这一最著名的聚类算法主要基于数据点之间的均值和与聚类中心的聚类迭代而成。它主要的优点是十分的高效,由于只需要计算数据点与剧类中心的距离,其计算复杂度只有O(n)。其工作原理主要分为以下四步:

    1.首先我们需要预先给定聚类的数目同时随机初始化聚类中心。我们可以初略的观察数据并给出较为准确的聚类数目;

    2.每一个数据点通过计算与聚类中心的距离了来分类到最邻近的一类中;

    3.根据分类结果,利用分类后的数据点重新计算聚类中心;

    4.重复步骤二三直到聚类中心不再变化。(可以随机初始化不同的聚类中心以选取最好的结果)

    这种方法在理解和实现上都十分简单,但缺点却也十分明显,十分依赖于初始给定的聚类数目;同时随机初始化可能会生成不同的聚类效果,所以它缺乏重复性和连续性。

    和K均值类似的K中值算法,在计算过程中利用中值来计算聚类中心,使得局外点对它的影响大大减弱;但每一次循环计算中值矢量带来了计算速度的大大下降。

    均值漂移算法

    这是一种基于滑动窗口的均值算法,用于寻找数据点中密度最大的区域。其目标是找出每一个类的中心点,并通过计算滑窗内点的均值更新滑窗的中心点。最终消除临近重复值的影响并形成中心点,找到其对应的类别。

    1.首先以随机选取的点为圆心r为半径做一个圆形的滑窗。其目标是找出数据点中密度最高点并作为中心;

    2.在每个迭代后滑动窗口的中心将为想着较高密度的方向移动;

    3.连续移动,直到任何方向的移动都不能增加滑窗中点的数量,此时滑窗收敛;

    4.将上述步骤在多个滑窗上进行以覆盖所有的点。当过个滑窗收敛重叠时,其经过的点将会通过其滑窗聚类为一个类;

    下图中每一个黑点都代表一个滑窗的中心,他们最终重叠在每一类的中心;

    与K均值相比最大的优点是我们无需指定指定聚类数目,聚类中心处于最高密度处也是符合直觉认知的结果。但其最大的缺点在于滑窗大小r的选取,对于结果有着很大的影响。

    基于密度的聚类算法(DBSCAN)

    DBSCAN同样是基于密度的聚类算法,但其原理却与均值漂移大不相同:

    1.首先从没有被遍历的任一点开始,利用邻域距离epsilon来获取周围点;

    2.如果邻域内点的数量满足阈值则此点成为核心点并以此开始新一类的聚类。(如果不是则标记为噪声);

    3.其邻域内的所有点也属于同一类,将所有的邻域内点以epsilon为半径进行步骤二的计算;

    4.重复步骤二、三直到变量完所有核心点的邻域点;

    5.此类聚类完成,同时又以任意未遍历点开始步骤一到四直到所有数据点都被处理;最终每个数据点都有自己的归属类别或者属于噪声。

    这种方法最大的优点在于无需定义类的数量,其次可以识别出局外点和噪声点、并且可以对任意形状的数据进行聚类。

    但也存在不可回避的缺点,当数据密度变化剧烈时,不同类别的密度阈值点和领域半径会产生很大的变化。同时在高维空间中准确估计领域半径也是不小的挑战。

    利用高斯混合模型进行最大期望估计

    对于较为复杂的分布K均值将会产生如下图般较为离谱的聚类结果。

    而高斯混合模型却具有更高的灵活性。通过假设数据点符合均值和标准差描述的高斯混合模型来实现的。下图以二维情况下为例描述了如何利用最大期望优化算法来获取分布参数的过程:

    1.首先确定聚类的数量,并随机初始化每一个聚类的高斯分布参数;

    2.通过计算每一个点属于高斯分布的概率来进行聚类。与高斯中心越近的点越有可能属于这个类;

    3.基于上一步数据点的概率权重,通过最大似然估计的方法计算出每一类数据点最有可能属于这一聚类的高斯参数;

    4.基于新的高斯参数,重新估计每一点归属各类的概率,重复并充分2,3步骤直到参数不再变化收敛为止。

    在使用高斯混合模型时有两个关键的地方,首先高斯混合模型十分灵活,可以拟合任意形状的椭圆;其次这是一种基于概率的算法,每个点可以拥有属于多类的概率,支持混合属性。

    凝聚层次聚类

    层次聚类法主要有自顶向下和自底向上两种方式。其中自底向上的方式,最初将每个点看做是独立的类别,随后通过一步步的凝聚最后形成独立的一大类,并包含所有的数据点。这会形成一个树形结构,并在这一过程中形成聚类。

    1.首先将每一个数据点看成一个类别,通过计算点与点之间的距离将距离近的点归为一个子类,作为下一次聚类的基础;

    2.每一次迭代将两个元素聚类成一个,上述的子类中距离最近的两两又合并为新的子类。最相近的都被合并在一起;

    3.重复步骤二直到所有的类别都合并为一个根节点。基于此我们可以选择我们需要聚类的数目,并根据树来进行选择。

    层次聚类无需事先指定类的数目,并且对于距离的度量不敏感。这种方法最好的应用在于恢复出数据的层次化结构。但其计算复杂度较高达到了O(n^3).

    每个聚类算法都有各自的优缺点,我们需要根据计算需求和应用需求选择合适的算法来进行处理。随着深度学习的出现,更多的神经网络、自编码器被用来提取数据中的高维特征用于分类,是值得注意的研究热点。

    展开全文
  • 机器学习中的分类问题基本思路

    千次阅读 2018-11-19 06:08:43
    我们主要讨论的分类算法是逻辑回归,即logistic regression,它是当今最流行也是应用最为广泛的学习模型。不过,虽然这个模型名字里有”回归”字样,但它确确实实是标准的分类模型,而不是“回归”模型。这一点我们...

    分类

    Classification and Representation

    Classification

    我们来讨论下分类问题。我们主要讨论的分类算法是逻辑回归,即logistic regression,它是当今最流行也是应用最为广泛的学习模型。不过,虽然这个模型名字里有”回归”字样,但它确确实实是标准的分类模型,而不是“回归”模型。这一点我们在后面详细介绍逻辑回归时再仔细讨论。

    现在,让我们开始讨论分类问题吧。

    这里我们有几个分类问题的例子。

    在之前的课程中,我们也说过将电子邮件垃圾分类作为分类问题的例子。

    另一个有意思的分类例子是,在线交易。比如我们有个电商网站。针对一笔具体的交易,我们想要知道它是不是欺诈,也就是说是不是使用了一张被盗的信用卡或者用户密码被盗了。

    最后一个例子也是前面说过的例子,就是诊断肿瘤是良性的还是恶性的。

    在所有的这些例子中,我们试图预测的目标变量y,它的取值,都是二值的。比如,垃圾邮件还是非垃圾邮件,欺诈交易还是正常交易,良性还是恶性。

    在分类领域中,也常常使用0表示负类(negative class),使用1表示正类(positive class)。比如,0表示恶性肿瘤,1表示良性肿瘤。0表示正常邮件,1表示垃圾邮件等。不过怎么定义正类、负类其实都无所谓,它仅仅是一种标识罢了,在具体的应用中可以自由定义,只要不引起不必要的歧义就可以。比如,你说你的应用是判断邮件是否是垃圾邮件,那么最好0表示否,1表示是,否则在解释的时候需要额外地绕一下,很容易造成误解。

    目前,我们先从二分类问题开始研究。然后我们再讨论下多分类,即目标变量y不仅仅是二值的,可能是0,1,2,3等。

    那么,如何开发一个分类算法呢?

    这里有一个样例数据集,其实也是前面我们讨论过的肿瘤是否是良性的。我们注意到,目标变量y取值是要么是0,要么是1,分别代表恶性和良性。所以,在我们现有知识下,我们能够做的就是,套用学过的算法。

    使用线性回归算法来做分类问题通常并不是一个好主意。虽然在我增加这个极端样本之前,线性回归似乎可以很好地工作,但这仅仅是特殊情况的运气。通常情况下,如果真的使用线性回归在分类问题上得到了不错的效果,那么很可能就真的仅仅是走运,但确实不应该在分类问题上使用回归算法。

    另外还有一点就是,线性回归算法产出的y值通常是没什么限制的,可能比1大非常多,也可能比0小非常多,虽然训练样本的标注仅仅是0或者1而已。所以,如果在这种分类问题上,算法输出的是各种天马行空的数字的话,即使对于我们而言可能也会显得很奇怪。

    所以,我们下面将要介绍逻辑回归算法,它能够保证输出介于0~1之间。

    不过我们呼应一下开头说一下,逻辑回归是一个分类算法,而不是回归算法。因为它的名字中含有“回归”这个词,常常会给人造成误解。但它完完全全是一个标准的分类算法,只是因为历史原因被起了个具有歧义的名字罢了。

    Hypothesis Representation

    现在我们开始讨论逻辑回归。

    首先,我们看看当我们遇到一个分类问题时,我们的假设函数应该是什么样子。

    前面我们说了,我们希望我们的分类器的输出值最好介于0到1之间。所以我们希望我们的假设函数能够满足这个条件。

    当我们之前使用线性回归时,我们假设函数的形式是这样。H theta x等于theta转置乘以x。而对于逻辑回归,我们将这个式子稍作修改,再包一层函数,变成g theta转置乘以x。而函数g的形式是这样。

    G(z),z是一个实数。

    这个g函数被称为sigmoid函数,或者logistic函数,而“逻辑回归”这个名字就是来自与logistic函数这个名字。顺便说一下,sigmoid函数和logistic函数基本上是同义词,指的是同一个东西。所以这两个名字可以互相交换着使用,任何一个都可以用于指代我们的g函数。

    我们把h theta带入g,就可以得到假设函数的另一种表示方式。

    Sigmoid函数的式子并不能给我们特殊的感受,所以我们来看看它的图形。它的图形大约是这样[上图所示],这个函数的取值范围是0到1,在z=0时,函数取值为0.5,当z大于0时,函数值越来越接近于1,而当z小于0时,函数值越来越接近0。

    给定这种假设函数,对于训练集合,我们要做的其实就是选择适当的参数theta,然后这个函数会计算出介于0~1的值,通过对这个值做判断,我们可以进行分类预测,比如大于0.5则预测y=1,小于0.5则预测y=0. 我们后面会讨论怎么学习得到参数theta,不过我们现在还是先来理解一下这个模型。

    其实理解这个模型的重要关键在于我们怎么理解我们假设函数的输出值。

    实际上,因为假设函数的输出总在0~1之间,所以我们会把这个输出值认为是对y=1的概率的估计。比如说,我们在做肿瘤诊断的工作,那么对于一个病人我们可以抽象出一些特征来表示这个病人,比如我们只使用一个特征——肿瘤大小,它是x1,而x0则像以往一样仍然是1.

    假设,对于一个特定的病人,我们测量了他的肿瘤大小,然后输入到我们的模型里面,假如得到的输出值是0.7。那么我们将怎么理解这个0.7呢?它的意思是,对于肿瘤大小是这个x1的时候,我们的诊断模型会认为y=1的概率是0.7。换句话说,我们可以告诉病人,不算很坏,肿瘤是良性的概率是70%。

    那么现在,大家应该对逻辑回归的基本形式和输出理解有了大概的认识。接下来,我们将进一步来理解逻辑回归的假设函数。它具体怎么处理分类问题,以及一些简单的例子以帮助大家更加感性地认识逻辑回归。

    决策边界

    Decision Boundary

    前面,我们讨论了逻辑回归的假设函数的形式。现在让我们来看看被称为”决策边界”的概念。这个概念将有助于我们进一步理解逻辑回归的假设函数到底在计算什么。

    现在我们想要更细致地理解,这个假设函数什么时候会预测y=1,什么时候又会预测y=0. 而且更进一步,如果我们有更多特征,又当如何呢?

    具体来说,这个假设函数的输出是在给定输入x以及参数theta的条件下,对y=1的概率估计。所以如果我们想要预测y=1或者y=0,我们可能做的是,当假设函数输出告诉我们y=1的概率超过0.5,那么我们就认为y=1的概率要大于y=0. 相对的,如果假设函数的输出小于0.5,它表达的含义是y=1的概率要小于y=0,因此我们认为y=0. 

    不过我们再进一步,什么时候假设函数的输出会大于0.5呢?如果我们看看sigmoid函数的图形,我们可以注意到,当z大于0的时候,g(z)就大于0.5。所以在图的右半部分,g的取值就必然大于0.5。

    上一页,我们从数值方面细致地介绍了下逻辑回归。这里我们试图更加直观地来理解它。假设我们现在有一个如图所示的样本集合。

    虽然我们暂时还没有介绍怎么计算参数theta。不过我们先假设,我们已经通过某种强大的算法计算好了参数theta。比如theta0等于-3, theta1等于1,theta2等于1。

    那么现在我们来看看,这个假设是怎么预测y=1或者y=0的。

    我们知道,当y=1的概率超过0.5的时候,我们会预测y=1。而当theta转置乘以x大于0的时候,才会使得这个概率大于0.5。对于我们当前的这个式子而言,-3+x1+x2,只有它大于等于0的时候,我们的假设函数的输出才会大于等于0.5。

    X1+x2=3这个对应的是h theta x =0.5,x1+x2>3则h theta x > 0.5, 我们预测y=1. x1+x2<3则h theta x < 0.5,我们预测y=0.

    这里,我们可以注意到,x1+x2=3这个其实表达的是一条直线,我们可以在图上看一下,它应该对应的是一条直线。在这条线右上角的将会被全部预测为y=1,它们中的任何一点的X1+x2都必然大于3。而在这条线左下角的将全部被预测为y=0,因为任意一点的x1+x2都必然小于3.

    很显然,我们的这条直线,将不同的类别区分开了,因此它很特殊,我们将它称为”决策边界”。不过,请大家注意,这个决策边界是假设函数的产物,所以虽然在我们这张图里面它能够完美地将两个类别分隔开,但也仅仅是一个例子罢了。不同的theta决定了不同的假设函数,进而决定了不同的决策边界。不过决策边界仅仅是为了帮助我们理解分类算法的基本工作原理而已,当我们实际使用分类算法时,是不会画出决策边界的。

     

    好,刚才我们说的,解释了决策边界怎么定性地对样本进行分类。但是怎么体现y=1的概率呢?其实我们在高中数学学过点到直线的距离,对吧。那么这个距离是什么呢?它应该是下面这个式子: 点导致线距离的公式。

    现在让我们来看看更加复杂的例子。像往常一样,我们使用空心圆来表示负样本,红色的叉表示正样本,对于这样的样本集,我们如何才能使用逻辑回归来对它们进行分类呢?

    可能有些同学已经想到了之前我们讲过的多项式回归。当时,我们虽然仅有几个特征,但是为了能拥有更强的对数据拟合的能力,我们在已有特征的基础上通过多项式创造出了更多的高阶特征,当我们把这些高阶特征加入到线性模型中都能拥有非线性的拟合能力。

    同样的,对于我们这里的这种线性无法解决的情况,我们也需要引入更加高阶的特征。我们这个例子其实很容易看出来,它的决策边界是一个圆。我们的高中数学知识告诉我们圆的方程是ax^2+by^2=c。因此,我们很容易地就能想到,应该将x1^2和x2^2作为特征。所以,我们的假设函数就是这个式子【上图】。具体地对我们这个例子而言,我们的theta0=1,theta1-0,theta2=0,theta3=1,theta4=1。也就是参数theta向量就是[-1 0 0 1 1]。

    这样,我们的决策边界就是x1^2+x2+2=1这个圆,当x1^2+x2^2>=0的时候,我们预测y=1,否则y=0。

    所以,对于需要非线性决策边界的情况,我们需要引入一些多项式特征。多项式特征引入得越多,我们的决策边界就越复杂,或者说能够区分数据的能力就越强,这一点跟我们在多项式回归中讨论的完全一样。只不过,在多项式回归中,表现出的现象是拟合曲线可以扭曲得更加厉害以更好地拟合数据点。而在分类问题中,这表现为决策边界的扭曲程度。比如,我们下面的这个式子,它除了拥有二次项的特征,甚至有三次项、四次项的特征,这样它对应的决策边界就更加复杂。逻辑上,只要特征足够复杂,决策边界可以将所有的类别都正确分类,就像在多项式回归中可以完美拟合所有的样本点。但这都仅仅是针对训练集而已,对从未见过的样本可能效果就没那么好了,不过后面我们会介绍如何平衡它们。

    这里我们的重点在于向大家介绍,多项式特征也可以被用在逻辑回归中,而且它的本质原理和多项式回归没有差别。

    分类问题的基本铺垫就到这里了,希望大家对分类问题有了比较清楚的认识,包括什么是分类;逻辑回归作为一种分类算法,它想要表达的是什么;以及,分类算法对应出来的决策边界的含义,还有特征对决策边界的影响是怎样的。

     

     

    展开全文
  • 机器学习模型的超参数优化

    千次阅读 2020-05-04 08:26:40
    机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数。超参数与一般模型参数不同,超参数是在训练前提前设置的。举例来说,随机森林算法树的数量就是一个超参数,而神经网络的...
  • 初学者在面对各种机器学习算法时提出的一个典型问题是“我应该使用哪种算法?”问题的答案取决于许多因素,其中包括: 数据的大小,质量和性质;可用的计算时间;任务的紧迫性;你想要对数据做什么。
  • 机器学习中参数估计方法

    千次阅读 2015-01-10 19:46:14
    天上的机器学习课上,老师讲到了参数估计的三方法:ML,MAP和Bayesian estimation。课后,又查了一些相关资料,以及老师推荐的LDA方面的论文《Parameter estimation for text analysis》。本文主要介绍文本...
  • 机器学习中的random_state参数

    千次阅读 多人点赞 2021-01-30 16:15:12
    原因:为什么需要用到这样一个参数random_state(随机状态)? 在此先简单罗列三情况: 1、在构建模型时: forest = RandomForestClassifier(n_estimators=100, random_state=0) forest.fit(X_train, y_train) 2...
  • 机器学习中常见的几种最优化方法

    千次阅读 2017-12-05 20:41:49
    随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作遇到的大多问题都可以建模成一最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化...
  • 机器学习模型选择:调参参数选择

    万次阅读 2016-10-23 16:49:22
    http://blog.csdn.net/pipisorry/article/details/52902797调参经验好的实验环境是成功的一半由于深度学习实验超参众多,代码风格良好的实验环境,可以让你的人工或者自动调参更加省力,有以下点可能需要注意:将...
  • 机器学习几种常见模型的介绍

    千次阅读 2015-08-05 16:03:47
    这里我主要介绍以下几种模型: k近邻法 朴素贝叶斯法 决策树 逻辑斯蒂回归 支持向量机 adaBoost方法 K近邻法原理输入:实例的特征向量 输出:实例的类别 算法描述: (1)在训练集中找出与实例最近邻的k个点,涵盖...
  • 机器学习中常见的几种优化方法

    万次阅读 2016-06-08 15:11:36
    机器学习中常见的几种优化方法 声明:本文为转载,原文作者为:Poll的笔记,原文链接为:http://www.cnblogs.com/maybe2030/p/4751804.html#rd,尊重原创 阅读目录 1. 梯度下降法(Gradient ...
  • 线性和逻辑斯蒂(Logistic)回归通常是是机器学习学习者的入门算法,因为它们易于使用和可解释性。然而,尽管他们简单但也有一些缺点,在很多情况下它们并不是最佳选择。实际上存在很多回归模型,每都有自己的优...
  • 如何用机器学习对文本分类

    千次阅读 2017-05-30 20:21:58
    需求使用监督学习对历史数据训练生成模型,用于预测文本的类别。样本清洗主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等。比如我认为长度小于少于13的数据是无效的遂将之删掉。def ...
  • 在求解机器学习参数的优化算法,使用较多的是基于梯度下降的优化算法(Gradient Descent, GD)。  梯度下降法有很多优点,其中,在梯度下降法的求解过程,只需求解损失函数的一阶导数,计算的代价比较小,这...
  • 机器学习中,通常需要不断的通过优化器,优化以减小损失。在优化过程,最经常用到的就是学习速率,也就是在通过梯度决定模型训练走向的时候所使用的一个总要参数。 在经过多次优化之后,会出现疑惑度不会降低,...
  • 机器学习几种划分

    千次阅读 2017-11-24 16:58:20
    线性分类器:模型是参数的线性函数,分类平面是(超)平面; 非线性分类器:模型界面可以是曲面或者超平面的组合。 典型的线性分类器有感知机,LDA,逻辑斯特回归,SVM(线性核); 典型的非线性分类器有...
  • 如果你像我一样,你可能会在你的回归问题使用R平方(R平方)、均方根误差(RMSE)和均方根误差(MAE)评估指标,而不用考虑太多。???? 尽管它们都是通用的度量标准,但在什么时候使用一个并不明显。 R方(R²) R²代表...
  • 学习方式 监督式学习: 非监督式学习: 半监督式学习: 强化学习: 算法类似性 回归算法: 基于实例的算法 正则化方法 决策树学习 贝叶斯方法 基于核的算法 聚类算法 关联规则学习 人工神经网络 ...
  • 机器学习的分类与主要算法对比

    万次阅读 多人点赞 2017-05-31 23:22:21
    机器学习的分类与主要算法对比重要引用:Andrew Ng Courera Machine Learning;从机器学习谈起;关于机器学习的讨论;机器学习常见算法分类汇总;LeNet Homepage;pluskid svm 首先让我们瞻仰一下当今机器学习领域...
  • 机器学习在药物发现的所有阶段都有应用:靶标验证、生物标志物的鉴定和临床试验数字病理学数据的分析。应用程序的范围和方法不同,有些方法可以产生准确的预测和解释。应用机器学习的主要挑战在于ML产生的结果缺乏...
  • 如果你之前没有开发过分布式的项目,光看上面这段介绍,容易产生一感觉,觉得分布式机器学习也没什么东西,不过是将一台电脑的工作分给多台电脑去干,但实际远比想象要复杂得多,难点在于如何进行模型训练。...
  • 机器学习中常见的几种损失函数

    千次阅读 2018-05-10 13:38:10
    转载自:https://www.cnblogs.com/hejunlin1992/p/8158933.html 通常机器学习每一个算法都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。在分类或者回归问题,通常使用损失函数(代价函数...
  • 机器学习1-机器学习中建模过程

    万次阅读 多人点赞 2018-05-30 09:00:49
    机器学习中建模过程 数据处理 特征工程 模型选择 寻找最佳超参数 模型分析与模型融合 1.数据处理 1.1机器学习中使用的数据的原则 属性的值和属性的名称应该具有实际的意义。 去除属性相关度高的属性 ...
  • 量化机器学习简述

    千次阅读 2019-06-24 17:54:20
    人工智能,特别是机器学习,在最近年大出风头,无人驾驶汽车,阿尔法狗战胜人类最强棋手,演唱会人脸识别抓捕逃犯,手机多国语言在线翻译,这一切一切无不给我们带来深深的震撼,可以说人工智能将在不久的未来引来...
  • 目前, 机器学习在计算机视觉、语音识别、自然语言处理等复杂任务取得了公认的成果,已经被广泛应用于自动驾驶、人脸识别等领域。 随着机器学习技术遍地开花,逐渐深入人们的生活,其也被应用在许多例如安防、金融...
  • 浅谈机器学习中的非线性

    千次阅读 多人点赞 2018-06-18 20:22:53
    关于机器学习中的线性和非线性,有两个聚焦点,一个是问题,一个是模型。 问题的线性非线性,指的是样本点的分布,是否能在输入空间 Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学...
  • 模型并行( **model parallelism** ):分布式系统的不同机器(GPU/CPU等)负责网络模型的不同部分 —— 例如,神经网络模型的不同网络层被分配到不同的机器,或者同一层内部的不同参数被分配到不同机器;...
  • 机器学习中文资源合集

    千次阅读 2017-09-11 23:12:37
    机器学习日益广为人知,越来越多的计算机科学家和工程师投身其中。不幸的是,理论、算法、应用、论文、书籍、视频等信息如此之多,很容易让初学者迷失其中,不清楚如何才能提升技能。本文作者依据自身经验给出了一套...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 224,505
精华内容 89,802
关键字:

机器学习中参数的学习分哪几种