lor*_*isi 9 python timestamp time-series unix-timestamp
我有一个“理想”公式,其中有如下值的总和
score[i] = SUM(properties[i]) * frequency[i] + recency[i]
Run Code Online (Sandbox Code Playgroud)
是取自给定的 N 个项目数据集properties的值向量frequency 和recency标量值。虽然这里的所有变量都是数字且具有离散整数值,但该recency值是给定时间范围内的 UNIX 时间戳(例如自现在起 1 个月或自现在起 1 周等,每天)。
在数据集中,每个项目i都有一个表示为 的日期值recency[i]、一个频率值frequency[i]和一个列表properties[i]。因此, 的所有属性item[i]都会在每天的recency[i]建议时间范围内进行评估。
根据此公式,新近度对score值的贡献item[i]是负贡献:时间戳越旧,得分越好(因此+该公式中的符号)。
我的想法是在给定范围内使用重新缩放器方法,例如
scaler = MinMaxScaler(feature_range=(min(recencyVec), max(recencyVec)))
scaler = scaler.fit(values)
normalized = scaler.transform(values)
Run Code Online (Sandbox Code Playgroud)
其中recencyVec收集recency每个数据点的所有向量,其中min(recencyVec)是第一天,max(recencyVec)是最后一天。
使用 scikit-learn 对象MinMaxScaler,因此recency通过将每个特征缩放到给定范围来转换值,如如何在 Python 中规范化和标准化时间序列数据中所建议的
这是该数值公式的正确方法吗?当时间戳值与其他离散数值求和时,哪种替代方法可以标准化时间戳值?
那么是recency绝对的 UNIX 时间戳吗?或者您已经减去当前时间戳了吗?如果不是,那么根据您的目标,简单地从 中减去当前的 unix 时间戳可能就足够了recency,以便它一致地描述“从现在开始的秒数”,或者时间增量而不是绝对的 unix 时间。当然,这会产生相当大的分数,但它会是一致的。
您使用什么缩放取决于您的目标(什么是可接受的score?),但只要它们是单调的,许多缩放都是有效的。除了最小-最大缩放(我建议使用0最小值并将最大值设置为某个已知的最大时间偏移)之外,您可能还需要考虑对数转换。
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |