二者区别
(上图参考https://www.cnblogs.com/peizhe123/p/4619066.html)
K均值
学完吴恩达机器学习K均值算法的课程,做一下总结。
首先k-means是一个聚类算法,属于无监督学习。我们只知道数据,但没有任何标签,需要我们找出数据本身的data structure。
---------------------------------------------------------------------------------------------------------
先确定一个K值(分成K类,可能不是最优,后期可调整)后具体实现方法是:
1. 随机初始化K个μ
建议直接选择样本点,即
2. 循环两个步骤
(1)根据已经标记好的μ(1到k)更新每一个样本x(i)的类别c(i),且该样本点的所属均值为μc(i)。
(2)重新计算新的μ(1到k)。
3. 优化代价函数至收敛
-------------------------------------------------------------------------------------------------------
至于怎么选择合适的K值,可以尝试不同的K值,然后看谁的J比较小。(感觉很坑)
见下图,随机初始化很影响最后的分类,同一个K值需要尝试多次初始化。(同感觉很坑)
KNN
KNN是一个监督的算法,但没有学习的能力,原有的样本是有标签的,所以在判断新的未知类别的样本点时,计算离它最近的K样本,这K个样本中哪个类别多,新样本属于哪个类别。所以有时候不同的K值很影响新样本的类别。
图中已知标签的为蓝色和红色的样本,先需要判断绿色点属于蓝色还是红色,可以看到不同K值,结果不同。(感觉就是一个充满了坑的算法)
但是有理论能够证明KNN的合理性,一种证明方法是用密度估计证明,以后有空再更。