主权项 |
一种基于改进最近邻算法的忠诚度预测方法,其特征在于包括以下步骤:步骤1,已知忠诚度类别的训练数据集D,其包含N个属性和M个忠诚度类别,将属于同一忠诚度类别的训练数据个数除以训练数据集D的总个数,获得该类的先验概率即P(C<sub>i</sub>);步骤2,待分类未知类别的测试数据集X,其包含N个属性,计算测试数据集X中一条测试数据的指定属性列上指定值出现的概率,即类条件概率P(X|C<sub>i</sub>);步骤3,在训练数据的基础上预测一条测试数据的忠诚度类别即P(X|C<sub>i</sub>)P(C<sub>i</sub>);步骤4,重复步骤1‑3,直到将测试数据集X遍历完毕;步骤5,将测试数据集X的类别标签为忠诚客户的数据放入集合S中,集合S包括忠诚度高的客户和忠诚度低的客户,此时将集合S作为测试数据集;步骤6,设置一个长度为j且按距离由大到小排列的优先级队列,用于存储最近邻训练元组;步骤7,随机从已知类别的原训练数据集D中提取j个元组作为初始的最近邻元组;步骤8,设F<sub>1</sub>=(f<sub>11</sub>,f<sub>12</sub>,...,f<sub>1n</sub>)和F<sub>2</sub>=(f<sub>21</sub>,f<sub>22</sub>,...,f<sub>2n</sub>)为2个样本特征向量,f<sub>ij</sub>代表样本F<sub>i</sub>的第j个特征的值,则F<sub>1</sub>和F<sub>2</sub>的欧式距离公式为<img file="FDA0001110417680000011.GIF" wi="599" he="141" />根据该公式从S中取一条测试数据,分别计算其与这j个元组的距离d,且将训练元组的忠诚度类别和距离存入该优先级队列;步骤9,计算训练数据集D中某条训练数据与该条测试数据的距离d,将其距离d与优先级队列中的距离最大值d<sub>max</sub>比较;如果d<d<sub>max</sub>,则删除优先级队列中与之距离最大的元组,将当前该条训练数据的类别和距离存入优先级队列;否则舍弃该条训练数据,访问下一条训练数据;重复此步骤,直至训练数据集D遍历完毕;步骤10,将队列j中占多数的忠诚度类别作为测试元组的类别,从而得到高忠诚度客户,重复步骤7‑9,直到将测试数据集S遍历完毕;步骤11,计算该算法所消耗的时间T;读入目标数据集O,其为测试数据集X的真实类别,并读入上述所有测试数据集的预测类别,将其与目标数据集O进行逐一比较,从而获取算法的正确率W。 |