I have built a custom algorithm for semi-supervised anomaly detection and here is my output example as following with probability threshold set to 0.05 and 1 = outlier, 0 = inlier:

X1  X2  X3  Probability Threshold
1   2   3   0.01         1
4   5   6   0.015        1
7   8   9   0.04         1
10  11  12  0.06         0
13  14  15  0.1          0

Now using such data, how can I build the decision function/score similar to the one in scikit-learn?

My ultimate objective is to able to produce precision/recall plot, ROC plot for this algorithm and compare its performance to other scikit-learn and PyOD library algorithms.

The only thing that I was able to come up with so far is to loop through different thresholds of probability and at each iteration set accordingly whether a point is outlier or not and compute precision/recall/tpr/fpr metrics. However, I understand that this is not the proper way to compute the decision function and, thus, it cannot be compared to scikit-learn algorithms.

  • 1
    $\begingroup$ You need a continious output for ROC. Cant your just return Probability as the anomaly score? Or possibly 1-p if the score goes the other direction. $\endgroup$ – Jon Nordby Mar 29 '20 at 18:06
  • $\begingroup$ Hey, I worked out the solution already and is in-line with what you have just mentioned: 1) Inverse probabilities (1-P) 2) Use the probabilities as the anomaly score. Thank you very much sir! $\endgroup$ – Klaudijus Mar 30 '20 at 14:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.