缩放不会加速 SVM 模型

数据挖掘 机器学习 Python scikit-学习 支持向量机
2022-01-22 21:55:37

我尝试使用 629,145 行和 24 个特征的样本来标准化训练数据:

from sklearn import datasets
import pandas as pd
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler

df = pd.read_csv('mydata.csv', dtype='object')

#manually choosing 24 features
X=df.loc[:, ['Bwd Pkt Len Min','Subflow Fwd Byts','TotLen Fwd Pkts','TotLen Fwd Pkts','Bwd Pkt Len Std','Flow IAT Min',
             'Fwd IAT Min','Flow IAT Mean','Flow Duration','Flow IAT Std','Active Min','Active Mean','Fwd IAT Min',
             'Bwd IAT Mean','Fwd IAT Mean','Init Fwd Win Byts','ACK Flag Cnt','Fwd PSH Flags','SYN Flag Cnt','Fwd Pkts/s',
             'Bwd Pkts/s','Init Bwd Win Byts','PSH Flag Cnt','Pkt Size Avg']]
Y= df['Label'] 

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.4,random_state=42) # 60% training and 40% test
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

#Create a svm Classifier
clf = svm.SVC(kernel='rbf') # not linear Kernel
clf.fit(X_train, y_train)

已经 6 小时,SVM 没有收敛。与 RF 一样,相同的数据与其他算法的收敛速度非常快,我知道这很正常,因为与 KNN 和 RF 相比,SVM 被认为是计算量高的算法。我阅读了很多问题/答案和文章。

  1. 我想知道如何直观地跟踪和分析问题(可能将一些图表绘制为成本函数或?)。
  2. 参数调整(C 参数)是否有帮助并加快速度?
  3. 你有什么建议?

非常感谢

1个回答

我不在 python 上编程。尽管如此,我想说关键在于样本的数量(629,145)。他们很多。SVM 必须对它们进行测试以选择哪些是好的数据分区/回归的支持向量,并且给定数据集的大小,有很多选择。该问题加上在 SVM 优化期间测试的不同 C、gamma/sigma 以及可能的 epsilon(不确定您是在分类还是回归)的数量阻碍了收敛。有些人使用集群而不是原始数据集来训练 SVM。例如:Barros de Almeida, M., de Padua Braga, A., Braga, JP, 2000。SVM-KM:使用先验聚类选择和 k-means 加速 SVM 学习,见:Proceedings。第 1 卷。第六届巴西神经网络研讨会。里约热内卢,(巴西),第 162-167 页。可能是一个很好的开始参考,但我知道还有其他人。至少有一个基于该想法的 R 包(LinearizedSVR)。此外,有一些分析方法可以根据训练数据集的特征推断参数 C、gamma/sigma 和 epsilon(用于回归)的值。这意味着不需要优化,尽管有一个朋友仍在调整 gamma/sigma 但修复了 C 放弃这些方法。我认为网络中某处有可用的代码(至少对于 R)。参考文献是:Cherkassky, V., Ma, Y., 2004。SVM 参数的实际选择和 SVM 回归的噪声估计。神经网络 17 (1), 113–126。10.1016/S0893-6080(03)00169-2 用于回归,Keerthi, SS, Lin, C.-J., 2003. 具有高斯核的支持向量机的渐近行为。神经计算。15 (7), 1667–1689。10.1162/089976603321891855 用于分类 SVM。gamma/sigma 和 epsilon(用于回归)基于训练数据集的特征。这意味着不需要优化,尽管有一个朋友仍在调整 gamma/sigma 但修复了 C 放弃这些方法。我认为网络中某处有可用的代码(至少对于 R)。参考文献是:Cherkassky, V., Ma, Y., 2004。SVM 参数的实际选择和 SVM 回归的噪声估计。神经网络 17 (1), 113–126。10.1016/S0893-6080(03)00169-2 用于回归,Keerthi, SS, Lin, C.-J., 2003. 具有高斯核的支持向量机的渐近行为。神经计算。15 (7), 1667–1689。10.1162/089976603321891855 用于分类 SVM。gamma/sigma 和 epsilon(用于回归)基于训练数据集的特征。这意味着不需要优化,尽管有一个朋友仍在调整 gamma/sigma 但修复了 C 放弃这些方法。我认为网络中某处有可用的代码(至少对于 R)。参考文献是:Cherkassky, V., Ma, Y., 2004。SVM 参数的实际选择和 SVM 回归的噪声估计。神经网络 17 (1), 113–126。10.1016/S0893-6080(03)00169-2 用于回归,Keerthi, SS, Lin, C.-J., 2003. 具有高斯核的支持向量机的渐近行为。神经计算。15 (7), 1667–1689。10.1162/089976603321891855 用于分类 SVM。我认为网络中某处有可用的代码(至少对于 R)。参考文献是:Cherkassky, V., Ma, Y., 2004。SVM 参数的实际选择和 SVM 回归的噪声估计。神经网络 17 (1), 113–126。10.1016/S0893-6080(03)00169-2 用于回归,Keerthi, SS, Lin, C.-J., 2003. 具有高斯核的支持向量机的渐近行为。神经计算。15 (7), 1667–1689。10.1162/089976603321891855 用于分类 SVM。我认为网络中某处有可用的代码(至少对于 R)。参考文献是:Cherkassky, V., Ma, Y., 2004。SVM 参数的实际选择和 SVM 回归的噪声估计。神经网络 17 (1), 113–126。10.1016/S0893-6080(03)00169-2 用于回归,Keerthi, SS, Lin, C.-J., 2003. 具有高斯核的支持向量机的渐近行为。神经计算。15 (7), 1667–1689。10.1162/089976603321891855 用于分类 SVM。1667-1689 年。10.1162/089976603321891855 用于分类 SVM。1667-1689 年。10.1162/089976603321891855 用于分类 SVM。