【问题标题】:strings as features in decision tree/random forest字符串作为决策树/随机森林中的特征
【发布时间】:2015-04-26 20:33:45
【问题描述】:

我是机器学习的新手!

现在我正在做一些关于决策树/随机森林应用的问题。我正在尝试解决具有数字和字符串(例如国家/地区名称)作为特征的问题。现在库 scikit-learn 只接受数字作为参数,但我想注入字符串以及它们携带大量知识。

如何处理这种情况,我可以通过某种机制将字符串转换为数字,例如 python 中的哈希。但我想知道在决策树问题中如何处理字符串的最佳实践。

【问题讨论】:

    标签: machine-learning scikit-learn decision-tree


    【解决方案1】:

    1) 如何添加“字符串”作为特征。

    很少有算法可以原生处理任何形式的字符串,决策树不是其中之一。您必须将它们转换为决策树知道的东西(通常是数字或分类变量)。

    如何将它们转换为特征:这在很大程度上取决于字符串的性质。如果字符串是句子,您可以使用 bag of words 之类的东西将每个单词映射到一个数字特征。有许多不同的策略来确定要使用的数值,但仅使用 0/1 表示不存在/存在通常是一个不错的基准。

    对于国家/地区,这没有意义,因为您以错误的方式表示您的功能。一个国家更类似于一个分类变量。只有 X 个国家,你必须有一个 X 中的值(这可能不是绝对正确的,但这已经超出了重点)。 scikit-learn 不支持分类变量。您可以使用one-hot-encoding“伪造”它,但它可能不会像完全支持分类变量的库那样工作。

    请注意,仅仅因为可以将国家/地区表示为类别并不意味着它是处理它们的最佳方式。这在很大程度上取决于您的数据是什么以及您在做什么。在不了解所有细节的情况下,没有人可以为您解答。

    【讨论】:

      【解决方案2】:

      解决问题的方法是在 R 中使用 Breiman 的 randomForest 实现。此实现将允许您使用实际字符串作为输入。例如,您可以在输入数据框中包含一个字符串 country 列。假设country 的唯一值是您的训练数据中的值,将构建生成的模型。 R 中的randomForest 可以提供的另一件很酷的事情是称为部分依赖图。 R 函数称为partialPlot,它会生成一个图表,显示您的 response 变量(即您要预测的内容)如何依赖于某个预测变量。对于country,您实际上可以生成一个图表,显示您的响应如何根据您选择的country 而变化。

      在您不想直接使用字符串的情况下,Raff Edward 的回答也很有意义。其中一个示例可能是您将人名作为字符串作为输入。但是,您对人名的长度如何影响您的响应变量非常感兴趣(无论出于何种原因)。在这种情况下,您只需使用nchar(name),其中name 是包含名称字符串的向量。

      要开始在 R 中使用 randomForest,您可以访问 this site 进行下载。它是免费供个人使用的,我相信几年前我在工作中使用它时我们也没有为它付费。

      您只需再执行一个步骤即可开始。您必须将 randomForest 包安装到您的 R 控制台中。您可以通过键入:

      install.packages("randomForest")
      

      如果您有活动的互联网连接,R 控制台应该能够解决该请求并提示您提供可供选择的镜像列表。

      有很多关于如何使用 randomForestpartialPlot 的网站,您可以通过谷歌搜索这些条款。

      【讨论】:

        猜你喜欢
        • 2019-10-13
        • 2021-03-24
        • 2017-12-11
        • 2021-11-05
        • 2017-03-15
        • 2020-05-16
        • 2017-09-07
        • 2015-09-28
        • 2021-05-09
        相关资源
        最近更新 更多