dantezhao
dantezhao
可以参考:http://www.mdjs.info/2017/05/14/data-warehouse/data-layer/
这种需求的话,我能考虑的是设计两张表: 1. 中间数据表,表结构:user_id, buy_num, dt 。这份表从流水表中清洗出用户和日期,一个用户不管一天买多东西,每天只有一条记录。 2. 用户购买行为特征表,表结构:user_id, first_buy_date, last_buy_date,is_continuous_buy_rcnt_7_day,is_continuous_buy_rcnt_30_day。 解释一下,第二张表,来满足日常需求,里面有每个用户的第一次购买东西的日期,最后一次购买的日期,最近7天、30天是否连续购买商品,这些都是相对来讲比较固定的特征 然后解释第一张表,第一张是一个中间表,它有两个作用,第一个作用是来计算第二张表,提高计算效率,另一个是满足一些特定的需求,比如需求方想知道指定日期是否连续购买商品了,就可以从第一张表来计算,当然会有一点计算成本,但是我们已经初步汇总了一次,计算性能能提高一大部分。
你看一下拉链表能不能解决你这种场景:http://www.mdjs.info/2017/01/07/data-warehouse/zipper-table/
如果是这种需要同步关系型数据库变更的场景,是否可以考虑用hbase来处理
仗剑走天涯:没看太懂,可否详细说一下呢。 M0 M1为什么说都是通过最大熵得到的呢。用神经网络得到的语言模型就是这样吗?
题主:是指可以用最大熵模型将M0模型和M1模型综合起来,可以得到更好的效果。比上面用线性插值方法得到的综合模型效果更好。 这是困惑的地方,感觉最大熵模型不太好理解呀
仗剑走天涯:说一下我的观点。最大熵模型的本质上是学习到样本背后所隐藏的随机分布。只是在学习这个分布时,最大熵模型遵循的原则是,学到的随机分布要使得训练样本集的产生概率尽可能大,这有点类似于最大似然。同时,使得训练集以外的样本产生的概率尽可能均匀,也就是追求熵的最大化。假设你有两个样本集train1,train2,用最大熵模型学习到相应的模型m1,m2,那么,m1就是使得train1产生概率最大,其他样本(包括trian2)产生概率尽可能平均的随机分布。m2也是类似。这样,用线性差值的方式,得到的融合模型,可以大致理解为是使得train1,train2产生概率尽可能大,对于其他样本产生概率尽可能平均。可以看到,融合模型受到的限制是trian1,train2,比单纯的m1,m2都多,剩下让它最大化熵的空间自然也小。所以,它的信息熵要小于m1,m2。但是由于它是使得train1,train2概率最大化的模型,可以想到,效果也会更好一点。
题主: 学到的随机模型要使得训练样本集产生概率尽可能大,训练集以外的样本产生概率尽可能均匀。 光看 统计学习方法 那一堆公式,真没理解到这层意思。 我之前描述不太准确,m1,m2两个语言模型并不是用最大熵模型学习到的,最大熵模型的优势是能把多个不同来源信息整合起来,所以用于融合m1,m2两个模型。 我现在理解是线性插值模型M_=aM1+(1-a)M2确实比单个模型M1,M2信息熵小,不管是从凸函数性质理解还是增加了训练数据的角度理解都是这样。所以M_效果会比单个模型要好。 而用最大熵模型融合M1,M2得到的模型,称M*。最大熵模型求解的过程中,M*的确是熵最大的模型,但这里的熵最大是针对"不确定的部分"来说的。 根据经验语言模型效果M*>M_>M1,M2。 只是因为最大熵模型时间复杂度太高,成本太大,所以用线性插值的方法来代替
回答一:我感觉基本的监控要做,然后字段类型,命名统一可以做,ip转地址也可以做。复杂的 不太容易做,数据源的接入不一定都可控。