Backward Elimination, Forward Selection and Stepwise

Backward Elimination,Forward Selection和Stepwise这三种是特征选择中经常用到的方法。当有时候特征的数量太多的时候,我们除了可以用PCA等方法降维之外,还可以用特征选择的方法,筛选出几个对结果影响最大的特征(feature),从而在对结果影响不大的情况下,减少计算量。


Backward Elimination的方法很简单:

首先包含了所有的feature,然后每个feature都尝试去删除,测试删除的哪个feature对模型准确性有最大的提升,最终删掉对模型提升最高的一个特征。如此类推,直到删除feature并不能提升模型为止。


Forward Selection则完全相反,一个一个加进去。

相对于Forward Selection,Backward Elimination的优点在于,其允许一些低贡献值的特征能够进到模型中去(有时候低贡献值的特征能在组合中有更大的贡献值,而Forward Selection忽略了这种组合的可能性),因此Backward Elimination能够避免受一两个占主导地位的特征的干扰。


Stepwise则是结合上述两者的方法,当一个feature新加入后,stepwise会尝试删去一个feature,直至达到某个预设的标准。这种方法的缺点是,预设的标准不好定,而且容易陷入到过拟合当中。

在R中,如果你想在逐步回归(stepwise regression)过程中控制哪些自变量必须进入模型,你可以使用` leaps`包的`stepAIC()` 或 `stepLasso()` 函数,结合`mustInModel` 参数。这两个函数都是用于执行向前选择(forward selection)或向后剔除(backward elimination)的逐步回归算法,但是`mustInModel` 让你可以强制包含一组特定的变量。 以下是一个简单的例子,假设我们有一个名为`data`的数据框,你想确保变量`var1`, `var2`, 和 `var3` 必须出现在最终模型中: ```R library(leaps) # 确定初始模型的必选变量 must_in_model <- c("var1", "var2", "var3") # 使用 stepAIC() 示例 model <- stepAIC(lm(y ~ ., data = data), scope = mustInModel ~ .) ``` 在这个例子中,`scope` 参数指定了变量的范围,其中`mustInModel ~ .` 表示从`mustInModel`列表开始,包括所有其他的变量。 对于 `stepLasso()`,你需要安装并加载 `glmnet` 包,它的`cv.glmnet()` 函数可以在lasso回归中找到最优的正则化参数,而`stepLasso()` 将这个过程与逐步回归结合起来: ```R library(glmnet) # 使用 stepLasso() 示例 model <- stepLasso(cv.glmnet(x = data[, -c(must_in_model)], y = data$y), mustScreen = must_in_model) ``` 这里,我们排除了`must_in_model`中的变量,并让`stepLasso()` 只能在剩余的变量中搜索。 请注意,这种方法并不能保证`var1`, `var2`, 和 `var3` 一定会出现在最终最优模型中,因为逐步方法可能会在考虑其他因素后改变其选择。另外,逐步回归通常被认为是过时的方法,因为它可能导致模型过拟合,所以在实际应用中,可能会考虑使用更稳健的方法,如LASSO、岭回归或随机森林等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值