4. 聚类分析入门

在资产轮动与市场状态识别中,我们经常面对一个尴尬的现实:未来收益未知,甚至连“当前属于什么市场状态”都没有现成标签。此时,监督学习无法直接使用,而无监督学习中的聚类分析,恰好提供了从数据自身结构中寻找分组规律的能力。本节将建立聚类分析的基本认知框架,为后续用聚类识别市场状态打下基础。

一、核心原理:无监督学习与聚类

无监督学习是指训练数据中只有特征 X,没有标签 y。算法需要自行发现数据中的结构、密度、相似性或低维表示。聚类是无监督学习中最典型的一类任务:把样本划分为若干组,使同组样本尽可能相似,不同组样本尽可能不同。

聚类的核心假设是:相似样本在特征空间中距离更近。因此,距离度量与特征工程几乎决定了聚类结果的上限。常见距离包括欧氏距离、曼哈顿距离、余弦相似度等。对于市场状态识别,我们通常先构造收益率、波动率、成交量、动量、相关性等特征,再通过标准化消除量纲影响,最后进行聚类。

关键理解:聚类不是“预测未来”,而是“描述当前结构”。它回答的是“哪些时间段或资产在特征上更像一类”,而不是“明天涨还是跌”。

二、聚类与分类的区别

初学者最容易混淆聚类与分类。两者虽然都在做“分组”,但学习范式完全不同。分类属于监督学习,依赖人工标注的类别标签;聚类属于无监督学习,没有先验标签,类别由算法根据数据相似性生成。分类的评价标准是预测准确率、召回率等;聚类的评价更复杂,常用轮廓系数、Calinski-Harabasz 指数、Davies-Bouldin 指数等内部指标,且结果需要结合业务解释。

对比维度分类聚类
学习类型监督学习无监督学习
输入数据特征 X + 标签 y仅特征 X
目标预测新样本类别发现样本自然分组
类别来源人工标注算法生成
典型算法逻辑回归、随机森林、XGBoostK-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% 属于熊市”的软判断,更贴近真实市场。

聚类分析:从无标签数据到市场状态分组 分类(监督学习) 已知标签:蓝=牛、橙=熊、绿=震荡 聚类(无监督学习) 无标签:算法自动分成两组 常见聚类算法机制对比 K-Means 质心·球形簇 DBSCAN 密度·任意形状 层次聚类 树状·无需K GMM 概率·软分配 谱聚类 图论·非凸

四、方法流程与实战场景

以“识别 A 股市场状态”为例,聚类分析的标准流程如下:

  1. 特征构造:计算滚动收益率、波动率、换手率、动量、行业相关性等指标。
  2. 数据标准化:使用 Z-Score 或 RobustScaler,避免量纲差异主导距离。
  3. 选择算法与参数:先用 K-Means 快速探索,再用轮廓系数确定 K;若状态重叠明显,改用 GMM。
  4. 聚类训练:对历史窗口进行拟合,得到每个时间点的状态标签或概率。
  5. 状态解释:统计各簇的收益、波动、回撤特征,命名为“牛市”“熊市”“震荡”“危机”等。
  6. 轮动应用:根据不同状态下的资产表现,动态调整股债商现金的配置权重。
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 后处理降低换手。

复盘要点:聚类是探索工具,不是预测神器。它的价值在于把复杂市场压缩为可管理的少数状态,再结合资产轮动规则进行决策。任何聚类结果都必须经过样本外检验、交易成本评估和风险预算约束。

掌握无监督学习与聚类的基本概念后,下一步就可以进入具体算法细节与市场状态建模。理解聚类与分类的边界、熟悉常见算法的适用条件,是后续构建稳健轮动策略的前提。