我用R中的h2o kmeans来划分我的人口。这个方法需要被审核,所以我想解释一下H2O中使用的阈值。
在h2o kmeans (http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/k-means.html)的文档中,有这样的说法:
H2O使用比例减少误差(PRE)来确定何时停止分裂。预值是根据(SSW)内的平方和来计算的。 PRE=(SSWbefore拆分−−后拆分)/SSWbefore拆分 当PRE低于阈值时,H2O停止分裂,阈值是变量数和情况数的函数,如下所述: 阈值取这两个值中较小的值: 0.8或0.02 +10/训练_行数+ 2.5/(number_of_model_features)^2
源代码(https://github.com/h2oai/h2o-3/blob/master/h2o-algos/src/main/java/hex/kmeans/KMeans.java)如下所示:
最终双rel_improvement_cutoff = Math.min(0.02 +10.0./ _train.numRows() + 2.5 / Math.pow(model._output.nfeatures(),2),0.8);
,这个阈值从何而来?有关于它的科学论文吗?
发布于 2018-04-09 22:04:44
我要对这个门槛负责。我是通过运行大量的数据集来开发的--人工的和真实的--通过k均值算法。几年前,我开始使用SSW改进,并按照John的建议,将其作为一个卡方变量进行测试。这个标准在很多情况下都失败了,所以我切换到了PRE。上面的方程是将非线性模型与已知簇数的数据集上的结果进行拟合的结果。当我为Tableau编写k均值程序时,我使用了同样的预准则。在我离开Tableau去H2O之后,他们用Calinski-Harabasz指数代替了我的预规则,产生了类似的结果。利兰威尔金森,首席科学家,H2O。
https://stackoverflow.com/questions/49493980
复制相似问题