首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >回归与分类的特征选择

回归与分类的特征选择
EN

Stack Overflow用户
提问于 2018-02-28 14:06:34
回答 1查看 810关注 0票数 1

新来的机器学习,所以请容忍我,谢谢!

我有三个问题要问,所以如果你在回答时提到问题号会很有帮助。

因此,在应用机器学习算法之前,我希望对我的训练数据进行特征选择。我将使用相同的数据集在许多不同的ML算法上运行,以决定什么是最好的,所以如果我只需要进行一次特征选择并将新的数据集传递给不同的算法,那么效率就会更高。

注意:我正在Python3中编码,我将使用BorutaPy进行特性选择。py]

问题1)

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

问题2)

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

问题3)

对于回归问题,是否最好使用正则化,对分类问题进行特征选择,而不是上面提到的一切?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 01:54:06

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

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

首先是一些数据。

代码语言:javascript
运行
复制
set.seed(1234)
y  = runif(1000)
x1 = (1-y)^(1/6)
x2 = y + rnorm(1000, 0, 0.1)

这里,y正好是1-x1⁶和⁶,加上了一些噪声。下面是一个帮助我们了解这一点的阴谋。

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

代码语言:javascript
运行
复制
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_2,因此x2比x1更好。

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

代码语言:javascript
运行
复制
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,几乎完美。最佳变量取决于算法。

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

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

一个简单的例子是:

代码语言:javascript
运行
复制
x1 = runif(1000)
x2 = runif(1000)
y1 = x1
y2 = ifelse(x2<0.5, 1, 2)

y1等于x1,因此x1是y1的完美预测器。但是x2是随机的,与y1没有任何关系,因此是y1的一个很差的预测因子。相反,如果是y2,则为1,否则为2。x2是y2的最佳预测指标。但是x1是随机的,与y2没有关系,因此是y2的一个很差的预测因子。

更广泛地说,最好的预测因素显然将取决于你想要预测的是什么。如果您预测的是两个不同的变量,则没有理由认为相同的预测器集合对这两个变量都是最好的。

我希望这能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49031431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档