【问题标题】:feature selection for regression vs classification回归与分类的特征选择
【发布时间】:2018-08-08 10:38:26
【问题描述】:

机器学习新手,请多多包涵,谢谢!
我有三个问题要问,所以如果您在回答时提及问题编号会很有帮助。

所以我想在应用机器学习算法之前为我的训练数据执行特征选择。我将使用相同的数据集在许多不同的 ML 算法上运行,以决定什么是最好的,因此如果我可以只进行一次特征选择并将新数据集传递给各种算法,效率会更高。
注意:我在 Python3 中编码,我将使用 BorutaPy 进行特征选择。 [https://github.com/scikit-learn-contrib/boruta_py]

问题 1)
在执行特征选择之前我需要知道我正在使用什么算法吗?或者我可以只执行我的特征选择,然后使用任何算法,即;特征选择是否取决于所使用的算法类型?

问题 2)
我可以对回归和分类问题执行相同的特征选择吗?

问题 3)
除了上面提到的一切,最好对回归问题使用正则化并为分类问题执行特征选择?

谢谢!

【问题讨论】:

    标签: python-3.x machine-learning classification regression feature-selection


    【解决方案1】:

    我将回答您的问题 1 和 2,将问题 3 留给其他人。我将使用 R 来做一些例子。我知道您使用的是 python,但您的问题的答案并不取决于实现。我希望你能把它们翻译成 python 或者只是看看数学,看看发生了什么。

    问题 1:特征选择取决于所使用的算法。

    首先,一些数据。

    set.seed(1234)
    y  = runif(1000)
    x1 = (1-y)^(1/6)
    x2 = y + rnorm(1000, 0, 0.1)
    

    这里,y 正好是 1 - x1⁶ 并且 y=x2 加上一些噪声。这是一个有助于了解这一点的情节。

    我们想从 x1 或 x2 预测 y。哪一个更好?首先让我们使用线性模型。

    LM1 = lm(y ~ x1)
    LM2 = lm(y ~ x2)
    summary(LM1)$r.squared
    [1] 0.8454181
    summary(LM2)$r.squared
    [1] 0.9022076
    

    使用 x2 预测 y 的模型具有更好的 R²,因此 x2 优于 x1。

    现在让我们使用 kNN 回归(k=1)。

    library(FNN)
    NN1 = knn.reg(train=x1, y=y)
    NN1$R2Pred
    [1] 0.9999928
    NN2 = knn.reg(train=x2, y=y)
    NN2$R2Pred
    [1] 0.8728359
    

    使用 x1 的模型具有更好的 R²,几乎完美。 最佳变量取决于算法。

    问题 2:回归和分类可能需要不同的特征。

    这要简单得多。如果你在做回归,你在预测一个数值。如果你在做分类,你在预测一个分类变量——所以这里的任何比较都是关于预测不同的 y 值。当然,也可以使 x1 与 y1 相关但不与 y2 相关,并且使 x2 与 y2 相关但与 y1 无关。

    一个简单的例子是:

    x1 = runif(1000)
    x2 = runif(1000)
    y1 = x1
    y2 = ifelse(x2<0.5, 1, 2)
    

    y1 等于 x1,因此 x1 是 y1 的完美预测器。但是 x2 是随机的,与 y1 没有关系,因此对 y1 的预测效果很差。相反,如果 x2

    更一般地说,最好的预测器显然取决于您要预测的内容。如果您要预测两个不同的变量,则没有理由认为相同的预测变量集合对两者都最好。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢! @G5W 你的回答清楚地回答了我的问题 1 和 2!
    猜你喜欢
    • 2020-06-11
    • 2021-06-10
    • 2019-10-08
    • 2017-11-15
    • 2017-12-07
    • 2014-09-21
    • 2018-02-27
    • 2013-03-07
    • 2015-05-21
    相关资源
    最近更新 更多