🕸️
在 MetaTrader 5 中使用自组织特征映射(Kohonen 映射)
KohonenSOM无监督学习神经网络MQL5聚类
什么是自组织特征映射
SOM 是一种无监督训练的人工神经网络,把高维输入空间映射为二维离散网格(映射),类似于多维标度,适合高维数据的分类与可视化。由 Teuvo Kohonen 于 1982 年提出,故也称 Kohonen 映射。
网络架构
简单网格如 4×4 共 16 个节点,每个节点连一个三维输入向量。训练时输入样本,找到最佳匹配节点(BMU),按其邻域调整权重,使拓扑有序。
class CKohonen
{
public:
void InitNode(int id, double x, double y);
double X(int id), Y(int id);
double GetWeight(int id, int dim);
int BestMatchingNode(double &vec[]); // 找 BMU
void Train(double &vec[], double lr, double radius);
void Render(); // 用 cIntBMP 出图
};
训练过程
AdjustWeights 按 BMU 邻域更新权重:BMU 及邻近节点向输入向量靠拢,远距离节点基本不动。学习率 lr 与半径 radius 随迭代衰减,最终网格形成输入空间的拓扑投影。
- AddVectorToTrainingSet:把行情特征向量加入训练集。
- BestMatchingNode:找与输入最相似的节点,用于分类。
- ShowPattern/ShowBMP:把权重或映射渲染成位图。
在交易中的两个用法
一是品种聚类:把多品种的技术特征输入 SOM,相似品种会落在相邻节点;二是市场状态识别:把当前窗口特征投到已训练映射,落点区域代表“趋势/震荡/极端”状态。
✦ 无监督=无需标签
SOM 不需要“这是趋势”的标注数据,适合探索性分析。先用它看数据长什么样,再决定上层策略。
小结
Kohonen 映射把高维行情压成可解释的二维图,是量化中做聚类与状态识别的轻量利器。配合 cIntBMP 在 MQL5 内直接出图,无需外部依赖。
常见问题
SOM 无监督,不需要标注数据,目标是把高维输入投影成二维拓扑有序的相似度图,适合探索性聚类。
对输入向量找最相似的网格节点(BMU),训练时按邻域调权重,分类时用于判定样本落点。
一是多品种聚类(相似品种落相邻节点),二是把当前行情特征投到已训练映射识别市场状态(趋势/震荡/极端)。