我的猜测是,它试图使用它尝试过的第一组超参数来匹配SVm,这花费了很长时间。试着把'Verbose',2放在结构体中,它会显示下一个将要尝试的超参数。然后您可以尝试显式传递这些值,看看使用这些值是否需要很长时间。
例如:
> >加载电离层
> > rng (0);
> > fitcsvm (X, Y,“OptimizeHyperparameters”,“汽车”,“HyperparameterOptimizationOptions”结构(“详细”2,“坚持”, 2))
输出:
执行点上的函数求值:64.836 |0.0015729 |
时间选择下一个点:0.09863
时间拟合模型:0.05019
|=====================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale |
| | result | | runtime | (observed) | (estim.) | | |
|=====================================================================================================|
| 1 | Best | 0.38571 | 3.539 | 0.38571 | 0.38571 | 64.836 | 0.0015729 |
执行点上的函数求值:0.036335 |5.5755 |
时间选择下一个点:0.096786
时间拟合模型:0.034137
| 2 |最佳| 0.35714 | 0.034081 | 0.35714 | 0.35892 | 0.036335 | 5.5755 |
执行点上的函数求值:0.0022147 |0.0023957 |
注意,由于使用了超参数值,第一次迭代花费的时间是第二次的100倍。然后你可以手动运行这些值来检查运行时本身:
> >抽搐;fitcsvm (X, Y,“BoxConstraint”, 64.836,“KernelScale”.0015729,“坚持”, 2);toc
运行时间是3.365133秒。