spark2.0机器学习系列之8:聚类分析(k-means,bisectingk-means,lda,高斯混合模型)

千寻千梦 千寻千梦     2022-08-06     634

关键词:

      在写这篇文章之前,先说一些题外话。
      许多机器学习算法(如后面将要提到的LDA)涉及的数学知识太多,前前后后一大堆,理解起来不是那么容易。
      面对复杂的机器学习模型,尤其是涉及大量数学知识的模型,我们往往要花费大量的时间和精力去推导数学算法(公式),如果过分沉湎于此会忽略了很多背后也许更重要的东西,正所谓只见树木,不见森林,而这是缺乏远见,是迷茫的。
      我们需要深入理解模型背后的逻辑和所蕴含的或简或繁的思想。某些思想甚至可能是很美的思想,很伟大的思想。这些理解,使得面对复杂的问题时候,面对陌生问题时,会左右我们的选择。我们会首先想起谁,谁是我们工具箱里最得心应手的工具,就像自己的孩子一样亲切。而有些方法我们注定不喜欢,也用不太懂。毕竟我们不是每个人都会去写复杂的机器学习算法code,尤其是复杂的分布式code,但也不意味着我们不需要关注模型的数学原理,因为没这些数学原理的支撑,也许你永远理解不了这个模型。但是仅仅掌握公式的推导甚至从头到尾能写出完整代码,也还是远远不够的。比如说我们都知道为了控制over-fitting,需要正则化,为什么在看似很精确的公式里面硬生生的多加入一个正则项,就能够达到控制over-fitting的目的呢?又如何判断所选择的正则化参数是合理的?不大也不小,刚好合适。公式我们都能完整的推导吧,但也许有些事我们想的还是不那么明白,用的时候自然也就会有一些疑虑。
      所以呢,要做到深入浅出真的很难,这也是我们学习ML需要努力的方向,理解这些ML模型背后的逻辑,所蕴含的美,所表达的的思想,甚至是哲理,也许能助你我成长到一个新的高度。

       好了,言归正传。在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:
     (1)K-means
     (2)Latent Dirichlet allocation (LDA)
     (3)Bisecting k-means(二分k均值算法)
     (4)Gaussian Mixture Model (GMM)。
       基于RDD API的MLLib中,共有六种聚类方法:
     (1)K-means
     (2)Gaussian mixture
     (3)Power iteration clustering (PIC)
     (4)Latent Dirichlet allocation (LDA)**
     (5)Bisecting k-means
     (6)Streaming k-means
       多了Power iteration clustering (PIC)和Streaming k-means两种。
      本文将介绍LDA主题建模,其它方法在我的整个系列中都会有介绍。

什么是LDA主题建模?

       隐含狄利克雷分配(LDA,Latent Dirichlet Allocation)是一种主题模型(Topic Model,即从所收集的文档中推测主题)。 甚至可以说LDA模型现在已经成为了主题建模中的一个标准,是实践中最成功的主题模型之一。那么何谓“主题”呢?,就是诸如一篇文章、一段话、一个句子所表达的中心思想。不过从统计模型的角度来说, 我们是用一个特定的词频分布来刻画主题的,并认为一篇文章、一段话、一个句子是从一个概率模型中生成的。也就是说 在主题模型中,主题表现为一系列相关的单词,是这些单词的条件概率。形象来说,主题就是一个桶,里面装了出现概率较高的单词(参见下面的图),这些单词与这个主题有很强的相关性。

       LDA可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。
       LDA可以被认为是如下的一个聚类过程:
       (1)各个主题(Topics)对应于各类的“质心”,每一篇文档被视为数据集中的一个样本。
       (2)主题和文档都被认为存在一个向量空间中,这个向量空间中的每个特征向量都是词频(词袋模型)
       (3)与采用传统聚类方法中采用距离公式来衡量不同的是,LDA使用一个基于统计模型的方程,而这个统计模型揭示出这些文档都是怎么产生的。

       Latent Dirichlet allocation (LDA) is a topic model which infers topics from a collection of text documents. LDA can be thought of as a clustering algorithm as follows:
       (1)Topics correspond to cluster centers, and documents correspond to examples (rows) in a dataset.
       (2)Topics and documents both exist in a feature space, where feature vectors are vectors of word counts (bag of words).
       (3)Rather than estimating a clustering using a traditional distance, LDA uses a function based on a statistical model of how text documents are generated.

       下面的几段文字来源于:http://www.tuicool.com/articles/reaIra6

       它基于一个常识性假设:文档集合中的所有文本均共享一定数量的隐含主题。基于该假设,它将整个文档集特征化为隐含主题的集合,而每篇文本被表示为这些隐含主题的特定比例的混合。

      LDA的这三位作者在原始论文中给了一个简单的例子。比如给定这几个主题:Arts、Budgets、Children、Education,在这几个主题下,可以构造生成跟主题相关的词语,如下图所示:
这里写图片描述

      然后可以根据这些词语生成如下图所示的一篇文章(其中不同颜色的词语分别对应上图中不同主题下的词)
这里写图片描述

      表面上理解LDA比较简单,无非就是:当看到一篇文章后,我们往往喜欢推测这篇文章是如何生成的,我们可能会认为某个作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。
      前面说了这么多,在推导模型前,总结几条核心思想:
      (1)隐含主题,形象的说就是一个桶,里面装了出现概率较高的单词,从聚类的角度来说,各个主题(Topics)对应于各类的“质心”,主题和文档都被认为存在于同一个词频向量空间中。(2)在文档集合中的所有文本均共享一定数量的隐含主题的假设下,我们将寻找一个基于统计模型的方程。
      LDA的核心公式如下:

p(w|d)=i=1Kp(w|zk)p(zk|d)

spark2.0机器学习系列之7:mlpc(多层神经网络)

Spark2.0MLPC(多层神经网络分类器)算法概述MultilayerPerceptronClassifier(MLPC)这是一个基于前馈神经网络的分类器,它是一种在输入层与输出层之间含有一层或多层隐含结点的具有正向传播机制的神经网络模型。 中间的节点使... 查看详情

spark2.0机器学习系列之2:基于pipeline交叉验证parammap的模型选择和超参数调优

Spark中的CrossValidationSpark中采用是k折交叉验证(k-foldcrossvalidation)。举个例子,例如10折交叉验证(10-foldcrossvalidation),将数据集分成10份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计。10折交叉检验最... 查看详情

机器学习:神经网络之表达

...*****注:本系列博客是博主学习Stanford大学AndrewNg教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结非常easy遗忘。依据课程加上自己对不明确问题的补充遂有此系列博客。本系列博客包含线性回归、逻辑回归、神... 查看详情

机器学习机器学习入门08-聚类与聚类算法k-means(代码片段)

时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了。短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数... 查看详情

机器学习课程-第8周-聚类(clustering)

1.聚类(Clustering)1.1无监督学习:简介在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签,我们需要据此拟合一个假设函数。与... 查看详情

机器学习资料

机器学习资料-----###1.聚类资料及代码:Python实现聚类算法(三)之总结:https://www.colabug.com/72166.htmlscikit-learn学习之K-means聚类算法与MiniBatchK-Means算法:https://blog.csdn.net/gamer_gyt/article/details/51244850###2.斯坦福大学公开课:机器学习课程htt... 查看详情

spark机器学习系列之13:支持向量机svm

Spark优缺点分析以下翻译自Scikit。 Theadvantagesofsupportvectormachinesare: (1)Effectiveinhighdimensionalspaces.在高维空间表现良好。 (2)Stilleffectiveincaseswherenumberofdimensionsisgreaterthanthenumberofsam 查看详情

吴恩达-coursera-机器学习-week8

十三、聚类(Clustering)13.1无监督学习:简介13.2K-均值算法13.3优化目标13.4随机初始化13.5选择聚类数十四、降维(DimensionalityReduction)14.1动机一:数据压缩14.2动机二:数据可视化14.3主成分分析问题14.4主成分分析算法14.5选择主成分的... 查看详情

机器学习11—原型聚类之学习向量量化(lvq)(代码片段)

...向量量化(LVQ)实现三分类总结前言周志华的《机器学习》介绍学习向量量化(LVQ)中可以知道,LVQ也是基于原型的聚类算法,与K-Means不同的是,LVQ使用样本真实类 查看详情

机器学习算法聚类分析-2聚类算法的分类,层次聚类算法的选择

..._CSDN博客-数据分析师领域博主目前进度:第四部分【机器学习算法】聚类算法的分类-Exclusivevs.Non-Exclusive(Overlapping)的 查看详情

阿里云机器学习平台pai之理论基础

...QuickBI,今天进入阿里云大数据的最后部分的学习——机器学习平台PAI,对往期内容感兴趣的小伙伴可以参考如下内容👇:hadoop专题:hadoop系列文章.spark专题:spark系列文章.阿里云 查看详情

阿里云机器学习平台pai之理论基础

...QuickBI,今天进入阿里云大数据的最后部分的学习——机器学习平台PAI,对往期内容感兴趣的小伙伴可以参考如下内容👇:hadoop专题:hadoop系列文章.spark专题:spark系列文章.阿里云 查看详情

机器学习聚类之后可以用于分类么

参考技术A做完聚类分析之后,你想用得到的结果进行分类,是这个意思吗?聚类分析可以用来分类,但是结果很不精确。首先,要确定你数据里面到底有多少个类、数据分布是否有聚类的结构,其次选择合适的聚类算法,算法... 查看详情

机器学习算法聚类分析-1聚类是什么,我们如何确定类别间的相似性或者相异性

..._CSDN博客-数据分析师领域博主目前进度:第四部分【机器学习算法】聚类分析聚类的概念聚类是一个非监督式的学习,只要有输入变量就可以,目标的获得就是通过输入变量把 查看详情

机器学习特征工程之连续变量离散化:聚类法进行分箱

 机器学习特征工程之连续变量离散化:聚类法进行分箱离散化,就是把无限空间中有限的个体映射到有限的空间中;根据用户的听音乐的数据来预测哪些歌曲更受欢迎。假设大部分人听歌都很平均,会不停的听新的歌曲,但... 查看详情

如何搞懂机器学习中的线性回归模型?机器学习系列之线性回归基础篇

...原理都是由多元统计分析发展而来,但在数据挖掘和机器学习领域中,也是不可多得的行之有效的算法模型。一方面,线性回归蕴藏的机器学习思想非常值得借鉴和学习,并且随着时间发展,在线性回归的基... 查看详情

吴恩达《机器学习》章节1绪论:初识机器学习

1、欢迎参加《机器学习》 2、什么是机器学习?机器学习(MachineLearning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获... 查看详情

常见机器学习算法原理+实践系列5(knn分类+keans聚类)

一,KNN分类K-NearestNeighborK临近算法是一种有监督的分类算法,工作原理很简单,存在一个样本集合,也成为训练样本,样本中包含标签,将新数据的每个特征与样本集合的数据对应特征进行比较,然后提取样本最相似的分类标签... 查看详情