1 kmeans算法是一种什么样的算法?
答:kmeans算法是一种聚类算法,在使用kmeans算法时并不需要事先构建模型(如决策树判断需事先构建决策树,knn判断需事先构建kd树等),而是直接进行聚类。
它的基本过程是:
1. 对于N个n维空间的待分类点,选出K个点作为初始质心(初始中心点)
2. 对于空间中的N-K个剩余点,若它离初始质心X的(欧几里得距离/余弦相似度)最近,他就属于以X为质心的簇。
3. 完成K个簇的建立后,在重新计算K个质心(通常取簇的中位数)
4 重复 2步骤和3步骤,直到质心不发生改变。
简单的说,这个算法的输入是全体N个点和K个特殊点。输出为K个类,K个类的总和为N。
2 关于余弦相似度的理解:
余弦相似度其实是两个向量的cos值,既cos(x,y) = x*y /||x|| ||y|| x*y 为响亮的点积,||x|| 为向量的长度 具体公式见此文章
若:x=(3,2,0,5) y=(1,0,0,0) x*y = 3*1 + 2*0 + 0*0 + 5*0 ||x||的平方=3*3 + 2*2 + 0*0 + 5*5 ||y||的平方=1*1 + 0*0 + 0*0 + 0*0 cos(x,y)= 0.41