- 博客(11)
- 收藏
- 关注
原创 行为数据——漏斗模型分析
美中不足的是报表的生成过程,依然需要耗费一定的时间成本,尤其是有序漏斗采用了Spark计算,对于队列资源也会产生较大的消耗。需要长期观察的报表可以选择离线的例行报表。如上面的例子,对于2021-05-01的数据,level=1的uv为1,level=2的uv为0,level=3的uv为1,所以level=1实际总人数为三步人数之和,也就是2。需要注意的是,因为计算的是每一步漏斗的人数,所以步骤与步骤之间人数是没有交集的,但事实上,根据有序漏斗的计算逻辑,触达漏斗后面的步骤,一会触达其前面的漏斗步骤。
2023-12-28 02:30:00 528 1
原创 Flink双流Join数据重复问题如何解决?
优化方式是:初始HyperLogLog内部使用存储是一个set集合,当set大小达到了指定大小(1048576)就转换为HyperLogLog存储方式。如果等不到,并且另一条流的时间已经推进到当前这条数据在也不可能 join 到另一条流的数据时,则直接输出。也就是会消耗4M的存储空间,但是在实际使用中有很多的维度的统计是达不到这个数据量,那么可以在这里做一个优化。在前面提到的精确去重方案都是会保存全量的数据,但是这种方式是以牺牲存储为代价的,计算完成之后的数据清理,按照时间进度注册定时器清理。
2023-12-27 01:00:00 123 1
原创 GBDT梯度提升决策树+LR 逻辑回归 推荐模型
算法论文:Practical Lessons from Predicting Clicks on Ads at Facebook,2014 (Facebook经典CTR预估论文)当GBDT训练好做预测的时候,输出的并不是最终的二分类概率值,而是要把模型中的每棵树计算得到的预测概率最大值所属的叶子结点位置记为1 => 构造新的训练数据。Facebook针对CTR预估场景,提出了GBDT+LR的算法框架,算法本质是利用GBDT梯度提升决策树的树模型的分类结果代替人工构造新特征。
2023-12-26 17:51:23 84 1
原创 Flink全量聚合函数:apply和process这两种实现方法有什么区别?
ProcessWindowFunction一次性迭代整个窗口里的所有元素,比较重要的一个对象是Context,可以获取到事件和状态信息,这样我们就可以实现更加灵活的控制,这实际上是process的主要特点吧。Flink全量聚合函数:指在窗口触发的时候才会对窗口内的所有数据进行一次计算(等窗口的数据到齐,才开始进行聚合计算,可实现对窗口内的数据进行排序等需求)process更加底层,更加强大,有open/close生命周期方法,又可获取RuntimeContext。
2023-12-26 17:49:31 174 1
原创 基础变声导论——个人学习用
调音和变声的区别?实现变声器需要做什么?如何去做?变声器的核心功能?懂得了变声器核心功能后,就很好理解了。我们需要一个声音调试器和实时变声器就可以做到市面上的变声。声音调试器去做变声器的核心功能,也就是在不改变声音速率的条件下改变声音频率。然后实时变声器就是一个声音输入和输出的软件。声音输入后交给声音调试器处理,处理好再交给实时变声器输出声音即可。改变声音速率的条件下改变声音频率。然后实时变声器就是一个声音输入和输出的软件。声音输入后交给声音调试器处理,处理好再交给实时变声器输出声音即可。
2023-12-26 17:48:43 27 1
原创 Spark-RDD 简单总结
RDD是Reslient Distributed DataSet的缩写,意思是弹性分布式数据集,是一种数据结构。是一个读取分区记录的集合,是Spark对需要处理数据的基本抽象。
2023-09-23 11:41:05 156 1
原创 算法设计之贪心算法
贪心算法是指在问题求解时,总是做出在当前看来是最好的选择。通也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,核心是贪心策略的选择(根据问题选取一种量度标准)。
2023-08-03 10:12:57 27
原创 银行家算法
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
2023-08-03 10:05:42 41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人