首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种用于新颖性检测的支持向量机和隔离林

一种用于新颖性检测的支持向量机和隔离林
EN

Stack Overflow用户
提问于 2019-10-15 12:42:12
回答 2查看 3.2K关注 0票数 6

我的问题是关于新奇检测算法-隔离林和一类支持向量机。我有一个训练数据集( 4-5特性),其中所有的样本点是不正确的,我需要将任何新的数据归类为一个独立点或孤立点,并相应地在另一个数据中摄取。

在尝试使用隔离森林或一类支持向量机时,我必须在训练阶段输入污染百分比(Nu)。但是,由于训练数据集没有任何污染,我是否需要在训练数据中添加异常值,并将异常值部分作为nu。

此外,在使用隔离林时,我注意到每次我预测异常值的百分比都会发生变化,即使我没有改变模型。除了进入扩展的隔离森林算法之外,还有其他方法来解决这个问题吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-10-17 12:22:51

关于隔离林的污染

如果您是正常实例的培训(所有干扰者),则应将污染设置为零。如果您不指定这一点,污染将为0.1 (版本0.2)。

下面是一个简单的代码来说明这一点,

1-导入库

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
rng = np.random.RandomState(42)

2-生成2D数据集

代码语言:javascript
复制
X = 0.3 * rng.randn(1000, 2)

3-列车iForest模型与异常值预测

代码语言:javascript
复制
clf = IsolationForest(random_state=rng, contamination=0)
clf.fit(X)
y_pred_train = clf.predict(X)  

4- 异常打印#

代码语言:javascript
复制
print(sum(y_pred_train==-1))

这将给您提供0异常。现在,如果将污染更改为0.15,程序将从您已经拥有的数据集中指定150异常(由于的原因)。

参考资料

1 刘飞托尼丁凯明周志华。“隔离森林”数据挖掘,2008年。ICDM'08第八届IEEE国际会议

2 刘飞托尼丁凯明周志华。“基于隔离的异常检测”ACM数据知识发现交易(TKDD),(2012年)

票数 5
EN

Stack Overflow用户

发布于 2021-07-05 12:59:09

“仅对正常数据进行培训”。

这违背了隔离林的本质。在这里与神经网络中的training完全不同。是因为每个人使用这些都没有澄清发生了什么,并且用20%的ML知识(E 211写博客),我们有这样的问题。

代码语言:javascript
复制
clf = IsolationForest(random_state=rng, contamination=0)
clf.fit(X)

fit在这里做什么?是培训吗?如果是,培训的是什么?

隔离森林:

  1. 首先,我们建树,
  2. 然后,我们通过每棵树传递每个数据点,
  3. 然后,我们计算出分离点所需的平均路径。
  4. 路径越短,异常分数越高。

contamination将决定您的阈值。如果是0,那么您的threshold是什么?

请先阅读原纸,了解其背后的逻辑。并不是所有的异常检测算法都适用于每一种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58394996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档