首页 > 解决方案 > SVC 的 predict_proba 和 decision_function 速度差异

问题描述

predict_proba 是否对 SVC 的 sklearn 引擎盖下的 decision_function 有任何依赖?

我训练了一个概率设置为 True 的 SVC 模型,当对单个数据条目 x.shape = (1, N_features) 执行推理时,从 model.decision_function(x) 获取结果所需的时间比 model.predict_proba( X)。我假设 predict_proba 会首先调用 decision_function 然后计算校准的概率,为什么它会比 decision_function 运行得更快。同样在计算decision_function时,它也会用大数据集和大类数耗尽内存,这不是predict_proba的情况。

这两种方法的实现方式是否存在一些根本差异?


model = SVC(probability=True)

#class_num = 150, data_train.shape = (3000, 500)
model.fit(data_train, label_train) 

start_time = time()
model.predict_proba(data_test[0].reshape(1, -1))
inference_time = (time() - start_time) # takes 0.002 seconds

start_time = time()
model.decision_function(data_test[0].reshape(1, -1))
inference_time = (time() - start_time) # takes 0.15 seconds

我希望 predict_proba 比 decision_function 慢,但结果恰恰相反。

标签: pythonscikit-learn

解决方案


推荐阅读