K-NN的拓展应用方法

  • 原始k-NN (k临近算法)

      样本集中每一个数据都有所属分类的标签,在输入没有标签的新的数据后,选择样本数据集中与心得数据最相近的k个数据,再选择k个最相似数据中出现次数最多的分类,将新数据归为该分类。

       距离计算的时间复杂度:计算新的数据点与样本集中每一个数据点的距离,这样才能找到最近的k个数据点。时间复杂度为O(样本点数据个数)。

  • k-NN拓展应用

       在进行训练时,若样本集中的数据都只含有一个相同的标签,即只有一种分类(例如:在异常检测中,正常情况数据多,而异常情况数据非常少,新的异常通常是不会提前知晓的,只能通过正常数据判断当前新的数据是否为异常的)。测试新数据时,计算与样本点的距离,通过设置阈值,判断该数据是正常数据还是异常数据。

       距离计算的时间复杂度:将样本集中的数据的向量进行聚类(聚类方法:k-mean,AP),例如800个数据,聚成4类,每一类通过这一类中的所有数据点,计算一个中心点,该中心点可能只是虚拟点,然后找到距离该虚拟点最近的一个真实数据点。这样当检测一个新的数据点时,只需要计算新的数据点与4个聚类的中心点的距离即可。时间复杂度减少为O(4)。

K-NN的拓展应用方法_第1张图片

  • 阈值的设置

       阈值设置凭经验,凭借训练时TPR(正确率)、FPR(误报率)来确定。每一个阈值产生一对TPR、FPR。如下图,坐标点表示测试数据与样本点数据的距离,红色点代表异常点,共12个;蓝色点代表正常点。

K-NN的拓展应用方法_第2张图片

       阈值1:TPR(恶意点)=5/12,FPR(恶意点)=0(没有将正常点检测为恶意点)

       阈值2:TPR(恶意点)=8/12,FPR(恶意点)=2/所有正常点个数

       阈值3:TPR(恶意点)=1(恶意点全部检测出来),FPR(恶意点)=25/所有正常点个数

  • ROC曲线图

       ROC曲线图可以衡量分类算法、特征种类的优劣。ROC曲线图横坐标为FPR,纵坐标为TPR。将每个阈值点产生的每一对TPR、FPR点连接,形成ROC曲线图。同一FPR,TPR越高,分类算法越好。

K-NN的拓展应用方法_第3张图片K-NN的拓展应用方法_第4张图片

你可能感兴趣的:(K-NN的拓展应用方法)