基于用户行为的时间距离状态自适应算法(TDSA, Temporal Distance State Adaptation)
1 总述
基于用户行为的时间距离状态自适应算法 (TDSA) 是一种旨在构建高度个性化、具备生理节奏感知能力的日程推荐算法。该算法摆脱了传统任务清单对人工设置的依赖,通过捕捉用户在细粒度时间切片(Slice)中的真实行为,自发地学习并模拟用户的生理与心理节奏。
算法的核心用途
- 智能决策:在任意给定时间点,自动评估并排序最符合用户当前状态(体力、专注度、创造力等)的任务标签。
- 节奏建模:通过长期的行为传染与演变,自动识别用户的高效期、低谷期及生活习惯,构建个性化的"时间模板"。
- 动态适应:能够应对突发性状态改变(如疾病、截止日期压力),并具备自我纠偏能力,防止单次异常行为污染长期习惯数据。
核心流程摘要
算法的运行遵循 "评估---反馈---进化" 的闭环逻辑:
- 评估阶段 (VAPE):提取目标窗口内的多维状态向量,将其投影至任务需求空间,利用非线性激活函数计算最终匹配分值。
- 度量阶段 (STDC):采用复合欧几里得距离与环形时间编码,计算当前行为点与全量时间模板之间的时空相似度。
- 进化阶段 (SSU):根据任务完成情况执行非对称更新------成功则强化该时段的行为倾向,失败则按需衰减相关维度资源,并通过时空距离将这种变化"传染"给相似的切片,实现系统的全局自适应进化。
2 向量化聚合与投影评估流程(VAPE, Vectorized Aggregation & Projective Evaluation)
VAPE主要的作用是把一个时间窗口内的时间切片数据转化为一个单一的、标准化的用于评判的分数,分为四个步骤:
2.1 状态空间聚合(State Space Aggregation)
首先定位该时间窗口下所有的细粒度的时间切片\(s_i\),把向量求和并取平均聚合,用来获得这个时间窗口下的总体代表性:
\[s=\frac{1}{n}\sum_{i=1}^{n}s_i \]
其中,\(n\)表示切片数量。
2.2 需求特征投影(Requirement Feature Projection)
聚合后的特征向量与特定日程标签的权重向量\(p\)进行点乘运算。本质上是把用户的当前状态投射到任务需求维度上来:
\[x = s⋅p=\sum_{j=1}^{d}s_jp_j \]
其中,\(d\)表示向量维度。得分\(x\)反应了原始的时间与日程的契合度。
2.3 响应曲线映射(Response Curve Mapping)
为了增强区分度和可比性,需要使用带有偏置项\(b\)的Sigmoid函数。使得匹配的任务获得高分,不匹配的任务被压制。
\[Match\_Score=σ\left(x+b\right)=\frac{1}{1+e^{-\left(x+b\right)}} \]
2.4 环境因子增益(Environmental Gain Adjustment)
引入环境因子\(F\)作为外部干预变量。该因子代表系统应对极端环境(女性用户来月经,考试/会议截止日期)的最高解释权:
\[S=F⋅Match\_Score \]
3 时空距离计算流程(STDC,Spatio-Temporal Distance Calculation)
STDC的主要目的是衡量两个切片\(s_i\)和\(s_j\)之间相似度,以便在切片刷新时根据相似程度进行更新。比如用户在周一到周五上班,周末休息,那么周五上午九点左右的切片向量可能就接近周一九点左右的,而不是周六九点的,尽管周五和周六在物理时间上接近。
3.1 定义复合距离度量(Composite Distance Metric)
定义两个切片的距离\(D\)为时间距离和欧几里得距离的加权和:
\[D\left(s_i, s_j\right)=\sqrt{w_{t}⋅d_{time}\left(i,j\right)^{2}+w_{s}⋅d_{state}\left(s_i, s_j\right)^{2}} \]
各参数说明:
-
\(d_{time}\):两个切片在物理时间上的距离。采用环形时间编码(Circular Time Encoding):
\[d_{time}=min\left(\left|t_{i}-t_{j}\right|, Period-\left|t_{i}-t_{j}\right|\right) \]
-
\(d_{state}\):两个切片的向量的欧几里得距离。
-
\(w_{s},w_{t}\):权重系数,衡量系统看重即时行为还是习惯。
3.2 基于径向基函数的影响力评估(RBF-based Influence)
在更新了切片\(s_i\)的向量后,需要计算它对切片\(s_j\)的影响权重\(W_{ij}\)并进行传染。采用高斯核函数:
\[W_{ij}=exp\left(-\frac{D\left(s_i, s_j\right)^{2}}{2σ^{2}}\right) \]
其中,\(σ\)(带宽)决定了传染的广度,\(σ\)越大,一次行为改变的切片范围越广。
4 状态综合更新流程(SSU,State Synthesis & Update)
SSU 流程是系统的进化中枢。其核心逻辑是:当用户在某一时间窗口内产生行为反馈后,系统通过修改底层切片向量,实现对用户生活节奏的动态建模。
4.1 反馈类型判断(Feedback Classification)
算法根据行为进入不同的更新路径:
- 正反馈 (Positive):任务按计划完成。
- 负反馈 (Negative):任务被放弃、超时未完成或用户主动反馈"状态不佳"。
4.2 更新量计算(Update Calculus)
A. 成功强化路径 (Reinforcement Path)
若任务成功,系统认为当前状态与任务需求匹配,执行"趋同更新":
\[s_{new}=clip\left(s_{old}+η_{pos}⋅W⋅\left(p-s_{old}\right),0,1\right) \]
B. 失败衰减路径 (Decay Path)
若任务失败,系统认为该时段的各项资源被高估,执行"维度折损":
\[s_{new}=s_{old}⊙\left(1-η_{neg}⋅W⋅p\right) \]
注:\(⊙\)表示逐元素相乘。
4.3 传播范围控制 (Propagation Layers)
更新量通过 STDC 计算的权重\(W\)分两层传播:
-
第一层:窗口内强同步 (Intra-window Synchronization)
范围直接包含在该任务时间段内的所有切片,且权重为常数:\(W=1.0\) -
第二层:全局距离传染 (Global Metric Propagation)
范围是窗口之外的所有切片。
权重为使用 STDC 流程输出的影响力因子:\[W_{g}=exp\left(-\frac{D^{2}}{2σ^{2}}\right) \]
约束 :设置阈值\(ϵ\)(如 0.05),仅更新\(W_{g}> ϵ\)的切片,以降低计算开销。
本人大一,以上是用来参加学校一个安卓应用设计比赛时设计的,实际实现其实需要配合一些数据清洗和隔离的策略使用,15分钟切片,一个星期的模板运行起来还是挺流畅的,比赛完成之后就发出来了,希望巨牛们轻喷