如何用大数据开发套件周期调度机器学习算法-阿里云开发者社区

开发者社区> 传学> 正文

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

简介: 讨论如何用大数据的开发套件的调度功能和机器学习产品,进行自动化调度的机器学习计算。
+关注继续查看

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

场景假设

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

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

数据准备

我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},):
screenshot
朴素贝叶斯的配置如图:
screenshot
咱们先跑一次这个模型,可以看到预测的结果如图:
screenshot
Iris Setosa的数据和其他的2个分类的区分度比较大,所以预测都是准的。但是Iris Virginica和Iris Versicolour之间区别不大,甚至有一些交集,就会有一些临界点的数据容易预测不准。下图来自机器学习产品的散点图模块。
screenshot
训练的结果咱们也看下(这里就截了混淆矩阵和统计信息):
screenshot
screenshot

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

定时调度

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

我们需要先创建一个工作流,在工作流里配置任务,如图:
screenshot
对于机器学习组件,我们双击组件,进去选择之前配置的实验即可。后续的任务的测试,发布流程和大数据开发套件里的其他组件的用法是一样的。

其他

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
我为什么要写:新书《离线和实时大数据开发实战》
新书《离线和实时大数据开发实战》 购买链接(机械工业出版社官方淘宝店铺) 感谢@薛奎 和@空无 大大写推荐书评。 空无和薛奎的书评 大数据技术一直是个领先互联网公司的必备核心技术,阿里巴巴最近10年一直在持续加大投入,并将大数据处理技术用于大量的大规模业务场景。每年双十一对实时、离线技术也都是极限的考验,而作者就是在这样的环境下成长起来,基于真实业务场景钻研相关的技术,既有实战也有
3107 0
排序算法大数据量测试代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Diagnostics; using System.IO; namespace Sort { class Program
829 0
基于大数据开发套件的增量同步策略
因为近期遇到用户在做ETL操作导入数据到MaxCompute的时候,对如何设置数据同步策略有疑惑,所以今天第一波我们来聊一下数据的同步策略,根据数据的特性,看看哪些数据适合增量同步,哪些适合全量同步,又是如何实现的?请认真看完下面的介绍,这些问题都不是事儿。
4332 0
任务调度:时间轮算法经典案例解析及应用实现
平时大家的工作中应该会遇到较多需要在某个时间点执行某个任务,比如对运维来说,定时数据库的备份,日志和监控信息的抓取;比如业务系统,某个时间点给某个人群用户发放优惠券,甚至从操作系统角度,人机交互进程、视频播放的实时进程、批处理的后台进程等进程间的调度。。。 所以如何将这些任务高效、精准的调度?是任务调度系统中最重要的命题,当然在业务系统中一个完善的任务调度系统是很复杂的,需要具备能调度、可视化管理、过程可追溯、结果可分析、持久化、高可用等特性,这篇文章主要讨论任务调度逻辑,其余的内容我们后面文章探讨。
111 0
8月22日云栖精选夜读 | Java开发者必看!机器学习开发库精选!
随着互联网发展和消费者习惯的变化,包括批发、零售及一些生活服务业在内的实体流通企业,由于经营方式较为传统,多以物业租金收益或联营扣点方式为主要盈利模式,无法从商业经营本身获利,这局限了其根据消费者需求对经营模式进行转型创新的探索。
2561 0
前端开发者的机器学习平台Pipcook产品介绍
Pipcook 用于机器学习及其工程的 JavaScript 应用程序框架。
83 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和END之间的语句 DO WHILE 重复执行直到条件为假则退出循环 DO UNTIL 重复执行直到条件为真则退出循环 DO OVER 对隐含下标
1252 0
+关注
传学
传学,专注于大数据领域的解决方案
27
文章
4
问答
来源圈子
更多
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载