请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

逻辑回归算法提示算法不收敛

样本特征为5个,标签有6种,使用多项式逻辑回归,多项式次数degree设置为5,L2正则化,OvO多分类,运行的时候警告线性算法没有收敛,而且分类准确度很低(百分之45左右,kNN可以达到80),。是数据太复杂了维度太多了吗?degree设置为10后,直接超出10000的迭代次数限制了。
老师我想问一下,在网格搜索合适的degree、C的时候,搜索范围设置在多少比较合适?造成算法预测准确度这么低的原因会有哪些?图片描述图片描述

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2021-12-18 01:04:31

数据量大概多大?


==========


如果你有 5 个特征,degree = 5,就意味着有 5^5 = 3125 个特征了。这个特征量就已经远远大于你现在的数据量了。而如果 degree = 10,就生成了 9765625 个特征,这个特征量太大了,妥妥的维度灾难。(3125 个特征已经肯定维数灾难了。)


要想获得较好的结果,在大多数情况下,至少数据量要大于特征量,最好的情况下,数据量应该是特征量的 10 倍乃至 100 倍以上。(对比你说获得比较好的效果,degree = 2,就是有 25 个特征,1400 的数据量是 25 的 56 倍左右。)


如果你想要使用多项式特征,就要增大数据量。增大到什么地步?请参考上面我计算出的特征数。


从这些数据,你也可以看出来,实际上在大多数时候,多项式特征都不是一个好的特征工程方式。即使使用,degree = 3 撑死了。(对于诸如图像数据这种高维数据,连 degree = 2 都没有用。)多项式特征是一个极好的介绍“过拟合”概念的方式(所以这个课程在介绍完多项式特征以后,马上介绍过拟合。)但它不是一个好的特征工程方式。


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 luluoverflow #1
    1400条,我使用网格搜索,C=3800,degree=2的时候准确率最高,在百分之58左右,但是需要把max_iter设置为10000算法才能收敛。。。耗时特别长,是数据量太大了吗
    回复 有任何疑惑可以回复我~ 2021-12-18 09:53:47
  • 提问者 luluoverflow #2
    老师我刚刚设置成OvO分类,max_iter设置为10000,使用网格搜索C=[3000, 3200, 3400, 3500, 3600, 3800, 4000], degree=[1, 2],最后搜索的最优C=3800,degree=2,平均准确率提高到了67,不过当我把degree范围扩大到[1. 2. 3. ],就偶尔会(运行10次警3次)警告线性算法没有收敛(warn('The line search algorithm did not converge', LineSearchWarning),是不是不能再尝试更大的degree值了,还有别的办法吗?
    回复 有任何疑惑可以回复我~ 2021-12-18 10:24:18
  • 提问者 luluoverflow #3
    另外老师,l1正则化和OvO分类都有各自的solver要求,那如果想同时使用,solver应该设置成什么呢
    回复 有任何疑惑可以回复我~ 2021-12-18 10:39:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信