我正在处理数据并希望为此数据生成异常检测模型。数据仅包含三个特征Latitude
:Longitude
和Speed
。我对其进行了规范化,然后应用t-SNE
然后再次规范化。没有标记或目标数据。所以,它应该是一个无监督的异常检测。
我无法共享数据,因为它是私有的。但是,看起来是这样的:
数据中存在一些异常值如异常值:
这是数据的最终形状:
如您所见,数据有点复杂。当我手动搜索异常实例时(通过查看特征值),我观察到红色圆圈内的实例(下图中)应该被检测为 anomalies。
红色区域内的实例应该是异常的:
我曾经OneClassSVM
检测异常。这是参数;
nu = 0.02
kernel = "rbf"
gamma = 0.1
degree = 3
verbose = False
random_state = rng
和型号;
# fit the model
clf = svm.OneClassSVM(nu=nu, kernel=kernel, gamma=gamma, verbose=verbose, random_state=random_state)
clf.fit(data_scaled)
y_pred_train = clf.predict(data_scaled)
n_error_train = y_pred_train[y_pred_train == -1].size
这是我最后得到的:
这是检测到的异常,OneClassSVM
红色实例被检测为异常:
因此,如您所见,该模型将许多实例预测为异常,但实际上,这些实例中的大多数应该是正常的。
nu
我为和尝试了不同gamma
的参数值degree
。但是,我找不到合适的决策线来仅检测真正的异常。
- 我的模型有什么问题?我应该尝试不同的异常检测算法吗?
- 我的数据不适合异常检测吗?