EntropyXGB 是融入信息熵机制的XGBoost改进模型,核心是用熵量化数据规律与随机性,优化特征筛选和节点分裂,提升复杂数据建模精度。
将熵类统计量(例如 Shannon 熵、归一化熵、排列熵等)作为额外特征融入到 XGBoost(梯度提升树)中,以提升对序列复杂性、随机性与结构性变化的捕捉,从而提高短序列/时序预测或分类的稳健性与泛化能力。
1. 基础框架:沿用XGBoost梯度提升决策树架构,通过迭代训练弱决策树修正误差,保留二阶泰勒展开、正则化等核心优化逻辑。
2. 熵值核心作用:将信息熵作为特征评估与节点分裂依据,替代或补充传统Gini系数,精准筛选高价值特征、剔除冗余信息,量化数据不确定性。
3. 优化逻辑:先提取熵域特征表征数据核心规律,再结合XGBoost高效训练能力,让模型聚焦关键数据模式,平衡拟合效果与计算效率。
4. 许多序列问题(尤其是时间序列或符号序列)包含信息密度/不确定性变化。熵类指标能把“序列有序程度/随机程度”量化为数值特征。
5. 将这些熵特征与常规统计/滞后特征一起作为 XGBoost 的输入,XGBoost 会自动学习哪些熵特征在不同分支/树上有助于降低损失,从而改善预测性能。
6. 常见做法是对滑动窗口(window)计算若干熵尺度(短窗口/长窗口、不同的离散化方式或不同熵类型),形成多尺度熵特征。
* $H(W)$:窗口 $W$ 的 Shannon 熵(单位通常是比特,若对数以 2 为底)。
* $m$:在窗口 $W$ 上定义的离散类别数(例如把数值区间分成 $m$ 个箱/把不同符号视为类别)。
* $p_i$:第 $i$ 类在窗口 $W$ 中出现的经验概率(频次除以窗口长度),满足 $\sum_{i=1}^m p_i = 1$。
* $\log$:对数函数(对数底数可选,常用 $\log_2$ 或 $\ln$;选择不同底数只改变比例常数)。
--------------------------------------------------------------------------------
* $H_{\text{norm}}(W)$:窗口 $W$ 的归一化熵,范围在 $[0,1]$(当使用 $\log$ 同样底数时)。
* $H(W)$:见公式 1。
* $m$:类别数(与公式 1 相同)。
* $\log m$:最大熵值(当各类别均匀时的熵),用于归一化。
--------------------------------------------------------------------------------
* $\hat{y}_i^{(t)}$:样本 $i$ 在第 $t$ 棵树(或第 $t$ 次迭代)后的预测值。
* $\hat{y}_i^{(t-1)}$:第 $t-1$ 次迭代时的预测值(递推累加)。
* $f_t$:第 $t$ 棵基学习器(回归树),其输出为标量函数 $f_t(x_i)$。
* $x_i$:样本 $i$ 的特征向量(在 EntropyXGB 中包含熵类特征与常规特征)。
* $\mathcal{L}^{(t)}$:全训练集在迭代 $t$ 时的目标(损失 + 正则化)。
* $l(\cdot,\cdot)$:样本级损失函数(例如平方误差 $l(y,\hat y)=(y-\hat y)^2$ 或 logloss)。
* $\Omega(f_k)$:基学习器 $f_k$ 的正则化项(树复杂度,用于防过拟合,例如叶子数和叶子权重的二次正则化)。
--------------------------------------------------------------------------------
| 参数名 | 描述 | 值范围 | 默认值 | 建议值 |
|---|---|---|---|---|
| learning_rate | 学习率 | - | - | - |
| n_estimators | 树数(迭代次数) | - | - | - |
| max_depth | 最大树深 | - | - | - |
| entropy_bins | 熵计算时的分箱数 | - | - | - |
| entropy_types | 熵类型集合 | - | - | - |
1. 数据窗口化(Sliding window / supervised framing)
---* 选择窗口长度 $L$(例如 $L=5$),把历史序列切分成许多样本:输入为前 $L$ 个值,目标为第 $L+1$ 个值(单步预测)。
2. 离散化 / 符号化(熵计算前常见步骤)
---* 对窗口内值做离散化(等宽、等频或基于域知识的分箱),或把值映射为符号(例如按末位、按区间)。
3. 计算熵类特征
---* 常见的:Shannon 熵 $H$、归一化熵 $H_{\text{norm}}$、Permutation Entropy(排列熵)、Sample Entropy、最好/最坏比率等。
---* 对不同尺度(不同 $L$ 或不同分箱 $m$)计算多组熵特征。
4. 构造其他统计特征
---* 均值、方差/标准差、最大/最小、斜率(线性回归系数)、自相关、上升/下降计数、最近差分等。
5. 特征组合与编码
---* 把熵特征与滞后原始值、分位数编码、周期性(如模运算)、时间/索引特征合并成 $x$. 对类别型特征做 one-hot 或 target encoding(如果存在)。
6. 训练 XGBoost
---* 用上述 $x$(熵 + 统计特征)训练 XGBoost,损失/目标根据任务选择(回归/分类)。
7. 评估与调优
---* 用时间序列交叉验证(滚动/扩展窗口 CV)评估。调整熵种类、窗口长度 $L$、分箱数 $m$、XGBoost 超参。
8. 解释性(可选)
---* 用特征重要性、SHAP 等工具确认熵特征是否有贡献,识别哪些尺度或哪类熵最有用。
• 特征筛选更精准:熵机制可有效识别数据核心特征,减少无效特征干扰,适配高维、噪声多的复杂数据场景。
• 预测精度更高:在生理信号分析、情感识别等任务中,比基础XGBoost捕捉数据规律更全面,预测准确率更优。
• 继承XGBoost核心优势:保留并行训练、自动处理缺失值、正则化防过拟合等特性,兼顾性能与实用性。
• 捕捉不确定性:熵提供序列信息密度/随机性量化,弥补均值/方差等统计量看不见的结构信息。
• 增强鲁棒性:在噪声或非平稳序列上,熵能提示“什么时候序列变得更随机”,XGBoost 能据此分支调整预测。
• 易于集成:熵是数值特征,直接与其它特征一起输入树模型,不破坏模型训练流水线。
• 解释性:可用特征重要性/SHAP 显示熵特征在某些样本或时间段的贡献。
• 低成本计算:Shannon 熵等计算量小,适合在线或近实时特征计算(相比复杂神经网络的高计算成本)。
用序列 `236, 366, 599, 688, 122` 来说明“预测第六个数”的流程逻辑
> 说明:我们这里做单步预测,窗口长度 $L=5$(用这 5 个值预测第 6 个)。示例展示如何构造熵特征并形成单个样本的特征向量,随后交给 XGBoost(训练过程在真实场景会使用大量窗口样本,这里仅示范特征工程流程)。
---
步骤 A — 原始数据(窗口)
$$W = [236,; 366,; 599,; 688,; 122]$$
步骤 B — 离散化(示例:等宽分 3 个箱,$m=3$)
取最小值 $\min=122$,最大值 $\max=688$,构造 3 个等宽区间(边界示例):
$$\text{bins} = [122,; 310),; [310,; 498),; [498,; 688]$$
把 $W$ 中的值落到箱里:
* $236 \in [122,310)$ → bin1
* $366 \in [310,498)$ → bin2
* $599 \in [498,688]$ → bin3
* $688 \in [498,688]$ → bin3
* $122 \in [122,310)$ → bin1
得到类别频次:$(n_1,n_2,n_3)=(2,1,2)$,概率:
$$p_1=\tfrac{2}{5},\quad p_2=\tfrac{1}{5},\quad p_3=\tfrac{2}{5}$$
步骤 C — 计算 Shannon 熵(按 $ \log_2 $)
$$H(W) ;=; -\sum_{i \,=\,1}^{3} p_i \log_2 p_i;=; -\Big( \tfrac{2}{5}\log_2\tfrac{2}{5} + \tfrac{1}{5}\log_2\tfrac{1}{5} + \tfrac{2}{5}\log_2\tfrac{2}{5} \Big)$$
代数计算(数值):
$$H(W) \approx 1.521928\ \text{(bits)}$$
步骤 D — 归一化熵
$$H_{\text{norm}}(W) ;=; \frac{H(W)}{\log_2 m}
;=; \frac{1.521928}{\log_2 3}
;\approx; \frac{1.521928}{1.584963} \approx 0.960$$
步骤 E — 其他示例特征(统一以数值向量表示)
计算常见统计量(示例):
* 原始值归一化(min-max):
$x^{\text{norm}} = \dfrac{W - \min(W)}{\max(W)-\min(W)}$,因此
$$x^{\text{norm}} \approx \left[\frac{236-122}{566},; \frac{366-122}{566},; \frac{599-122}{566},; \frac{688-122}{566},; \frac{122-122}{566}\right]
\approx [0.201,,0.426,,0.844,,1.000,,0.000]$$
* 差分(最近差分、均值、标准差):
$$\Delta = [130,;233,;89,;-566],\quad \text{mean}(W)=
icefrac{(236+366+599+688+122)}{5}= ;402.2$$
标准差 $\sigma(W)\approx 222.8$(算术示例)。
最终我们可以把一个样本的特征向量 $x$ 组织为(示例):
$$x = [x^{\text{norm}}*1,\dots,x^{\text{norm}}*5,; \text{mean},;\sigma,; \Delta*{\text{last}},; H(W),; H*{\text{norm}}(W)]$$
其数值(近似):
$$x \approx [0.201,0.426,0.844,1.000,0.000,;402.2,;222.8,;-566,;1.5219,;0.960]$$
步骤 F — 把 $x$ 输入 XGBoost(训练/预测流程)
* 在真实训练环节,你需要很多这样的 $(x,y)$ 对来训练模型($y$ 为第 $6$ 位实际值)。
* XGBoost 学习若干棵树 $f_1,\dots,f_T$,预测为:
$$\hat{y} ;=; \sum_{t \,=\,1}^T f_t(x)$$
* 在示例中我们不做真实训练(没有历史样本),所以无法给出科学的真实预测值。但流程如上:生成大量窗口训练样本 → 训练 EntropyXGB → 对本窗口 $x$ 进行预测。
无