难道最近这种文章看的人比较多,unbelievable!
因为觉得这些都是特别老的算法,应该别人会不怎么看的,但是没想到,我觉得有意思的文章反倒是没有人看,觉得就是很多东西不写,想要回顾的时候自己的记忆又没有自己认为的那么牛逼,有些东西还是全面的理解透彻了,写下来的话更持久一些。当然我的blog 主要是我遗忘时候的宝典,偶尔能帮助很多人,我也是很开心的。
有时候看到有的文章的阅读量有点虚高我自己也会莫名其妙的,但是大家喜欢看什么多写点帮我增加点人气也是好的,哎,人都是这种虚伪的动物,我就这么直白的承认了吧。
啊哈哈哈哈哈
因为觉得网上应该有很多的资料了,但是发现,大家写的就是那样了。这个时候就到了我们女程序员来拯救世界的时候了。
k-median 算法是k-means 算法的一种变形。 它的基本原理和我们的k-means 相似。这个就是最重要的一句话。
如果你会了k-means 算法,那么k-median 算法对你来说就是相当简单的啦。因为k-means 定义的时候就是不断的更换我们的中心,中心的选取是根据聚类的平均值也就是我们的means 来定的。那么k-medians 选取的就是我们的中位数。中位数median 和means 到底有什么区别呢,如果你还不知道的可以看我的 这篇文章 mean,median, mode 之间的区别。
感觉自己真的是太贴心了,哈哈,帮你弄懂了你学习道路上的每一个细节以及我认为的难点。哈哈,有没有觉得这个世界还是需要很多的我这么体贴又聪明的程序员的。啊哈哈哈~
当然,如果你还没有弄懂k-means 算法也可以看我的文章:https://blog.csdn.net/chichoxian/article/details/84075128
距离公式可能不同。 k-means 一般会选取欧几里得距离公式,你看有的英文书的时候我们会把这个叫做2-norm 因为这个时候我们要算一个平方。当然了,k-means 也是可以用我们的曼哈顿距离公式来计算的,也就是1-norm. k-median 一般是用1-norm 的距离公式来计算的,我们一般用我们曼哈顿距离公式来计算。
欧几里得距离计算公式
在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。使用这个距离,欧氏空间成为度量空间。相关联的范数称为欧几里得范数。较早的文献称之为毕达哥拉斯度量
曼哈顿距离
中心点的选取方式不同。 k-means 用的是平均值来重新计算分布我们的每个聚类当中的点,但是k-medians 算法选取的就是我们的中位值。这个好处就是针对一个数据集来了几个噪音特别大的点,也就是和其他的点分布远的离谱的点,中位值的变化也是不是很大的。甚至可能没有变化。
所以说k-median 的Robustness 比k-means 的要好
看下面的这个例子
我们来看下面的这个例子
这里我们有十个点,我们要将我们的数据划分为两个类,这个时候,我们选取两个初始的中心点为3号,和6号。
我们用曼哈顿距离公式为他们进行划分:
得到的结果是:
这个时候我们第一次的迭代发现
1,2,3,4,5,7,9,10
是一个类
6,8 是另一个类
我们的点集是下面这个样子的
(3,8)
(3,6)
(3,4)
(4,5)
(4,7)
(5,5)
(7,5)
(8,5)
对横坐标排序之后的中位数是4,
对纵坐标排序之后的中位数是5
这个时候第一个集合的中心点就变成了(4,5)
第二个集合的点集是 (5,1)(7,3) 中心点就是(6,2)
这个时候我们在重新计算新的聚类
这个时候得到的结果还是一样的,迭代结束。
得到了我们的聚类的结果。
[1] https://zh.wikipedia.org/wiki/欧几里得距离
[2] https://zh.wikipedia.org/wiki/曼哈頓距離
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程 https://www.cbedai.net/chichoxian