使用IsolationForest检测高暗淡度数据集异常值的正确方法

时间:2017-11-18 01:41:47

标签: machine-learning scikit-learn outliers

我使用以下简单IsolationForest算法来检测X个样本和20K特征的给定数据集16的异常值,我运行以下

train_X, tesy_X, train_y, test_y = train_test_split(X, y, train_size=.8)

clf = IsolationForest()
clf.fit(X)   # Notice I am using the entire dataset X when fitting!!
print (clf.predict(X))

我得到了结果:

[ 1 1 1 -1 ... 1 1 1 -1 1]

这个问题是:在适合X或仅IsolationForest时使用整个数据集train_X在逻辑上是否正确?

1 个答案:

答案 0 :(得分:1)

是的,最终训练整个数据集在逻辑上是正确的。

考虑到这一点,您可以根据训练集的性能来衡量测试集的性能。这可以告诉您测试集是否来自与训练集类似的分布。

如果测试集与训练集相比得分异常,那么您可以预期未来的数据会相似。在这种情况下,我希望有更多数据可以更全面地了解什么是“正常”。

如果测试集的得分与训练集类似,那么对于所有数据训练的最终隔离林我会更为舒服。

也许你可以用这种方式使用sklearn TimeSeriesSplit CV来了解你的问题有多少数据足够了?

由于这是异常检测器的未标记数据,因此定义“正常”时数据越多越好。