用户行为系统Marmot - D2 2011 session

Preview:

DESCRIPTION

2011.7月在d2的session keynote, 用户行为在前端来说是第一次讲, 这次是联合演讲的方式, taobao的两位同学先讲,随后,我主要讲了一下做marmot的原理,设计框架,和部分实现细节.

Citation preview

marmot youhttp://www.matmotu.com

userbehaviorsystem

work @ youa WED teamhttp://t.sina.com/rank

11年7月12日星期二

11年7月12日星期二

各种 抓狂抓狂抓狂

11年7月12日星期二

不能拍脑袋来决策问题11年7月12日星期二

目标

11年7月12日星期二

自动化用户体验评级系统!

11年7月12日星期二

工作流

11年7月12日星期二

marmot整体工作流

11年7月12日星期二

看看长什么样

11年7月12日星期二

11年7月12日星期二

11年7月12日星期二

11年7月12日星期二

图层可叠加

11年7月12日星期二

11年7月12日星期二

11年7月12日星期二

网游充值

手机直充

100元

11年7月12日星期二

数据绘制选型

11年7月12日星期二

flash

php clickheat canvas

V.S

11年7月12日星期二

类型 消耗 兼容 DOM 适用性

flash客户端cpu消耗

高 好 不能很好与dom结合

采样控制兼容性好

php clickheat无客户端消耗消耗在服务端 极好 不能很好与dom

结合 全采样可绘制

canvas 客户端消耗中高 需html5支持 能与dom很好结合

采样控制DOM结合

11年7月12日星期二

采集

11年7月12日星期二

Sid+Mid

marmot serverclient js

url match

client log

server logseq=0

processor API

referer+url

marmotID

sessionID

seq=n

11年7月12日星期二

采集细节发送数据内容发送数据内容

target 元素

event type 事件类型

timestamp 时间

custom data 自定义数据

采集原始事件采集原始事件mousemove mousedown

mouseup click

dblclick focus

scroll keydown

11年7月12日星期二

• 采集频率• 采集大小• 数据筛选• 采集API

• 数据合并

注意事项

11年7月12日星期二

坐标一致性

11年7月12日星期二

1024*768 1280*800

align = middle

relative coordinate

原点O=(0,0)

原点O=(document.documentElement.scrollWidth/2|0,0)

11年7月12日星期二

MDPMarmot DOM Path

DOM path还原

11年7月12日星期二

path=[div.container, ~1div]

div(HTMLElement) div(HTMLElement)

div#container(HTMLElement)

body

selector=’div#container>div:nth-of-type(1)’

path.replace(/~(\d+)([^~]+)/gi, '~$2:nth-of-type($1)').replace(/\~/gi, '>').replace(/\./gi, '#');

Marmot.getPath

11年7月12日星期二

还原规则

11年7月12日星期二

统计与还原• marmot.log.js收集click

• 计算hover悬停的MDP

• 计算selector的MDP

• 发送至服务器• 服务器扫日志入HDFS/库

• 输出时直接输出

• 算法写死在客户端• 扩展比较麻烦

11年7月12日星期二

发送数据内容发送数据内容

target 元素

event type 事件类型

timestamp 时间

custom data 自定义数据

时间差值

11年7月12日星期二

mouse down + mouse

move + mouse up

mouse down + mouse

up = click

mouse move - mouse

move = delta hover

delta select=

move start

11年7月12日星期二

是否有 不用关心页面对齐的方案

回到刚才的坐标一致性问题

11年7月12日星期二

绝对坐标与相对坐标

11年7月12日星期二

11年7月12日星期二

div(HTMLElement) div(HTMLElement)

div#container(HTMLElement)

body

mdp selector = ‘div#container>div:nth-of-type(1)’relative coordinate x = event.x; //300relative coordinate y = event.y; //100

var el = document.querySelector(mdp selector); //定位元素var xy = Dom.getXY(el);var corrective x = xy[0] + relative coordinate x;var corrective y = xy[1] + relative coordinate y;

x=300y=100

11年7月12日星期二

栅格化

11年7月12日星期二

Math.floor(document.documentElement.scrollWidth/n)

9px*9px

1px*1px

1024px

768px

11年7月12日星期二

能满足宏观需求...

11年7月12日星期二

再更多的一点料...

11年7月12日星期二

页面行为如何衡量优劣

AB test进一步考虑

11年7月12日星期二

行为数据分析微观数据的特征分析

11年7月12日星期二

模糊关键路径

• A用户行为的拓展序列是a->b->c->d->...

• B用户行为的拓展序列是c->b->d->a->...

• C用户行为的拓展序列是a->b->c->a->...

• D用户行为的拓展序列是a->c->b->a->...

模糊关键路径得到a->b->c->a

11年7月12日星期二

['', 'input.rd_fv_30', 'input.phone_number', 'button.btn-charge']

key path

['', 'input.phone_number', 'button.btn-charge', 'input.PassInputPassword0']['', 'input.rd_fv_30', 'input.phone_number', 'button.btn-charge', 'input.PassInputUsername0', 'input.PassInputPassword0']['', 'input.phone_number', 'button.btn-charge', 'input.PassInputPassword0']['', 'input.rd_ct_slow', 'input.phone_number', 'button.btn-charge', 'div.pdc-wrap~2div~1div~1div~1a', '']['', 'input.phone_number']['', 'input.phone_number', 'button.btn-charge', 'div.user_register_ctn~1h4', 'button.user_register_btn']['', 'input.rd_fv_50', 'input.phone_number', 'input.phone_number', 'input.phone_number', 'button.btn-charge']['', 'input.phone_number', 'button.btn-charge', 'input.PassInputPassword0', 'form.PassFormlogin~1fieldset~1p~1button', 'form.PassFormlogin~1fieldset~1p~1button']

similar path

11年7月12日星期二

关于还原用户行为PV还原的意义

11年7月12日星期二

微观数据找到用户的问题Q : 找到的问题应该是 一类用户, 还是一个用户

11年7月12日星期二

用户维度数据仓库

11年7月12日星期二

• 一帮 公程师

• 一票 美女

• 一群 小资

• 这些 80后

如何找到用户

11年7月12日星期二

用户维度marmot v2 design UDC

用户信息

用户数据平台

上网时间00:00

使用浏览器Safari

第一次来此页面

......

用户维度中心UDC

用户体验模型配置UEM

操作熟练产品新手

操作新手产品新手

操作熟练产品熟练

操作新手产品熟练

操作熟练产品新手性别男80后北京...

抽取该类用户操作轨迹回放

11年7月12日星期二

评级模型

11年7月12日星期二

自动评级

11年7月12日星期二

11年7月12日星期二

数据层hadoop(HDFS)

框架层framework

ABtest

beta publish

产品上线

marmot

WPO

11年7月12日星期二

thanks拍砖及鸡蛋

11年7月12日星期二

Recommended