盛泓杨
摘要:数据分析和预测技术目前已被广泛用于从医学数据库中挖掘知识信息,其中分类是一种有监督的学习方法,可用于设计描述重要数据类别的模型。K近邻算法(KNN)是一种易于实现、最受欢迎且高效的模式识别算法。但是,数据集的不均衡可能会产生不太准确的结果。为了解决这个问题,我们将KNN与遗传算法(GA)结合在一起进行有效的分类。该方法使用每次迭代生成的合适个体扩展少数类集。通过这种方式使不同类之间数量达到平衡。
关键词:归一化编码;PCA;KNN;GA;召回率;准确性
1.引言
该算法首先使用归一化编码对数据集中的20个客户属性进行归一化,然后通过PCA从20个数据集中提取与客户是否会进行定期存款有关的主要属性,并消除次要属性,从而将20维属性减少为3维。为了建立准确的预测模型,总客户数据集的四分之三用作构建模型的训练集,其余四分之一的数据用作测试集以测试预测模型的准确性。该算法使用KNN预测个人的购买意愿。具体方法是选择最接近该个体的k个人(欧拉距离),以投票的形式确定该个体的类别。同时,采用遗传算法消除样本不均衡性,提高了准确性。测试数据时,召回率可以达到99%,相较未优化时的结果有很大的提升。
2.算法介绍
2.1数据预处理
为了充分利用每种数据,该算法对原始数据进行了归一化,并将非数字数据映射为Numbers。 为了提高模型训练速度,减少冗余,采用主成分分析(PCA)从多个属性中提取主要成分,并在可以高度还原原始信息的情况下,将特征空间的维数减小为3维。功能标准化以平衡每个功能范围:其中是特征j的平均值,Sj是特征j的标准偏差。计算协方差矩阵,使用SVD计算的特征向量,从U中取出前K个左奇异向量,构成一个约减矩阵,计算新的特征向量,求各样本的投影均方误差,求数据的总变差,判断下式是否成立,其取值可以为 0.001,0.005,0.010,…。其中当选择 =0.001,在特征间 99.9% 的差异性得到保留的情况下,可得k = 3,即选择最大的三个特征值所对应的特征向量做为主成分,将20维的数据空间降低至3维。
2.2行为预测
2.2.1 KNN
该算法使用KNN算法预测客户行为(即是否订阅)。
第一步是计算距离,即测试的客户与训练集中的每个样本之间的距离。 计算方法包括欧几里得距离,曼哈顿距离,切比雪夫距离,余弦。四种计算距离的算法a=(,,) 和b=(,,) 在三维空间:
1.欧氏距离:
2.曼哈顿距离:
3.切比雪夫距离:
4.夹角余弦:
经过多次验证,不同的距离算法对KNN的预测结果没有显着影响,但是在计算两点之间的距离时,欧氏距离算法相对简单并且运行速度很快。因此,选择欧几里德距离算法来计算被测客户与训练集中每个样本之间的距离。
通过该算法,我们获得了一长串关于测试客户与训练集中每个样本之间的距离的数据,从最小到最大对它们进行了排名,并选择了最接近测试客户的k个样本。经过一系列测试和验证后,选择了最合适的k值。
最后,我们提取的k个样本分为两类:“是”和“否”。如果属于“是”的样本数量大于“否”,则测试的客户将是“是”;否则,它们将为“否”。“是”表示客户有订购意向,“否”表示客户无意订购。
2.2.2 SVM
在机器学习中,支持向量机(SVM,也支持向量网络)是带有相关学习算法的监督学习模型,该算法分析用于分类和回归分析的数据。当给定一组训练样本时,每个训练示例都标记为属于两个类别中的一个或另一个,则SVM训练算法将构建一个模型,该模型将新示例分配给一个类别或另一个类别,使其成为非概率二进制线性分类器。SVM模型是将示例表示为空间中的点,并进行了映射,以使各个类别的示例被尽可能宽的明显间隙分开。然后,将新示例映射到相同的空间,并根据它们落在间隙的哪一侧来预测属于一个类别。
首先,我们在SVM中使用拟合函数,并且假设输出数据大于0.5时,我们可以认为输入数据的类别为1,否则,我们认为其类别为0。
其次,我们在SVM中使用分类函数,将数据输入到SVM中,然后返回代表输入数据类别的数字.
由上述可知,使用SVM的准确性和召回率不够理想,我们认为应该使用更好的算法来描述数据。通过比较SVM算法和KNN算法的结果,可以看出KNN的召回率和准确性率较高,因此本设计选择了KNN算法。
2.3算法优化
从表中可以看出,样本中“是”和“否”的数量变化很大,样本不平衡,导致预测模型的准确率低于50%。 因此,我们需要优化KNN算法。有两种优化方法。
2.3.1遗传算法
遗传算法属于一类较大的进化算法,它们使用自然进化启发的技术(例如继承,变异,选择和交叉)来生成优化问题的解决方案。 该算法利用遗传算法扩展少数族群,从而消除样本不等式。
ⅰ.选择初始人口
运算符用于选择要复制的个人。 各种选择方法有轮盘赌轮选择,随机选择,等级选择等。 由于训练集的样本是离散的任意值。 为了适应特征,该算法选择“随机选择”以形成“初始种群”。
ⅱ.交叉
这是获取两个父染色体并从中产生一个子代的过程。 该运算符将应用于创建新样本。 各种类型的交叉算子有单点交叉,两点交叉,N点交叉等等。 由于每个样本仅具有3个属性,因此单点交叉是最适合数据的运算符。
ⅲ.突变
该运算符用于更改新的解决方案以寻找更好的解决方案。 突变可防止GA陷入局部最小值。
a( i ) 值1的概率为1 / m,0的概率为1-1 / m,通常m =20。L是染色体的长度。
ⅳ.适应度函数
GA中的适应度函数是其表型的目标函数值。 必须先处理染色体,才能计算适应度函数。
2.3.3數据均衡方法(1)
更改训练集样本不同类别的权重,即将少数类所投票的权重增大,从而使少数类在投票时与多数类有相同的选择权重.
3.结果与讨论
根据以上数据,如果仅对测试集使用KNN分析,则准确性,召回率和准确率相对较低,这是由于训练集中两种类型的样本严重失衡造成的。 因此,有必要对KNN算法进行优化。 具体做法包括权重法和遗传算法,可以观察到它们对KNN的三个指标-准确性,召回率和准确率有不同的影响。 准确度和准确率与少数样品的重量成反比,与GA后少数样品的倍数成反比。 召回率相反。
参考文献:
[1]Kubat M,Matwin S.Addressing the course of imbalanced training sets:one-sided selection[C]//Proc of the 14th International Conference on Machine Learning,San Francisco,CA,1997:179-186.
[2]Provost F.Machine leaning from imbalanced data sets.Proc of 17th Nat Conf AAAI,Workshop on Imbalanced Data Sets.Austin: TX,2000: 71—73