SparkML机器学习之聚类(K

  • 时间:
  • 浏览:4

输出结果:

输出结果为:

既然要划分为k个簇,因此我算法首先随机的选则了k个对象,每个对象初始的代表了一一俩个 簇的中心。一种生活的对象就去计算它们与这k个中心的距离(这里距离一种生活一种生活同类 度),离哪个最近就把它们丢给哪个簇。第一轮聚类现在刚结速后,重新计算每个簇的平均值,将N中删改元素按照新的中心重新聚类。一种生活过程不断的反复,使得每一一俩个 改进但是的划分都比但是效果好,直到准则函数收敛(聚类结果不再变化)。

输出结果为:

不可不可以发现,使用kmeans和BisectingKMeans,聚类结果一般是不一样的。

主一种生活一种生活为了改进k-means算法随机选则初始中心的随机性造成聚类结果不选则性的大疑问,而Bisecting k-means算法受随机选则初始中心的影响比较小。

先将所有点硬作为一一俩个 簇,因此我将该簇一分为二。但是选则其中一一俩个 簇【具有最大SSE值的一一俩个 簇】继续进行划分,二分一种生活簇但是得到的一一俩个 子簇,选则一一俩个 子簇的总SSE最小的划分法律方式 ,曾经不不可不可以保证每次二分得到的一一俩个 簇是比较优的(也肯能是最优的)。

SSE(Sum of Squared Error),也一种生活一种生活误差平方和,它计算的是拟合数据和原始数据对应点的误差的平方和,它是用来度量聚类效果的一一俩个 指标。SSE越接近于0,说明模型选则和拟合更好,数据预测也越成功。

它和K-Means的区别是,K-Means是算出每个数据点所属的簇,而GMM是计算出那此数据点分配到各个类别的概率

GMM算法步骤如下:

1.猜测有 K 个类别、即有K个高斯分布。

2.对每一一俩个 高斯分布赋均值 μ 和方差 Σ 。

3.对每一一俩个 样本,计算其在各个高斯分布下的概率。

附:lda_data.txt

输出结果为:

附:kmeans_data.txt

聚类一种生活一种生活对几滴 未知标注(无监督)的数据集,按照数据之间的同类 度,将N个对象的数据集划分为K个划分(K个簇),使类别内的数据同类 度较大,而类别间的数据同类 较小。比如用户画像一种生活一种生活一种生活很常见的聚类算法的应用场景,基于用户行为形态学 肯能元数据将用户分成不同的类。

举个例子,10个男生帮我分为一一俩个 类,我先随机选则一一俩个 男生a b,没法 对于c,我分别计算他与a b 的同类 度,假设和a最同类 ,没法 我丢到a一种生活类里,经过第一轮,得到(1类){a,c,e,f,i}(2类) {b,d,g,h,j},现在我重新计算1类和2类的均值,假设为1.5和5.1,没法 对这10个男生再判断它们与1.5 5.1的距离,和哪个相近就去哪边。第二轮迭代使得聚类更加精确。反复曾经,直到某一次的迭代我发现不再有变化,没法 就ok了。

肯能一种生活过高 ,一种生活一种生活有了Bisecting k-means(二分K均值)

因此我K-means一种生活缺点,其一是受初始值影响较大。下面这张图很好的解释了一种生活缺点,人眼一看就能看出来,肯能是分为一一俩个 聚类,应该没法 分为左边那样的,肯能用K-means结果会是右边曾经,明显不对,一种生活一种生活说受初始值的影响会比较大。

4.每一一俩个 样本对某高斯分布的贡献不可不可以由其下的概率表示。并把该样本对该高斯分布的贡献作为权重来计算加权的均值和方差以替代其曾经的均值和方差。

5.重复3~4直到每一一俩个 高斯分布的均值和方差收敛。

上边讲的有的是硬聚类,硬聚类即一定是属于某一一俩个 类,比如我有一一俩个 簇A和B,没法 所有的对象要不属于A要不就属于B,不肯能会有第一种生活肯能。而软聚类,使用概率的法律方式 ,一一俩个 对象不可不可以是400%属于A,40% 属于B,即不删改属于同一一俩个 分布,一种生活一种生活以不同的概率分属于不同的分布GMM(高斯混合模型)一种生活一种生活一种生活软聚类。

也被称为k-均值,是一种生活最广泛使用的聚类算法,也是一种生活聚类算法的基础。来看下它的原理:

LDA是一一俩个 三层贝叶斯概率模型,包含词、主题和文档三层形态学 。

LDA不可不可以用来生成一篇文档,生成时,每个词有的是通过“以一定概率选则了某个主题,并从一种生活主题中以一定概率选则某个词语”,曾经反复进行,就不可不可以生成一篇文档;反过来,LDA又是一种生活非监督机器学习技术,不可不可以识别出大规模文档集或语料库中的主题。

SparkML中主要聚类有以下几种: