摘要: 本贴讨论实验效果不好的应对措施.
讲道理, 论文写作本身只涉及包装, 即将已经做好实验的创新性成果写成一篇论文. 实验效果不好, 是方案设计的问题. 但多数研究者都会遇到这个问题, 所以还是在这个板块讨论一下.
对于机器学习而言, 实验效果主要受几方面的影响:
方案是否合理. 虽然结果无法控制, 但方案本身有设计理念, 有物理意义. 例如, 决策树旨在使得树最小, 以防止过拟合已有样本; 线性回归旨在最小化l 2l_2l2 损失; 岭回归旨在压制线性回归的过拟合, 并且保证有解析解 (矩阵可逆). 注: 王熙照老师认为, 机器学习的核心就只有一件事情: 防止过拟合.方案是否与数据集匹配. 有些方案只适用于稠密数据, 即不能有太多的缺失值; 有的方案只适用于类平衡数据, 即正负样本数量差距不大. 如果不匹配, 很可能导致效果差.运气. 平常代码讲究的是正确性, 有个正确与错误的判断, 例如把一组数相加, 结果是否正确, 是一个确定的事情. 然而, 机器学习的结果不是确定的. 即使你的代码正确地贯彻了你的意图, 你也不能幻想自己的方案一实现就获得很好效果 (相当于到河边第一次抛杆就钓到鱼, 你以为它们这么饿呀). 科研需要的是试错与探索, 10 个 idea 有一个效果好就非常不错了.因此, 效果不好的时候, 可以先哭会儿, 然后考虑几个解决方案:
设计替换方案 (alternative approach). 把算法的几个部件分别用类似的方案替换. 例如, 将线性分类器换成神经网络, 将特征矩阵用 PCA 降维. 有的技术引入之后, 反而使得性能降低, 当然就应该丢掉. Ablation study 用于保证你选择的每个模块、增加的每个技术都起到了正向的作用.观察算法所适用数据的特点. 一个算法的适用范围有局限性, 这并不一定是坏事. 甚至我们还可以把适用和不适用的数据集分开, 结果放在两个表里面, 进行详细讨论.使用各种评价指标. 有可能某些算法在某些指标上表现更好. 有一些常用的指标, 或者更先进的指标. 例如, Accuracy, F1, NDCG, AUC 都有其适用的算法和任务.调参. 比如神经网络的层数, 每层的节点数据, dropout 比例. 很多人就是网络调参师. 当然, 做更加原创的工作, 比天天调参有前途得多.输出中间结果. 这个与软件测试中的单元测试类似, 最终结果也是从中间结果来的. 只有深入了解代码的中间结果, 才能获得