一种药店睡眠会员识别和演化方法∗
2023-10-20郑昊天
颜 松 李 涛 郑昊天
(武汉科技大学计算机科学与技术学院 武汉 430065)
1 引言
在互联网与实体经济融合发展的背景下,越来越多的医药平台开始采用线上活动引流至线下营销的模式来提升营销能力。如果想要获得更好的发展,在吸引更多的新会员的同时,维护好现有的老会员,减少会员流失。但是发展新会员的成本远高于维护现有会员的成本[1],在发展新用户相对困难的现阶段,如何维护好老会员,识别出睡眠会员,然后通过发放优惠券来唤醒睡眠会员是更好的选择。根据某连锁药店的真实数据,对126000 位睡眠会员发送活动短信,其中响应来消费的会员只有7200人[2],激活率只有5.71%,因此对睡眠会员的识别显得尤为重要。
达到或超过三个月未来店消费的会员被定义为睡眠会员,成为睡眠会员意味着会员的流失。而如果流失的是重点会员(购买金额大、消费次数多的会员),对门店的业绩将造成比较大的影响。目前,如何将信息系统中的海量数据提炼成有价值的信息是当前急需解决的问题。药店经营者需要一个信息管理系统将分散的信息收集进而整合为可以创造价值的信息,会员管理显得尤为重要[3],特别是会员的流失管理。
为解决现有睡眠会员识别模型应用于药店睡眠会员用户的局限性且识别准确率不高的问题[4],提出了面向药店平台的一种基于人工免疫危险理论的识别睡眠会员算法。根据睡眠会员具有丰富的行为特征,选取购买行为、病史情况、性别年龄、支付方式、会员卡积分、活跃等级等特征属性,通过分析这些睡眠会员特征属性以此来区分正常用户和睡眠用户,同时将特征与实际场景集合,利用特征选择方法[5]去除冗余特征形成新的表达模型。本文研究的意义在于降低药店在智慧营销中的成本,识别出睡眠会员,维护好现有会员,减少会员的流失[6]。
2 相关研究
在2017 年Pasu Poonpakdee 和Giuseppe Di Fatta 重新定义了会员管理[7],他们认为会员管理是一套系统和流程,能够支持公司战略的制度,并且帮助企业与特定的客户建立长期的获利关系。
文献[8]提出了一种新的免疫识别算法,以识别危险信号为核心,增加了对抗原提呈细胞和不同危险信号的使用。文献[9]通过根据危险信号和安全信号之间比例关系来判定危险程度,为衡量系而统的危险程度提供了一种新而的思维。文献[10]采用辩证的眼光来看待危险理论学说,该学说认为机体免疫系统主要是通过识别危险信号来执行其功能的。文献[11]指出危险理论的关键问题是危险信号的产生,并且通过云模型来描绘不确定性的概念,来判断系统参数的变化,结合AIS 识别机制和危险信号构造了协同文免疫识别模型。文献[12]认为危险理论摆脱了传统的自我与非我模式,并认为免疫反应的发生是由损伤的细胞发出的危险信号所决定的。文献[13]提出了一种基于权值树的危险信号检测算法,并通过理论分析和相关仿真实验结果分析,该方法具有较低的误而报率和漏报而率,提高了基于危险信号的识别准确率。文献[14]提出了一种基于危险理而论和危险信号机而制的异而常检测算法,其实验结果而表明,该算法而具有实时性好、自适而应和计算而量小的优点。
DCA 算法具有不依赖自体库、计算时间少、可降低漏报率和误报率等特点[15]。因此,将药店会员管理系统抽象为生物机体,分析药店睡眠会员消费特征,将各类特征映射[16]并定义为树突状细胞算法模型中的危险信号和安全信号,提出了一种药店睡眠会员识别方法。
3 基于人工免疫的睡眠会员识别方法
3.1 特征选择
本文以目前国内某一家用户规模较大的药店会员管理系统为研究对象,通过对近几年睡眠会员特征研究的分析,结合相关文献的观点,本文选择了以下特征,如表1所示。
表1 睡眠会员自身属性、行为属性和药品属性
表2 DCA信号转换权值矩阵
3.2 数据预处理及算法实现
3.2.1 信号映射
对3.1节的睡眠会员的各项特征数据进行预处理,统一将其规格化到1~10 之间。定义规格化好函数f(x)如式(1)所示:
x 是初始信号值,当x∈[m,n]时,进行线性映射,当x∈[n,∞]时,信号取最大值10。
现将检测睡眠会员用户的相关指标进行如下映射。
1)病原体好相关分子模式好PAMP:表明会员存在非健康行为,定好义PAMP={
2)危险信号DS:表明用户半睡眠,睡眠的可能性较高,虽然可能只是正常的行为改变,但存在睡眠会员行为的可能,定义DS={
3)安全好信号SS:表示会员是正常的,并处于非睡眠状 态,定好义SS={
4)致炎因子IS:放大PAMP,DS,SS 信号的作用,定好义文IS={
3.2.2 权值矩阵及算法公式
对信号PAMP,DS,SS,IS 进行计算,输出CMS,SEMI,MAT。信号转换权值矩阵如下表所示。
输入信号值转换为输出信号值的计算如式(2)所示:
算法采用成熟抗原值(MCAV)对抗原进行最终的评价,MCAV 的值接近1 时,说明该抗原异常程度很高。计算公式如下所示。
3.2.3 算法流程
算法1:DCA算法
输入:四个抗原信号值,PAMP,DS,SS,IS;
Begin
初始化;
For DC
If CSM Begin Int antigen; Update PAMP,DS,SS and IS; Update CSM,semiMature,Mature; End If CSM>=Z Then Begin Compare semiMature,Mature,mark the DC; Mark the antigen status collected by the DC; DC migration; If Tal=M Then//Tal:抗原判定总数,M:抗原判定阈值 Begin Calculate MCAV=A/Tal;//A:判定抗原异常的次数 Compare the size of MCAV with N;//N:抗原异常阈值 If MCAV>=N then Abnormal; Else Normal; End End If Col>=T Then//Col:采集抗原次数,T:DC生命周期 Discard DC; End 输出:CSM,smDC或mDC; 由于存在数据不平衡的问题,本文建立混颜淆矩阵(Confusion Matrix)来分析实验结果。 1)准确率PR的定义如式(4)所示: 2)召回率RR的定义如式(5)所示: 3)调和平均值F1的定义如式(6)所示: 本实验分别采用数据集为1000,2000,5000,10000 的数据样本,并分别对其建立混淆矩阵,计算对应的PR、RR以及F1。实验结果如表3所列。 表3 睡眠会员识别结果 由实验结果得出,DCA算法对于药店睡眠会员的识别平均准确率达到93.27%,因此可以得出结论,基于危险理论的树突状细胞算法可以高效的识别出药店睡眠会员。为证明此实验的高效性,选择朴素贝叶斯算法和决策树算法对相同的数据集就行实验,实验结果对比如图1所示。 图1 实验结果对比 适应度函数是遗传算法寻优的关键要素,且具有唯一性,是连接算法与测试用例生成问题的桥梁,通过适应度函数可以评估相应启发式搜索算法输入参数的性能优劣。结合第四节的工作,适应度函数定义如式(7)所示: 1)编码:由于每个参数的权重都取自于[0,1]之间的数,并且所有的权重加起来和为1,所以选用整数编码,每个参数的权重用取自于[0,999]之间的3 位整数来编码。在计算适应度时需要用到权重,所以需要将这些整数映射到[0,1]区间中,且要保证和为1,对个体ai中权重uij作如下变换: uij为个体ai中第j个权重的编码。 例如:由第三节定义的危险信号DS={ 2)交叉算子:由第四节定义的危险信号DS={ 矩阵A 的每一行代表一个药店睡眠会员,共有N 个睡眠会员;矩阵每列对应的一个睡眠会员的危险信号参数。矩阵中元素aij的行标i 表示第i 个睡眠会员,列标j 表示第j 个睡眠会员危险信号参数,aij的取值是[0,999]的整数。交叉算子如算法2 所示。 算法2:交叉算子 输入: Pc:交叉概率;P:当前会员种群; 输出: P':交叉后的会员种群; 1:开始 2:for i in range(len(p))//p:种群 3:for j in range(pop_len-1) 4:if(random.random() 5:cp=random.randint(0,len(p[i][j]));//随机选择参数中的交叉点 6:tmp1=[]; 7:tmp2=[];//实现相邻的会员危险信号参数的交叉 8:tmp1.extend(p[i][j][0:cp]);//用tmp1暂存,存放第i个会员第j个危险信号参数中的前0到cp个基因 9:tmp1.extend(p[i][j+1][cp:len(p[i][j])]);//再把第i个会员第j+1个危险信号参数取值中的后面的基因补充到tem1后面 10:tmp2.extend(p[i][j+1][0:cp]);//用tmp2 暂存,存放第i个会员第j+1个危险信号参数中的前0到cp个基颜因 11:tmp2.extend(p[i][j][cp:len(p[i][j])]);//再把第i个会员第j 个危险信号参数中的后面的基因,补充到tem2后面 12:p[i][j]=tmp1; 13:p[i][j+1]=tmp2;//将交叉后的会员取值放入新的种群中 14:结束 3)变异颜算子:种群中某个个体的其中一位随机改变,就是在一些位置上把0变成1或1变成0称为变异。变异算子如算法3所示。 算法3:变异算子 输入: Pm:变异概率;P:当前会员种群; 输出: P':变异后的会员种群; 1:开始 2:pop_len=len(p[0])//会员种群数 3:Gene_len=len(p[0][0])//危险信号参数的基因长度 4:for i in range(len(p)) 5:for j in range(pop_len) 6: if(random.random() 7: mp = random.randint(0,Gene_len-1);//基因变异位点 8: if(p[i][j][mp]==1) p[i][j][mp]=0; else: 11: p[i][j][mp]=1; 实验所用数据同第三节一样,分别从数据集随机抽取1000,2000 和5000 条数据。遗传算法的控制参数设置如表4所示。 表4 算法参数设置 1)当种群大小为1000,最大迭代次数为200时,由上述算法得出的实验结果如图2示。 图2 种群大小为1000的算法结果图 由实验结果得知,适应度值在经过68 次迭代后开始收敛,达到最优值0.9452,此时的睡眠会员识别准确率达到最高值95.52%。 2)当种群大小为2000,最大迭代次数为400时,由上述算法得出的实验结果如图3所示。 图3 种群大小为200的算法结果图 由实验结果得知,适应度值在经过280 次迭代后开始收敛,达到最优值0.9391,此时的睡眠会员识别准确率达到最高值93.91%。 3)当种群大小为5000,最大迭代次数为800时,由上述算法得出的实验结果如图4所示。 图5 实验结果对比 由实验结果得知,适应度值在经过585 次迭代后开始收敛,达到最优值0.9358,此时的睡眠会员识别准确率达到最高值93.58%。 结合第四节由人工设定的权重系数所得出的准确率值与本节实验所得出的准确率值对比如下: 由表5 可以得出,危险信号参数的权重系数在经过演化计算后,树突状细胞算法对于睡眠会员的识别平均准确率可达到94.01%,高于第四节中通过多次对比实验和经验设定的权重系数所得出的平均识别准确率93.20%,因此在基于遗传算法的危险信号参数演化计算后,可以更高效地识别出药店睡眠会员。 表5 结果对比 本文研究的主要是药店睡眠会员识别问题,研究目的是解决现有睡眠会员识别模型应用于药店睡眠会员用户的局限性且识别准确率不高的问题,提出了面向药店平台的一种基于人工免疫危险理论的识别睡眠会员算法。由于此算法中危险信号参数的权重系数是通过多次实验和经验总结设定的,具有一定的偶然性,所以接着提出了一种基于遗传算法的危险信号参数演化算法。 文章针对危险信号的参数权重系数变化对识别结果的影响,演化出一组最优的危险信号参数的权重系数,得出了更高的睡眠会员识别准确率,提出了一种基于遗传算法的危险信号参数的演化方法。3.3 实验与结果分析
4 基于遗传算法的危险信号参数演化方法
4.1 适应度函数的确定
4.2 遗传算子的选择
4.3 实验与结果分析
5 结语