模型优化

Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(2): 模型优化

為{幸葍}努か 提交于 2019-12-06 08:20:09
Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(2): 模型优化 上一节: Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索模型初步实验 前言 通过上一节的介绍,已经对数据集长什么样子,模型如何工作的有了一个基本的了解,本节重点就是探讨如何优化 K-means 聚类模型。 1 K-means 聚类算法的 K 如何选择 首先探讨的第一个问题是 K-means 的类别 K 该如何确定?为了回答这个问题,需要先回答下面的问题: 如何量化模型的效果? 第一个想到的答案就是:当K确定下来之后,模型得到K个类中心,每个样本也归属到自己的类,那么每个样本距离类中心的距离也是知道的,将所有样本距离类中心的距离相加, 这个总距离数值越小越好(当然看总距离的平均值也是一样的,因为样本数量是相同的)。 这似乎很有道理,但是细细一想就发现,这个有点不靠谱,为什么?当你的类别数目等于样本数量的时候每一个样本都是类中心,那这个距离相加为0,是不是最小的?也就是说 这个总距离会随着类个数增加而减少。那这个K值如何取? 很简单,取总距离下降拐点处的 K 值。因为总距离随着 K 值的增加而减少但是减少的幅度不是每次都会很大,总会有一个K值之后,距离下降趋于平缓,这个点就是拐点。 这个思路其实和主成份分析找主成份的思路是一致的:也是找碎石图中的拐点。 下面将会以实战的方式