文档章节

什么?多个体多维度分析效率能从3天压缩到30分钟?

openfea
 openfea
发布于 2017/08/10 11:06
字数 1280
阅读 3
收藏 0
点赞 0
评论 0

在进行机器学习的时候,我们需要对单个体进行多维度分析,比如说在日志审计系统,我们需要对每一个操作账户进行操作次数统计,总操作次数统计,方差,极值,中值,突变度等计算。有时,也要计算非工作时间的访问,方差,极值,中值,突变度等数据。

过去的做法是,读取每一个账户的操作记录,然后分别计算一系列指标,最后通过cluster_foreach循环方式解决......

这种方式的缺点是显而易见的,10000个人需要计算10000次,实际的项目经验是百万人级别,集群任务过多对硬件的要求也比较大,项目执行起来难度就比较大。

在长期实践中,OpenFEA团队不断探索创新,引入numpy模块,创新性的解决了多个体多维度计算问题,在32万个体的总过2000万条记录上,使用该模块,在未使用集群的情况下,在30分钟时间内顺利计算了40个指标,充分展现了fea在数据分析领域的强大计算能力和极佳的便捷性。

在这里,笔者不打算介绍具体的项目,而是把计算过程中用的核心概念,核心方法展示出来,结合一个小数据,让大家在实际操作中具体的感受numpy模块是什么,能进行什么运算,怎么调用运算等,这样便于大家抓住本质。

1、numpy模块的高级运算——调用方法

原始数据如下:

1)和udf0.df_row_lambda 函数结合

a=@udf a by udf0.df_rowl with (lambda x:np.sum(x))

可以看见,np.sum()就是对整行求和

a=@udf a by udf0.df_row_lambda with (x:np.sum(x[:7]))

可以发现,x[0:7]就是对a行取前7列的意思

2)numpy模块的实质

提供了一个多维函数模块,28=np.sum(1,2,3,4,5,6,7)

可以通过lambda函数调用

2、numpy模块的高级运算——设定范围

原始数据如下:

1) 对第1行“取0到2求和”,第2行“取1到3求和”,...

a=@udf a by udf0.df_rowl with (lambda x:np.sum(x[x["start"]:x["end"]+1]))

可以看见,在lambda运算中,“运算元素”可以随意组合

2) 对第1行“取0到2求和”,第2行“取1到2的最大值”,...

l a=@udf a by udf0.df_rowl with (lambda x:np.sum(x[x["start"]:x["end"]+1]) if x["start"]%2==0 else np.max(x[x["start"]:x["end"]]) )

把if语句也套用进来了,处理的灵活性大大增强

3)对大于3的值求和

a=@udf a by udf0.df_rowl with (lambda x:np.dot(x[0:],x[0:]>3))

3、numpy模块的高级运算——错位运算

原始数据如下:

1)第一行的“1到3列”和“0到2列”错位相减,然后求和

(2-1)+(3-2)+(4-3)=3

a=@udf a by udf0.df_rowl with (lambda x:np.sum(np.array(x[x["start"]+1:x["end"]+2])-np.array(x[x["start"]:x["end"]+1])))

可以看到x[7]和x["start"]是同一个值

2)函数详解

np.array()函数实现了,把序列x[0:3]="1,2,3"转换成为矩阵(1,2,3)

np.sum()函数同时支持序列元素求和及矩阵元素求和

4、numpy模块的高级运算——必要说明

1)numpy模块中的方差,标准差的定义和fea基本运算中的agg_group模块中的定义不一致,全样本方差和样本方差不同(除以n还是除以n-1的差别)

2)numpy模块中average函数和其他函数的处理细节不是很一致,使用前需要验证,确认可以满足算法需求

5、numpy模块的高级运算——运算优势

1)把复杂的错位运算,变成一个lambda表达式,可以对百万级的运算个体同时计算某个测量指标,而不要分个体逐一计算,彻底解决机器学习中,个体多,维度多的分析计算需求。

2)可以和lambda函数,深度套用,灵活多变,非常适合科学计算。

3)语言接近矩阵语言,稍微有点矩阵知识即可灵活使用。

6、总结

1)通过上面的演示,相信大家可以通过lambda函数,顺利调用numpy模块,对数据进行切块分段计算,错位计算也都有了一定的认知。

2)需要提醒大家的是,数据分析本身就是很具有灵活性,在实际项目中,结果是否符合自己的期望,是否正确,很多时候不是“工具本身”说了算,而是“项目需求”要怎么做,确切搞明白每一段代码运算结果的“项目含义”。

3)再次提醒大家,numpy模块异常丰富,本文只是一个模型、展示,将相关的概念、用法、技巧“简单点到”而做不到“包教包会”,需要大家根据项目本身,提出概念、模型,然后翻译成numpy语言。

© 著作权归作者所有

共有 人打赏支持
openfea
粉丝 12
博文 86
码字总数 95615
作品 1
杭州
其他
PostgreSQL 时序数据案例 - 时间流逝, 自动压缩, 同比\环比

标签 PostgreSQL , 时序数据 , rrd , rrdtool , round robin database , 自动压缩 , CTE , dml returning , 环比 , 同比 , KNN 背景 时序数据库一个重要的特性是时间流逝压缩,例如1天前压缩...

德哥 ⋅ 2017/12/27 ⋅ 0

HBase二级索引的设计(案例讲解)

摘要 最近做的一个项目涉及到了多条件的组合查 询,数据存储用的是HBase,恰恰HBase对于这种场景的查询特别不给力,一般HBase的查询都是通过RowKey(要把多条件组合查询的字段都拼 接在RowKe...

Zero零_度 ⋅ 2016/09/07 ⋅ 0

Nanocubes: 对时空数据的事实探索 (Nanocubes for Real-Time Exploration of Spatiotemporal Datasets)

原文出处:Nanocubes: 对时空数据的事实探索 随着信息爆炸时代的到来,数据量越来越大,人们对时空数据的实时处理和探索显得越加困难。想 象一下,假如你有一个微博数据集,它记录每条微博发...

红薯 ⋅ 2014/01/09 ⋅ 3

【数据蒋堂】多维分析的后台性能优化手段 | 第1期

数据蒋堂 | 每周一期,作者:润乾软件创始人、首席科学家蒋步星 第一期分享 多维分析的后台性能优化手段 多维分析就是针对一个事先准备好的数据立方体实施旋转、切片(切块)、钻取等交互操作...

梁勇 ⋅ 2017/04/10 ⋅ 0

大牛养成指南(1):吃的草够多,你也能成为大牛

一鸣惊人背后是1万小时的不断练习 哪有什么天才?? 如何成为大牛?这个问题之前有很多人问我:你是怎么成为技术上的一个大牛的? 最开始的时候我也经常跟他们讲你要去看看某某某开发方案,深...

xingjm8511 ⋅ 2016/11/07 ⋅ 0

SequoiaDB 3.0 正式发布,实现 MySQL 协议级兼容

SequoiaDB巨杉数据库 3.0,在产品GA发布后,经过近半年在金融级场景的测试、上线和稳定运行之后,于近期正式发布。 1. SequoiaDB 3.0 产品定位 SequoiaDB巨杉数据库是一款金融级分布式数据库...

巨杉数据库 ⋅ 05/18 ⋅ 5

SequoiaDB 3.0 正式发布,分布式OLTP场景实现MySQL协议级兼容

SequoiaDB巨杉数据库 3.0,在产品GA发布后,经过近半年在金融级场景的测试、上线和稳定运行之后,于近期正式发布。 1. SequoiaDB 3.0 产品定位 SequoiaDB巨杉数据库是一款金融级分布式数据库...

巨杉数据库 ⋅ 05/18 ⋅ 0

关于数据库到实体Bean的映射

可能很多人都用Hibernate,但我是从来没用过,怕麻烦的配置,从来都是手动连,反正写的东西就我一个人用,最近遇到个麻烦的事,由于要分层,总要把数据库的表映射成实体Bean,由于数据库我早...

张林 ⋅ 2010/06/25 ⋅ 5

请问如何提升报表查询速度?大家帮忙出出注意吧~

最近在升级一个系统的报表模块(大概有一百张报表),在一期报表时候,所有的报表查询都是被写成了存储过程,又因为常常一个报表数据 是由多张表数据组成,所以一个报表的存储过程常常达到100...

gKiwi ⋅ 2013/08/10 ⋅ 3

大数据的“多维度”与“时效性”

在吴军的新书《智能时代》里专门讲了大数据的特点和应用领域。本文将以普及为目的,向您推介大数据行业的基本常识。 首先,大数据比传统数据牛的地方,不光是体量大,还有两个重要特征:多维...

bingdata123 ⋅ 04/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部