监督学习
非监督学习
在无监督学习中,我们面对的是一组无标记的训练数据。数据之间不具有任何关联的标记。所以我们需要在数据点中,求出数据的分布结构。其中一种算法就是聚类算法(Clustering Algorithm),用来分析把数据分成每一组。
练习题:
选择(A,B,C)
D.聚类算法不是唯一的非监督学习算法
k均值聚类算法(k-means clustering algorithm)
算法步骤:
1.集群分配步骤(选定几个质心)
2.移动质心
算法演示:
(1)首先选定有几个聚类质心(cluster centroids),几个点的位置是随机的
(2)集群分配,遍历整个样本点,选择离聚类质心最近的点。并分别标记。离红色质心近的样本点,标记为红色。离蓝色质心近的样本点,标记为蓝色。
(3)移动聚类质心(cluster centroids),我们需要将两个中心点移动到刚才我们分成两类的数据各自的均值处。那么所要做的就是找出所有红色的点计算出他们的均值,然后把红色叉叉移动到该均值处,蓝色叉叉亦然。
(4)再次集群分配,遍历整个样本点,选择离聚类质心最近的点。并分别标记。离红色质心近的样本点,标记为红色。离蓝色质心近的样本点,标记为蓝色。
(5)再次移动聚类质心(cluster centroids)
以此类推,直到聚类质心(cluster centroids)不再变化
输入:
聚类算法准备分成几个组
训练数据集
注意:
对于我们的训练集是Rn,n维的向量作为训练数据。而不是令x0=1,作为n+1维的向量作为训练数据。
练习题:
选择(A,B,D)
x(1)离它最近的一个聚类中心点距离为3,
x(2)离它最近的一个聚类中心点距离为3,
x(3)离它最近的一个聚类中心点距离为5。
D.对于所有可能的k取值,x2点与u3聚类质心(cluster centroids)的距离最近
c(i)代表x(i)与uk之间的最小距离
u_k代表分配给聚类质心(cluster centroids)的平均值
但是如果有一个组的质心,没有分配给它零点的点怎么办?在这种情况下,更常见的做法是消除簇的形心。如果你这样做,你会得到k-1组,而不是k组。或者采用将没有分配到点的质心,位置上重新随机初始化。
对于这种不是很分开的数据,也可以使用K-means算法来分类。如右图为一定身高,一定体重人的数据。我们想要将这些人划分出大,中,小号的T恤尺码。运行聚类算法,分成3类。每一类既是可划分的T恤尺码。
Clustering optimization objective 聚类优化目标
优化目标:
J(c(1),…,c(m),u1,…,uk)是聚类的损失函数cost function(也称作distortion),目标为最小化损失函数。分配给第i号聚类质心(cluster centroids)的xi样本点减去第i号聚类质心(cluster centroids),算出其距离。(样本点从1号到m号)
第一步是随机初始化K个聚类中心,记做:u1 ,u2,…,uk
第二个大部分就是进行迭代。其中第一个循环是:对于每个训练样本 ,我们用变量 c(i)表示在K个聚类中心里面最接近 x(i)那个中心的下标。
而我们上面第一个循环进行簇分类,实际上就是对代价函数J进行最小化c(i) 而 ui保持不变的操作。第二个循环进行移动聚类中心,实际上就是对代价函数J进行最小化ui 而保持c(i)不变的操作。
练习题:
选择(D)
D.不可能产生这种图形
Random Initialization随机初始化
如何随机选择聚类质心(cluster centroids)
保证聚类的类别数量<样本个数
随机选择几个样本点,这几个随机的样本点作为聚类质心(cluster centroids)
Local optima局部最优
故随机选择出的不同的样本点,可能会导致不同的分类结果(陷入局部最优中)
解决方法:
多次循环聚类算法,并记录每一次迭代的损失函数的损失值。
选取所有迭代中损失值最小的那一个,作为我们训练的聚类算法。
一般来说:k:2-10的时候更需要使用random initializations(随机初始化)也就是类别数越小,越需要随机初始化,来防止算法陷入局部最优
选择(C)
A.错误,相当于k个初始化聚类质心都相同,且是一个随机的样本点
B.错误,应该是从m个样本中,随机选取k个样本,作为聚类质心
D.错误,不应该这样初始化
how to choose the number of clusters如何选择聚类组别的数量
Elbow Method肘形法
对于左图情况,1-3轮迭代中下降很快,3轮之后的曲线开始平缓变化。故第3轮就是我们所说的胳膊点。即选择k=3,是聚类算法应该分组的数量。但是,也有其他情况,可能绘制出的曲线没有明显的胳膊点,那我们不能使用Elbow Method肘形法。
练习题:
选择(C)
解释:
本来应该随着K的数量增大代价函数降低的,但是k=5却比k=3大,这就说明了在随机初始化的时候出现了问题了。
更常见的情况,根据商业需求来选择应该分多少个类别,来更好的满足顾客。
测试题:
选择(A,B)
分出类别与找出群组之间的关联可以采用聚类算法
选择(A)
计算3个聚类中心到样本点x(i)的距离
解答:
计算x(i)与每个ci的距离=||x^{(i)} - \mu_{c{(i)}}||2,取最小的
与μ1的矩离=[−1−(1)]2+[2−2]2=4+0=4
与μ2的矩离=[−1−(−3)]2+[2−0]2=4+4=8
与μ3的矩离=[−1−(4)]2+[2−2]2=25+0=25
所以与μ1的矩离最小
选择(C,D)
循环的部分
1.集群分配步骤(选定几个质心)
2.移动质心
选择(A)
对于聚类算法的多轮迭代,选择损失函数最小的那一个作为结果。
选择(B,C)
B.正确,对于选择一个“正确”的聚类算法分组数量是不确定的
C.正确,为了防止陷入局部最优,应该使用复杂随机初始化算法