时序分析 20 高斯混合模型 (上)

时序分析 20 高斯混合模型 (上)

前言

    在时序分析中,我们经常需要对时序数据进行分段(Time Series Segmentaion),对于金融时序数据尤其如此。我们多次观察到某个时序数据在不同的时间阶段展现除了不同的统计特征和特性,也就是说该时序是不平稳的。通常在这种情况下,我们需要采用诸如GARCH,差分等技术对该时序数据进行建模,但是如果我们可以把整个时序分成几个阶段,而在一个阶段内其统计特性或者某些特征接近,从而对于各个阶段结合业务特征和属性分别建模,很可能可以得到更好的结果。
    注: 前面讨论过的隐含马尔可夫模型(HMM)实际上就是可以达到这个目的的一种模型技术。
    这次我们要讨论的是与HMM有异曲同工之妙的另外一种方法: 高斯混合模型 (Gaussian Mixed Model, GMM)。
    如前面我们描述的那样,时序分段似乎可以理解为对时序数据进行聚类(Time Series Clustering)。基于这种直观理解,我们首先要讨论与高斯混合模型有非常密切关系的Kmean聚类算法,然后再详细分析高斯混合模型的特点和不同之处。

聚类算法回顾

首先,让我们简单回归一下Kmeans聚类算法。(关于Kmeans聚类算法的具体细节,请读者查阅相关文档或者是本人的机器学习讲义中关于Kmeans算法的描述)

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
# Generate some data
from sklearn.datasets.samples_generator import make_blobs
X, y_true = make_blobs(n_samples=400, centers=4,
                       cluster_std=0.60, random_state=0)
X = X[:, ::-1] # flip axes for better plotting
# Plot the data with K Means Labels
from sklearn.cluster import KMeans
kmeans = KMeans(4, random_state=0)
labels = kmeans.fit(X).predict(X)
plt.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis',edgecolor='black');

在这里插入图片描述
    直观上,聚类算法在把某个点分配到某个聚类上时,它应该能够给出这个分配的不确定性。因为有些点的分配可能很确定,而可能有些点的分配不是很确定。例如位于两个聚类的交界边缘的点到底应该分配到哪一个类就不是很确定,反之临近聚类中心的点就比较确定。但是Kmeans算法并没有给出这种不确定性的度量。
    一种思考Kmeans模型的思路是以聚类中心点为圆心画一个圆,圆的半径指定了属于这个聚类的最远距离。让我们来看一下,

from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist

def plot_kmeans
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值