机器学习之经典聚类算法k-means在人脸识别的应用

Posted 渣渣驴here

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之经典聚类算法k-means在人脸识别的应用相关的知识,希望对你有一定的参考价值。


简介:

聚类被认为是机器学习中最常使用的技术之一,它历史悠久、应用广泛,几乎应用于环境学、医学、生物学、天文学、经济学等各个领域。其中K-means是最为常用的聚类算法。

K-means 算法是最为经典的基于划分的聚类方法, 是十大经典数据挖掘算法之一。 K-means 算法的基本思想是;以空间中 k 个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。k-means 算法接受参数 k ;然后将事先输入的 n 个数据对象划分为 k 个聚类,以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。

步骤:

算法原理:

K-means算法的基础是最小误差平方和准则。

若 Ni 是第 i 聚类Γi 中的样本数目, mi 是这些样本的均值,即

机器学习之经典聚类算法k-means在人脸识别的应用



把Γi 中的个样本 y 与均值 mi 间的误差平方和对所有类相加后为

Je是误差平方和聚类准则,它是样本集 Y 和类别集 Ω的函数。 Je度量了用 C 个聚类中心 m1, m2, ···, mc 代表 c 个样本子集Γ 1, Γ 2, ···, Γc 时所产生的总的误差平方。 对于不同的聚类,Je的值当然是不同的, 使 Je 极小的聚类是误差平方和准则下的最优结果。这种类型的聚类通常称为最小方差划分。

输入:训练样本V={v(1),v(2),…,v(n)},v={v1,v2,…,vni},k:聚类个数;

输出:C={C1,C2,…,Ck};

步骤1 在数据集中随机选取K个对象作为初始聚类中心 c1,c2,…,ck;

步骤2 计算数据集中每个对象到聚类中心的距离,选取最小距离min|v- cj|,分配到聚类中,其中v={v1,v2,…,vn},j=1,2……k;

步骤3 计算每个聚类中的所有对象均值,将此均值作为新的聚类中心,,nj为第j类中对象的个数,j=1,2,……k;

步骤4 如果每个簇的聚类中心不再发生变化,聚类准则函数收敛,则算法结束。否则返回步骤2继续迭代。

人脸识别应用:

将 100*100 的 face 矩阵降维为一个 1*10000 的行矩阵; 然后将每 2000 个数据为一组求取一个平均数, 即得到一个 1*3 的 feature 矩阵, 此时 feature 矩阵中存储的是处理后的0~255 之间的数,即为特征 1、特征2、特征 3 的值,得到一个如下所示的矩阵

降维后的数据集

图片号 特征 1 特征 2 特征 3 人物代号 人物

1 227.764 235.008251.269 1

2 201.95 171.624194.945 1

3 224.934 181.419220.641 1

4 299.497 283.707205.971 1

5 206.334 175.668186.104 1

6 206.334 175.668186.104 1

7 208.128 166.037255.486 1

8 238.901 168.59194.15 1

9 209.31 168.449195.075 1

10 177.1 153.796166.812 1

11 183.189 129.826151.057 17

12 261.774 169.557195.924 17

13 261.042 162.394211.054 17

14 234.876 134.373111.316 17

15 251.593 165.491191.16 17

16 231.97 157.978179.263 17

17 62.434 46.4688.195 17

18 269.553 170.8198.746 17

19 284.118 159.287178.697 17

20 262.452 151.028188.618 17

21 238.901 168.59194.15 24

22 209.31 168.449195.075 24

23 177.1 153.796166.812 24

24 183.189 129.826151.057 24

25 261.774 169.557195.924 24

26 261.042 162.394211.054 24

27 234.876 134.373111.316 24

28 251.593 165.491191.16 24

29 231.97 157.978179.263 24

30 62.434 46.4688.195 24

但是 30 个样本就有 30 个 feature 矩阵,且同一个特征下个样本的值可能全不相同,此时对于 K-means 算法来说,就不好处理了,所以还要对特征的值进行分类,求得每个特征下30 个值得平均数 avg, 再将每个样本的该特征的值与avg 比较, 若大于avg 则记为 1;否则为 0,。最终得到一个如下所示的矩阵。

将所有(30 张)图片的每个特征以平均数为界限非为两类

图片号 特征 1 特征 2 特征 3 人物代号 人物

1 1 1 1 1

2 0 1 1 1

3 0 1 1 1

4 1 1 1 1

5 0 1 0 1

6 0 1 0 1

7 0 0 1 1

8 1 1 1 1

9 0 1 1 1

10 0 0 0 1

11 0 0 1 17

12 0 0 0 17

13 1 1 1 17

14 1 0 1 17

15 1 0 0 17

16 1 0 1 17

17 1 0 0 17

18 0 0 0 17

19 1 1 1 17

20 1 0 0 17

21 1 1 1 24

22 0 1 1 24

23 0 0 0 24

24 0 0 1 24

25 0 0 0 24

26 1 1 1 24

27 1 0 1 24

28 1 0 0 24

29 1 0 1 24

30 1 0 0 24

输在得到上面的数据后,将人物代号为 1,17,24 的照片降维后的数据集作为聚类中心点。在测试选择一张图片后,将新照片降维的特征一,特征二,特征三,数据集分别与三个聚类中心的特征一,特征二, 特征三数据集求得欧式距离量度,得到最后数据最小的,这判定新照片属于此聚类中心。再用聚类算法得到 1,17,24 号照片的聚类后的照片,并作为一个库为新输入的照片作比较,判断具体是哪个人。

喜欢请关注


以上是关于机器学习之经典聚类算法k-means在人脸识别的应用的主要内容,如果未能解决你的问题,请参考以下文章

欧若纳解析机器学习之K-means 聚类算法原理及特征

机器学习之聚类算法——K-Means算法

机器学习之K-means算法

机器学习之SKlearn(scikit-learn)的K-means聚类算法

机器学习之聚类算法(k-meansCanopy层次聚类谱聚类)

机器学习之K-Means聚类(python手写实现+使用Silhouette Coefficient来选取最优k值)