【发布时间】: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