教程地址
学习教程:https://datawhaler.feishu.cn/docx/PJhrdU9keok760xnd4CceFB0nQd
https://datawhaler.feishu.cn/docx/PJhrdU9keok760xnd4CceFB0nQd#Lg34dENAUoD83SxdJwic23HknOe
学习笔记
总结:通过对两个机器学习案例的复现,大致了解了通过机器学习对数据构建预测模型的基本流程和方法,并学到了几个对模型就行改进的方法。但是对机器学习的理解还很表层,不会对整个流程做出较好的修改。
一、做建模之前,首先要对任务(目标和数据)有整体的了解,确定所需模型的种类
“科大讯飞锂离子电池生产参数调控及生产温度预测挑战赛” 所提供的数据为提供了电炉17个温区的实际生产数据,分别是电炉上部设定温度T1-1 ~ T1-17,电炉下部设定温度T2-1~T2-17,底部17组进气口的设定进气流量V1-V17,以及上部和下部实际温度(各17组),加上序号和时间两列信息,共87列,是一个26656*87的数据框。
任务目的是要根据上部、下部设定温度以及下部设定进气量,构建合适的模型,对上部和下部的实际测量温度值进行预测,输入和输出都属于连续随机变量,选择构建回归模型。
我的一些思考:
(若认识有不足之处,欢迎指出,十分感激)
建模之前查看任务要求和了解数据集。另外,不仅要了解任务要求和数据格式和内容,可能还需要了解任务相关的背景知识和实际情况。通过这样,可以更好的理解各个特征之间的联系,从而在后续训练模型时,建立可靠的特征。
学习群中有大佬提到,应该考虑所有给出的特征,包括时间也算作特征(在给出的Baseline中模型优化过程中,新增的“历史平移”和“窗口统计”特征就是考虑到了时间特征)。我认为通过这样将特征之间的联系也给考虑进去了,从而提高模型的性能。因为各个特征变量之间可能存在相互影响,比如相邻温区之间相互影响(群内朋友提出的猜想)。
但是特征变量太多,也不利于预测,群内有朋友提出可以对数据进行降维。这也是一个需要考虑到的问题,即特征太多,是否需要降维。这让我联想到,我在处理单细胞数据时,需要对数据进行PCA降维,以观察不同批次样本之间的主效应是否相同,以确保消除了批次效应。
二、机器学习的分类
案例中提到,对该数据适合采用回归的方法。因此了解到,机器学习有分类、回归、聚类三大方向。该案例希望根据设定温度和进气量得到实际温度的一个预测值
a. 回归方法是一种对数值型连续随机变量进行预测和建模的监督学习算法。使用案例一般包括房价预测、股票走势或测试成绩等连续变化的案例。
回归任务的特点是标注的数据集具有数值型的目标变量。也就是说,每一个观察样本都有一个数值型的标注真值以监督算法。
b. 分类方法是一种对离散型随机变量建模或预测的监督学习算法。使用案例包括邮件过滤、金融欺诈和预测雇员异动等输出为类别的任务。
许多回归算法都有与其相对应的分类算法,分类算法通常适用于预测一个类别(或类别的概率)而不是连续的数值。
假如我根据乳腺癌患者的各项指标,构建合适的模型,预测病人对某治疗手段是否有反应。这个例子就是一种分类的方法,目的是将病人区分为 有反应/无反应两种(或者更细一点,但终究是有限个类,为离散型)
c. 聚类是一种无监督学习任务,该算法基于数据的内部结构寻找观察样本的自然族群(即集群)。使用案例包括细分客户、新闻聚类、文章推荐等。
因为聚类是一种无监督学习(即数据没有标注),并且通常使用数据可视化评价结果。如果存在「正确的回答」(即在训练集中存在预标注的集群),那么分类算法可能更加合适。
三、对模型的评价,以及对模型的优化
在第一个案例中个,采用了MAE作为评估模型的指标。
MAE,全称是Mean Absolute Error,即平均绝对值误差,它表示预测值和观测值之间绝对误差的平均值,该值越小,说明模型的效果越好。
查阅资料了解到,在回归任务中,常见的评估指标(Metric)有平均绝对误差(Mean Absolute Error, MAE)、均方误差(Mean Square Error, MSE)、均方根误差(Root Mean Square Error, RMSE)、平均绝对百分比误差(Mean Absolute Percentage Error, MAPE)和决定系数(Coefficient of Determination)等
通过这些指标,我们能了解到模型的好坏,然后对模型做出改进。
通过教程,我学习到改进的方法有:
1、查看模型训练报告或者Loss曲线,设定合适的迭代次数,防止过拟合;
可以利用lightgbm自带的early_stopping_rounds参数。
2、构建新的特征(因为特征之间并不是孤立的,可能存在横向和纵向上的联系,第一部分有提到);
在特征选择方面,目前给出的特征仅仅是单独对时间处理,与对流量\上\下\部温度设定进行处理,并未结合时间与其他特征的关系,可以尝试自己构建合理的新特征
3、 参数设定
此次基线没有做精确的调参处理,因此可以调参的范围还是挺大的,常用的搜索参数策略有两种:
-
网格搜索(Grid Search):这是一种传统的参数调整方法,它会测试指定参数的所有可能组合来找出最佳参数。但是,当参数空间较大时,这种方法可能会消耗大量计算资源和时间。
-
随机搜索(Random Search):与网格搜索相比,随机搜索不会测试所有的参数组合,而是在参数空间中随机选择一定数量的参数组合进行测试。尽管随机搜索可能无法找到最优的参数组合,但在计算资源有限的情况下,它是一个有效的选择。
4、尝试构建新的模型;
我们此次基线采用的是LightGBM,我们也可以试试XGBoost, Adaboost, Catboost等等的模型,并且也可以使用深度学习的方法构建循环神经网络来处理此次任务,因为本质是一个时序任务,在采用机器学习的同时也可以保存模型的参数配置,尝试进行模型集成的训练。
5、假设数据不够,可以通过采用交叉验证的方式扩大数据量,比如简单交叉验证、S折交叉验证以及留一交叉验证
数据量太少怎么办,请认准交叉验证_数据样本量太少怎么做预测-CSDN博客https://blog.csdn.net/weixin_40431584/article/details/105529185
6、 后处理
对已经给出的csv文件仍然可以分析其趋势,抓住评估的关键来调整文件内容使得结果更加精确。
7、 迭代步数
目前设置的迭代步数为200轮,其实这对于某些预测数据来说是不够的,可以尝试自己增大迭代步数