您的位置 首页 知识

遗传算法的特点(遗传算法)

遗传算法的特点

原理:
概念:1基因和染色体:具体问题解的一个决策变量,随机生成一组可行解,也就是第一代染色体

    2.适应度函数:计算每一条染色体再下一次进化中被选中的概率
染色体i被选择的概率=染色体i的适应度/所有染色体的适应度之和
##GA算法中常见的选择操作有轮盘赌方式:种群中适应度值更优的个体被选择的概率越大。假设popsize=4,按照如下表达式计算各个个体的被选择概率的大小,然后用圆饼图表示如下。
P(Xj) = fit(Xj)/(fit(X1)+fit(X2)+fit(X3)+fit(X4)),j=1,2,3,4
当依据轮盘赌方式进行选择时,则概率越大的越容易被选择到。

    3.交叉:根据交叉生成N-M条染色体(轮盘赌算法)
##交叉操作也有许多种:单点交叉,两点交叉等。此处仅讲解一下两点交叉。首先利用选择操作从种群中选择两个父辈个体parent1和parent2,然后随机产生两个位置pos1和pos2,将这两个位置中间的基因位信息进行交换,便得到下图所示的off1和off2两个个体,但是这两个个体中一般会存在基因位信息冲突的现象(整数编码时),此时需要对off1和off2个体进行调整:off1中的冲突基因根据parent1中的基因调整为parent2中的相同位置处的基因。如off1中的“1”出现了两次,则第二处的“1”需要调整为parent1中“1”对应的parent2中的“4”,依次类推处理off1中的相冲突的基因。需要注意的是,调整off2,则需要参考parent2。

    4.变异

变异操作的话,根据不同的编码方式有不同的变异操作。
如果是浮点数编码,则变异可以就染色体中间的某一个基因位的信息进行变异(重新生成或者其他调整方案)。
如果是采用整数编码方案,则一般有多种变异方法:位置变异和符号变异。
位置变异: 

符号变异: 

    5.复制

GA 智能搜索算法,基于种群的思想,将问题的解通过编码的方式转化成种群种的个体,不断通过选择,交叉,和变异
究竟要进化多少次?
理论上进化的次数越多越好,但实际应用中往往会在结果精确度和执行效率之间寻找一个平衡点
    1.限制进化次数
    2.限定允许范围

过程:数学建模
实际问题映射成遗传算法的数学模型
任务长度矩阵(任务矩阵)task
节点处理速度矩阵(节点矩阵)node
任务处理时间矩阵 time matrix 二维数组
timematrix[i][j]=tasks[i]/nodes[j]

chromosome={1,2,3,4}
适应度矩阵--上帝
adaptability={0.6, 2, 3.2, 1.8}
选择概率矩阵
selectionProbability={0.1,0.4,0.2,0.3}= adaptability/适应度之和

遗传算法是受物种进化和自然选择启发得到的优化方法。它是一个“古老”的算法,并且在上个世纪就有人尝试应用于金融市场研究。严格来说它不属于机器学习领域,但机器学习工程实际上可以在它的理论基础上来实现。
遗传算法在量化中的应用,复制指数
在投资中,指数基金就是通过复制标的是指数的基金,一般分为完全复制,部分复制,抽象复制。例如沪深300指数,我们用沪深300的少数的成分股来复制沪深300指数。
模型分析:选多少只股票(成本问题)选择哪些成分股(跟踪误差问题)股票权重分配(跟踪误差问题)模型限制条件问题如下:
成分股的数量固定,等于M
成分股的持股比例有大小限制,min < x < max
目标函数定义:
1.跟踪误差 – 与指数偏离的程度

是t时间内,组合的收益率,是t时间内,指数的收益率。
2.超额收益 – 组合的收益率超过指数的收益率

最后适应度函数就是:

其中w是超参,两个目标的权重。
具体实现步骤参数如下:

跟踪误差结果:

遗传算法做因子挖掘
在量化投资领域,多因子模型是量化投资的重要并且传统一个模型,因子是模型的原料,量化模型就是把不同类的因子按照一定方式组合在一起,去选股,并且预测收益。因子也可以称之为特征。在模型中你可以放入多种多样的因子,比如:动量因子,市值类因子,基本面因子,反转类因子,趋势类因子,波动因子等等。这些因子的数据来源于行情数据,高频数据,基本面数据,新闻数据,研报数据,宏观量化类,行业分析类等等。
简单因子:((close – open) / ((high – low) + .001))
复杂因子:((rank(ts_correlation(ts_sum(((high + low) / 2), 19), ts_sum(adv60, 19), 8)) < rank(ts_correlation(low, volume, 6))) * -1)
模型分析:
因子挖掘考虑因子的可交易性,目标函数最优,换手率低,泛华能力强且稳定。
选哪些股票参与训练
选定in-sample的训练时间,out-sample的样本时间
选定股票权重
选定股票收益计算周期
选定股票交易价格类型(open,close,vwap)
选定因子极值处理
基因和染色体选择:
Terminal Set:open、close、high、low、returns、volume、随机数
Function Set:rank(横截面的排序)、ts_rank(时间序列排序)、correlation(横截面相关性)、ts_correlation(时间序列相关性)、decay(时间序列衰减)、decay_linear(线性衰减)、ts_mean(简单平均)、ema(加权平均)、?:(if else三元表达式) ,min,max,ts_min,ts_max
模型限制约束条件:
因子有效数据占比(>60%),因子值数据分布,因子ICIR或者Sharp最低值,因子目标值的t-value值
目标函数定义:
ICIR:

这两种IC值计算主要看因子值分布特点,如果因子值分布方差很小,值都很接近,那么第一种计算方式就不怎么显著,第二种才是比较好的方式。
Sharp(夏普值):

换手率:一买一卖就是换手。换手率目标是越小越好,但是不能太小,换手才会带来收益,过高的换手会导致交易成本太高。同样也不能收益
适应度函数:

具体参数配置:

遗传算法参数配置含:
● 种群个体个数
● 子种群个数
● 随机种子
● 选择算子
● 交叉算子和交叉概率
● 变异算子和变异概率
● 适应度函数配置
● 树深度配置
● Terminal Set配置
● Function Set配置
● 其他超参配置
结果sharp进化图:

总结:遗传算法不仅金融领域应用广泛,还可以优化机器学习超参、机器人路径规划、流水车间调度等领域都可以应用。
遗传算法优化
1.容易局部收敛的问题
遗传算法的局部搜索很强,所以一般容易收敛用以下解决方案,具体情况具体对待。
扩大搜索空间
提高种群的数量、增加数据种类和数量、增加算子。
提高种群多样性
调整交叉策略、提高交叉概率、调整变异策略、提高变异概率。
毁灭优秀个体
对优秀个体进行存活周期倒计时,如果规定的周期内没有出现新的优秀个体,就直接杀死优秀个体,让携带有优秀基因且暂时远离目标的个体存活。
2.不容易收敛的问题
减少搜索空间
减少种群数量,减少数据种类和数量、减少复杂的算子。
降低种群多样性
降低交叉概率和变异概率。
精英策略
防止精英由于交叉变异被破坏,不能进化到下一代,对于较好的精英直接不通过交叉和变异直接进化到下一代。
3.过拟合问题
过拟合问题是在in-sample表现很好,out-sample表现非常差的问题。
样本数据
增加样本数据,让少量样本数据覆盖整体样本。
模型
一开始不要使用复杂的模型,不要把所有的数据加入到模型中。
数据清洗
对于数据进行清洗,分析清洗后的数据的分布。
中性化
对于相关性很高的因子可以进行中性化处理,避免朝着那个方向进化。
4.多目标收敛平衡问题
单目标进化
一开始先单目标进化,收集一定的数据,分析数据分布情况。
惩罚系数
对于目标拟合的时候,进行惩罚,惩罚可以根据周期进行线性,指数惩罚力度。
遗传算法优缺点
优点
● 基于群体的搜索,具备进化能力,不是穷举搜索
● 适应度函数简单操作
● 遗传算法很容易做分布式计算处理
● 遗传算法大大提高了搜索效率
● 遗传算法基于概率变异,具有一定随机性
● 遗传算法可以与其他算法结合,例如可以优化机器学习的超参
缺点
● 遗传算法受初代随机种群影响很大,可以结合启发式算法改进
● 遗传算法的诸多参数,例如交叉率、变异率影响了搜索结果,目前大多依赖经验值
● 遗传算法利用交叉和变异产生种群,搜索速度慢
改进
编码改进 :格雷编码、动态编码
选择进化:随机竞争选择,特定目标挑选
交叉改进:多点交叉,单点交换
自适应:自适应遗传算法,精英策略年龄,种群年龄
效率:并行计算,分布式计算
停止条件:我们可以使用两三种不同的标准作为停止迭代过程的条件:
* 群众中个体数量不再变化;
* 获得满意的适应性水平。
* 算法得到收敛。

我个人特别喜欢第一和第三个标准(除非时间极为有限,我会使用第二个标准)。
实现遗传算法实际上是一项简单的任务。最具挑战的部分是如何将我们的问题转化为“染色体”模型。我们需要可以轻松转换、组合的变量,以及无需大量的内存的算法,那么遗传算法就会有效。

遗传算法的特点相关文章

版权声明