【问题标题】:Distance measure for categorical attributes for k-Nearest Neighbork-最近邻的分类属性的距离度量
【发布时间】:2015-01-25 22:31:03
【问题描述】:

对于我的课堂项目,我正在处理Kaggle competition - Don't get kicked

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

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

我四处研究并找到了这些链接,但这些链接并没有特别的帮助 -
a) Metric for nearest neighbor,它表示找出自己的距离度量相当于“内核化”,但没有多大意义。
b) Distance independent approximation of kNN 谈论 R-trees、M-trees 等我认为不适用于我的案例。
c) Finding nearest neighbors using Jaccard coeff

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

【问题讨论】:

    标签: machine-learning classification nearest-neighbor knn euclidean-distance


    【解决方案1】:
    1. 由于数据不平衡,您应该采样相同数量的好/坏记录(丢失大量“坏”记录),或者使用可以解决此问题的算法。我认为 RapidMiner 中有一个 SVM 实现可以做到这一点。

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

    3. 您应该标准化距离,使它们具有相同的权重。通过规范化,我的意思是强制介于 0 和 1 之间。要规范化某些东西,请减去最小值并除以范围。

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

    【讨论】:

    • 1.我可以对数据进行修剪,但我相信由于我使用的是 kNN,因此我是否仔细选择了我的属性并不重要。我对 kNN 可以处理倾斜数据的理解是错误的吗?
    • 感谢标准化距离提示。我将立即执行此操作并查看交叉验证。
    【解决方案2】:

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

    关于 k 的选择,建议为奇数,以避免获得“平票”。

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

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 2014-03-03
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2011-03-10
      • 2019-06-05
      • 2011-06-18
      相关资源
      最近更新 更多