CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理-通道选择(五)
- 概述
- 通道选择模型
- 通道选择
- LightGBM模块代码
- LightGBM模型训练
概述
由于癫痫发作时不是整个大脑区域都有相关的反映,因此 EEG 信号在不同的 EEG 通道上有着不同的表现形式。癫痫发作时的 EEG 信号表现也并不是存在于所有的 EEG 通道,如果能设计一种算法来筛选出最能反应患者癫痫发作的 EEG 通道,不仅能减少模型的计算量,还能减少模型的硬件资源开销,同时还能提高癫痫预测的效率。所以在完成癫痫发作的预测任务之前设计一种有效的 EEG 通道选择算法是非常 有必要的。
通道选择模型
EEG 信号在不同患者的不同脑电通道上有着不同的表 现,因此需要对每个患者做单独的优化。如果使用传统的 SVM 等分类模型,将导致 效率异常低下,所以为完成EEG 通道选择任务,此部分使用了并行化能力强, 效率高的 LightGBM 作为分类器。 GBDT(Gradient Boosting Decision Tree)是机器学习领域中一个非常典型的模型, 它主要使用决策树方法对模型进行迭代训练,使得模型参数更新到最优状态,该模型 使用范围广泛,可以用于各种分类与预测任务中,而且它训练得到的模型性能优于一 般的其它类的机器学习模型,除此之外,它还具有很高的训练效率。 LightGBM(Light Gradient Boosting Machine)是机器学习中的一个经典框架,由于 它是 GBDT 的升级版本,所以具有 GBDT 的优点。并行能力强是它最大的优势, 这将会极大的提高模型的收敛速度,使得模型参数很快达到最优。与传统的 SVM 相 比,使用 LightGBM 完成癫痫发作的检测和预测任务,在时间上会提升一半以上,而 且实验的结果还优于 SVM。因此在进行脑电通道选择过程时,使用 LightGBM 来测试通道选择的有效性。
通道选择
使用 LightGBM 作为此部分实验的分类器,将处理好的 EEG 数据输入到LightGBM 模型中进行模型训练和分类,直至保留的 EEG 通道数减少至本次通道缩 减后模型的准确率低于所有通道上模型的准确率,这样就可以得到最终保留的通道。
以chb01患者的数据为例,在通道选择过程中,精度与通道数量变化的关系如下:
从上图中可以看出,在脑电通道数量减少的过程中,模型对不同状态脑电特征 检测的准确率在不断变化中,而且与模型在原始的 18 个脑电通道上的测试结果相比 还有所提升。通道数量减少至 13 个的时候,acc 值达到了最高点,当通道数量减少至 11 个的时候,acc 值低于原始 18 个通道的 acc 值,通道选择算法会在此时停止并保 存通道数量最少的组合。
LightGBM模块代码
def LightGBM_function(X_train, y_train, X_test, y_test, boost_round):lgb_train = lgb.Dataset(X_train, y_train, feature_name = ch)lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)# 参数设置# 迭代次数early_stop_rounds = 100 # 验证数据若在early_stop_rounds轮中未提高,则提前停止params = {'boosting_type': 'gbdt', # 设置提升类型'objective': 'binary', # 目标函数'metric': 'acc,auc,binary_logloss', # 评估函数'num_leaves': 8, # 叶子节点数'learning_rate': 0.03, # 学习速率'feature_fraction': 0.5, # 建树的特征选择比例'bagging_fraction': 0.5, # 建树的样本采样比例'bagging_freq': 3, # k 意味着每 k 次迭代执行bagging
# 'num_class': 2}results = {}gbm = lgb.train(params,lgb_train,num_boost_round=boost_round,valid_sets=(lgb_eval, lgb_train),valid_names=('test', 'train'),early_stopping_rounds=early_stop_rounds,evals_result=results,verbose_eval=False )# 模型预测y_pred = gbm.predict(X_test)AUC = gbm.best_score
# ACC = accuracy_score(y_test, y_pred)print("AUC:{:.2f}".format(AUC['test']['auc']))# 模型评估lgb.plot_metric(results, metric='auc')plt.savefig("指标图/lgbm/"+file[:5]+"_auc.png", bbox_inches = 'tight')
# lgb.plot_metric(results, metric='acc')lgb.plot_metric(results, metric='binary_logloss')plt.savefig("指标图/lgbm/"+file[:5]+"_loss.png", bbox_inches = 'tight')plt.show()return y_pred
LightGBM模型训练
model = LightGBM_function(d_train,l_train,d_test,l_test,100)
接下来缩减通道,直至保留的 EEG 通道数减少至本次通道缩 减后模型的准确率低于所有通道上模型的准确率,这样就可以得到最终保留的通道。这样便可以在不损失预测精度的前提下 有效缩减参与训练的 EEG 通道数量,从而达到减少计算量、降低硬件资源开销的目 的。