美文网首页互联网科技每天写1000字程序员
机器学习笔记031 | 无监督学习算法——K均值(K-means

机器学习笔记031 | 无监督学习算法——K均值(K-means

作者: 止一量化养家 | 来源:发表于2017-10-14 08:43 被阅读74次

    1 无监督算法要做什么

    在监督学习中,我们是先对数据给定了标签,然后进行学习。

    和这个不同的是,无监督学习(Unsupervised Learning)是没有给定标签的。

    我们希望通过某些聚类算法(Clustering Algorithm),自动就从这些数据中找到一些结构。

    例如通过对市场的分割,方便精准地进行营销:

    例如对人群进行社交关系分类,自动推荐可能认识的人:

    2 K均值(K-means)算法

    2.1 算法的直观印象

    K均值(K-means)算法是现在广泛使用的聚类方法。

    例如我们有这样的数据:

    算法将执行如下步骤,最终收敛到局部最优解:

    一、设置聚类中心
    二、对附近的数据进行染色归类
    三、移动聚类中心到对应类别数据的均值所在位置
    四、重复第二、三步,直到聚类中心不再移动

    大概的过程如下图所示:

    2.2 算法的具体执行

    假如对于训练样本集 { x(1), x(2), x(3), … ,x(m) } ,我们有 K 个聚类。

    我们将每个聚类中心标记为:μ1, μ2, μ3, …,μK

    对于每一个数据点 x(i) ,其和所有聚类中心 μk 的距离记为:
    || x(i) - μk || 。

    我们需要找到使得这个距离最小的聚类 k ,然后使用 c(i) = k 进行标记。

    例如我们总共有5个聚类中心,点 x(10) 距离每个聚类中心的距离为:

    || x(10) - μ1 || = 21
    || x(10) - μ2 || = 16
    || x(10) - μ3 || = 11
    || x(10) - μ4 || = 6
    || x(10) - μ5 || = 1

    那么就有 c(10) = 5 。

    以上就是 2.1 中第二步所执行的过程。

    接下来就是对同类数据,求得其均值,并以此作为新的聚类中心,也就是第三步。

    例如,除了 c(10) = 5 之外,我们还得到 c(1) = 5 , c(5) = 5 , c(6) = 5 ,那么就有:

    2.3 算法的优化目标

    我们之前学习线性回归、逻辑回归的时候,都有一个优化目标,就是其代价函数。

    对于K均值(K-means)算法,同样也有这样的优化目标:那就是使得各个数据点距离聚类中心的距离总和最小,也就是下图中所有红线和蓝线加起来的总长度最小。

    K均值(K-means)算法的代价函数是:

    我们的优化目标就是 min J( c(1) , … , c(m) , μ1 , … , μK) 。

    2.4 随机初始化

    对于这样的训练数据:

    我们是希望把它们分成三类的:

    但有时候,因为初始化的选择,我们得到的不是全局最优解,而是局部最优解。得到的结果可能是这样的:

    也可能是这样的:

    这样的分类结果,都不是我们所期望的。

    面对这样的问题,我们应该怎么办呢?

    多次进行随机初始化,以及运行 k-means 算法,最终选择代价函数最小的一个结果。

    这个次数,可以在 50 到 1000 次左右。

    随着运行次数的增加,经常都能找到较好的局部最优解。

    当然如果聚类中心数量 K 很大的话,得到的结果可能不会好太多。

    2.5 聚类中心数量 K 的选择

    首先我们可以知道的是, K 应该小于训练样本数量 m,如果聚类中心的数量比训练样本数量还要大,那么还分类个啥。

    那这个数量应该如何选择呢?

    K 的大小,常常是模凌两可的,例如下面这个图:

    我们既可以认为 K = 4 :

    也可以认为 K = 2 :

    有一个方法叫做肘部法则(Elbow Method),可以给我们提供一个参考。

    例如下图,随着聚类中心个数 K 的增加,其代价函数计算的结果会下降:

    我们说图中这个位置(之后的下降都不太明显),就是应该设置的聚类中心个数 K 。

    但是有时候,我们绘出的图形是这样的:

    这样的情况,我们就找不到比较明显的肘部。

    所以说,肘部法则值得尝试,但是对其结果不要抱有太大的期待。

    对于聚类中心个数 K 的选择,更多是人工进行的。

    这主要看我们运行K均值(K-means)算法来达到什么目的。

    例如一个 T-shirt 的销售商,有客户的一些身高和体重数据:

    它可以将这些数据划分为三组,对应着衣服的大小为 S、M、L:

    也可以将这些数据划分为五组,对应着衣服的大小为 XS、S、M、L、XL:

    T-shirt 型号种类应该如何划分,其实可以从销售的角度考虑。

    例如怎么样才能怎样才能让顾客购买的最多。

    文章转载自公众号:止一之路

    相关文章

      网友评论

        本文标题:机器学习笔记031 | 无监督学习算法——K均值(K-means

        本文链接:https://www.haomeiwen.com/subject/kbyuyxtx.html