局部搜索算法的R语言实现

本文介绍了使用R语言实现禁忌搜索算法的过程,该算法用于在特征选择中寻找最大化AIC的多个特征。通过循环迭代和目标函数评估,找到最佳的特征组合。R包tabuSearch提供了禁忌搜索功能,可用于变量选择,并详细解释了其参数设置。
摘要由CSDN通过智能技术生成

禁忌算法
禁忌算法是启发式算法对个体的应用的一种。由于在运用最速下降或者最速上升局部搜索最值的时候可能会因为到了局部最小值后停止搜索。这里禁忌算法是一种可以look back的算法,但是需要设置一些禁忌目录来保证搜索不是无限的。
例如:在Baseball salary案例中,我们希望寻找几个与salary最connected的features去做multiple regression所以,需要在p个features中寻找s个features。我们在这里通过线性回归的衡量参数最大拟合模型的AIC来做一个需要优化的function。。我们需要寻找的是哪s个feature使得AIC最大。所以这是一个NP问题。
下面进行代码的说明:

cun.current <- rbinom(m,1,0.5)#在m个feature里边随便挑选一半的feature进行初始的train
cun.var=baseball.sub[,cun.current==1]
g <-lm(salary.log~.,cun.var)#用选中的feature进行aic值的训练。
cun.aic.current <- extractAIC(g)[2]


for (i in 1:m)
{
cun.next = cun.current#将我们选中的feature的序号赋值给cun.next
cun.next[i]  <- !cun.current[i]#挨个换我们之前选得feature比如之前在123456789中选择了13579现在由于将第一个取反变成了3579.第二次循环将变成选择123579
cun.var=baseball.sub[,cun.next==1]
g <- lm(salary.log~.,cun.var)
cun.aic <- extractAIC(g)[2]
if(cun.aic<cun.aic.cu
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值