关于提升机器学习算法做预测回归任务精度的方法分享

关于提升机器学习算法做预测回归任务精度的方法分享

1. 问题的来源

​ 目前做过一些小数据集(100-1000)的预测任务,经常会出现一个问题:拿到数据后,写完模型代码,然后运行测试,发现R2很低,MAE之类的指标也很高。

​ 这个时候,会发现:单纯调整模型参数并不能提高模型精度。

​ 而这个问题,就是今天想要探讨的问题。

2. 方法分享

​ 这里仅分享我自己目前能够想到的方法,如果大家还有其他方法,欢迎补充在评论区,让后来的人可以少走一些弯路。

​ 我觉得这个问题出现的根本原因在于:数据集。现在很认可一句话,做这种机器学习的工作,80%的时间都在处理数据,20%的时间在调参和写代码。

​ 比如,我现在有一个700条的数据集,但是只有5个特征,其中一个还是目标变量。这个时候,即使数据量看着还不错,但4个特征所包含的信息有限,模型训练后的泛化能力大概率很弱,除非你的数据隐含的关系非常简单,不然大概率R2都非常低。

​ 意识到"模型本质学的是数据的信息",当你数据包含的信息越多的时候,模型自然能够学习到的东西也越多,最终的泛化能力自然也就越高。

​ 因此,提高精度的本质是提高数据信息量,体现在具体方法有如下:

  1. 新增物理特征 :纯数学特征可能效果不好,或者存在天花板。可以引入一些更具有物理意义的复合特征。本质上来说是增加信息含量,因为单纯的数字可能包含的信息有限,因此需要人为增加信息量。
  2. 去除某些杂糅信息特征:有的时候,并不是越多信息越好,有的信息如果本身是噪声与没有意义的特征,可以抛去尝试,看看效果如何,如果没有提升或者减弱了再加上即可。
  3. 构建新的目标变量 :有的时候,原本的目标变量可能区分度不够或者其他原因,可以构建出新的目标变量,更具辨识度(比如对数化处理,注意训练前对数化,预测的时候要将预测输出的还原,然后进行模型的评估
  4. 聚类公共数据点:把一些具有类似特征的数据聚类在一块,相当于新增了数据列,具有更多信息和辨识度
  5. 明确上限与优先性:如果特征数很少、数据量小,有的时候的确预测效果存在一定上限,难以准确预测;如果存在多个数据集的时候(数据集的数据大小由少变多),优先调整数据大的,明确最优结果,才能去评价其他相对更差的结果。
  6. 删除数据异常点 :如果目标变量具有物理意义,比如输入的是总重量,预测的是长途过程中损失后的最终重量,如果目标变量(即最终重量)比总重量还大,或者小特别多,可以标记为异常数据而去掉。当然,是否去掉还是要根据业务场景来判断

3. 补充

​ 关于派生特征的构造:

  1. 任务是有领域的,有的时候可以根据领域知识进行构建,比如将某两个特征相加或者相除,得到总的量或者比例之类的特征
  2. 听从AI的建议,AI的知识库很丰富,常见的简单新特征构建,它基本都可以给出建议

根据我自己的尝试:新增特征是最有用的手段了,如改变目标变量等方法效果不是确定,偶尔能提升,偶尔也会变差。

相关推荐
不正经学生1 小时前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
毕竟是shy哥4 小时前
计算YOLO数据集中每个类的目标数
算法·yolo·机器学习
M78佐菲4 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
VL——MOESR5 小时前
【具身智能】VLA论文阅读随笔
论文阅读·人工智能·机器学习·具身智能·vla
晊晌_h5 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法
方银的技术分享6 小时前
十五、AI训练师:机器学习-过拟合与欠拟合
人工智能·深度学习·机器学习
我找到地球的支点啦6 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
罗西的思考6 小时前
【OpenClaw具身硬件】ZeroClaw 源码阅读笔记(3)--- RAG
人工智能·算法·机器学习
浪里镖客7 小时前
位姿转换矩阵写法-个人习惯(计算机理解其实是相反的)
线性代数·算法·矩阵
戴西软件8 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d