一、聚类
(1)无监督学习
聚类是我们第一个介绍的无监督学习算法,没有给计算机提供标签,我们拿到的数据是没有标签的。之前我们的正负样本都是根据颜色的 不同区分,或者多个类的时候,我们的样本的样式是不一样的,下图是无监督学习的样本:
很显然,这些数据都是不存在标签y的。在非监督学习中,我们需要乙烯类的无标签的训练数据,输入到一个算法中,然后我们告诉我们这个算法找找这个数据的内在结构,比如说上图吧,分成两个分开的点集(称为簇)。
聚类算法用于下面的情况:
比如说市场分割,针对不同类型的客户分别推销不同的销售产品或者分别提供更合适的服务;或者是用于社交网络;或者适用于计算机集群组织,或者更好的管理数据中心。如果你知道在这个数据中心里面,那些计算机经常协同工作,那么你可以重新的分配资源,重新布局网络。
(2)k-均值-最普及的聚类算法
算法接受一个未标记的数据集,然后将数据聚类成不同的组。k-均值是一个迭代算法,假设我们想要将数据聚类成n个组,其方法为:
step1:选择k个随机的点,称为聚类中心(cluster centroids);
step2:对于数据集的每一个数据,按照距离k个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类;
step3:计算每一组的平均值,将该组地中心点移动到平均值的位置;
重复上面的三个操作,知道中心点不变了!!
迭代1次:
迭代3次:
迭代10次:
用
来表示聚类中心,用
来存储与第i个实例数据最近的聚类中心的索引,下面是k-均值算法的伪代码:
第一步,第一个for循环,对于每一个样例i,计算其应该属于的类。第二个for循环是聚类中心的移动,即对于每一个类k,重新计算该类的质心。
(3)优化目标
k-均值的最小化问题,最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此k-均值的代价函数(畸变函数distortion function):
,其中