行为日志分析思路与想法
现在是互联网的时代,是各种各样的网站、APP爆发的时代,那么一个好的网站能够吸引用户,更能了解用户,那么它就有资本在这个互联网大潮里继续支撑下去。
我相信,一个产品在初期可能会因为产品的一些功能,一些特点,赢取很多用户关注,但是在这个抄袭满天飞的时代,如何保住自己的用户、甚至吸引别的产品的用户,就很至关重要。那么想要做到这些,你就需要更了解用户,有更吸引人的功能,有比其他行业更细腻的操作等等。那么我们如何做到这些呢,除了那些天才的想法外,我想大部分都需要很大的对用户使用产品的行为日志进行分析。
对于如何做一个行为日志分析,因为最近正在做这方面的功能,所以这里我记录下我自己的思路与想法:
首先,我们要做行为日志分析,我们需要理清以下几点东西:
1. 你的行为日志需要做到什么程度,也就是需要做到什么深度?
2. 你的行为日志分析的分析方向由哪些?
3. 你怎么获取到用户的行为日志数据?
4. 你埋点行为数据,需要获取哪些数据?
5. 你能根据获取到的数据能分析聚合成一条什么数据?
6. 你能根据分析出的数据能够做到什么功能?
下面我们来逐条进行讲一下:
-
你的行为日志需要做到什么程度,也就是需要做到什么深度?
对于行为日志的深度,我想大家应该有一定理解的,就是说我们行为日志埋点的时候,什么级别的操作需要记录。我这里分成了四个级别:
接口级(每次调用接口时记录);
行为级(用户操作项目任何操作记录,规定每一个操作对应一个编号,前端缓存,批量传入);
点击级(记录每一次点击的信息,包括没有点击功能点,包含点击的位置信息);
细微级(网页等鼠标的留存位置等);
这四个等级是我对于日志分析分的等级,不同的等级,获取的数据的粗粒度不同,当然等级越低,获取的数据也就越少,能分析出来的东西也就越少;等级越高,获取的数据量也就很大,处理起来也就越麻烦,相应的我们可以做到很多粗粒度等级所做不到的东西。
比如说行为级的日志,行为级的日志比接口级的日志多了一些不是调用接口的操作,比如页面的返回、+,-按钮的点击等等数据js的执行操作。这些都没有调用接口,但是我们可以根据这些数据分析用户对于某些按钮的点击数量,以及某些页面的停留时间等等,这些都是接口级所做不到的。
所以说,对于我们日志的级别的确定,需要根据项目自身以及以后发展等等多方面因素进行确定,我们不可能就是现在产品不需要这个级别,我们就不做,毕竟我们需要为以后考虑的。当然条件允许的话,我想大家可以多种等级都要记录下来。多种等级的日志进行配合,可能会做到很多意想不到的功能。
-
你的行为日志分析的分析方向有哪些?
对于日志分析的方向上面,也就是说我们可以用日志做哪些东西。从而根据我们可以做什么东西,来确定下面我们需要怎么获取数据,获取什么数据,以及如何分析数据等等。
下面是我想到的一些方向:
对于一些方向上面有很多想法,不同的产品有不同的方向,我这里就不多说了,这需要大家根据自己的产品进行分析讨论了。我这里只是给大家一个突破口。
-
你怎么获取到用户的行为日志数据?
对于埋点数据的获取,我分为两种方式,接口级的日志数据,我是根据利用AOP实现自定义注解,该注解可以方法执行前执行也可以在方法执行后执行,这要看大家怎么选择,在自定义注解里我们可以进行进行日志的记录,以及报错的记录等。该种方法大家可以参考下我的另一篇文章“ SpringBoot基于AOP实现自定义注解”。
对于另外几个级别,就需要依赖于各个前端的实现了,在用户每一次操作每一次点击时,生成一条点击记录,存储在他们本地缓存中,等用户下次打开时,在将上次记录的所有数据传输到后台,进行记录。 -
你埋点行为数据,需要获取哪些数据?
需要获取哪些数据,就要根据不同的项目,不同的业务,不同的级别来确定了,
比如接口级别的我们可能要获取:接口编号、接口描述、操作时间、各接口请求参数(json)、版本号、用户id、ip地址、数据来源、所在地区、访问URL、设备号等等。
比如其他的级别的操作,我们可以获取:行为编号、是否为功能点、点击坐标、点击页面、点击时间等等。
这个需要大家根据自己的业务来定,这里就不一一概述了。 -
你能根据获取到的数据能分析聚合成一条什么数据?
这一点至关重要,这关系到以后你能根据这条记录能够做什么功能!!!
所谓聚合成一条数据,就是说我们根据我们获取到的所有日志数据,根据各方位、各层次的分析,然后分析出一条具有能够代表特殊描述的数据,
比如说,根据大量的数据,我们可以获取到用于描述用户的数据,我们能够分析出用户的喜好、操作习惯、偏重的功能、偏重的入口、操作时间集中点等等。
那么我们具体如何进行分析呢,下面是我个人与同事讨论的一个方法:
第一步:我们需要首先对数据进行初步聚合
即我们可以根据特定的一些行为,一些接口日志等统计出该用户在某方面出现的次数,然后记录下来,当把所有的数据统计完全之后,会形成一种如下图所示的对应关系图:
这样我们会生成一个简略的数据统计,那么我们下面就可以根据这个数据统计更进一步的聚合,比如我们可以聚合出
张三的地区属性有一个这种数据:
{
"地区": {
"北京": 4,
"上海": 3,
"广州": 5,
"...":...
},
"行业": {
"服务": 4,
"装修": 2,
"...":...
}
}
或者以地区的角度来看的话会生成地区的数据:
{
"北京": {
"出现次数": 15,
"集中时间段": "09:00-12:00",
"类型": "旅游",
"...":...
},
"上海": {
"出现次数": 15,
"集中时间段": "18:00-22:00",
"类型": "饮食",
"...":...
}
}
具体聚合出来的一条数据到底是如何的,这个需要我们根据我们的业务来定,但是,有一点不会变,就是我们聚合出来的数据是我们要表达出来能够实现某一个需求功能的东西。我们可以根据我们聚合出来的数据做到我们想要的,不管你是一周分析一次,每天分析一次,亦或者每周重新生成,或者每天在原有数据上迭代分析也好,上面的规则是不变的。
- 你能根据分析出的数据能够做到什么功能?
那么我们能够根据我们分析出的东西做到什么功能呢.看到这里我想大家的脑海里也都有很多的想法了吧我这里就不多赘述了。下面是我随便列了一点:
以上是我对于行为日志如何分析的一些想法,具体的实现我们可以讨论一下,有想法的可以加QQ:974527068.
以下是我在想与查的时候查看过的一些网页,有兴趣的同学可以看下:
https://www.zhihu.com/question/19686197
http://www.open-open.com/doc/view/8303c6e14f2448f9b78e3a72876df2ac
http://blog.csdn.net/wangbaochu/article/details/52998175
https://www.cnblogs.com/dapeng520/p/4610081.html
https://wenku.baidu.com/view/0ae76e6e0722192e4436f63f.html
我想以上的一些网页应该能够给大家一些启发的。
上一篇: java简单选择排序实例
下一篇: Java判断List中有无重复元素的方法