• onepencil
    2020-11-16
    线上会组装当前访问时的历史序列及历史平均值等,可以利用flink实时落盘这些线上特征,这样线下就不用再离线生成,也就杜绝了特征穿越问题

    作者回复: 赞,这是业界的解决方法之一,存储特征的snapshot。

    共 3 条评论
    52
  • Sebastian
    2020-11-16
    老师好,想问下使用hset把用户和物品的特征存入redis的场景下,如果用户上亿物品也上亿的话,存入redis会使用很大的资源。实际场景下并不是所有用户都是活跃用户,很多情况下可能用不上。那是否是在redis只存入活跃用户的特征呢?但是如果这样解决,遇到非活跃用户是否就没有特征值了? 从您的实践经验里有什么好的方法吗?

    作者回复: 我在存储模块那节课说过,SparrowRecsys项目确实对存储模块进行了一定程度的简化,实际应用中还是要多考虑分级存储,redis实际上当作一个缓存层来使用。 关于大量数据key value数据的存储和线上查找,可以多调研rocksdb,cassandra,dynamodb和mongodb。

    共 2 条评论
    11
  • 那时刻
    2020-11-17
    把评分大于等于 3.5 分的样本标签标识为 1,意为“喜欢”,评分小于 3.5 分的样本标签标识为 0,意为“不喜欢”。这样可以完全把推荐问题转换为 CTR 预估问题。请问老师,3.5分这个值是怎么来的呢? 另外一个问题,我们把评分时间戳作为代表时间场景的特征放到特征工程中。请问把时间戳用于特征工程,有木有需要注意的地方?比如是否是周末,假日等?老师在实际应用中有哪些实践么?

    作者回复: 两个问题都很好,希望大家都有这样实践中的思考。 第一个问题。基本原则是我在分析完分数的总体分布后得出的,3.5分基本是正负样本比例1:1的分界线,另外大于3.5分也符合我们直观意义上的高分,所以认为3.5分是比较合理的。 第二个问题。确实像你说的这样,我们实践中经常从时间戳中提取出周末,假日,季节这些特征,因为这些时间特征往往影响着数据的一些潜在模式,所以还是非常有价值的。

    共 4 条评论
    9
  • AI
    2021-03-01
    老师好,为什么用户id和电影id要作为特征进行输入,我的理解是id不是相当于一个索引吗?

    作者回复: 用户id和电影id都是非常重要的特征,因为他们之间的关系包含了用户的历史行为信息,其中又隐含了非常多的用户的兴趣偏好。

    共 2 条评论
    8
  • ZLZ
    2021-05-18
    王老师,请问我在训练CTR模型过程中,有两种训练样本处理方式,第一种是使用T-1天的数据进行shuffle,其中80%作为train dataset,20%作为训练过程中的val dataset,即使用T-1天的数据进行模型训练,针对T天的数据进行线上预测;第二种方式是使用T-2天的数据作为train dataset,T-1天的数据作为val dataset,即2使用T-2天的数据进行模型训练,针对第T天的数据进行线上预测;我理解第一种方式是不是容易造成信息穿越,例如在某一天有某个活动,但是第二天没有这个活动,那模型在第二天会效果不好,但是第二种方式线上是采用T-2天的模型,相比于第一种方式(线上使用的是第T-1的模型),是不是效果会打折扣

    作者回复: 是这样,第一种方式是不建议采用的。第二种我建议缩短数据分割的粒度,比如改成T-1小时

    共 4 条评论
    7
  • 萬里長空
    2020-11-20
    老师,问一个spark-udf的问题,看官网上定义udf的时候要使用register,但是您这里并没有使用,是sql与DataFrame的区别吗?

    作者回复: 是的,是spark sql和直接操作dataframe的区别。直接操作dataframe不用register

    
    6
  • 倪钰鑫
    2021-01-23
    老师好,我想问下用户行为的时间序列,最一开始的那个用户行为的历史数据我们都是置0吗?比如您上面所说的“userAvgRating”,在B上是填A的打分3,那么在A上呢?因为这里收集到的信息A是最前面的,那此时就是置为0吗?还是说可以选一个全局中值填进去呢?

    作者回复: 这是个好问题,涉及到默认值选取的问题。常规做法是把全局的均值填进去,但其实没有什么统一的最好的方法。

    共 2 条评论
    5
  • abc-web
    2021-01-24
    王老师,想问一下,如果标签或其他属性是中文内容需要进行特征处理还是直接进行word2vec?谢谢!

    作者回复: 先分词再word2vec

    
    3
  • 榕
    2021-01-26
    //add rating features val movieRatingFeatures = samplesWithMovies3.groupBy(col("movieId")) .agg(count(lit(1)).as("movieRatingCount"), format_number(avg(col("rating")), NUMBER_PRECISION).as("movieAvgRating"), stddev(col("rating")).as("movieRatingStddev")) .na.fill(0).withColumn("movieRatingStddev",format_number(col("movieRatingStddev"), NUMBER_PRECISION)) 老师,特征处理中电影的打分特征应该也是要做window处理吧,谢谢~

    作者回复: 是这样,最好要进行window处理。可以自行修改提交PR

    
    2
  • Jay
    2020-11-18
    刚入坑,好像一直没有看到关于特征组合的内容,这个点一直没有理解清楚,啥时候会讲讲呢?

    作者回复: 组合特征当然可以通过人工组合的手段进行组合,这点我们仍然可以沿用之前传统机器学习的经验。 对于深度学习模型来说,也可以交由模型的内部结构来组合,这一点后面关于模型的讲解还会涉及到。

    共 2 条评论
    2