关于Grid Search的适用情景

来源:4-6 网格搜索与k近邻算法中更多超参数

蛋包饭吃球球

2022-11-04

bobo老师好!网格搜索不适合较大的数据集,这里的“较大”一般指多大呢?我有一个90000多条数据的数据集用Grid Search搜索knn的最佳参数,但是跑很久连一条信息都打不出来?这种情况下又该如何获得模型的最佳参数呢?

写回答

1回答

liuyubobobo

2022-11-05

不能一概而论。数据的大小,数据的维度,包括具体算法是什么,包括你的实验环境是怎样的,都会影响性能(而不仅仅是能靠数据的多少判断的。)90000 的数据规模虽然不能算大数据,但也不小了,我不知道你说的“很久”到底是多久,但是如果你的代码没有问题的话,我估计你的数据的维度也不小。


但整体而言,knn 本身就是非常慢的,并且在实践中,其实也并没有太大的意义。所以在这一章,我们主要是借助 knn 这样一个“非常简单的算法”,来讲清楚这些基本概念而已。


具体如果想估算性能的话,一个简单的方式就是先使用小数据量看性能。比如你先用一组参数,100 个数据,在你的环境下测试,看多长时间出结果,假设是 t。knn 是线性复杂度,你就能估算出来,对于 90000 条数据,大约需要 900t 的时间。进一步,如果你的网格搜索搜索三个参数,第一个参数有 k1 个选择,第二个参数有 k2 个选择,第三个参数有 k3 个选择,则整体网格搜索的时间大概需要 k1 * k2 * k3 * 900t 的时间。你可以这样简单做性能估算,然后看这个时间是不是在你的承受范围里。


最后,对于大数据,训练花时间本身就是非常正常的,这就是对于现代的机器学习来说,算力非常重要的意思。如果你在这条路上一直走下去,一台 16 核的服务器算一周时间是家常便饭。先使用小数据把算法调试好,再用全部数据做真正的计算,是必须的。


继续加油!:)

2
1
蛋包饭吃球球
感谢bobo老师!
2022-11-05
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2455 问题

查看课程