Unsupervised Learning
四个月了,终于写到无监督学习了。。。。。
相关机器学习概念:
K均值聚类(K-means clustering)
1. Unsupervised Learning
监督学习与无监督学习的差异:
我们之前接触的线性回归、逻辑回归、神经网络和SVM都是监督学习,它们的输入数据集有标签
{
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
.
.
.
,
(
x
(
m
)
,
y
(
m
)
)
}
\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}
{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},在程序运行前就可对输出结果有大致的掌握。
无监督学习的输入数据集无标签,只有数据集属性
{
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
}
\{x^{(1)},x^{(2)},...,x^{(m)}\}
{x(1),x(2),...,x(m)},且输出结果不可预测。
\quad
无监督学习的例子:
-Market segmentation
-Social network analysis
-Organize computer clusters
-Astronomical data analysis
\quad
2. Clustering
2.1 K-means Algorithm
K均值聚类算法首先需要初始化K个聚类中心,然后进行迭代计算,每次迭代完成两个任务:
1、簇分配 cluster assignment
遍历样本,将每一个样本点分配至最近的聚类中心
2、移动聚类中心 move centroid
根据簇分类的结果,计算每一类的均值并将其作为新的聚类中心
\quad
用伪代码表述为:
Randomly initialize K cluster centroids
μ
1
,
μ
2
,
.
.
.
,
μ
K
∈
R
n
\mu_1,\mu_2,...,\mu_K∈\R^n
μ1,μ2,...,μK∈Rn
Repeat{
\qquad
for i = 1 to m
c
(
i
)
:
=
\qquad\qquad c^{(i)}:=
c(i):= index (from 1 to K) of cluster centroid closest to
x
(
i
)
x^{(i)}
x(i)
\qquad
for k = 1 to K
μ
K
:
=
\qquad\qquad \mu_K:=
μK:= average (mean) of points assigned to cluster K
\qquad
}
\quad
NOTE: 在聚类问题中,
x
(
i
)
∈
R
n
x^{(i)}∈\R^n
x(i)∈Rn,无需加入
x
0
=
1
x_0=1
x0=1
\quad
2.2 Optimization Objective
K均值算法中的代价函数有时也被称作失真函数(distortion cost function):
2.3 Random Initialization
随机选取K(K<m)个训练样本,作为随机初始点。
K均值聚类法存在局部最优的可能性。为了尽可能地得到全局最优的结果,我们可以循环执行K均值方法,如随机初始化100次,选择目标函数值最小的那一次作为最终聚类结果:
\quad
2.4 Choosing the Number of Clusters
聚类数目的选择很大程度上依赖于主观判断,这也是无监督学习的一个特点。一种可能的判断方法是肘部法则(Elbow method),计算不同聚类数目下的代价函数并作图,选择畸变值下降速度突变的那一点作为聚类数。不过在实践中,这种方法有时表现并不好,比如下图右侧的平滑曲线,它并没有明显的“肘部”。
根据聚类后续的目的来选择聚类数目是更好的办法。比如选择T恤的尺码,我们可能会选择3类S,M,L,也可能选择5类XS,S,M,L,XL,这需要根据实际的供求关系来确定。