聚类算法--K-means, 层次聚类以及特征选择
虽然很突然,但我们这一篇文章介绍在R里面用知名的iris data set 来做一下简单的聚类对比。
(site:http://archive.ics.uci.edu/ml/datasets/Iris)
(data:http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data )
(http://archive.ics.uci.edu/ml/machine-learning- databases/iris/iris.names).
首先是Kmeans

下方是具有基本功能的层次聚类,以及相应地调整距离的计算方法,因为 K-means 函数不允许用户调整距离属性,这里单独拿出来对比一下。另外需要注意的是,层次聚类的商业应用其实比较单一,就结果而言不一定更好,但是很多时候经过调整可以比较直观看到聚类的树状结果,结果图片过长我这里就先不展开了:

相关方法也有助于高维大型数据集的聚类或其他无监督ML方法 ,by Jason Brownlee 介绍了三个理念:
http://machinelearningmastery.com/feature-selection-with-the-caret-r-package/
1. Generally, you want to remove attributes with an absolute correlation of 0.75 or higher.
2. Rank Features By Importance
3. Automatic featureselection methods
第一二个大家需要考虑进特征工程中,尽可能作为routine的常规工作。第三个的实现会复杂一些(例如通过自编码器),这里也先带过吧。

最后要提的是,实际上对于聚类问题,很多时候还有类别数量的K确定的问题,这里或者经验主义,或者基于肘部曲线的计算,或者直接gridsearch出不同K的结果然后对比分类的上准确度,都是可以满足实际业务场景的做法。

