如何随机创建异常值数据集?

How to randomly create an outlier dataset?

我正在尝试创建一个离群值数据集,它有 8 列,一些列包含分类值,而其他列包含正数值。并且此数据仅包含两种类型的数据点:正常数据点和异常值。

我想知道你是否知道任何工具或库或一些方法可以帮助我自动创建这种类型的数据集。我听说 numpy 有生成标准分布的工具,但我认为它不能创建分类值。

和每一次一样,非常感谢你的帮助。

前言:你应该问自己一个非常重要的问题:你认为什么是异常值,然后尝试模拟这些问题。您可以在下面找到粗略的指南:

数值

您可以通过创建一个具有某些预定义分布的数据集(比如标准正态分布,均值 0 和方差 1)并使用它创建一些数据点(比如 10_000).另一个来自另一个分布(即使是高斯分布但均值、方差不同)并说 50 点是异常值。

分类值

取决于可能的分类值的大小以及您是否希望异常值和非异常值数据都在某个范围内。

分类值相同范围

比如说,分类值在 [0, 10] 之内。所以你用 numpy 的 np.random.randint 在整个范围内生成它们,比如说,对于 5 列,所以你会得到一个例子:

[1, 4, 7, 9, 3]

现在离群值可能包含在 [0, 10] 中,例如 [7,9],因此它们的值可能是:

[7, 7, 8, 9, 8]

鉴于该组合,它应该被视为异常值(当然有一些误报,因为 [0, 10] 可能会在原则上产生类似的东西)。

分类值不同范围

这个案例比较简单;只需使用不同的范围,您就可以确定没有数据点在非离群数据中具有这些值。

总结

总而言之,您可以混合使用这些方法并改变程度,使离群值算法的任务更难(类似的数据生成过程)或更简单(两者之间的功能差异很大)。

在上面进行参数化并创建一个具有不同易用程度的函数应该很容易。除非你需要更复杂的东西,否则不要去图书馆(当然你可以让整个想法变得更复杂)。