精华内容
下载资源
问答
  • 遗传算法进行特征选择

    万次阅读 热门讨论 2019-01-20 21:57:27
    文章目录一、问题举例二、算法描述1、基于类内类间距离的可分性判据2、遗传算法(Genetic Algorithm)1) 初始化种群2)计算当前种群 M(t)中每条染色体的适应度值 f(m)3)基于适应度值的选择4)交叉5)变异6)...

    一、问题举例

    要求:在Sonar和Iris数据集上进行验证遗传算法特征选择性能
    对比算法:顺序前进法和顺序后退法
    特征选择由类别可分性判据+搜索算法实现
    

    二、算法描述

    1、基于类内类间距离的可分性判据

      要进行特征选择,首先要确定选择的准则,也就是如何评价选出的一组特征。确定了评价准则后,特征选择问题就变成从D个特征中选出使准则函数最优的d个特征(d < D)。
      Fisher线性判别采用了使样本投影到一维后类内离散度尽可能小,类间离散度尽可能大的准则来确定最佳的投影方向,这其实就是一个直观的类别可分性判据。可以用两类中的任意两两样本之间的距离的平均来代表两个类之间的距离,现在可以将其推导到多类情况。
      令 x_k^((i)), x_l^((j)) 分别为 ω_i 类及 ω_i 类中的D维特征向量,δ(x_k((i))+x_l((j)) ) 为这两个向量间的距离,则各类特征向量之间的平均距离为
    在这里插入图片描述
      式中c为类别数,ni为 ωi类中的样本数,nj为 ωj类中的样本数,Pi 、Pj是相应类别的先验概率。
      多维空间中两个向量之间有很多种距离度量,在欧式距离情况下有

    在这里插入图片描述
      用 m_i表示第i类样本集的均值向量
    在这里插入图片描述  用 ??表示所有各类的样本集的总平均向量
    在这里插入图片描述
      将上述式子代入到平均距离的公式得
    在这里插入图片描述
      也可以用下面定义的矩阵写出 Jd(x)的表达式,令
    在这里插入图片描述
      因为要保证类间离散度尽可能大,类内离散度尽可能小,故定义以下距离判据
    在这里插入图片描述
      基于距离的可分性判据定义直观、易于实现,因此比较常用。没有直接考虑 样本的分布情况,很难在理论上建立起它们与分类错误率的联系,而且当两类样 本的分布有重叠时,这些判据不能反映重叠的情况。为了简化计算,采用基于类 内类间距离的可分性判据,且根据公式可知,Jd(x)的值越大,表示特征的可分离性越好.

    2、遗传算法(Genetic Algorithm)

       遗传算法把候选对象编码为一条染色体(chromesome),在特征选择中,如 果目标是从 D 个特征中选择 d 个,则把所有特征描述为一条由 D 个 0/1 字符组 成的字符串,0 代表该特征没有被选中,1 代表该特征被选中,这个字符串就叫 做染色体,记作 m。显然,要求的是一条有且仅有 d 个 1 的染色体,这样的染色 体共有 ?? ?种。 优化的目标被描述成适应度(fitness)函数,每一条染色体对应一个适应 度值 f(m)。可以用前面定义的基于类内类间距离的类别可分性判据 Jd(x)作 为适应度。
       遗传算法具体步骤如下

    1) 初始化种群

       以 sonar 数据集为例,一条染色体为一个 1*60 维的行向量,假设我们要从 60 个特征中选 30 个特征,则初始化的一个染色体为将一个零向量的随机 30 位 变成 1,这样就从 60 维特征中随机选了 30 维,如下所示
    在这里插入图片描述

       重复上述过程 n 次,则可以得到一个有 n 条染色体的初代种群 M(0),每条 染色体都不尽相同。

    2)计算当前种群 M(t)中每条染色体的适应度值 f(m)

       将每一条染色体的适应度值(fitness)求出,即将每一条染色体所代表的 d 维特征选出,将原 Sonar 数据集变成一个 208*d 维的矩阵,计算出基于类内类 间距离的可分性判据 Jd(x),作为该染色体的适应度值 f(m)。
       经过 n 次计算之后,可以得到每条染色体的适应度值。

    3)基于适应度值的选择

       按照选择概率 p(f(m))对种群中的染色体进行采样,由采样出的染色体经过 一定的操作繁殖出下一代染色体,组成下一代的种群 M(t+1)。
       将种群中每条染色体的适应度值逐个累加,得到一些从 0 到 1 的区间,如图所示
    在这里插入图片描述
       假设一个种群有 4 个条染色体,每条染色体的适应度值为 0.14、0.49、0.06、 0.31,则将这些适应度值逐个累加起来,得到四个区间(0,0.14)、(0.14,0.63)、 (0.63,0.69)、( 0.69,1),每个区间的长度所代表着对应染色体的适应度值。 我们从 0 到 1 中取一个随机数,该数落在哪个区间,就取哪条染色体。重复 n 次, 得到了基于上一代种群适应度值的新子代种群 M(t+1), 而且保证了种群的染色 体数目不改变,恒为 n。

    4)交叉

      首先将一个种群平均分成两部分,称为两个父代种群,将这两个父代种群随 机打乱,再从两个父代中分别取一个染色体进行交叉,这样就完成了一次随机匹 配的过程。
       为了使交叉之后的染色体特征维数不变,采用了如下方法:
       先从一个父代染色体中随机选取一个片段(长度为 k),统计该片段中有几 个为 1 的基因,再从与之匹配的父代染色体中寻找长度相同、1 基因数目相同的片段,若找到,则进行交叉操作;若未找到,则寻找下一对父代染色体,直到将 所有父代种群遍历完毕。

    5)变异

       基因突变是染色体的某一个位点上基因的改变。同样地,为了使变异之后染 色体中特征数量不变,采用了以下方法:
       先按一定的概率(称为变异概率)选择是否进行变异操作,若是,则随机从 种群中选择一个个体,再随机地选择一个基因进行反转,若该基因由 1 变为了0, 则再随机选一个 0 变成 1,反之也执行同样的操作。直至遍历完种群中所有的个 体。这样就能保证每个染色体的特征个数不会被改变。

    6)重复迭代

       在进行完选择、交叉、和变异操作之后,上一代的种群 M(t)已经变成了新 一代的种群 M(t+1)。重复过程(2),在遗传算法迭代的过程中,种群中的染色 体会趋于所选特征数中的最优解,达到一定的迭代次数 t 后,算法停止,输出最 终种群中适应度值最大的染色体,即完成了在 D 维特征中选择 d 个最优的特征。

    3、顺序前进法和顺序后退法

       顺序前进法是一种自底向上的方法。第一个特征选择单独最优的特征,第二 个特征从其余所有特征中选择与第一个特征组合在一起后准则最优的特征,后面 的每一个特征都选择与已经入选的特征组合起来最优的特征。
       顺序后退法是一种从顶向下的方法,与顺序前进法相对应。从所有特征逐一 剔除不被选中的特征。每次剔除的特征都是使得剩余的特征的准则函数值最优的 特征。

    三、结果

    1、在 sonar 数据集上验证遗传算法

       首先看在取 30 维特征的时候,随着遗传算法的迭代,每一代种群的适应度 值收敛情况
    在这里插入图片描述
       从图中可以很明显地看出,随着遗传算法迭代次数的增加,每一代种群的适 应度值在逐渐变大。当迭代次数达到 60 次的时候,种群中的最大适应度值趋于 最大,在之后收敛与 0.07 左右.
       经过遗传算法迭代 150 次求得的最优种群如下图
    在这里插入图片描述
       图中红色代表 0,蓝色代表 1,横坐标表示特征,纵坐标表示每个染色体。 图中只显示了一部分。可以看见,在迭代后,每个个体所选择的特征趋于一致。
       所选出的适应度值最优的染色体和特征为
    在这里插入图片描述
       现在扩展到选择其他个数的特征的情况,将 d 从 1 取到 60,每个 d 都对应 着一个最优适应度值,现横向将其比较
    在这里插入图片描述
       从图中可以看出,用遗传算法从 60 维中取 1 到 5 维的时候得出的最优染色 体适应度值最大,在 20 维之后适应度值呈现平稳下降的趋势,最终收敛于 0.03 左右。

    2、在 Iris 数据集上验证遗传算法

      由于 Iris 数据集的特征只有 4 维,特征选择的情况较简单,这里不再赘述。

    3、顺序前进法和顺序后退法

      以 Sonar 数据集为例,验证从 60 维中选择 30 维特征的选择情况。
    在这里插入图片描述
    在这里插入图片描述

    5、对比算法:顺序前进法和顺序后退法

       以 Sonar 数据集为例,从 60 维特征中取 1 到 10 维,分别看遗传算法、顺序 前进法、顺序后退法的每一维最优适应度值
    在这里插入图片描述

    四、总结

      1、遗传算法作为一种解决最优化的一种搜索启发式算法,是进化算法的一 种,在选择特征方面具有显著效果。随着遗传算法迭代次数的增加,每一代种群 的适应度值逐渐收敛于局部最优解,从而能够找到所选择的最优特征。
       2、顺序前进法与单独最优特征的选择方法相比,考虑了一定的特征间组合 的因素,但是其第一个特征仍是仅靠单个特征的准则来选择的,而且每个特征一旦入选 后就无法再剔除,即使它与后面选择的特征并不是最优的组合。
      3、顺序后退法也考虑了特征间的组合,但是由于是自顶向下的方法,很多 进行高维空间进行,计算量比顺序前进法大些。而且顺序后退法在一旦剔除了某 一特征后就无法再把它选入。
      4、通过上图的对比可以看出,遗传算法和顺序前进法选出的最优染色体的 适应度值受维数影响较大,但遗传算法的适应度值要大于顺序前进法。顺序后退 法选出的最优染色体的适应度值不但不受维数影响,而且都要大于遗传算法。得 出的结果为:顺序后退法>遗传算法>顺序前进法。

    五、代码

    实验环境Python3.6
    GitHub地址如下
    Pattern recognition / GA
    https://github.com/Fangzhenxuan/AI_Projects.git

    展开全文
  • 遗传算法寻优 cross_val_score(lgb,train_X,train_y,scoring='f1',cv=sKfold).mean() # 使用全部特征进行训练 0.8508040614085857 train_1 = train.drop('label',1) cols = train_1.columns train_1.head() ...

    遗传算法寻优

    cross_val_score(lgb,train_X,train_y,scoring='f1',cv=sKfold).mean()  # 使用全部特征进行训练
    
    0.8508040614085857
    
    train_1 = train.drop('label',1)
    cols = train_1.columns
    
    train_1.head()
    
    经营期限起 是否广告经营 是否城镇 从业人数 注册资本(金) 实缴资本 注册 - 实缴 行政区划代码_count_encode 行业类别代码_count_encode 行业细类代码_count_encode 企业类型_count_encode 企业类型小类_count_encode 状态_count_encode 机构标识_count_encode 职位标识_count_encode 组织形式_count_encode 经营方式_count_encode 风险行业_count_encode 经营场所_count_encode 企业(机构)类型_count_encode 行政区划代码_catboost_encode 行业类别代码_catboost_encode 行业细类代码_catboost_encode 企业类型_catboost_encode 企业类型小类_catboost_encode 状态_catboost_encode 机构标识_catboost_encode 职位标识_catboost_encode 组织形式_catboost_encode 经营方式_catboost_encode 风险行业_catboost_encode 经营场所_catboost_encode 企业(机构)类型_catboost_encode 行政区划代码_targe_encode 行业类别代码_targe_encode 行业细类代码_targe_encode 企业类型_targe_encode 企业类型小类_targe_encode 状态_targe_encode 机构标识_targe_encode 职位标识_targe_encode 组织形式_targe_encode 经营方式_targe_encode 风险行业_targe_encode 经营场所_targe_encode 企业(机构)类型_targe_encode 行政区划代码_woe_encode 行业类别代码_woe_encode 行业细类代码_woe_encode 企业类型_woe_encode 企业类型小类_woe_encode 状态_woe_encode 机构标识_woe_encode 职位标识_woe_encode 组织形式_woe_encode 经营方式_woe_encode 风险行业_woe_encode 经营场所_woe_encode 企业(机构)类型_woe_encode 行政区划代码_ord_encode 行业类别代码_ord_encode 行业细类代码_ord_encode 企业类型_ord_encode 企业类型小类_ord_encode 状态_ord_encode 机构标识_ord_encode 职位标识_ord_encode 组织形式_ord_encode 经营方式_ord_encode 风险行业_ord_encode 经营场所_ord_encode 企业(机构)类型_ord_encode 状态_2015 资金数额_2015 从业人数_2015 从业人数是否公示_2015 经营状态名称_2015 是否有网站标志_2015 是否有对外投资企业标志_2015 有限责任公司本年度是否发生股东股权转让标志_2015 公示状态_2015 其中下岗失业人数雇员_2015 其中退役士兵人数雇员_2015 其中残疾人人数经营者_2015 其中下岗失业人数经营者_2015 其中退役士兵人数经营者_2015 其中高校毕业生人数经营者_2015 其中残疾人人数雇员_2015 从业人数是否公示_2016 经营状态名称_2016 是否有网站标志_2016 是否有对外投资企业标志_2016 有限责任公司本年度是否发生股东股权转让标志_2016 公示状态_2016 其中下岗失业人数雇员_2016 其中退役士兵人数雇员_2016 其中残疾人人数经营者_2016 其中下岗失业人数经营者_2016 其中退役士兵人数经营者_2016 其中高校毕业生人数经营者_2016 其中残疾人人数雇员_2016 其中高校毕业生人数雇员_2016 状态_2017 资金数额_2017 从业人数_2017 从业人数是否公示_2017 经营状态名称_2017 是否有网站标志_2017 是否有对外投资企业标志_2017 有限责任公司本年度是否发生股东股权转让标志_2017 公示状态_2017 其中下岗失业人数雇员_2017 其中退役士兵人数雇员_2017 其中残疾人人数经营者_2017 其中下岗失业人数经营者_2017 其中退役士兵人数经营者_2017 其中高校毕业生人数经营者_2017 其中残疾人人数雇员_2017 其中高校毕业生人数雇员_2017 状态_2018 资金数额_2018 从业人数_2018 从业人数是否公示_2018 经营状态名称_2018 是否有网站标志_2018 是否有对外投资企业标志_2018 有限责任公司本年度是否发生股东股权转让标志_2018 公示状态_2018 其中下岗失业人数雇员_2018 其中退役士兵人数雇员_2018 其中残疾人人数经营者_2018 其中下岗失业人数经营者_2018 其中退役士兵人数经营者_2018 其中高校毕业生人数经营者_2018 其中残疾人人数雇员_2018 其中高校毕业生人数雇员_2018 状态_mode 从业人数是否公示_mode 经营状态名称_mode 是否有网站标志_mode 是否有对外投资企业标志_mode 有限责任公司本年度是否发生股东股权转让标志_mode 公示状态_mode 状态_ischange 从业人数是否公示_ischange 经营状态名称_ischange 是否有网站标志_ischange 是否有对外投资企业标志_ischange 有限责任公司本年度是否发生股东股权转让标志_ischange 公示状态_ischange 其中残疾人人数雇员_max 其中残疾人人数雇员_mean 其中残疾人人数雇员_min 其中残疾人人数经营者_max 其中残疾人人数经营者_mean 其中残疾人人数经营者_min 其中退役士兵人数雇员_max 其中退役士兵人数雇员_mean 其中退役士兵人数雇员_min 其中下岗失业人数雇员_max 其中下岗失业人数雇员_mean 其中下岗失业人数雇员_min 其中高校毕业生人数经营者_max 其中高校毕业生人数经营者_mean 其中高校毕业生人数经营者_min 其中下岗失业人数经营者_max 其中下岗失业人数经营者_mean 其中下岗失业人数经营者_min 从业人数_max 从业人数_mean 从业人数_min 其中退役士兵人数经营者_max 其中退役士兵人数经营者_mean 其中退役士兵人数经营者_min 资金数额_max 资金数额_mean 资金数额_min 其中高校毕业生人数雇员_max 其中高校毕业生人数雇员_mean 其中高校毕业生人数雇员_min 其中残疾人人数雇员_range 其中残疾人人数经营者_range 其中退役士兵人数雇员_range 其中下岗失业人数雇员_range 其中高校毕业生人数经营者_range 其中下岗失业人数经营者_range 从业人数_range 其中退役士兵人数经营者_range 资金数额_range 其中高校毕业生人数雇员_range id_count 变更信息代码_110.0 变更信息代码_111.0 变更信息代码_112.0 变更信息代码_113.0 变更信息代码_115.0 变更信息代码_117.0 变更信息代码_118.0 变更信息代码_120.0 变更信息代码_121.0 变更信息代码_128.0 变更信息代码_129.0 变更信息代码_131.0 变更信息代码_133.0 变更信息代码_137.0 变更信息代码_138.0 变更信息代码_150.0 变更信息代码_190.0 变更信息代码_921.0 变更信息代码_922.0 变更信息代码_925.0 变更信息代码_930.0 变更信息代码_939.0 变更总次数 date_range 变更频率 个人所得税 企业所得税 其他收入 印花税 土地增值税 地方教育附加 城市维护建设税 城镇土地使用税 契税 房产税 教育费附加 残疾人就业保障金 水利建设专项收入 税务部门罚没收入 营业税 税收总额 tax_date_range 每天交税金额 是否有税收计记录 中立 消极 积极 曝光率 积极-消极 最近一次评价 中立评分比例 消极评分比例 积极评分比例
    企业唯一标识
    47645761dc56bb8c5fae00114b768b5d9b6e917c3aec07c4 479 0 0 5.0 50.0 0 52.0 1803 7017 234 14085 5679 21583 929 163 14234 15865 16428 18792 4795 0.018143 0.001633 0.000307 0.039825 0.028175 0.072861 0.033443 0.000437 0.081049 0.098250 0.095310 0.081644 0.008410 0.018100 0.001620 0.000000 0.039823 0.028165 0.072862 3.338898e-02 0.000000e+00 0.081051 0.098254 0.095313 0.081645 0.008394 -1.297707 -3.657842 -2.722611 -0.531992 -0.884355 0.105468 -0.670478 -2.369253 0.221020 0.432157 0.398518 0.228804 -2.090216 1.0 1.0 1.0 1.0 1.0 1 1 1.0 1 1.0 1 1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 -1.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
    59b38c56de3836838082cfcb1a298951abfe15e6940c49ba 47 0 0 2.0 100.0 0 102.0 5481 2968 43 14085 5679 21583 3617 260 14234 15865 16428 18792 4795 0.122277 0.002830 0.001610 0.039825 0.028175 0.072861 0.220212 0.000253 0.081049 0.098250 0.095310 0.081644 0.008410 0.122292 0.002795 0.000000 0.039823 0.028165 0.072862 2.202797e-01 0.000000e+00 0.081051 0.098254 0.095313 0.081645 0.008394 0.679055 -3.047387 -1.065545 -0.531992 -0.884355 0.105468 1.385412 -2.916493 0.221020 0.432157 0.398518 0.228804 -2.090216 2.0 2.0 2.0 1.0 1.0 1 2 2.0 1 1.0 1 1.0 1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 -1.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
    e9f7b28ec10e047000d16ab79e1b5e6da434a1697cce7818 1859 0 1 2.0 10.0 0 12.0 2092 1428 722 2180 757 21583 1361 87 14234 575 16428 18792 757 0.046508 0.609421 0.718118 0.523964 0.003689 0.072861 0.070961 0.057849 0.081049 0.004007 0.095310 0.081644 0.003689 0.046492 0.610147 0.719794 0.524402 0.003472 0.072862 7.096774e-02 5.769231e-02 0.081051 0.003774 0.095313 0.081645 0.003472 -0.355709 3.094724 3.585902 2.745526 -2.321786 0.105468 0.092740 0.122299 0.221020 -2.238555 0.398518 0.228804 -2.321786 3.0 3.0 3.0 2.0 2.0 1 3 3.0 1 2.0 1 1.0 2.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 3.0 0.0 3.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
    f000950527a6feb63ee1ce82bb22ddd1ab8b8fdffa3b91fb 1066 0 0 -1.0 100.0 0 102.0 5481 2968 336 14085 7467 3109 2261 53 14234 15865 16428 18792 7467 0.122277 0.002830 0.000269 0.039825 0.030685 0.019527 0.139795 0.021320 0.081049 0.098250 0.095310 0.081644 0.030685 0.122292 0.002795 0.000000 0.039823 0.030678 0.019502 1.398545e-01 2.040816e-02 0.081051 0.098254 0.095313 0.081645 0.030678 0.679055 -3.047387 -2.853231 -0.531992 -0.798098 -1.242689 0.836353 -0.550646 0.221020 0.432157 0.398518 0.228804 -0.798098 2.0 2.0 4.0 1.0 3.0 2 4 4.0 1 1.0 1 1.0 3.0 -1.0 -1.0 2.0 2.0 -1.0 -1.0 4.0 3.0 -1.0 -1.0 4.0 3.0 -1.0 -1.0 2.0 2.0 -1.0 -1.0 2.0 2.0 -1.0 -1.0 2.0 2.0 -1.0 -1.0 2.0 2.0 -1.0 -1.0 3.0 3.0 -1.0 -1.0 0.0 0.0 -1.0 -1.0 0.0 0.0 -1.0 -1.0 0.0 0.0 -1.0 -1.0 0.0 0.0 -1.0 -1.0 3.0 1.0 -1.0 -1.0 0.0 0.0 -1.0 -1.0 0.0 0.0 -1.0 -1.0 1.0 2.0 2.0 2.0 0.0 2.0 2.0 2.0 3.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 3.5 3.0 3.0 2.0 1.0 4.0 3.5 3.0 2.0 1.5 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 2.0 1.0 1.0 2.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 3.0 220.0 0.013575 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
    9c7fa510616a6830b878f3c8c4317d93e1b022e7f22ae231 90 0 1 5.0 20.0 0 22.0 1338 10312 246 8193 8214 21583 41 27 10610 8186 8115 1 8193 0.035840 0.001466 0.000325 0.000014 0.000014 0.072861 0.002200 0.002357 0.037043 0.000014 0.001328 0.065994 0.000014 0.035802 0.001455 0.000000 0.000000 0.000000 0.072862 4.563131e-14 3.371647e-13 0.037037 0.000000 0.001314 0.065994 0.000000 -0.612630 -3.765978 -2.665179 -5.790555 -5.794011 0.105468 -0.753170 -0.684177 -0.604969 -5.790339 -3.831579 0.000000 -5.790555 4.0 4.0 5.0 3.0 4.0 1 5 5.0 2 3.0 2 2.0 4.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 -1.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
    # 遗传算法特征选择
    sKfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=2020)
    def fun_(x):
        '''传入长度为特征数量的0,1向量,转化为bool之后作为特征的索引,提取特征子集,使用特征子集进行选了返回目标函数值'''
        X =  train_1[cols[x.astype('bool')]].values
        val = cross_val_score(lgb,X,train_y,scoring='f1',cv=sKfold).mean()
        return val
    
    def GV_col(func,len_,num_,it_num = 50,jiaopei = 0.8,bianyi = 0.2):
        '''
        func:目标函数 输入为0,1向量,输出为目标函数值
        len_:特征维度
        it_num:种群的数量
        jiaopei:种群进行杂交的概率
        bianyi:种群进行变异的概率
        返回值:传入长度为特征数量的0,1向量 
                历史种群达到的最优值    
        '''
        pop = np.random.randint(0,2,(num_,len_))
        best_f = 0
        list_best_f = []
        for _ in range(it_num):
            scores = [func(i) for i in pop]
            best_fit_ = scores[np.argmax(scores)]
            if best_fit_ > best_f:
                best_f = best_fit_
                best_p = pop[np.argmax(scores)]
            list_best_f.append(best_f)
            fitness  = scores  - min(scores) + 0.01
            idx = np.random.choice(np.arange(num_), size=num_, replace=True,
                                       p=(fitness)/(fitness.sum()) )
            pop = np.array(pop)[idx]
            new_pop = []
            for father in pop:
                child = father
                if np.random.rand() < jiaopei:
                    mother_id = np.random.randint(num_)
                    low_point = np.random.randint(len_)
                    high_point = np.random.randint(low_point+1,len_+1)
                    child[low_point:high_point] = pop[mother_id][low_point:high_point]
                    if np.random.rand() < bianyi:
                        mutate_point = np.random.randint(0, len_)
                        child[mutate_point] = 1 - child[mutate_point]
                new_pop.append(child)
            pop = new_pop
            print(f'{_}/{it_num},当前分数:{best_f}')
        return best_p,list_best_f
    
    w = GV_col(fun_,244,10,30,0.9,0.3)  #设置种群数量为10,迭代30次最后最优值为0.8518982053263855
    
    0/30,当前分数:0.8422718298032565
    1/30,当前分数:0.8422718298032565
    2/30,当前分数:0.8487626570528729
    3/30,当前分数:0.8487626570528729
    4/30,当前分数:0.850974123058376
    5/30,当前分数:0.850974123058376
    6/30,当前分数:0.850974123058376
    7/30,当前分数:0.850974123058376
    8/30,当前分数:0.850974123058376
    9/30,当前分数:0.850974123058376
    10/30,当前分数:0.850974123058376
    11/30,当前分数:0.850974123058376
    12/30,当前分数:0.850974123058376
    13/30,当前分数:0.850974123058376
    14/30,当前分数:0.850974123058376
    15/30,当前分数:0.850974123058376
    16/30,当前分数:0.850974123058376
    17/30,当前分数:0.850974123058376
    18/30,当前分数:0.850974123058376
    19/30,当前分数:0.850974123058376
    20/30,当前分数:0.850974123058376
    21/30,当前分数:0.850974123058376
    22/30,当前分数:0.850974123058376
    23/30,当前分数:0.850974123058376
    24/30,当前分数:0.850974123058376
    25/30,当前分数:0.850974123058376
    26/30,当前分数:0.8518982053263855
    27/30,当前分数:0.8518982053263855
    28/30,当前分数:0.8518982053263855
    29/30,当前分数:0.8518982053263855
    
    plt.plot(w[1])
    
    [<matplotlib.lines.Line2D at 0x29a465389b0>]
    

    在这里插入图片描述

    lgb.fit(train_X,train_y)
    
    LGBMClassifier(max_depth=4, min_child_samples=10, n_estimators=150,
                   num_leaves=14, reg_alpha=0.28296338218326345,
                   reg_lambda=0.18095776927233131, subsample=0.8272103969163492)
    
    # 删除特征重要度为0的特征,
    cols_2 = train.drop('label',1).columns[lgb.feature_importances_.astype('bool')]
    train_X_2 = train[cols_2].values
    cross_val_score(lgb,train_X_2,train_y,scoring='f1',cv=sKfold).mean()
    
    0.8496644165439153
    
    cols_3 = cols[w[0].astype('bool')]
    train_X_3 = train[cols_3].values
    cross_val_score(lgb,train_X_3,train_y,scoring='f1',cv=sKfold).mean()
    
    0.8518982053263855
    
    展开全文
  • 遗传特征选择 UCI机器学习提出的使用遗传算法为回归任务进行特征选择的简短实验,以教程形式编写。 请注意,这些实验仅专注于功能选择实现。
  • 提出一种利用分形维数和带精英策略的非劣支配排序遗传算法进行特征选择的方法。在该方法中分形维数作为特征选择的一个评价机制,利用NSGA-II算法将特征子集选择问题视为多目标优化问题来处理。为了分析结果的有效性...
  • 采用基于遗传算法(GA)的二维主成分分析法(2DPCA)进行人脸识别。2DPCA 直接以二维图像矩阵为研究对象,以其 协方差矩阵的特征向量为投影轴进行特征提取。
  • 针对此问题,本文提出一种综合了filter模型及wrapper模型的特征选择方法,首先基于特征之间的信息增益进行特征分组及筛选,然后针对经过筛选而精简的特征子集采用遗传算法进行随机搜索,并采用感知器模型的分类错误...
  • 使用遗传算法进行数据挖掘中的特征选择(减少)以获得最高的分类准确度。 在这个项目中,可以使用 4 个分类器:朴素贝叶斯、k-最近邻、决策树和 MLP 神经网络。 您还可以将您自己的分类器替换为您自己的数据集。
  • 遗传算法-特征选择-7

    2011-04-27 15:37:15
    首先利用灰度共生矩阵法和灰度- 梯度共生矩阵法对研究区遥感图像进行纹理特征提取,共得到23 个纹理特征,然后利用遗传算法对这23 个纹理特征进行纹理特征选择,最后得到一组最优纹理特征集.
  • 针对简单遗传算法用于特征选择精度不高、过早收敛的问题,提出了一种新的遗传算法——链式智能体遗传算法(LAGA),并与多准则(MC)相结合,从而提出了基于多准则竞争策略的链式智能体遗传算法(LAGA MC)用于特征...
  • 遗传算法-特征选择-3

    2011-04-27 15:30:03
    对图像库提取颜色和纹理特征,采用遗传FCM 聚类 算法对图像进行聚类,得到每个图像类的聚类中心;最后计算查询示例图像和对应图像类的图像之间的相似度,按照相似度的大小返回检索结果
  • 遗传算法-特征选择-4

    2011-04-27 15:31:10
    采用新的特征提取方法,该方法将目标按人体结构特点划分为多个子区域,利用各个子区域的质心与头部质心形成的距离和夹角对步态特征进行描述
  • 鉴于现有方法的局限性,开发了此代码,以使用遗传算法执行组合优化。 参数是所需的所选特征数 (feat_numb)、矩阵 X,其中每一列是一个特征向量示例,以及其各自的目标数据 y,它是一个行向量。 输出是一个向量,...
  • 使用遗传算法(DEAP框架)进行特征选择 数据科学家发现,很难选择合适的功能来获得最大的准确性,尤其是当您要处理很多功能时。 有多种选择正确功能的方法。 但是,如果特征空间真的很大,我们将不得不为之奋斗。 ...
  • (2) 使用遗传算法进行特征选择的MATLAB代码。 注意: (i) 这段代码很短,但由于我们使用了 GA Toolbox,它运行得非常好。 (ii) 您可以直接在您的计算机上运行此代码,因为此处的数据集在 MATLAB 软件中可用。 (iii)...
  • 提出了一种基于遗传算法的大数据特征选择算法。该算法首先对各维度的特征进行评估,根据每个特征在同类最近邻和异类最近邻上的差异度调整其权重,基于特征权重引导遗传算法的搜索,以提升算法的搜索能力和获取特征的...
  • 使用遗传算法优化特征衰减算法 版权所有 (c) 2014, Ergun Bicici, 引文: Ergun Bicici 和 Deniz Yuret,“使用特征衰减算法优化统计机器翻译的实例选择”,IEEE/ACM 音频、语音和语言处理交易 (TASLP),2014 年...
  • 基于遗传算法特征提取与选择在全局运动估计的应用,万静,胡贵超,对于全局运动估计来说,提取和选择好的特征进行跟踪是至关重要的。针对这个问题经典的方法是首次提取真实点,基于结构标准如图像
  • 提出了一种基于改进的遗传算法的癌症特征基因选择方法,对基本遗传算法的交叉和变异操作加以改进,利用改进后的遗传算法对基因微阵列数据进行特征选择。使用支持向量机对基因子集进行留一交叉验证。实验结果表明,改进...
  • 针对该问题,研究了遗传算法在缺陷特征选择中的应用,并在充分研究信息熵理论的基础上,以平均净分类信息为遗传算法的适应度函数,以弥补互信息熵作为适应度函数所导致的不足。实验表明,利用遗传算法得到的特征集,...
  • 特征选择遗传算法

    万次阅读 2018-07-31 22:11:08
    遗传算法的优点: 1. 与问题领域无关切快速随机的搜索能力。 2. 搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,robust. 3. 搜索使用评价函数启发,过程简单 4. 使用概率机制进行迭代,具有随机性...

    遗传算法的优点:
    1. 与问题领域无关切快速随机的搜索能力。
    2. 搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,robust.
    3. 搜索使用评价函数启发,过程简单
    4. 使用概率机制进行迭代,具有随机性
    5. 具有可扩展性,容易与其他算法结合。

    6. 遗传算法具有良好的全局搜索能力,可以快速地将解空间中的全体解搜索出,而不会陷入局部最优解的快速下降陷阱;全局优化算法,一般的迭代方法容易陷入局部极小的陷阱而出现"死循环"现象,使迭代无法进行。遗传算法很好地克服了这个缺点,是一种全局优化算法。

     

    遗传算法的缺点: 

       1、遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,

       2、另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.
      3、有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间。
      4、算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。
      5、算法的并行机制的潜在能力没有得到充分的利用,这也是当前遗传算法的一个研究热点方向。

        在现在的工作中,遗传算法(1972年提出)已经不能很好的解决大规模计算量问题,它很容易陷入“早熟”。常用混合遗传算法,合作型协同进化算法等来替代,这些算法都是GA的衍生算法。


        并且利用它的内在并行性,可以方便地进行分布式计算,加快求解速度。但是遗传算法的局部搜索能力较差,导致单纯的遗传算法比较费时,在进化后期搜索效率较低。在实际应用中,遗传算法容易产生早熟收敛的问题。采用何种选择方法既要使优良个体得以保留,又要维持群体的多样性,一直是遗传算法中较难解决的问题。


        模拟退火算法虽具有摆脱局部最优解的能力,能够以随机搜索技术从概率的意义上找出目标函数的全局最小点。但是,由于模拟退火算法对整个搜索空间的状况了解不多,不便于使搜索过程进入最有希望的搜索区域,使得模拟退火算法的运算效率不高。模拟退火算法对参数(如初始温度)的依赖性较强,且进化速度慢。

    http://blog.sina.com.cn/s/blog_6377a3100100h1mj.html

     

     

    基于遗传算法的特征选择是一种wrapper方法,该算法是以支持向量机分类器的识别率作为特征选择的可分性判断依据。在遗传算法中,对所选择的特征用[0,1]二进制串来初始化,由于二进制数{0,1}是等概率出现的,所以最优特征个数的期望是原始特征个数的一半。要进一步减少特征个数,则可以让二进制数{0,1}以不等概率出现,以a个特征中选择b个特征为例,使得在a位二进制串中1出现的概率为b/ab/a。 
    对于支持向量机和遗传算法,可以看先前的博客《线性支持向量机》《遗传算法及其实现》

    改进的遗传算法

    一个完整的遗传算法主要包括几个步骤:基因编码,种群初始化,选择操作,交叉操作,变异操作,结束条件判断等。

    基因编码

    将选择的特征组合用一个{0,1}二进制串表示,0表示不选择对应的特征,1表示选择对应的特征。对惩罚参数C和核参数σσ也采用二进制编码,根据范围和精度计算所需要的二进制串长度分别为lc,lσlc,lσ。

    种群初始化

    以a个特征中选取b个特征为例,确保在前a位二进制串中1出现的概率一定是b/ab/a,两个参数部分的二进制码随机生成,二进制长度为la+lc+lσla+lc+lσ;然后以一定的种群规模进行种群初始化。

    选择操作

    计算个体适应度,即先对个体进行解码,再用训练和测试样本计算SVM的正确分类率: 

    fitness=WA×SVMacuracy+WF×(Σlai=1Ci×Fi)−1WA:SVM分类准确率权重,一般设置为75−100%SVMaccuracy:SVM分类准确率WF:选择特征和惩罚参数乘积和逆的权重,如果准确率非常重要,可以把它设置成100%Ci:特征i的损失,如果没有关于损失的信息,可以设置为1Fi:1代表选择了特征i;0表示没有选择特征i。fitness=WA×SVMacuracy+WF×(Σi=1laCi×Fi)−1WA:SVM分类准确率权重,一般设置为75−100%SVMaccuracy:SVM分类准确率WF:选择特征和惩罚参数乘积和逆的权重,如果准确率非常重要,可以把它设置成100%Ci:特征i的损失,如果没有关于损失的信息,可以设置为1Fi:1代表选择了特征i;0表示没有选择特征i。


    然后采用轮盘赌选择法,随机从种群中挑选一定的数目个体,再将适应度最好的个体作为父体,这个过程重复进行直到完成所有个体的选择。

     

    交叉操作

    由于交叉操作的随机性,会改变前a位二进制串中的1出现的概率,使其不等于b/ab/a,这将导致不同个体特征矢量的维数不尽相同,所以进行以下操作。 
    首先将二进制编码分成两部分,前lala位特征编码部分和后lc+lσlc+lσ位参数编码部分。如下图所示, 
    这里写图片描述 
    首先对比两个父体,找出两父体个体同为1的基因位,称之为“优势基因位”,例如第1,4位。然后找两父体其中一个为1的基因位,称之为“非优势基因位”,例如2,5,6,a。如果两父体中存在“优势基因位”,表明两父体对该基因位所对应的特征分量的选择意见趋于一致,该特征应在子代中予以保留。如果父代个体中存在“非优势基因位”,表明两个体在该特征上存在分歧。 
    如果两父体个体存在e个“优势基因位”,则在子代中保留这些基因位,在“非优势基因位”中随机选择b-e个基因位,并令这些基因位为1,产生两个新个体。图1中两个子个体保留了第1,4位,子个体1在第2,5,6,a中随机选择了第6,a位并令其成为1,子个体2第2,5,6,a位中随机选择了第2,5位并令其为1.这样保证了子个体与父体选择的特征数式中为b。

    变异操作

    如果对特征编码进行翻转变异操作,那么将使二进制串中的为1的基因位发生变化,如果某一位由0变成1,则选择的特征数变为d+1,反之变为d-1.为解决这个问题可以使用下面的方法。 
    如图2,分别统计编码为1和0的基因位,分别在为1和0的基因位中随机选择一个二进制数,图2是第2和第5位相互交换,得到变异子个体。 
    这里写图片描述

    结束条件

    前面的选择,交叉,变异操作合起来称为遗传操作,当遗传操作到达设定的最大迭代次数时,算法结束。如果迭代遗传过程中,连续若干代最优个体不再变化,算法也可提前结束。 
    下面是算法的流程图: 
    这里写图片描述

    参考 
    【Cheng-Lung Huang , Chieh-Jen Wang】A GA-based feature selection and parameters optimization for support vector machines 
    【杜卓明,冯静】改进遗传算法和支持向量机的特征选择算法

     

    原文链接。 https://blog.csdn.net/littlely_ll/article/details/72625312

     

     

    智能优化算法和传统优化算法的区别:

    1. 优化算法有很多,关键是针对不同的优化问题,例如可行解变量的取值(连续还是离散)、目标函数和约束条件的复杂程度(线性还是非线性)等,应用不同的算法。

    2. 对于连续和线性等较简单的问题,可以选择一些经典算法,如梯度、Hessian 矩阵、拉格朗日乘数、单纯形法、梯度下降法等。

    3. 而对于更复杂的问题,则可考虑用一些智能优化算法,如遗传算法和蚁群算法,此外还包括模拟退火、禁忌搜索、粒子群算法等。

    优缺点比较:

     

     

    传统优化算法与遗传算法之间的优缺点和特点比较

    原文 https://blog.csdn.net/misayaaaaa/article/details/54407490

    传统优化算法与遗传算法之间的优缺点比较

    传统优化算法优点:1:利用了解空间的特性,如可微等。

                                   2:理论较为完善,计算量小。

                                   3:收敛速度快。

                                   4:具有确定的终止准则。

     

    传统优化算法缺点:1:仅能求出优化问题的局部最优解。

                                   2:求解的结果强烈依赖于初始值。

     

    遗传算法的优点:1:能够求出优化问题的全局最优解。

                               2:优化结果与初始条件无关。

                               3:算法独立于求解域。

                               4:具有较强的鲁棒性。

                               5:适合于求解复杂的优化问题。

                               6:应用较为广泛。

     

    遗传算法的缺点:1:收敛速度慢。

                               2:局部搜索能力差。

                               3:控制变量较多。

                               4:无确定的终止准则。

     

    特点的比较:

     

    遗传算法:1:以编码的方式工作,可以并行搜索多个峰值

                     2:以编码方式工作,不对参数本身进行操作,具有良好的可操作性

                     3:用概率性传递规则代替确定性规则,具有全局寻优特点

                     4:只使用目标函数和相应的适应度函数,不需要其他的辅助信息

     

    传统优化算法:1:需要不同形式的辅助信息,如可微、连续等

                            2:有固定的结构和参数,计算复杂度和收敛性可做理论分析 

                            3:有明确的条件描述,清晰的结构信息

     

     

    智能优化算法总结

    优化算法有很多,

    经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,模拟退火、遗传算法以及禁忌搜索称作指导性搜索法。而神经网络,混沌搜索则属于系统动态演化方法。

     

    梯度为基础的传统优化算法具有较高的计算效率、较强的可靠性、比较成熟等优点,是一类最重要的、应用最广泛的优化算法。但是,传统的最优化方法在应用于复杂、困难的优化问题时有较大的局限性。

     

    一个优化问题称为是复杂的,通常是指具有下列特征之一:(1)目标函数没有明确解析表达;(2)目标函数虽有明确表达,但不可能恰好估值;(3)目标函数为多峰函数;(4)目标函数有多个,即多目标优化。

    一个优化问题称为是困难的,通常是指:目标函数或约束条件不连续、不可微、高度非线性,或者问题本身是困难的组合问题。传统优化方法往往要求目标函数是凸的、连续可微的,可行域是凸集等条件,而且处理非确定性信息的能力较差。

     

    这些弱点使传统优化方法在解决许多实际问题时受到了限制。

    智能优化算法一般都是建立在生物智能或物理现象基础上的随机搜索算法,目前在理论上还远不如传统优化算法完善,往往也不能确保解的最优性,因而常常被视为只是一些“元启发式方法”(meta-heuristic)。但从实际应用的观点看,这类新算法一般不要求目标函数和约束的连续性与凸性,甚至有时连有没有解析表达式都不要求,对计算中数据的不确定性也有很强的适应能力

     

    下面给出一个局部搜索,模拟退火,遗传算法,禁忌搜索的形象比喻: 
       
      为了找出地球上最高的山,一群有志气的兔子们开始想办法。 
        
      1.兔子朝着比现在高的地方跳去。他们找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是局部搜索,它不能保证局部最优值就是全局最优值。 
        
      2.兔子喝醉了。他随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,他渐渐清醒了并朝最高方向跳去。这就是模拟退火。

      3.兔子们吃了失忆药片,并被发射到太空,然后随机落到了地球上的某些地方。他们不知道自己的使命是什么。但是,如果你过几年就杀死一部分海拔低的兔子,多产的兔子们自己就会找到珠穆朗玛峰。这就是遗传算法。 
        
      4.兔子们知道一个兔的力量是渺小的。他们互相转告着,哪里的山已经找过,并且找过的每一座山他们都留下一只兔子做记号。他们制定了下一步去哪里寻找的策略。这就是禁忌搜索。

    一般而言,局部搜索就是基于贪婪思想利用邻域函数进行搜索,若找到一个比现有值更优的解就弃前者而取后者。但是,它一般只可以得到“局部极小解”,就是说,可能这只兔子登“登泰山而小天下”,但是却没有找到珠穆朗玛峰。而模拟退火,遗传算法,禁忌搜索,神经网络等从不同的角度和策略实现了改进,取得较好的“全局最小解”。 

     

    https://blog.csdn.net/sinde1992/article/details/50321225

    展开全文
  • 在研究当前各种特征选择方法的基础上,提出了一种基于遗传算法的特征组合选择方法。使用遗传算法搜索特征空间,依据Fisher准则计算各种特征组合的分类能力,根据计算结果对特征组合进行选择、交叉、变异,通过多次反复...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 235
精华内容 94
关键字:

遗传算法进行特征选择