the-algorithm/src/scala/com/twitter/timelines/prediction/features/p_home_latest/HomeLatestUserFeatures.scala

50 lines
1.9 KiB
Scala

package com.twitter.timelines.prediction.features.p_home_latest
import com.twitter.ml.api.Feature.{Continuous, Discrete}
import com.twitter.dal.personal_data.thriftjava.PersonalDataType._
import scala.collection.JavaConverters._
object HomeLatestUserFeatures {
val LAST_LOGIN_TIMESTAMP_MS =
new Discrete("home_latest.user_feature.last_login_timestamp_ms", Set(PrivateTimestamp).asJava)
}
object HomeLatestUserAggregatesFeatures {
/**
* Used as `timestampFeature` in `OfflineAggregateSource` required by feature aggregations, set to
* the `dateRange` end timestamp by default
*/
val AGGREGATE_TIMESTAMP_MS =
new Discrete("home_latest.user_feature.aggregate_timestamp_ms", Set(PrivateTimestamp).asJava)
val HOME_TOP_IMPRESSIONS =
new Continuous("home_latest.user_feature.home_top_impressions", Set(CountOfImpression).asJava)
val HOME_LATEST_IMPRESSIONS =
new Continuous(
"home_latest.user_feature.home_latest_impressions",
Set(CountOfImpression).asJava)
val HOME_TOP_LAST_LOGIN_TIMESTAMP_MS =
new Discrete(
"home_latest.user_feature.home_top_last_login_timestamp_ms",
Set(PrivateTimestamp).asJava)
val HOME_LATEST_LAST_LOGIN_TIMESTAMP_MS =
new Discrete(
"home_latest.user_feature.home_latest_last_login_timestamp_ms",
Set(PrivateTimestamp).asJava)
val HOME_LATEST_MOST_RECENT_CLICK_TIMESTAMP_MS =
new Discrete(
"home_latest.user_feature.home_latest_most_recent_click_timestamp_ms",
Set(PrivateTimestamp).asJava)
}
case class HomeLatestUserFeatures(userId: Long, lastLoginTimestampMs: Long)
case class HomeLatestUserAggregatesFeatures(
userId: Long,
aggregateTimestampMs: Long,
homeTopImpressions: Option[Double],
homeLatestImpressions: Option[Double],
homeTopLastLoginTimestampMs: Option[Long],
homeLatestLastLoginTimestampMs: Option[Long],
homeLatestMostRecentClickTimestampMs: Option[Long])