【问题标题】:Machine Learning Classification with only binary numbers [closed]只有二​​进制数的机器学习分类[关闭]
【发布时间】:2017-10-22 05:38:12
【问题描述】:

我有 50 个预测变量和 1 个目标变量。我所有的预测变量和目标变量都只是二进制数 0 和 1。我正在使用 R 进行分析。

我将实现四种算法。 1.射频 2. 日志注册 3. 支持向量机 4. LDA

我有以下问题:
我将它们全部转换为因子。在将变量输入其他算法之前,我应该如何处理它们。

我使用 caret 包来训练我的模型,这需要很长时间。我确实经常练习 ML,但我不知道如何将所有变量都设为二进制。
如何去除共线变量?

【问题讨论】:

  • @Headpoint,你能回答这个问题吗
  • 你应该尽量缩小问题的范围——有更多的分类器和处理数据的方法。如果变量实际上是分类变量,则应将它们转换为因子,以免将它们视为数值变量。如果您不确定如何处理分类数据,最好阅读一些介绍性文章。我想对于这类数据有很多机器学习算法。
  • 我尝试了很多算法,以上都是,也转换成因子

标签: r machine-learning data-science


【解决方案1】:

我主要不是 R 用户,而是 Python。打赌有一个共同的方法: 1.检查你的列。如果零或一的数量 > 总量的 95%,则删除列(您可以稍后尝试 2.5% 甚至 1%)。 2. 默认运行简单随机森林,获取特征重要性。您可以使用 LDA 处理不必要的列。 3. 检查目标列。如果高度不平衡,请尝试过采样或下采样。或者使用可以处理不平衡目标列的分类方法(如 XGBoost)。

对于线性回归,您需要计算相关矩阵并删除相关列。其他方法可以没有它。

请检查 SVM(或 SVC)是否支持所有功能为布尔值。但通常它对二元分类非常有效。

我也建议尝试神经网络。

PS 关于共线变量。我为我的项目编写了 Python 代码。这很简单——你可以做到: - 绘制相关矩阵 - 找到相关性超过某个阈值的对 - 删除与目标变量具有较低相关性的列(您也可以检查要删除的列不重要,否则尝试其他方式,可能是联合列)

在我的代码中,我针对不同的阈值迭代地运行此算法:从 0.99 到 0.9。效果很好。

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2023-03-12
    • 2017-12-25
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多