首页 理论教育软件工程论文:算法应用流程分析

软件工程论文:算法应用流程分析

【摘要】:统计所有用户产生的行为对,计算转移概率。表6超市A行为对和权重说明表7超市A转移概率计算说明表8用户2最近前置状态且我们在上一步骤中计算了不同商户间的转移概率(取前四),见表9。

在实际的建模过程中,整个建模过程包含如下几个步骤:

(1) 获取原始数据并清洗重复数据,并按用户进行归并,得到评分矩阵

评分矩阵格式见表1。矩阵每一行代表该用户的所有历史行为记录,一行中的非空元素为该用户对该列对应商户的所有行为记录,记录中应包含单条或数条[时间标签](用Unix时间戳表示)的交易数据(用户标识+消费时间+消费商户+行业分类+发卡行+卡片等级等)。同时由于该评分矩阵往往是稀疏矩阵,因此往往采用三维数组或链表方式实际存储这些数据。

表1 评分矩阵格式

(2) 按行提取评分矩阵中每一个用户的数据,并按时间对所有用户进行排序,结果见表2、表3。

① 典型用户1的历史行为记录数据见表2。

② 典型用户2的历史行为记录数据见表3。

(3)挖掘用户的每一个前置状态。对于典型用户1,我们能挖掘到以下前置状态对,见表4,表中服装店C为待挖掘的行为的商户,娱乐D、服务E、零售F和超市B为该用户这次行为的前置状态。

基于该用户服装店C的前置状态,生成前置状态对〈D,C,log(e+1)〉、〈E,C,1〉、〈F,C,1〉、〈B,C,1〉。〈〉中第三个数值为该种行为的Suij值,需要注意的是由于用户在这个前置状态中在商户D消费了两次,因此使用式(1)进行了加权处理。

同样地,挖掘该用户超市B的前置状态,为服务E、零售F、娱乐D;因此生成前置状态对〈E,B,1〉、〈F,B,1〉、〈D,B,1〉。

用同样方法挖掘该用户每个行为的前置状态(表5),直到无法继续挖掘为止。

表2 用户1的历史行为记录数据

表3 用户2的历史行为记录数据

表4 用户1的前置状态对

表5 用户1其他行为的前置状态

(www.chuimin.cn)

需要注意的是,在遍历到用户最初的数条行为记录时,可能会产生无法找到对应同MCC商户,如表5中的零售F、服务E等行为的前置状态挖掘,但在时间跨度允许条件下我们仍认为它们在一个周期。

(4)统计所有用户产生的行为对,计算转移概率。在上一步中,我们挖掘了所有用户可能出现的行为对及其权重。通过合并累加所有用户相同行为对的权重得到所有用户的行为对权重,比如说以超市A开头可能出现表6的行为。

则式(2)中的N(A)为1000,同时已知N(B)=1500,N(C)=200,N(D)=100,N(F)=150,则我们可以通过式(2)计算得到转移概率,见表7。

(5)结合用户最近一个前置状态对用户进行推荐。已知典型用户2的最近一个前置状态见表8,需要对该用户下一个行为进行预测、推荐。

表6 超市A行为对和权重说明

表7 超市A转移概率计算说明

表8 用户2最近前置状态

且我们在上一步骤中计算了不同商户间的转移概率(取前四),见表9。

同时,我们从用户2在该前置状态内的消费行为记录中计算得到了Cui,因此可以通过式(4)计算Wui,见表10。

再将相同商户转移概率的值加权累加排序得到待推荐列表,见表11。

表9 商户A、D、C的转移概率

表10 商户A、D、C的Wui

表11 待推荐列表