Machine Learning(Andrew) ex7-K-means Clustering and Principal Component Analysis
椰汁笔记
K-means Clustering
前面学习的内容都是监督学习,这将是我们学习的第一个非监督学习算法。
我们先把这个算法说清楚再说作业。
- 这个算法是干什么的?
将没有标签的数据,划分成K组。通过这个算法我们可以将数据进行分类,具体可以应用到根据用户数据将用户进行分类,对各类用户提供更加精细的服务等。 - 这个算法是大概是怎么做的?
这里一起宏观地理解一下这个算法。举个例子我们需要将下面地数据进行聚类,我很可以很轻松地看出数据大致可以分为两类,左下角和右上角。
K-means算法怎么运行将这组数据分为两类呢?首先目标很明确需要分为两类,因此K=2。先选择2个聚类簇中心,这个可以随便选。
1.接着我们根据数据点距离红色簇中心还是蓝色簇中心更近,将点分为两簇。这里使用欧氏距离表示远近。
2.接着我们对于每一个簇,重新计算一个簇中心,这个中心就是这个簇所有点地平均位置。
接着以这两个簇中心,重新将数据进行分类,也就是重复1步骤,接着再重复2步骤。这样不断迭代,当簇中心不再移动的时候,根据此时簇中心的分类结果就是最后的聚类结果。
- 这个算法的细节什么样的?
首先这个算法的优化目标是所有的点离其所属簇中心点的距离最小
J ( x ( 1 ) , … , x ( m ) , μ 1 , … , μ K ) = 1 m ∑ i = 1 m ( x ( i ) − μ x ( i ) ) J(x^{(1)},\dots,x^{(m)},\mu_1,\dots,\mu_K)=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu_{x^{(i)}}) J(x(1),…,x(m),μ1,…,μK)=m1i=1∑m(x(i)−μx(i))
算法描述
I n p u t : K , { x ( 1 ) , x ( 2 ) , … , x ( m ) } Randomly initialize K cluster centroids μ 1 , μ 2 , … , μ K Repeate{ x ( i ) = index (from 1 to K) of cluster centroids closest to x ( i ) , ( f o r i = 1 t o m ) μ k = average of points assigned to cluster k , ( f o r k = 1 t o K ) } Input:K,\{x^{(1)},x^{(2)},\dots,x^{(m)}\} \\\textrm{Randomly initialize K cluster centroids }\mu_1,\mu_2,\dots,\mu_K \\\textrm{Repeate\{} \\x^{(i)}=\textrm{index (from 1 to K) of cluster centroids closest to }x^{(i)},(for\ i=1\ to\ m) \\\mu_k=\textrm{average of points assigned to cluster k},(for\ k=1\ to\ K) \\\} Input:K,{ x(1),x(2),…,x(m)}Randomly initialize K cluster centroids μ1,μ2,…,μKRepeate{ x(i)