【问题标题】:How to use document vectors in isolationforest in sklearn如何在sklearn的isolationforest中使用文档向量
【发布时间】:2019-06-03 05:05:14
【问题描述】:

为了了解isolation forest 的真正作用,我使用以下 8 个功能做了一个示例项目,如下所示。

from sklearn.ensemble import IsolationForest    
#features
df_selected = df[["feature1", "feature2", "feature3", "feature4", "feature5", "feature6", "feature7", "feature8"]]
X = np.array(df_selected)

#isolation forest
clf = IsolationForest(max_samples='auto', random_state=42, behaviour="new", contamination=.01)
clf.fit(X)
y_pred_train = clf.predict(X)

print(np.where(y_pred_train == -1)[0])

现在,我想使用isolation forest 识别异常文档。为此,我使用gensim 训练了一个doc2vec 模型。现在,对于数据集中的每个文档,我都有一个300-dimensional vector

我的问题是我可以直接在上述代码中使用isolation forest 中的文档向量作为X 来检测异常值吗?或者在将它们应用于isolation forest 之前,我是否需要降低向量的维数?

如果需要,我很乐意提供更多详细信息。

【问题讨论】:

  • 您是否尝试使用 300 维文档向量作为您的新 X?尝试的结果是什么?我不确定IsolationForest 是否能很好地处理像Doc2Vec 这样的“密集”嵌入,因为它似乎对单个特征(维度)进行操作,就好像它们可以单独解释一样——通常情况并非如此(与嵌入空间中的任意非轴对齐方向或邻域)。但是,它可能会起作用,找出答案的最佳方法是尝试并分析/报告结果。

标签: python scikit-learn gensim outliers doc2vec


【解决方案1】:

您可以立即使用predict() 检测异常值,除非您计划删除一些不会在训练模型中考虑的变量。

一般来说,我会说进行相关性分析并删除彼此高度相关的变量(逻辑基础是,如果它们高度相关,那么它们是相同的,不应该鼓励变量的偏差通过加倍考虑)。

请随意提出异议或陈述您的考虑,因为我认为以上内容确实是我对如何解决问题的看法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 2012-02-14
    • 2018-08-25
    • 1970-01-01
    • 2018-01-22
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多