2022小美赛C题

主要讲解团队对2022小美赛C题的讲解,包含讲解与代码,赛题data。全部为python代码,基本不会提供代码注释及逻辑。

该题主要为时间序列分类,团队尝试的方法如下:

  1. 决策树、随机森林、极限森林分类(DecisionTreeClassifier、 RandomForestClassifier、 ExtraTreesClassifier)在文章中将简写为DTC、RFC、ETC
  2. 带有时间序列的决策树分类(MultivariateClassifier、 TimeSeriesForest)在文章中TimeSeriesForestClassifier将简写为TSFC
  3. LSTM 团队采用 DeepConvLSTM在文章中将简写为DCLSTM
  4. NSGA2剪枝优化

讲解顺序:python库→数据预处理:3\sigma与滤波→数据处理与导入(不含前一步的处理)→决策树等分类→TSFC→DCLSTM→GA决策树剪枝优化。总体结论:极限森林在赛题数据分类效果最好。

文章思路:数据处理→决策树分类→DCLSTM→算法对比→NSGA2对极限森林过拟合优化。

代码有前后关联性,后面代码没有的函数请到前面找。代码非常庞大,请耐心观看。

1.python库

python库

2. 3\sigma and filter

Preprocess

3. 数据处理

其中:num为选择哪些传感器,n_class为选择哪些活动进行分类

Data process

4. 决策树等分类

说明:代码包含k-fold cross-validation,其中注释代码可用作别的用途,具体你要画什么图就用什么代码。

Classifier

5. TFSC

TFSC

6. DCLSTM

DCLSTM

7. NSGA-ii剪枝优化

NSGA2

遗传算法背包问题

排列编码

格雷编码(选择编码)

两个编码方式有差异,我个人认为排列编码会比较好一点,逻辑更加高一些。代码中为EGA模板(即带有精英选择机制的遗传算法),测试下来可能NSGA-ii模板会更优一些,可以在测试的时候选择你想要的算法及结果。data.xlsx

强化学习 Pytorch

个人强化学习过程,Q-learning(基础)-> DQN -> AC -> A2C / A3C -> DDPG -> TD3

DQN

算法简要说明:采用经验回放与神经网络对Q-learning进行优化,使其能够输入连续的数,并更好的利用数据。

参考代码

Actor Critic

算法简要说明:Actor 基于概率选行为, Critic 基于 Actor 的行为评判行为的得分, Actor 根据 Critic 的评分修改选行为的概率。

说明:现已改正 CSDN 上错误代码并经行优化。Github上代码流程为跑完一次历程再进行网络优化,并且Actor和Critic共用同一个optimizer和loss,CSDN 上代码流程为原论文流程,即一边跑历程,一边训练网络,并且Actor和Critic具有不一样的optimizer和loss。

对比:原论文流程,即 CSDN 代码流程网络训练较慢,但收敛可能较快。但在跑 CartPole-v1 的时候效果还是Github 代码优异,只能说具体问题可以都试试,选择最优的代码流程。

CSDN 参考代码

Github 参考代码

A2C A3C

网上多数认为 DDPG TD3 PPO 优于 A3C 所以我没怎么看此两种方法。简单来说就是通过多线程同时计算多个网络,返回组合来更新策略和值函数来更新网络。

DDPG

讲的非常好的一篇文章

代码地址

TD3

讲的很好的文章

强化学习算法选择

讲的很好的文章

关于GA/NSGA优化神经网络

查了网上一些论文和代码,自己写了三个版本的GA-BP优化代码。

说明:主要便于方便代入自己的数据所以写了如下代码。自己用的时候主要可以修改Net中的网络,Train中的load_data变成自己要读的文件,选用合适的损失函数等等。geatpy为国内大佬写的遗传算法库,这里假设读者已经会用。关于GA和NSGA的区别只在于代码中运用模板的区别。

代码都有注释,可以试着读一读。代码gpu支持暂没测试与优化。

可供测试data文件。测试文件说明:最后一列为label,除最后一列外为data。

三个版本对比,对上述测试文件对R^2 >= 0.96为指标,在我的破电脑上运行时间v1.0≈1min,v2.0约等于45s,v3.0≈20s,我没有测试过别的例子的速度,对于v3.0不能保证每个例子都能用,有一定缺陷,不同问题可以选用不同的版本进行使用。

利用 GA 求神经网络最优的learning rate和隐藏层的神经元个数

GA-NET v1.0

对于图片的识别,进行了相关优化

GA-NET v2.0