11月4日和5日,BigML加入哈马德滨 哈利法大学 的 卡塔尔计算研究所 (QCRI),将 机器学习学校带到卡塔尔的多哈 ! 我们很高兴有机会与QCRI合作。
在会议期间,Sanjay Chawla博士讨论了他的异常聚类算法, k-means- 。 我们认为使用我们的特定领域语言实现机器学习工作流程 WhizzML 的变体来实现它的变体是一种有趣的练习 。
k均值算法的通常过程如下。 它从一些数据集,一些数量的簇 k 和一些预期的异常值 l开始 。 它随机选取 k个 质心,并根据哪一个最接近,将数据集的每个点分配给这些质心中的一个。 到目前为止,它就像香草k-means一样。 在vanilla k-means中,您现在可以找到每个聚类的均值并将其设置为新的质心。 然而,在k-means中,你首先找到 l 离指定质心最远的点,并从数据集中过滤它们。 使用剩余点找到新的质心。 通过去除这些点,我们将发现不受异常值影响的质心,因此不同(并且希望更好)质心。
我们已经 在BigML (集群资源)中 实现了 k-means 。 但这不是香草k-means。 不是通过平均集群中的所有点来找到新的质心,而是通过对点进行采样并使用梯度下降方法来更快地实现BigML。 BigML也比vanilla k-means选择更好的初始条件。 我们将改编Chawla的k-means,而不是失去这些好处,在核心迭代中使用完整的BigML集群资源。
这个WhizzML脚本是我们实现的核心。
(定义(得到- 异常 DS - ID 过滤- DS ķ 升)
(让(集群- ID(创建- 和- 等待- 集群 { “K” ķ
“数据集”已 过滤- ds })
batchcentroid - id(create - and - wait - batchcentroid
{ “cluster” cluster - id
“dataset” ds - id
“all_fields”是 真的
“距离”是 真的
“output_dataset” true })
batchcentroid(获取 batchcentroid - id)
centroid - ds(batchcentroid “output_dataset_resource”)
sample - id(create - and - wait - sample centroid - ds)
field - id(((fetch centroid - ds)“objective_field”)“id”)
异常(获取 样本- id { “row_order_by”(str “ - ” field - id)
“模式” “线性”
“行” l
“index” true }))
(删除* [ batchcentroid - id sample - id ])
{ “cluster-id” cluster - id
“centroid-ds” centroid - ds
“实例”((异常 “样本”)“行”)}))
让我们逐行检查。 在移除我们的异常之前,让我们运行整个k-mean序列, 而不是 在算法的每个步骤 中移除 l个 异常值。
cluster - id(创建- 和- 等待- 集群 { “k” k “数据集” 过滤- ds })
然后很容易创建一个批量质心,其中输出数据集与附加的质心之间的距离。
batchcentroid - id(create - and - wait - batchcentroid { “cluster” cluster - id
“dataset” ds - id
“all_fields”是 真的
“距离”是 真的
“output_dataset”
真的 })
要获得特定点,我们需要使用BigML示例资源来获取最远的点。
sample - id(create - and - wait - sample centroid - ds)
我们现在可以找到与第 l 个实例 关联的距离 ,然后过滤掉距离原始数据集的距离大于所有距离的所有点。
异常(获取 样本- id { “row_order_by”(str “ - ” field - id)
“模式” “线性”
“行” l
“index” true }))
我们重复这个过程,直到质心稳定,这是通过在算法的后续迭代中通过异常值组之间的Jaccard系数的阈值来确定的,或者直到我们达到用户设置的某个最大迭代次数。
您可以在 GitHub 或BigML库中 找到完整的代码 。
那么当我们运行这个脚本时会发生什么? 让我们尝试 红葡萄酒质量 数据集。 这是使用13的k(使用BigML g-means集群选择)和10的l的结果。
我们可以导出集群摘要报告,并将其与具有相同 k 的vanilla BigML集群进行比较 。 正如您所期望的那样,通过去除外围点,k-均值减去两个结果时质心标准差的平均值更小:0.00128对0.00152。
我们作为异常值删除的点数怎么样? 我们知道它们是否真的异常吗? 当我们通过BigML异常探测器运行葡萄酒数据集时,我们可以根据隔离森林获得前十个异常。 与脚本找到的十个异常值相比,我们看到共有六个实例。 这是一个体面的协议,我们已经删除了真正的异常值。
我们希望您喜欢BigML如何使用研究来轻松定制ML算法的演示。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31557424/viewspace-2222563/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31557424/viewspace-2222563/