机器学习入门|聚类(一)

简介: 聚类算法是在没有给定标签和样本值的前提下进行数据划分,是典型的无监督学习(unsupervised learning)算法,简单的介绍了聚类,记录下学习的笔记!

聚类算法是在没有给定标签和样本值的前提下进行数据划分,是典型的无监督学习(unsupervised learning)算法。聚类试图将数据集中的样本划分成若干个不相交的子集,称为“簇”,或“类”。一个好的样本划分肯定是簇内的样本相似度高,而簇与簇之间的样本相似度低。

基于原型的聚类

簇是对象的集合,其中每个对象到定义该簇的原型的距离比其他簇的原型距离更近,例如在下面的k-means算法中,原型就是簇的质心。

1.k-means算法

k-means算法把数据集划分为k个簇,划分依据是簇的每一个样本点到质心(均值)的最小化平方误差和,即欧氏距离。欧氏距离越小,则代表这一个簇的紧密程度越大,簇内的样本相似度越高。

给定样本集$D=\{x_{1},x_{2},...,x_{m}\}$,k-means算法得到的簇划分$C=\{C_{1},C_{2},...,C_{k}\}$最小化平方误差

$$ E=\sum_{i=1}^{k}\sum_{x\in C_{i}}||x-\mu_{i}||_{2}^{2} $$

其中$\mu_{i}=\frac{1}{|C_{i}|}\sum_{x\in C_{i}}x$ 为簇$C_{i}$的均值向量
但直接求解欧氏距离最小值并不容易,因此采用迭代求解的方法。

1.首先随机选取k个质心,遍历每一个样本点,把样本点归入距它最近的质心所代表的簇中。
2.重新计算质心位置,即当前簇中的样本点的均值。
3.重复以上两步,直到算法收敛(更新不再产生划分变动),或者达到停止条件。

k值需要预先指定,而很多情况下k值难以确定,这是k-means的一个缺陷。

k-means的迭代过程本质上是坐标上升的过程。k-means是必定会收敛的,但是和梯度下降一样,只能保证收敛到局部最优,而不能保证收敛到到全局最优。因此初始质心的选择对算法的结果影响十分巨大。

坐标上升法每次通过更新函数中的一维,把其他维的参数看成常量,迭代直到当前维度收敛,再通过多次的迭代计算其他维度以达到优化函数的目的。

因为k-means算法是求均方误差,因此对于一些偏差较大的噪声点非常敏感,因此在k-means基础上可以做适当优化。

K-medoids算法就是一种优化算法,它和k-means唯一不同之处是:k-medoids算法用类中最靠近中心的一个样本点来代表该聚类,而k-means算法用质心来代表聚类。可以减少噪声点带来的影响。

二分K均值法也是一种优化算法,二分K均值法初始时将所有点看成一个簇,在簇的数量小于K的时候进行迭代,算法的核心是选择一个簇一分为二,这里一分为二的方法还是K均值法,只不过K变成了2。二分K均值依次计算每个簇一分为二后新的总平方误差,选择划分后总体平方误差最小的簇进行划分。这样就尽可能避免了k-means落入局部最优的情况。

2.学习向量量化(Learning Vector Quantization)

学习向量量化(LVQ)也是试图找到一组原型来刻画聚类结构,但与k-means不同的是,LVQ的样本带有类别标记。

给定样本集$D=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})\}$,每个样本$x_{j}$是一个n维向量,$y_{j}$是类别标记,LVQ的目标是学得一组n维原型量$\{p_{1},p_{2},...,p_{q}\}$,每一个原型向量代表一个簇的原型。原型向量的簇标记为$t_{i}\in \gamma$
同样,LVQ也是采用迭代求解的方法。

1.随机选取一个有标记的样本点,找出距它最近的原型向量,根据两者标记是否一致进行更新
2.若样本$x_{j}$与原型向量$p_{i}$标记相同,则令$p_{i}$向$x_{j}$靠拢,反之则远离$x_{j}$
相同:

$$ {p}'=p_{i}+\eta(x_{j}-p_{i}) $$

不同:

$$ {p}'=p_{i}-\eta(x_{j}-p_{i}) $$

其中$\eta\in (0,1)$是学习率
3.重复直到满足停止条件

LVQ和k-means一样都可以在簇与簇之间画出分界线,称为簇划分。

3.高斯混合聚类

高斯混合聚类采用概率模型来表达聚类原型。
对于一个服从高斯分布(n维正态分布)的向量$x$,则

$$ p(x)=\frac{1}{(2\pi)^{\frac{2}{n}}|\Sigma|^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu)} $$

其中$\mu$是n维均值向量,$\Sigma$是协方差矩阵,次分布的完全由这两个参数确定。因此,记概率密度函数为$p(x|\mu,\Sigma)$
则高斯混合分布:

$$ p_{M}(x)=\sum_{i=1}^{k}\alpha_{i}p(x|\mu_{i},\Sigma_{i}) $$

\
其中$\sum_{i=1}^{k}\alpha_{i}=1$
若训练集由高斯混合分布生成,对于样本$z_{j}\in \{1,2,...,k\}$,样本属于某一个高斯分布的概率为$p(z_{j}=i)=\alpha_{i}$,为先验概率。根据贝叶斯定理,其后验分布为:

$$ p_{M}(z_{j}=i|x_{j})=\frac{p(z_{j}=i)p_{M}(x_{j}|z_{j}=i)}{p_{M}(x_{j})} $$

$$ =\frac{\alpha_{i}p(x_{j}|\mu_{i},\Sigma_{i})}{\sum_{l=1}^{k}\alpha_{l}p(x_{j}|\mu_{l},\Sigma_{l})}=\gamma_{ji}(i=1,2,...,k) $$

这就把样本来自每个高斯分布的概率(某一个高斯分布被选中的概率)转化成了由每个高斯分布生成的概率
用似然函数求解最大似然估计:

$$ lnL(D)=ln\left(\prod p_{M}(x_{j})\right)=\sum_{j=1}{k}ln\left(\sum_{i=1}^{k}\alpha_{i}p(x_{j}|\mu_{i},\Sigma_{i})\right) $$

求解得:

$$ \mu_{i}=\frac{\sum_{j=1}^{m}\gamma_{ji}x_{j}}{\sum_{j=1}^{m}\gamma_{ji}} $$

$$ \Sigma_{i}=\frac{\sum_{j=1}^{m}\gamma_{ji}(x_{j}-\mu_{i})(x_{j}-\mu_{i})^{T}}{\sum_{j=1}^{m}\gamma_{ji}} $$

可以求得$\alpha_{i}=\frac{1}{m}\sum_{i=1}^{m}\gamma_{ji}$
同样采用迭代法:

1.假设$\mu,\Sigma$已知,求出$\gamma$的值
2.更新$\mu,\Sigma$参数
3.重复1,2,直到算法收敛或者停止

参考-周志华《机器学习》

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 供应链
掌握机器学习:从理论到实践PHP:从入门到精通的旅程
【8月更文挑战第20天】在探索人工智能的无限可能时,机器学习作为核心驱动力,引领着技术革新和产业变革。本文深入浅出地介绍了机器学习的基本概念、核心算法及其在实际中的应用,旨在为初学者提供一个清晰的学习路径和对这一激动人心领域的全面理解。通过探讨机器学习如何影响我们的生活和工作,本文不仅阐述了理论知识,还分享了实践案例,帮助读者把握机器学习的精髓,激发对未来技术发展的想象与创造。
167 65
|
23天前
|
机器学习/深度学习 人工智能 算法
探索AI的奥秘:机器学习入门之旅
【8月更文挑战第43天】本文将带领读者开启一段奇妙的学习之旅,探索人工智能背后的神秘世界。我们将通过简单易懂的语言和生动的例子,了解机器学习的基本概念、算法和应用。无论你是初学者还是有一定基础的学习者,都能从中获得启发和收获。让我们一起踏上这段激动人心的学习之旅吧!
|
1月前
|
机器学习/深度学习 算法 数据挖掘
|
2月前
|
机器学习/深度学习 人工智能 算法
AI基础科普:机器学习入门与实践
本文全面介绍了机器学习及其在信用评分预测中的应用。首先概览了机器学习作为人工智能核心领域的重要性及其实现数字化转型的作用。接着定义了机器学习,并区分了监督、无监督和强化学习等主要类型。随后,通过一个具体的场景——利用Python与scikit-learn库构建逻辑回归模型来预测客户的信用等级,详细阐述了从数据准备、模型训练到评估的全过程。此外,还介绍了如何借助阿里云机器学习平台PAI进行云上的模型训练和部署。最后,通过总结逻辑回归算法和其在金融领域的应用,鼓励读者深入学习并实践AI技术,以适应快速发展的科技趋势。
89 2
AI基础科普:机器学习入门与实践
|
26天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络入门到精通:Python带你搭建AI思维,解锁机器学习的无限可能
【9月更文挑战第10天】神经网络是开启人工智能大门的钥匙,不仅是一种技术,更是模仿人脑思考的奇迹。本文从基础概念入手,通过Python和TensorFlow搭建手写数字识别的神经网络,逐步解析数据加载、模型定义、训练及评估的全过程。随着学习深入,我们将探索深度神经网络、卷积神经网络等高级话题,并掌握优化模型性能的方法。通过不断实践,你将能构建自己的AI系统,解锁机器学习的无限潜能。
21 0
|
2月前
|
机器学习/深度学习 开发者 Python
Python 与 R 在机器学习入门中的学习曲线差异
【8月更文第6天】在机器学习领域,Python 和 R 是两种非常流行的编程语言。Python 以其简洁的语法和广泛的社区支持著称,而 R 则以其强大的统计功能和数据分析能力受到青睐。本文将探讨这两种语言在机器学习入门阶段的学习曲线差异,并通过构建一个简单的线性回归模型来比较它们的体验。
51 7
|
2月前
|
机器学习/深度学习 人工智能 算法
探索AI的奥秘:机器学习入门之旅
【8月更文挑战第31天】本文将带领读者开启一段奇妙的学习之旅,探索人工智能背后的神秘世界。我们将通过简单易懂的语言和生动的例子,了解机器学习的基本概念、算法和应用。无论你是初学者还是有一定基础的学习者,都能从中获得启发和收获。让我们一起踏上这段激动人心的学习之旅吧!
|
2月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
31 0
|
2月前
|
机器学习/深度学习 自然语言处理 TensorFlow
TensorFlow 入门超简单!从零开始构建你的第一个神经网络,开启机器学习精彩之旅!
【8月更文挑战第31天】本文介绍了流行开源机器学习框架 TensorFlow,涵盖其安装与首个神经网络构建步骤。TensorFlow 由 Google 开发,适用于计算机视觉及自然语言处理等领域。掌握它不仅提升就业机会,还加深对机器学习的理解。通过安装 Python 并使用 pip 命令安装 TensorFlow,即可按照示例构建、训练并评估简单的线性回归模型,快速开启机器学习之旅。
30 0
|
2月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
55 2
下一篇
无影云桌面