算法面试问题集锦
聚类算法的名称、基本思想和各自优缺点
(1)K-means(K均值),变体包括k-medoids、k-modes、k-medians、kernel k-means等算法。
基本思想:k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
k-means算法的处理过程如下:首先,随机地 选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。 这个过程不断重复,直到准则函数收敛。
通常,采用平方误差准则,其定义如下: E=∑i=1~k∑p∈Ci |p-mi|² 这里E是数据库中所有对象的平方误差的总和,p是空间中的点,mi是簇Ci的平均值。该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。
优缺点:
优点:对于大型数据集也是简单高效、时间复杂度、空间复杂度低。
缺点:最重要是数据集大时结果容易局部最优;需要预先设定K值,对最先的K个点选取很敏感;对噪声和离群值非常敏感;只用于numerical类型数据;不能解决非凸(non-convex)数据。
(2)DBSCAN(基于密度的噪声应用空间聚类)
基本思想:k-means解决不了不规则形状的聚类。