从本质上讲,我的问题和SciKit One-class SVM classifier training time increases exponentially with size of training data是一样的,但是没有人发现问题所在。
它似乎可以在几千人中的某个地方运行得很好,但上千人中的100人需要很长时间。我想在上千万台上运行它,但我不想等待一天半(也许更多),因为它一无所获。有没有更快的方法,或者我应该使用其他方法?
发布于 2017-08-03 09:01:11
我在这个领域很初级,所以对此持保留态度。
隔离森林似乎是异常值检测的有效解决方案。他们已经被证明与其他流行的算法相比表现良好,刘,2008。此外,根据scikit learn,单类支持向量机在某种程度上容易出现异常。第一类中的异常可能与第二类重叠,并导致数据被错误标记……也许提取样本的子集并使用它们来创建SVM集成可以避免这种情况(并且仍然可以节省您的时间,具体取决于子集的大小),但是隔离森林很自然地做到了这一点。
对于进一步的阅读,这似乎是一篇关于http://www.robots.ox.ac.uk/~davidc/pubs/NDreview2014.pdf主题的很好的参考论文
它提到了聚类和距离方法,这些方法可能适用于您的情况。我认为最好是大量阅读,并确保您了解算法的不同优点/缺点。特别是因为我正在做这件事,即使我知道你的问题的具体细节,我也不能给出可靠的建议。
注re:基于距离的算法。我知道有些是优化的,但我认为普遍的抱怨是它们的计算复杂度很高。许多基于聚类/距离/概率的算法在处理高维数据时也存在弱点。
https://stackoverflow.com/questions/45472516
复制相似问题