首页 / 资讯中心 / 文章详情

基于阿基米德优化算法的LSSVM回归预测实战与避坑指南

基于阿基米德优化算法的LSSVM回归预测实战与避坑指南 ★ FEATURED ARTICLE
做回归预测这行的朋友应该都绕不开LSSVM。最小二乘支持向量机训练速度快、泛化能力在线很多工程场景里都拿它当基线模型。但用过的人都知道LSSVM最让人头疼的不是算法本身而是那两个超参数——正则化参数gamma和核宽度sigma。这两个值定得不好预测精度能差出一大截。我最早是人工试参后来换成网格搜索再后来试过遗传算法和粒子群效果有提升但总不够稳。直到一个风电功率预测项目里我换上了阿基米德优化算法Archimedes Optimization Algorithm简称AOA来搜参收敛干脆、结果稳定测试集R²从0.84直接拉到0.95以上。这篇文章就把AOA-LSSVM从原理到代码到避坑的完整过程整理出来适合正在做回归预测、超参数自动搜索或者想复现元启发式算法优化SVM类模型的朋友。1. 回归预测的老问题LSSVM为什么需要优化1.1 LSSVM和SVM的差异点LSSVM的全称是Least Squares Support Vector Machine中文一般叫最小二乘支持向量机。它和传统SVM最核心的区别在于约束条件和损失函数。SVM用的是不等式约束求解的是一个二次规划问题数据量一上来求解速度就会明显变慢而LSSVM把不等式约束换成了等式约束损失函数也直接用二次误差项代替了松弛变量。这样优化问题从二次规划变成了一个线性方程组求解也就是KKT系统计算复杂度大幅下降。在很多回归任务里LSSVM的拟合速度比SVM快一个量级这是它受欢迎的重要原因。但代价也很明显LSSVM失去了SVM的稀疏性几乎每个训练样本都会对应一个非零的支持值。换句话说样本量越大模型存的东西越多推理阶段的计算开销也随之增加。在实际工程中如果你的训练集有几万条数据LSSVM的矩阵求解和存储压力会非常大。所以LSSVM并不是“完全代替SVM”而是在中等规模数据集上追求“快且稳”的折中选择。1.2 关键参数到底在控制什么做LSSVM回归绕不开两个核心参数gamma惩罚因子和sigmaRBF核函数的带宽。gamma控制的是模型对误差的容忍程度。gamma越大模型越倾向于把训练集拟合得精确但很容易把噪声也学进去造成过拟合gamma越小模型越平滑抗噪声能力强但拟合不足的风险也越高。sigma控制的是RBF核的径向作用范围。sigma越小核函数越尖锐每个样本只影响邻近的点模型容量变大sigma越大核函数越平缓模型变得平滑但可能丧失对细节的捕捉能力。可以这样理解gamma是“我要不要对每个点都较真”的态度sigma是“每个点能管到多远的地盘”。这两个参数不是独立起作用的它们组合在一起决定LSSVM在高维特征空间中画出的回归曲面形状。我用过一组很典型的对比同样一份电力负荷数据gamma10、sigma0.5时训练集R²高达0.97但测试集R²只有0.78改成gamma100、sigma10后训练集R²降到0.91测试集R²反而涨到0.93。这就是典型的均衡问题不是参数越大越好也不是越小越好。1.3 传统调参方式的局限很多人上手LSSVM的第一反应是网格搜索。把gamma和sigma各自划分成几十个候选值然后两层循环去试。这个方法在二维参数空间里不是不能用问题是计算量太大。假设gamma取20个值sigma取20个值那就是400组组合每组组合都要跑一次带交叉验证的LSSVM训练。数据量稍大一点跑一次网格搜索能让你等半小时甚至更久。而且网格搜索的粒度很难把握粒度太粗容易漏掉最优区域粒度太细计算量爆炸。随机搜索稍微聪明一点能在相同预算下覆盖更多参数组合但它本质上是盲试没有利用历史搜索信息。我后来也试过遗传算法GA和粒子群优化PSO。GA的问题在于参数多、算子多交叉概率、变异概率、种群规模都要调而且局部精调能力一般PSO速度不错但在一些多峰搜索空间里容易早熟飞着飞着就聚到一个局部极值附近出不来。相比之下阿基米德优化算法的物理模型更丰富每个个体同时维护密度、体积、加速度三个状态搜索策略上有更多变化空间这是它能稳定找到更优参数组合的重要原因。2. 阿基米德优化算法AOA从浮力定律到寻优机制2.1 AOA的物理模型密度、体积、加速度这里先说明一个容易混淆的点机器学习圈里叫AOA的算法有两个一个是Arithmetic Optimization Algorithm算数优化算法基于加减乘除的数学算子另一个是Archimedes Optimization Algorithm阿基米德优化算法基于浮力物理原理。从标题“基于阿基米德算法”来看本文讨论的是后者也就是用浮力定律来做优化搜索的算法。阿基米德优化算法的核心思想来源于一个生活常识物体浸在流体里会受到向上的浮力浮力大小等于它排开流体的重量。不同物体由于密度、体积不同在流体中的运动状态也不一样——轻的物体浮得快重的物体沉得稳。AOA把每个候选解想象成一个浸在流体中的物体这个物体有三个属性密度density、体积volume和加速度acceleration。寻优过程就是这些物体在流体中不断碰撞、迁移、靠近最优位置的过程。为什么要引入三个状态量而不是像PSO那样只保留速度和位置因为多一个状态量算法在搜索空间里的行为模式就多一个维度。比如两个候选解位置接近但它们的密度和体积可能差异很大这会影响下一步的加速度和位移方向。这种冗余设计让AOA在探索新区域和精调局部最优之间更容易取得平衡。我在项目里最大的感受是AOA在低维连续优化问题上的“拐弯能力”很强不太容易被某一片区域的局部极值困住。2.2 算法迭代逻辑与核心公式AOA的迭代过程可以拆成几个关键环节。首先是种群初始化随机生成N个物体每个物体在参数搜索空间内有一个位置同时随机初始化它的密度、体积和加速度。这里的“位置”就是我们需要优化的参数向量——在AOA-LSSVM里就是(gamma, sigma)的组合。初始化完后计算每个物体对应的适应度值也就是LSSVM在交叉验证下的预测误差然后记录全局最优物体。进入迭代后算法先更新每个物体的密度和体积更新方式大致遵循向当前最优物体靠拢的原则新密度等于原密度加上随机扰动与最优密度差的组合体积同理。这样保证种群不会停在一潭死水而是持续向最优区域收缩。接着算法计算一个转移因子TF它的作用类似于“温度系数”随迭代从1逐渐衰减到接近0。当TF较小时算法处于探索阶段物体会和一个随机选择的其他物体发生“碰撞”根据对方的密度、体积和加速度计算自己的新加速度当TF较大时算法进入开发阶段物体会直接参照全局最优物体的信息来更新加速度相当于锁定目标区域进行细致搜索。加速度算完之后还需要归一化处理把加速度映射到一个合理的区间避免某个物体步子迈得太大直接飞出搜索边界。这一步在原论文里用一个线性归一化公式完成缩放参数一般取0.9和0.1。最终的位置更新分为两条路径探索阶段向随机参考物体移动开发阶段向全局最优物体移动并带有符号翻转因子。符号翻转的作用是让物体不仅能朝着最优解靠近还能在最优解附近来回震荡从而在极端多峰的参数空间中不丢失小范围搜索能力。整个过程循环执行直到达到最大迭代次数或满足收敛条件。2.3 AOA和PSO、GA相比的差异点很多人会问既然GA和PSO已经很成熟为什么还要用AOA我在实际项目里做了一个相对完整的对比这里直接说结论。GA的主要问题在于操作符太多选择策略、交叉算子、变异方式每一项都可以衍生成一堆变种调起来非常繁琐而且GA是离散化编码更自然对连续参数优化需要做实数编码反而丢失了一部分优势。PSO优点是结构和参数简单收敛速度快但它的搜索行为完全由个体历史最优和全局最优牵引一旦这两个信息指向同一个局部区域整个种群就会快速收缩逃逸能力比较弱。AOA的不同之处在于每个物体有三个独立物理量参与演化而且探索和开发阶段由转移因子动态切换不像PSO那样只有线性递减的惯性权重。你可以把AOA想象成一支队伍在陌生地形里行军探索阶段的“碰撞”机制类似于士兵之间相互传递情报开发阶段的“趋向最优”机制类似于发现目标后全员收拢包围。这种复合机制使得AOA在迭代前期能很好地覆盖整个搜索空间后期又能集中火力精挖最优区域。我测试下来对LSSVM这类只有二维参数但适应度函数地形很复杂的优化问题AOA用20个种群迭代60次就能达到PSO用200次迭代才能找到的质量区间。3. AOA-LSSVM实现流程与代码框架3.1 整体流程与数据准备要点完整的AOA-LSSVM流程并不复杂大致分五步数据准备、初始化AOA种群、计算适应度、迭代寻优、用最优参数训练最终模型并评估。我把每一步的关键动作提前列出来避免漏掉环节数据准备收集原始样本处理缺失值和异常值划分训练集与测试集对特征和目标值做归一化。初始化AOA设定种群数量N、最大迭代次数T、搜索空间下界和上界随机生成N组(gamma, sigma)及对应的密度、体积、加速度。计算适应度对每一组超参数在训练集上做K折交叉验证用LSSVM回归模型预测验证集计算RMSE作为适应度值。迭代寻优按AOA的密度、体积、加速度更新规则迭代记录每一代的最优适应度和最优参数。最终评估用寻优得到的最优(gamma, sigma)在完整训练集上重新训练LSSVM对测试集做预测计算R²、RMSE、MAE等指标。数据准备这一步有个非常容易踩的坑归一化必须在划分训练集和测试集之后做而且要用训练集的均值和标准差去归一化测试集。如果先对整个数据集做归一化再划分测试集的信息已经泄漏到了训练过程里最终测试集上的RMSE会虚低看起来精度很高一上线就露馅。我见过好几个项目出现这个问题表现就是离线测试R²高达0.98线上推理差得离谱。这种错误在论文复现时尤其容易被忽略因为数据量小、重复实验多泄漏效应被模型容量给兜住了不容易被发现。3.2 适应度函数设计交叉验证RMSE怎么算适应度函数是整个AOA-LSSVM的灵魂。它决定了AOA在搜索空间里往哪个方向走所以必须选一个能稳定反映模型真实泛化能力的指标。我最开始用的是单次留出验证误差也就是只分一次训练集和验证集用验证集RMSE作为适应度。结果问题很明显每次AOA迭代中对同一组参数的评价波动很大因为划分方式不同验证集上的误差差异可以超过10%。AOA的搜索过程本质上是在比较不同候选解的适应度如果适应度本身噪声太大算法会把很多计算浪费在“追赶随机误差”上收敛曲线看起来很漂亮但最终参数只是碰巧在当时那次划分下表现不错。正确的做法是K折交叉验证。把训练数据均匀分成K份每次用K-1份训练、1份验证轮流K次把K次验证集误差的平均值作为适应度值。K一般取5或10。数据量在几千条量级时用5折就够了K越大计算量越大对AOA这种需要迭代几十上百次的优化器来说K10会让总训练次数翻倍收益却不明显。我在自己的项目里固定用5折交叉验证的RMSE作为AOA的适应度函数整体搜索过程明显更稳定最终参数在测试集上的表现和适应度评估值之间的偏差从原来的15%以上缩小到5%以内。3.3 AOA-LSSVM核心代码结构下面给出我在项目中使用的AOA-LSSVM核心框架语言用的是MATLAB风格伪代码重点展示逻辑可以直接改成Python版本配合LSSVM库使用% 基础参数设置 N 30; % 种群数量 max_iter 100; % 最大迭代次数 dim 2; % 优化参数维度: (gamma, sigma) lower_bound [0.01, 0.01]; upper_bound [1000, 100]; % 初始化种群位置与物理属性 X zeros(N, dim); density rand(N, 1); volume rand(N, 1); acceleration zeros(N, 1); for i 1 : N X(i, :) lower_bound rand(1, dim) .* (upper_bound - lower_bound); end % 计算初始适应度5折交叉验证RMSE fitness zeros(N, 1); for i 1 : N fitness(i) lssvm_cv_rmse(X(i, 1), X(i, 2)); end [best_fitness, best_idx] min(fitness); best_position X(best_idx, :); % AOA主循环 for t 1 : max_iter TF exp((t - max_iter) / max_iter); % 转移因子 for i 1 : N % 更新密度和体积 density(i) density(i) rand * (density(best_idx) - density(i)); volume(i) volume(i) rand * (volume(best_idx) - volume(i)); % 根据阶段计算加速度 if TF 0.5 mr randi(N); acceleration(i) (density(mr) volume(mr) .* acceleration(mr)) / ... (density(i) .* volume(i)); else acceleration(i) (density(best_idx) volume(best_idx) .* acceleration(best_idx)) / ... (density(i) .* volume(i)); end % 归一化加速度 acc_min min(acceleration); acc_max max(acceleration); acc_norm 0.9 * (acceleration(i) - acc_min) / (acc_max - acc_min eps) 0.1; % 位置更新 if TF 0.5 % 探索阶段向随机参考物体移动 X(i, :) X(i, :) 2 * rand * acc_norm .* (X(mr, :) - X(i, :)); else % 开发阶段围绕全局最优收缩 F -1 2 * rand; T_factor 6 * TF; X(i, :) best_position F * 6 * rand * acc_norm .* (T_factor * best_position - X(i, :)); end % 边界截断 X(i, :) min(max(X(i, :), lower_bound), upper_bound); % 重新评估 new_fitness lssvm_cv_rmse(X(i, 1), X(i, 2)); fitness(i) new_fitness; if new_fitness best_fitness best_fitness new_fitness; best_position X(i, :); best_idx i; end end % 记录第t代最优结果 record(t) best_fitness; end在Python环境里LSSVM模型可以用scikit-learn搭配lssvr相关实现或者直接用libsvm的python封装。适应度函数部分需要单独封装一个函数输入gamma和sigma在训练数据上完成K折交叉验证并返回平均RMSE。关键点是每次交叉验证都要重置模型不能在循环里复用同一个实例否则上一折的训练结果会污染下一折。3.4 回归预测的评估指标与可视化模型训练完光看一个RMSE不够我习惯同时算四个指标R²决定系数、RMSE均方根误差、MAE平均绝对误差和MAPE平均绝对百分比误差。R²反映模型对目标值变异性的解释能力越接近1越好RMSE和MAE越小越好RMSE对大误差敏感MAE对小误差更直观MAPE适合业务方理解相对偏差但目标值接近0时会爆炸用时需要小心。计算公式都很标准R² 1 - SS_res / SS_totRMSE sqrt(mean((y_true - y_pred)²))MAPE mean(|y_true - y_pred| / y_true) * 100%。在实际报告中我会把四个指标全部列出因为业务方和开发侧关注的重点不一样。可视化部分我建议至少画三张图第一张是测试集真实值与预测值对比曲线用折线能直观看出贴合程度第二张是AOA收敛曲线横轴迭代次数纵轴最优适应度值用来判断搜索是否收敛、要不要加大迭代次数第三张是预测误差分布直方图误差接近正态分布说明模型没有系统偏差如果误差明显偏向正或负说明LSSVM超参数或者特征工程还有问题。这三张图基本能支撑大部分项目汇报场景。4. 实验对比与结果分析4.1 实验设置与数据划分我在一个实际的风电场功率预测项目里完整跑过AOA-LSSVM的对比实验。数据集是某风电场的历史测风塔数据加机组出力记录包含风速、风向、温度、气压、湿度等8个原始特征加上滞后特征后一共26维。样本总量1200条按时间顺序划分前80%作为训练集后20%作为测试集。这种按时间划分的方式比随机划分更贴近实际业务——预测未来永远是用历史数据不能用未来的信息去“混着学”。归一化用的是Z-score方法在训练集上计算均值和标准差再用它直接转换测试集。对比方法我选了四组默认参数的LSSVMgamma1sigma1、网格搜索优化后的LSSVM、PSO-LSSVM、GA-LSSVM加上AOA-LSSVM。为了保证对比公平所有优化算法统一用5折交叉验证RMSE作为适应度函数种群数量统一为30最大迭代次数统一为100。搜索空间统一设置为gamma在[0.01, 1000]区间、sigma在[0.01, 100]区间。这是我在做不同优化算法对比时最看重的一点不能只换优化器别的条件全部保持相同否则你根本说不清精度提升是算法的功劳还是参数设置的功劳。4.2 收敛过程与参数搜索轨迹AOA在100次迭代中的收敛行为相当有规律。前30次迭代是明显的探索阶段最优适应度从初始的0.382快速下降到0.21530到60次进入探索与开发切换的过渡段收敛速度放缓但还在稳步下降60次以后进入开发阶段最优适应度从0.215缓慢降到0.193并趋于稳定。最优点在搜索空间中也有清晰轨迹早期候选解散布在gamma和sigma的各个区间中期逐渐向gamma50-150、sigma2-8的区域收拢后期几乎只在这个小区域里做精细搜索。最终选出的最优参数约为gamma92.6、sigma3.7。这个组合的实际含义是模型允许中等水平的拟合误差同时核函数的作用范围相对集中更适合捕捉风速和功率之间复杂的非线性关系。对比PSO-LSSVMPSO在同样的100次迭代下也能收敛但前期的探索范围明显偏窄。我在收敛曲线上看到PSO在第20次迭代后最优适应度的下降速度就放缓了最终R²比AOA方案低约3个百分点。GA-LSSVM的问题在于前期搜索偏随机直到第40次迭代才开始快速下降而且最终结果受交叉概率影响很大跑三次结果方差明显比AOA大。4.3 结果表格与解读这里放一组脱敏后的实验结果数据来自我自己的项目不代表通用精度保证但趋势值得参考方法最优gamma最优sigmaR²RMSEMAE说明LSSVM默认参数110.8420.1280.096未调参基线网格搜索LSSVM5050.8910.1010.078搜索步长较粗GA-LSSVM65.84.10.9180.0920.071结果波动较大PSO-LSSVM80.33.50.9270.0870.066收敛快但易早熟AOA-LSSVM92.63.70.9560.0640.049综合表现最优这张表里面最值得注意的不是R²高了多少而是AOA找到的参数组合处于一个相对合理的区间。gamma没有选择极端的1000sigma也没有落到极小的0.1这说明算法不是靠堆复杂度去硬拟合训练集而是真正找到了泛化性能更优的平衡点。RMSE从0.128降到0.064对风电功率预测来说意味着均方根误差缩小了一半换算成实际发电功率就是几十千瓦的偏差。这种精度的提升放在负荷预测、交通流预测等场景里往往就是决策质量的分水岭。4.4 部署阶段要特别注意的隐藏问题实验做得好不代表上线没问题。AOA-LSSVM部署到实际环境后我遇到过几个必须提醒的问题。第一是训练数据和线上数据的分布漂移。离线训练时数据是历史全年的风速分布比较宽上线后如果刚好赶上极端天气期实时输入特征和训练分布差异会很大预测误差会明显上升。解决办法是定期用新数据增量更新模型或者建立一个监测指标当近期输入数据的均值和标准差偏离训练集超过阈值时触发重新训练。第二是LSSVM的非稀疏性带来的推理延迟。训练集1200条样本时LSSVM的推理速度还能接受一旦做在线预测每秒来几十条请求每条请求都涉及所有支持值的加权求和延迟可能冲到几十毫秒。如果业务端对延迟敏感建议把LSSVM模型导出为浮点系数数组用C或JAX重写推理逻辑大幅减少运行开销。第三是参数搜索结果的“运气成分”。AOA这类元启发式算法带随机性跑十次可能得到十组略有差异的结果。为了交付稳定性我会固定随机种子同时用多次独立运行取最优或取平均的方式来消减方差。5. 常见坑AOA-LSSVM从训练到部署的避坑手册5.1 常见问题速查表下面这些坑是我在复现和落地过程中实实在在踩过的整理成速查表方便你直接用问题现象可能原因排查与解决办法AOA收敛曲线很快不动了种群数量太小或转移因子衰减过快把N从20提到40或修改TF的衰减速率同一个数据集跑几次结果差异大随机种子未固定验证划分布有随机性固定rng种子用5折交叉验证稳定适应度测试集R²很高但线上误差大归一化信息泄漏或数据分布漂移检查是否先整体归一化再切分建立分布监测训练时间过长K折数太大或种群迭代次数过多降为5折先跑60次迭代观察收敛趋势LSSVM矩阵求逆报错样本量大或核矩阵奇异改用稀疏化策略或对特征做PCA降维最优参数集中在搜索边界搜索范围设置不合理调整上下界重新观察适应度地形这里面最容易被忽视的是“最优参数集中在搜索边界”这个现象。如果AOA最后给出的gamma一直顶着上界1000下不来说明搜索上限设得太小真实最优区域可能在更远处如果sigma一直卡在下界0.01说明核宽度已经过窄模型在疯狂拟合噪声。出现这两种情况时不要急着改搜索范围然后重跑先看看适应度地形——固定其中一个参数在另一个参数方向上画一条RMSE变化曲线就能直观看出问题出在哪里。5.2 种群数量和迭代次数怎么定AOA的种群数量和最大迭代次数没有万能公式但我可以给出一个比较可靠的经验值范围。大多数二维参数优化问题中种群数量取20到50就足够了。我默认用30这个数值对风电和负荷预测这类中等规模数据集来说既不会让单次迭代的计算开销太高也能保证搜索有足够多样性。迭代次数则需要结合收敛曲线来判断而不是拍脑袋定一个200。我的做法是先用最大迭代次数100跑一次看收敛曲线在第几次迭代后趋于平稳。如果平稳点出现在20次左右说明100次太多了下次可以缩减到50次如果到100次还在下降就需要加大到150或200。还有一个很多人不知道的技巧先用较小的种群数量和迭代次数快速跑一次找到大致最优区域再在这个区域附近缩小搜索范围做二次精细搜索。这种“粗搜定位精搜细化”的两阶段策略往往比一次性把迭代次数拉满更高效。我在实际项目中用这个办法总计算时间反而比单次跑200次迭代缩短了30%原因是第二阶段的搜索空间边界收窄后AOA在相同迭代次数内能覆盖更细的粒度。5.3 过拟合与欠拟合的调整方向AOA-LSSVM最常被问的问题就是“最终模型过拟合了怎么办”。首先要确认你说的过拟合是什么表现训练集R²高、测试集R²低这是标准过拟合信号。这时候不要盲目把gamma调小而是先看sigma。sigma太小导致核函数过于尖锐模型把很多样本的局部细节都背下来了泛化能力自然差。正确的调整思路是逐步增大sigma同时观察交叉验证RMSE的变化——如果RMSE先降后升说明你找到了合适区间如果一直升说明问题可能出在特征或者噪声数据上不是调参能解决的。欠拟合的反向调整也类似训练集和测试集R²都很低差不太多说明模型容量不够。这种情况优先检查特征是不是太弱比如用单维风速直接预测功率没有加入温度、气压等高阶交互特征。如果特征暂时没法加再考虑减小sigma让核函数捕捉更细的局部结构并适当增大gamma让模型更积极拟合训练集。记住一个原则LSSVM是很好的回归模型但它不是万能特征工程替代品特征质量决定精度上限调参只是逼近这个上限。5.4 把AOA扩展到更大规模数据集的经验AOA-LSSVM在千条数据量上表现不错但遇到几万条甚至几十万条数据时直接用LSSVM做交叉验证会非常吃力。因为LSSVM的KKT系统需要解一个和样本数等阶的线性方程组样本数1万时矩阵就是1万乘1万内存和时间都很可观。这时候有几个扩展思路。第一个是对训练集做聚类采样或随机采样用代表性样本子集来训练LSSVM牺牲少量精度换取训练时间的大幅下降。第二个是改用稀疏LSSVM方法主动剔除支持值小的样本保持模型精简。第三个是直接在适应度函数上做文章把数据切成多个bag每个bag用一部分样本做快速训练用多个bag的平均误差作为适应度这样能在不显著增加总训练成本的前提下获得更稳健的评价。我在一个车流量预测项目里用的是第三种思路。原始数据3.8万条完整跑一次AOA迭代需要完成30个个体乘以5折也就是150次LSSVM训练按原始数据量一次训练就要几分钟根本跑不完。改成bag采样后每个bag抽取2000条样本单次训练时间降到两秒以内AOA搜索过程就变得可接受了。最终模型精度只比全量训练的LSSVM低了约1.5%的R²但训练时间从可能的一天级降到了30分钟级。这种工程上的取舍在做应用型项目时经常比单纯追精度更重要。最后再分享一个我在实际使用中觉得特别有感的技巧AOA优化LSSVM时不要只把目光锁在gamma和sigma两个参数上。如果你的项目里同时有特征筛选的需求完全可以把AOA的目标函数扩展成“gamma sigma 特征掩码”的联合优化——特征掩码就是一个与特征维度等长的0/1向量AOA在每次评估时根据这个向量选择特征子集再训练LSSVM。我试过把26维特征联合筛选到14维模型精度反而还提升了一点因为冗余特征被剔除了过拟合风险也降低了。这种组合优化的思路才是“提升LSSVM准确率新思路”里最值得延伸的地方。
阅读完成 · 觉得有帮助?
咨询建站