【问题标题】:Set a period of time when training algorithm设置训练算法的时间段
【发布时间】:2015-10-21 10:15:48
【问题描述】:

我想在训练推荐算法时设置一个具体的时间,例如:我只想训练 6 个月前或 3 个月前的数据。 有人知道配置方式还是我必须实现它? 非常感谢。

【问题讨论】:

    标签: predictionio


    【解决方案1】:

    我们正在研究一种更通用的方法来解决这个问题,但在实验分支中有一个引擎,它将在 EventStore 中保留一段时间的事件数据并丢弃其余的。这是进行训练的最有效方式。我的意思是你需要定期运行这个引擎。 https://github.com/PredictionIO/PredictionIO/tree/develop/examples/experimental/scala-cleanup-app

    这将删除包括 $set 在内的所有旧事件,因此请注意。如果你 $set 一个属性并且这个事件被移除了,这个属性就不再被设置了。

    未来我们计划支持事件的 TTL,以便事件存储本身自动使事件过期。我们还将属性存储在可变存储中,以将它们从事件流中删除。现在使用清理引擎。

    【讨论】:

      【解决方案2】:

      我发现 PredictionIO 已经支持这个问题了:

      这是我的伪代码:

             def readEventTime(procTime : String) : Option[DateTime] = {
                Option(if (procTime == null || (procTime != null && procTime == "")) null else  DateTimeFormat.forPattern("yyyyMMddHHmmss").parseDateTime(procTime))
             }
             val itemsViewRDD: RDD[(String, Item)] = PEventStore.find(
                appName = dsp.appName,
                startTime = readEventTime(dsp.startTime),
                untilTime = readEventTime(dsp.untilTime)
             )(sc).map ...
      

      问候。

      【讨论】:

        猜你喜欢
        • 2014-07-22
        • 2020-05-12
        • 2016-03-21
        • 1970-01-01
        • 2012-04-12
        • 2011-02-15
        • 2013-12-03
        • 1970-01-01
        • 2018-07-17
        相关资源
        最近更新 更多