python - SciKit One-class SVM 分类器训练时间随着训练数据的大小呈指数增长

标签 python scikit-learn svm

我正在使用 Python SciKit OneClass SVM 分类器来检测文本行中的异常值。首先使用词袋和 TF-IDF 将文本转换为数字特征。

当我训练(拟合)在我的计算机上运行的分类器时,时间似乎随着训练集中项目的数量呈指数增长:

训练数据中的项目数和训练时间: 10K:1 秒,15K:2 秒,20K:8 秒,25k:12 秒,30K:16 秒,45K:44 秒。

我能做些什么来减少训练时间,并避免训练数据量增加到几十万项时训练时间变得太长?

最佳答案

scikit 的 SVM 是一个高级实现,所以你只能做这么多,就速度而言,从他们的网站上,“SVM 不直接提供概率估计,这些是使用昂贵的五倍计算的交叉验证。”

您可以根据可用 RAM 增加内核大小参数,但这种增加并没有多大帮助。

您可以尝试更改内核,但您的模型可能不正确。

以下是来自 http://scikit-learn.org/stable/modules/svm.html#tips-on-practical-use 的一些建议:扩展您的数据。

否则,不要使用 scikit 并使用神经网络自己实现它。

关于python - SciKit One-class SVM 分类器训练时间随着训练数据的大小呈指数增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41715835/

相关文章:

python - 如何使用 Python 从 pdf 中提取文本?

python - 将字典写入文本文件?

python - pyaudio在python2和python3中播放不同的音调

scikit-learn - 如何使用 scikit-learn 从线性判别分析中获取特征向量

python - SK学习: Getting distance of each point from decision boundary?

python - 如何控制 python 脚本的哪些部分以 root 身份运行

python - sklearn 绘制带有标签的混淆矩阵

java - java中的文本分类库

visual-c++ - 使用 SIFT 和 ORB 特征在 OpenCV 中训练 SVM 分类器

使用 Scikit-learn 进行拟合时出现 Python MemoryError