阿里大航杯AI电力大赛比赛分享及数加平台,机器学习pai使用经验

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 本文主要以阿里云大航杯“智造扬中”电力AI大赛 数据为背景,讲述博主自己的比赛经历以及数加平台和机器学习pai的使用经验

1. 背景

    本文以阿里大航杯AI电力大赛为背景,讲述数加平台及机器学习pai的使用。大赛聚焦电力市场营销活动业务难点——企业用电需求预测,开放了扬中市高新区1000多家企业的历史用电量数据,要求参赛者通过模型算法精准预测该地区下一个月的每日总用电量。

2. 数据介绍
本次竞赛主要数据源为企业用电量表Tianchi_power2,阿里云抽取了扬中市高新区的1000多家企业的用电量(数据进行了脱敏),包括企业ID(匿名化处理),日期和用电量。具体字段如下表:
screenshot
考虑到天气对企业用电量的影响,同时也提供了天气数据。具体字段如下:
screenshot

其中dt 字段表示日期,temperature_bigh字段表示当天最好温度,temperature_low字段表示当天最低温度,weather字段表示天气情况,wind_direction字段表示风向,wind_direction字段表示风级。
通过对数据观察发现节假日对用的量的影响非常大,于是加入了节假日特征及季节特征。
第一季数据下载:竞赛数据

3 解决方案概述
本赛题提供了企业用户每天的用电量,记录的时间区间是2015.01.01至2016.11.30,需要预测的是2016年12月份企业用户每天的用电总量。通过分析用户的用的量,我们发现174,175,1416三家企业每天的用电量比较高,三家用电总和约为总电量的1/2,其中1416一家用电约占总用电量1/4,我们首先根据用户id,将以上三家划分出来,然后提取了用户相关的特征、天气相关的特征,节假日相关的特征。针对全部企业用电及划分的企业用电,最后训练了XGBoost(最后未使用),4个GBDT(每份)进行模型融合。

3.1特征工程
比赛过程中使用的特征:
企业用电量特征:
Record_date,power_consumption,year,month,day,dow,mean_1,d_max_1,d_min_1,d_median_1,mean_2,d_max_2,d_min_2,d_median_2,mean_avg,mean_dist,d_max_avg,d_max_dist,d_min_avg,d_min_dist,d_median_avg,d_median_dist,row_n
天气特征(仅使用了温度特征):
tem_h,tem_l,tem_avg,tem_dist
节假日季节特征:
season,holiday
特征提取使用的是ide,提取步骤如下:
1.在左边首先选择任务开发-->自己建立的文件夹(有多位队员可以创建自己的文件夹,方便使用)-->右击新建任务(这里使用的ODPS_SQL,因为sql最容易上手)-->键入脚本名称即可。
screenshot
2.在编辑框中,编辑自己的sql语句(建表时注意不要与队友所建表名称一致,否则将无法更新表中字段,这里系统是不提示表名是否重复的),然后运行即可。
screenshot
特征提取的全部sql语句(sql):特征提取

Tips:
在使用ide过程中,可以在函数管理选项中,查看可以使用的函数及使用方法
screenshot
可以在表查询选项中可以查看已经创建的表(自动同步在机器学习pai平台创建的表):
screenshot
3.2模型的设计及融合
通过分析174,175,1416企业,对174号企业短时间用电较为稳定,博主直接使用了上个月均值作为预测值(短期mae为4k左右);对175号企业训练4个gbdt模型,然后使用胜者通吃策略融合模型(mae为10k左右);1416号企业用电较为异常很难使用模型准确预测,同时对总的用电影响较大,为减少误差,使用15年12月数据加上66000(16年11月均值与15年12均值差值的1/2);对剩余企业使用4个gbdt模型预测,对预测值求和最为最终预测值。然后对整体全部企业的用电总和使用4个gbdt模型预测。最后,对两组预测值使用0.65,0.35的权值融合。
模型的设计主要在机器学习pai上完成,建立步骤如下:

Gbdt模型的训练及数据预测

  • 实验的创建:
    在首页中可以选择从已有实验的模板创建也可新建空白实验,本实验选择新建空白实验:

screenshot
上传节假日数据:
screenshot
然后添加字段:
screenshot
按照下图方式,读取数据表:
screenshot
使用与读取数据表同样的方式,拖拉所需控件。本实验中训练所用结构图如下:
screenshot
其中sql脚本是为了剔除过年一段时间的数据,语句如下:
select
record_date,

power_consumption,
year,
month,
day,
dow,
mean_1,
d_max_1,
d_min_1,
d_median_1,
mean_2,
d_max_2,
d_min_2,
d_median_2,
mean_avg,
mean_dist,
d_max_avg,
d_max_dist,
d_min_avg,
d_min_dist,
d_median_avg,
d_median_dist,
tem_h,
tem_l,
tem_avg,
tem_dist,
row_n,
holiday,
season

from ${t1} where record_date<='2016-01-30'or record_date>='2016-02-19'

gbdt的训练参数(4个模型仅在树的数量,学习率,最大叶子树,树深进行了微调,其它参数一致):
screenshot
screenshot
本实验gbdt预测部分如下:
screenshot
对四个模型的预测结果融合部分sql语句:
select
concat(year,'/',month,'/',day) as predict_date,

(prediction_a+prediction_b+prediction_c+prediction_d)/4 as power_mean,
prediction_a,
prediction_b,
prediction_c,
prediction_d

from ${t1} ;

select
predict_date,
(case when abs(prediction_a-power_mean)when abs(prediction_b-power_mean)when abs(prediction_c-power_mean)when abs(prediction_d-power_mean)end) as prediction
from ${t1};

Xgboost 模型的训练及预测
使用pai命令在IDE中实现,参数设置参照gbdt,pai命令如下:

drop table if exists xgb_pred_1;
DROP OFFLINEMODEL IF EXISTS xgboost_1;
-- train
PAI
-name xgboost
-project algo_public
-Deta="0.01"
-Dobjective="reg:linear"
-DitemDelimiter=","
-Dseed="0"
-Dnum_round="3500"
-DlabelColName="power_consumption"
-DinputTableName="tianchi_power_sum_min_input_1"
-DenableSparse="false"
-Dmax_depth="8"
-Dsubsample="0.4"
-Dcolsample_bytree="0.6"
-DmodelName="xgboost_1"
-Dgamma="0"
-Dlambda="50" 
-DfeatureColNames="year,month,day,dow,holiday,season,mean_1,d_max_1,d_min_1,d_median_1,mean_2,d_max_2,d_min_2,d_median_2,mean_avg,mean_dist,d_max_avg,d_max_dist,d_min_avg,d_min_dist,d_median_avg,d_median_dist,tem_h,tem_l,tem_avg,tem_dist,row_n"
-Dbase_score="0.11"
-Dmin_child_weight="100"
-DkvDelimiter=":";

-- predict
PAI
-name prediction
-project algo_public
-DdetailColName="prediction_detail"
-DappendColNames="year,day"
-DmodelName="xgboost_1"
-DitemDelimiter=","
-DresultColName="prediction_result"
-Dlifecycle="28"
-DoutputTableName="xgb_pred_1"
-DscoreColName="prediction_score"
-DkvDelimiter=":"
-DfeatureColNames="year,month,day,dow,holiday,season,mean_1,d_max_1,d_min_1,d_median_1,mean_2,d_max_2,d_min_2,d_median_2,mean_avg,mean_dist,d_max_avg,d_max_dist,d_min_avg,d_min_dist,d_median_avg,d_median_dist,tem_h,tem_l,tem_avg,tem_dist,row_n"
-DinputTableName="tianchi_power_sum_min_output_2"
-DenableSparse="false";

select * from xgb_pred_1;

同样训练4个xgboost模型,在pai下进行结果融合(Tip:ide下与pai下的数据表是同步的):
screenshot
其中的Sql语句与gbdt融合所用语句一致。

在使用pai的过程中有什么疑问可以查看帮助文档:
screenshot
总结
在pai界面中,IDE下具有与pai同样的功能,并且数据是同步的,但pai下有更好的可视化效果,可根据自己的喜好自行选择。
致谢
作为一名天池新手,第一次参加阿里云的天池竞赛,成功的被比赛给吸引了,在比赛的这一个月的时间里收获颇多,认识了好多大神,还有阿里云的师兄们感谢你们的帮助。本想最后一天放大杀器,没想到大家都提高了那么多,感觉像是参加了假比赛,遇到了假数据(笑哭)。最后贴上我们的成绩。

screenshot

相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
555 109
|
2月前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
1070 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
2月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
1186 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
2月前
|
人工智能 数据处理 云栖大会
云栖现场|让评测与标注成为AI进化引擎!阿里发布全新评测平台,3大创新评测集亮相
云栖现场|让评测与标注成为AI进化引擎!阿里发布全新评测平台,3大创新评测集亮相
303 9
云栖现场|让评测与标注成为AI进化引擎!阿里发布全新评测平台,3大创新评测集亮相
|
3月前
|
机器学习/深度学习 数据采集 人工智能
阿里开源即封神,一上线就斩获4000+ star背后的真相,WebAgent多步骤智能网搜神器,颠覆你对AI的信息检索印象!
WebAgent 是阿里巴巴开源的多步骤智能网搜神器,包含 WebWalker、WebDancer、WebSailor 等模块,支持复杂推理与长上下文信息检索,GitHub 已获 4.7k star,颠覆传统 AI 搜索方式。
425 1
|
机器学习/深度学习 人工智能 安全
探索AI的未来:从机器学习到深度学习
【10月更文挑战第28天】本文将带你走进AI的世界,从机器学习的基本概念到深度学习的复杂应用,我们将一起探索AI的未来。你将了解到AI如何改变我们的生活,以及它在未来可能带来的影响。无论你是AI专家还是初学者,这篇文章都将为你提供新的视角和思考。让我们一起探索AI的奥秘,看看它将如何塑造我们的未来。
345 3
|
6月前
|
机器学习/深度学习 人工智能 供应链
从概念到商业价值:AI、机器学习与深度学习全景指南
在这个科技飞速发展的时代🚀,人工智能正以惊人的速度渗透到我们的生活和工作中👀。但面对铺天盖地的AI术语和概念,很多人感到困惑不已😣。"AI"、"机器学习"、"深度学习"和"神经网络"到底有什么区别?它们如何相互关联?如何利用这些技术提升工作效率和创造价值?
|
机器学习/深度学习 人工智能 算法
探索AI的魔法:机器学习与深度学习的奥秘
【8月更文挑战第27天】在这篇文章中,我们将深入探讨人工智能的两个重要分支:机器学习和深度学习。我们将首先理解它们的基本概念,然后通过Python代码示例,展示如何应用这些技术解决实际问题。无论你是AI新手,还是有经验的开发者,这篇文章都将为你提供新的知识和启示。让我们一起开启这场AI的魔法之旅吧!
|
机器学习/深度学习 人工智能 算法
AI人工智能(ArtificialIntelligence,AI)、 机器学习(MachineLearning,ML)、 深度学习(DeepLearning,DL) 学习路径及推荐书籍
AI人工智能(ArtificialIntelligence,AI)、 机器学习(MachineLearning,ML)、 深度学习(DeepLearning,DL) 学习路径及推荐书籍
859 0

相关产品

  • 人工智能平台 PAI