简介
监督学习是:把带有标签的样本集求得决策边界,把样本划分成几种,通过假设函数去拟合样本集。
无监督学习是:它的样本集没有标签,寻找样本集中相似的她特征,把样本集划分成几个簇。
K-means算法又叫做K均值算法,它是无监督学习的一种。
它是个迭代算法,算法内部有两个循环。
1.簇分配。选取几个簇中心,遍历整个样本集,每个样本距离那个簇中心近,就被划分到这个簇。
2.中心移动。在每个簇内部,计算整个样本的平均值,得到一个新的簇中心,取代旧的簇中心。
算法流程
如下图,以下为待分类的无标签样本集,并选择两个样本,两个簇中心。
步骤1:然后计算每个样本到簇中心的距离,距离那个近就划分到那个簇。
步骤2:然后计算每个簇内部所有样本的平均值,得到新的簇中心。
重复步骤1。
重复步骤2。
。
。
。
。 。 。
。。。
优化目标
监督学习都有一个优化目标,或者最小化代价函数,K-means算法同样也有。
符号规定:
一共有 m m m个样本,分成 K K K个簇。 i { ∈ 1 , 2 , . . m } i\{\in{1,2,..m}\} i{∈1,2,..m}, k ∈ { 1 , 2... K } k\in\{1,2...K\} k∈{1,2...K}, x ( i ) x^{(i)} x(i)表示每个样本的位置,
c ( i ) c^{(i)} c(i)表示每个样本被分到第几个簇, u k u_{k} uk表示每个簇中心的位置, u c ( i ) u_{c^{(i)}} uc(i)表示每个样本所属簇的簇中心的位置。
代价函数,又叫失真函数:
当代价函数的值小于我们规定的一个阈值,或者簇中心不在变化,迭代即可停止。
初始化簇中心的选取
不同的初始簇中心的选取可能导致不同的结果,如下图:
为了得到比较好的分类结果,可以多试几次,比如随机初始化100次,得到不同的分类结果,最后比较哪一种的失真函数最小,就用哪一个。
簇的数量选取
如何选择簇的数量呢?
一种是绘制图形来得到结果。
绘制簇的数量和代价值的图像,由下图可知,曲线在簇的数量为3时,出现了拐点,一般这个拐点所在的簇的数量就是比较合适的值。
二是结合具体情况。
你需要几个类别就分几类。