0

我的任务是使用机器学习进行异常检测。我有数据作为销售计数信息,如下所示:

{ 5/*bread*/, 10/*milk*/, 2/*potato*/, .../*other products*/ },
{ 6, 9, 3, ... }, { 5, 12, 1, ... },
{ 10/*bread sales count is anomaly high*/, 10, 2, ... },
{ 4, 8, 3, ... }

我根据想法对学习集生成器进行了编码,以将某些产品销售计数转换为数组{ 5, 6, 5, 10, 4, ... },计算平均值(假设为5),将数组转换为与平均值的百分比差异{ 0%, 20%, 0%, 100%, -20%, ... },所以如果数组不包含高于 5% 的模块值,则行中没有异常。我知道我可以使用最简单的自制函数来检查这一点,但我一项任务要为此使用机器学习。

我的生成器正在制作像 { 1%, 3%, -2%, 5%, 1%, ...} 这样的序列,并将它们标记为good。这样它就产生了大约 1k 个好的序列。在这个生成器开始通过修改好的序列来生成异常序列之后:{ 24%, 3%, -2%, 5%, 1%, ... }, { -24%, 3%, -2%, 5%, 1%, ...}, { 1%, 24%, -2%, 5%, 1%, ... }, { 1%, -24%, -2%, 5%, 1%, ...}, ..., { 1%, 3%, -2%, 5%, -100% }

后来我将这个百分比转换为 [0, 1] 范围并馈送到多层感知器,第二层有 128 个神经元,第三层有 32 个神经元,输出有 2 个(良好或异常)。学习后,我得到了大约50%的识别率,这非常糟糕。

然后我修改了我的生成器以生成 1k个像{ 1%, 3%, -2%, 5%, 1%, ...}这样的好序列和 1k个像{ 25%, 50%, -60%, 40%,-80%,...}。识别率仍然在50%左右

哪种方式可以生成学习集,所以后面的网络会告诉我们{ 1%, 3%, -2%, 5%, 1%, ...}好的,并且{ 1%, -24%, - 2%, 5%, 1% , ...}不好

4

0 回答 0