4. 聚类分析入门
在资产轮动与市场状态识别中,我们经常面对一个尴尬的现实:未来收益未知,甚至连“当前属于什么市场状态”都没有现成标签。此时,监督学习无法直接使用,而无监督学习中的聚类分析,恰好提供了从数据自身结构中寻找分组规律的能力。本节将建立聚类分析的基本认知框架,为后续用聚类识别市场状态打下基础。
一、核心原理:无监督学习与聚类
无监督学习是指训练数据中只有特征 X,没有标签 y。算法需要自行发现数据中的结构、密度、相似性或低维表示。聚类是无监督学习中最典型的一类任务:把样本划分为若干组,使同组样本尽可能相似,不同组样本尽可能不同。
聚类的核心假设是:相似样本在特征空间中距离更近。因此,距离度量与特征工程几乎决定了聚类结果的上限。常见距离包括欧氏距离、曼哈顿距离、余弦相似度等。对于市场状态识别,我们通常先构造收益率、波动率、成交量、动量、相关性等特征,再通过标准化消除量纲影响,最后进行聚类。
关键理解:聚类不是“预测未来”,而是“描述当前结构”。它回答的是“哪些时间段或资产在特征上更像一类”,而不是“明天涨还是跌”。
二、聚类与分类的区别
初学者最容易混淆聚类与分类。两者虽然都在做“分组”,但学习范式完全不同。分类属于监督学习,依赖人工标注的类别标签;聚类属于无监督学习,没有先验标签,类别由算法根据数据相似性生成。分类的评价标准是预测准确率、召回率等;聚类的评价更复杂,常用轮廓系数、Calinski-Harabasz 指数、Davies-Bouldin 指数等内部指标,且结果需要结合业务解释。
| 对比维度 | 分类 | 聚类 |
|---|---|---|
| 学习类型 | 监督学习 | 无监督学习 |
| 输入数据 | 特征 X + 标签 y | 仅特征 X |
| 目标 | 预测新样本类别 | 发现样本自然分组 |
| 类别来源 | 人工标注 | 算法生成 |
| 典型算法 | 逻辑回归、随机森林、XGBoost | K-Means、DBSCAN、层次聚类、GMM |
| 评价方式 | 准确率、AUC、F1 | 轮廓系数、CH、DB、业务可解释性 |
| 市场应用 | 预测涨跌、信用违约 | 识别市场状态、资产风格分组 |
三、常见聚类算法概览
不同聚类算法对“组”的定义不同,适用场景也不同。下面按机制分类说明。
- K-Means:基于质心,假设簇为球形且大小相近。速度快,适合大样本,但需预先指定 K 值,对异常值敏感。
- 层次聚类:通过合并或分裂构建树状结构,可输出聚类树。无需预先指定 K,但计算复杂度较高,适合中小样本。
- DBSCAN:基于密度,能发现任意形状簇并识别噪声点。无需指定 K,但对参数
eps和min_samples敏感。 - 高斯混合模型 GMM:基于概率分布,假设数据由多个高斯分布混合生成。可输出软分配概率,适合市场状态重叠的场景。
- 谱聚类:基于图论,适合非凸簇结构,但计算成本较高。
在市场状态识别中,K-Means 与 GMM 最常用。K-Means 适合快速划分“牛、熊、震荡”等状态;GMM 则能给出“当前有 70% 概率属于震荡、20% 属于熊市”的软判断,更贴近真实市场。
四、方法流程与实战场景
以“识别 A 股市场状态”为例,聚类分析的标准流程如下:
- 特征构造:计算滚动收益率、波动率、换手率、动量、行业相关性等指标。
- 数据标准化:使用 Z-Score 或 RobustScaler,避免量纲差异主导距离。
- 选择算法与参数:先用 K-Means 快速探索,再用轮廓系数确定 K;若状态重叠明显,改用 GMM。
- 聚类训练:对历史窗口进行拟合,得到每个时间点的状态标签或概率。
- 状态解释:统计各簇的收益、波动、回撤特征,命名为“牛市”“熊市”“震荡”“危机”等。
- 轮动应用:根据不同状态下的资产表现,动态调整股债商现金的配置权重。
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.mixture import GaussianMixture
X_scaled = StandardScaler().fit_transform(features)
# K-Means 快速划分
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
labels = kmeans.fit_predict(X_scaled)
# GMM 软分配,输出状态概率
gmm = GaussianMixture(n_components=3, random_state=42)
proba = gmm.fit_predict_proba(X_scaled)
实战提示:聚类结果对随机种子、初始化和特征窗口非常敏感。建议多次运行并检查状态切换频率,避免“今天牛市、明天熊市”的过度抖动。
五、常见误区与复盘
- 误区一:把聚类标签当真实标签。聚类生成的“熊市”只是特征相似的一组,不等于未来一定下跌,必须用样本外数据验证。
- 误区二:忽略特征标准化。成交量数值远大于收益率,不标准化会让距离被单一特征主导。
- 误区三:只看轮廓系数选 K。统计指标好不代表业务可解释,市场状态划分必须结合经济含义。
- 误区四:用未来数据做特征。滚动窗口、标准化参数都只能使用历史信息,否则会产生前视偏差。
- 误区五:状态频繁切换。可通过平滑、最小持续时间约束或 HMM 后处理降低换手。
复盘要点:聚类是探索工具,不是预测神器。它的价值在于把复杂市场压缩为可管理的少数状态,再结合资产轮动规则进行决策。任何聚类结果都必须经过样本外检验、交易成本评估和风险预算约束。
掌握无监督学习与聚类的基本概念后,下一步就可以进入具体算法细节与市场状态建模。理解聚类与分类的边界、熟悉常见算法的适用条件,是后续构建稳健轮动策略的前提。