我有一个有580个样本和7个特征的数据集。我比较了线性、二次和高斯三种内核之间的时间,并使用RandomizedSearchCV进行了如下操作:
from sklearn.model_selection import RandomizedSearchCV
from sklearn.preprocessing import StandardScaler
paramSVMLinear = {
'kernel': ['linear'],
'C': [ii for ii in np.linspace(1,1e7,50000)]
}
scal = StandardScaler()
X = scal.fit_transform(X)
RandomizedSearchCV(SVC(), paramSVMLinear, n_iter=1, cv=2, scoring='accuracy', verbose=4).fit(X_train,Y_train)
SVC(kernel = 'linear').fit(X_train,Y_train)
SVC(kernel = 'poly',degree=2).fit(X_train,Y_train)
SVC(kernel = 'rbf').fit(X_train,Y_train)每次使用的时间分别为187.64秒、0.001672秒、0.00187秒、0.001586秒。为什么随机搜索在1次迭代和2次循环中花费这么长的时间?为什么线性核比RBF花更长的时间?谢谢!
发布于 2021-06-11 16:35:23
线性核所需时间较长的一个合理原因是数据不是线性可分的,因此拟合时间比像RBF这样的非线性核需要的时间长。
核技巧避免了获得线性学习算法学习非线性函数或决策边界所需的显式映射。..。某些算法依赖于本机空间X中的任意关系,实际上,在不同的设置下,\varphi的范围空间会有一个线性解释。线性解释使我们对算法有了深入的了解。此外,在计算过程中通常不需要直接计算\varphi,就像支持向量机一样。一些人认为这一运行时间捷径是主要的好处。
(强调地雷)
参考文献:
https://datascience.stackexchange.com/questions/96521
复制相似问题