Support Vector Classification常见算法的Computational Complexity

本文介绍了SVM(支持向量机)的两种实现:LinearSVC和SVC。LinearSVC的训练时间复杂度为O(m*n),适合大规模线性可分数据,不支持核技巧。SVC则基于libsvm,支持核技巧,复杂度在O(m^2*n)到O(m^3*n)之间,适合中小型复杂训练集,但对大量实例处理较慢。SVC在稀疏特征下表现良好。
摘要由CSDN通过智能技术生成

SVC常见算法的计算复杂度

Hands-on Machine Learning with Scikit Learn, Keras & TensorFlow

Charpter 5 学习笔记

LinearSVC类基于liblinear库,它实现了线性支持向量机的优化算法(https://homl.info/13)。它不支持核技巧,但它几乎随训练实例的数量和特征的数量线性扩展。其训练时间复杂度约为O(m * n)。

如果你需要非常高的精度,算法需要更长的时间。这是由公差超参数\epsilon(在Scikit-Learn中称为tol)控制的。在大多数分类任务中,默认容忍是很好的。

SVC类基于libsvm库,它实现了一个支持核技巧(kernel trick)的算法(https://homl.info/14)。训练时间复杂度通常介于O(m^2 x n)和O(m^3 x n)之间。不幸的是,这意味着当训练实例的数量变大(例如,几十万个实例)时,它会变得非常慢。该算法适用于复杂的中小型训练集。它可以很好地根据特征的数量伸缩,特别是在稀疏特征(即,当每个实例只有很少的非零特征时)。在这种情况下,算法大致上根据每个实例的非零特征的平均数量进行扩展。

ClassTime complexityOut-of-core supportScaling requiredKernel trick
LinearSVCO(m*n)NoYesNo
SGDClassifierO(m*n)YesYesNo
SVCO(m^2 * n) to O(m^3 * n)NoYesYes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值