如何用大数据开发套件周期调度机器学习算法

机器学习能发现数据下隐藏的各种客观规律,对提高产品的智能化程度,提升用户满意度等方面有很大的帮助,这里不再赘言。那么怎么实现一个机器学习系统,并和大数据的开发套件上的调度结合起来实现自动化呢,本文就一些测试数据做一个例子。

场景假设

我这里用著名的鸢尾花数据集作为测试数据。那就假设我是一个植物研究院,希望根据已经有的一些花的数据和分类,判断新收集上来的样本的花的类型(类似的,企业数据里可以判断用户会不会买,会不会投诉甚至流失)。这里用的算法就先简单一些,用朴素贝叶斯。

使用场景是,假设我们的项目里已经有一些历史的花的数据,每天训练可能还会有一些更新。希望针对这些训练数据,做出一个算法模型,预测新采集到的花的类型。

数据准备

我Iris表存放当天的全量训练集。而预测集,用Iris_daily表做每天增量同步。具体每天配置增量同步的方法,可以参考这个例子。比如1月18日凌晨做的计算,会计算1月17日的全量数据。那就把17日的数据放到ds='20170117'这个分区里。

表结构如下
odps@ >desc iris_daily;

+------------------------------------------------------------------------------------+
| TableComment:                                                                      |
+------------------------------------------------------------------------------------+
| CreateTime:               2017-01-18 13:31:40                                      |
| LastDDLTime:              2017-01-18 13:31:40                                      |
| LastModifiedTime:         2017-01-18 13:39:45                                      |
+------------------------------------------------------------------------------------+
| InternalTable: YES      | Size: 1960                                               |
+------------------------------------------------------------------------------------+
| Native Columns:                                                                    |
+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| sepal_length    | double     |       |                                             |
| sepal_width     | double     |       |                                             |
| petal_length    | double     |       |                                             |
| petal_width     | double     |       |                                             |
| category        | string     |       |                                             |
+------------------------------------------------------------------------------------+
| Partition Columns:                                                                 |
+------------------------------------------------------------------------------------+
| ds              | string     |                                                     |
+------------------------------------------------------------------------------------+

--浏览一下前几条数据:
+--------------+-------------+--------------+-------------+------------+------------+
| sepal_length | sepal_width | petal_length | petal_width | category   | ds         |
+--------------+-------------+--------------+-------------+------------+------------+
| 5.1          | 3.5         | 1.4          | 0.2         | Iris Setosa | 20170117   |
| 4.9          | 3.0         | 1.4          | 0.2         | Iris Setosa | 20170117   |
| 4.7          | 3.2         | 1.3          | 0.2         | Iris Setosa | 20170117   |
+--------------+-------------+--------------+-------------+------------+------------+

模型训练

我们先在机器学习产品里搭建一个算法。看一下效果。画布区的配置可以参考下面截图(这里需要说明的是,在机器学习画布区里测试的时候yyyyMMdd测试的时候业务期是今天,但是实际上企业上我们都是今天跑昨天的数据,业务期也是昨天的,可以在画布区把任务先配置成"ds=@@{yyyyMMdd-1d}",到后面嵌入到大数据开发套件前再改成ds=@@{yyyyMMdd},):

朴素贝叶斯的配置如图:

咱们先跑一次这个模型,可以看到预测的结果如图:

Iris Setosa的数据和其他的2个分类的区分度比较大,所以预测都是准的。但是Iris Virginica和Iris Versicolour之间区别不大,甚至有一些交集,就会有一些临界点的数据容易预测不准。下图来自机器学习产品的散点图模块。

训练的结果咱们也看下(这里就截了混淆矩阵和统计信息):

至此机器学习实验的配置结束。如果觉得这个例子有点简单,还没能理解机器学习的配置方法,可以在创建实验的时候使用模板来创建,里面已经把数据、实验配置都弄好了,更容易理解算法的用法。

定时调度

毕竟我们不能每天去手工跑一次实验,我们可以用大数据开发套件创建一个任务,把数据的前文提到的数据导入、后续的导出等串起来。

我们需要先创建一个工作流,在工作流里配置任务,如图:

对于机器学习组件,我们双击组件,进去选择之前配置的实验即可。后续的任务的测试,发布流程和大数据开发套件里的其他组件的用法是一样的。

其他

可能大家在机器学习的控制台有看到一个在线预测的功能,这是一个后续会推出的新功能。我们看到现在我们的预测是离线算好的。如果是实时预测不是更Cool嘛。比如前面提到的购买行为、用户投诉行为的预测,都需要较好的时效性。后续通过在线预测的功能就可以实现这个功能啦~

看到这里,可能你还有一个疑问,为什么我不用更加常见的企业个性化推荐场景做例子呢?自己使用底层产品自己搭建固然可以,但是更好的方法是使用已经有的产品,省的自己重复造轮子,把资源更多地投入到业务上。所以可以参考推荐引擎,或许更加适合你。

本文使用的产品涉及大数据计算服务(MaxCompute),地址为https://www.aliyun.com/product/odps
机器学习 https://data.aliyun.com/product/learn
配合大数据开发套件 https://data.aliyun.com/product/ide 完成的。
如果有问题,可以加入我们的钉钉群来咨询

时间: 2024-10-30 13:39:19

如何用大数据开发套件周期调度机器学习算法的相关文章

【大数据开发套件调度配置实践】——不同周期任务依赖配置

大数据开发过程中常遇到不同运行周期的任务进行依赖,常见 天任务依赖小时任务. 小时任务依赖分钟任务 .那么如何通过大数据开发套件开发这两种场景呢? 本文将从这两个场景出发,结合调度依赖/参数/调度执行等,介绍不同周期调度依赖的最佳操作实践. 再此之前,我们先明确几个概念: 业务日期:业务数据产生的日期,这里指完整一天的业务数据.在大数据开发套件里任务每天能处理的最近的完整一天业务数据是昨天的数据,所以业务日期=日常调度日期-1天. 依赖关系:依赖关系是描述两个或多个节点/工作流之间的语义连接关系

基于大数据开发套件的增量同步策略

今天我们来讨论如何使用大数据开发套件进行增量同步. 我们把需要同步的数据,根据数据写入后是否会发生变化,分为会变化的数据(人员表比如说,人员的状态会发生变化)和不会发生变化的数据(一般是日志数据).针对这两种场景,我们需要设计不同的同步策略.这里以把业务RDS数据库的数据同步到MaxCompute为例做一些说明,其他的数据源的道理是一样的.根据等幂性原则(也就是说一个任务,多次运行的结果是一样的,这样才能支持重跑调度.如果任务出现错误,也比较容易清理脏数据),我每次导入数据都是导入到一张单独的表

大数据开发套件中数据同步-日志报错回滚信息的一些问题总结

在使用大数据开发套件时最常用的就是数据同步模块,工单里最常见的问题就是其中数据同步的问题,这里总结一些常见一些从MaxCompute(原名ODPS)到其他数据源的同步任务报错案例,主要是日志中出现数据回滚写入的问题. 那首先看下日志中数据回滚的原因,当数据写入rds或者hybridDB等一些支持事务的数据库中,数据批量写入,一旦由于各种原因没有写入成功,这个批次的数据会回滚重新写入,如果再次写入失败,就会报脏数据的错误导致任务失败.数据写入失败可能是以下原因导致回滚.1,脏数据(数据值超过数据类

阿里云大数据开发套件 新手不得不面对的问题(持续更新)

概念 大数据开发套件(Data IDE) 是阿里云数加重要的Paas平台产品,是"DataWorks"中最重要的核心组件.提供全面托管的工作流服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索.https://data.aliyun.com/product/ide 大数据开发套件(Data IDE) 基于MaxCompute作为核心的计算.存储引擎,提供了海量数据的离线加工分析.数据挖掘的能力. 一.计费问题 Q:大数据开发套件贵不贵? A:大数据开发套件不收费,但涉及SQ

大数据开发套件-数据集成-云mongo跨区域如何同步到Maxcompute

在大数据开发套件中是可以实现mongo同步到Maxcompute. 数据集成文档:https://help.aliyun.com/document_detail/47677.html?spm=5176.7750354.6.599.jGn50I后端是通过华东1区的调度资源进行数据的调度传输.但是如果阿里云mongo不在华东1在其他区域,使用默认资源组就不能正常同步了.那么就需要用户通过自己添加调度机器进行同步.1,准备一台调度服务器,要求必须和云mongo相同网络类型相同的区域.官方文档:http

【大数据开发套件调度配置实践】——调度任务各种周期配置和调度形态

数加·大数据开发套件目前支持任务调度周期有五种:天.周.月.分钟.小时.本文将介绍这五种周期的配置和调度形态. 调度规则--调度任务是否能运行起来要满足的条件: 上游任务实例是否都运行成功.若所有上游任务实例都运行成功则触发任务进入等待时间状态. 任务实例定时时间是否已经到.任务实例进入等待时间状态后会check本身定时时间是否到,如果时间到了则进入等待资源状态: 当前调度资源是否充足.任务实例进入等待资源状态后,check当前本项目调度资源是否充足,若充足则可以运行起来. 天调度任务 天调度任

大数据开发套件—调度运维常见问题

我们在进行大数据开发过程中,会遇到各种问题,本文将定期收集整理一些在使用阿里云数加 大数据开发套件 时遇到的常见问题,供大家参考~ Q. 如果之前提交的任务修改后再次提交,是否会影响当天的任务调度? A. 根据修改的内容来确定是否会影响:如果修改的只是 sql 语句,则不会影 响:如果修改自定义参数和调度配置以后重新提交的,都会影响当天的任 务调度 . Q. 创建一个新的工作流任务,如果保存后没有提交任务,是否可以进行测试? A. 仅保存后没有提交,sql 任务可以在本地运行,但不可以提交测试

阿里云大学精品课程:深入理解阿里云数加大数据开发套件Data IDE-基本知识

阿里云大学精品课程:深入理解阿里云数加大数据开发套件Data IDE-基本知识 写在最前面 >>>进入了解更多>>>阿里云数加·MaxCompute大数据计算服务. 基于阿里云数加·MaxCompute构建大数据仓库的开发工具利器Data IDE<MaxCompute(原ODPS)开发入门指南--数据开发工具篇>,那么基于Data IDE进行数据开发想必也遇到一些不少的困惑,就自己在培训过程中的一些经验或者说阿里集团内的踩坑之路与大家在此分享,也欢迎拍砖.

【大数据新手上路】“零基础”系列课程--如何通过大数据开发套件Data IDE玩转大数据

免费开通大数据服务:https://www.aliyun.com/product/odps 老板每天都要出这些业务数据(销售总额.总交易量.总点击次数.总加入购物车次数.总加入收藏夹次数...),我得想个一劳永逸的方法了- 幸好,我有数加神器大数据开发套件Data IDE,搞定业务工作流调度,每日定时自动执行任务,分分钟输出计算结果. 妈妈再也不用担心我焦头奋战了-- 本教程是一个大数据开发套件Data IDE零基础教程,通过Data IDE将多源异构的数据集导入云端MaxCompute,进行计