k 最近邻的分类属性的距离测量值



对于我的课堂项目,我正在参加Kaggle比赛 - 不要被踢

该项目将测试数据分类为汽车的好/坏购买。有 34 个特征,数据高度偏斜。我做出了以下选择:

  1. 由于数据高度偏斜,在 73,000 个实例中,有 64,000 个实例是坏买,只有 9,000 个实例是好买。由于构建决策树会过度拟合数据,因此我选择使用 kNN - K 最近邻。
    在尝试了kNN之后,我计划尝试感知器和SVM技术,如果kNN不能产生良好的结果。我对过拟合的理解是否正确?
  2. 由于某些特征是数值,因此我可以直接使用欧几里得距离作为度量,但还有其他属性是分类的。为了恰当地使用这些功能,我需要提出自己的距离度量。我读过关于汉明距离的文章,但我仍然不清楚如何合并 2 个距离度量,以便每个特征获得相等的权重。
  3. 有没有办法找到 k 值的良好近似值?我知道这在很大程度上取决于用例,并且因问题而异。但是,如果我从每个邻居那里获得简单的投票,我应该设置 k 的值多少?我目前正在尝试各种值,例如 2,3,10 等。

我四处研究了一下,发现了这些链接,但这些并不是特别有用——
a) 最近邻的度量,它说找出自己的距离度量等同于"内核化",但从中没有多大意义。
b) kNN 的距离独立近似讨论了 R 树、M 树等,我认为这不适用于我的情况。
c) 使用杰卡德·科夫寻找最近的邻居

如果您需要更多信息,请告诉我。

  1. 由于数据是不平衡的,您应该对等数量的好/坏进行采样(丢失大量"坏"记录),或者使用可以解释这一点的算法。我认为RapidMiner中有一个SVM实现可以做到这一点。

  2. 应使用交叉验证来避免过度拟合。不过,您可能在这里错误地使用了术语过度拟合。

  3. 应归一化距离,使其具有相同的权重。通过归一化,我的意思是力在 0 到 1 之间。要规范化某些内容,请减去最小值并除以范围。

  4. 找到 K 最优值的方法是尝试所有可能的 K 值(在交叉验证时),并以最高的精度选择 K 值。如果K的"好"值很好,那么您可以使用遗传算法或类似的算法来找到它。或者你可以以 5 或 10 的步长尝试 K,看看哪个 K 导致良好的准确性(比如说它是 55),然后尝试在那个"好值"(即 50,51,52...)附近以 1 为步长,但这可能不是最佳的。

我正在研究完全相同的问题。

关于k的选择,建议使用奇数值以避免获得"平局票"。

我希望将来能扩展这个答案。

最新更新