精华内容
下载资源
问答
  • 高斯混合模型被广泛应用于摄像机静止条件下运动目标检测的背景建模。针对传统高斯混合模型中对光照变化适应性差及学习率单一等问题, 提出了一种光照变化检测及学习率更新的方法, 以达到自适应更新背景模型的目的。...
  • 混合高斯模型的背景减除法和相邻帧差法相结合进行目标检测的程序,内附视频 (The background of the gaussian mixture model reduction division and adjacent frame differential method for target detection with...
  • GMM高斯混合模型及EM算法(matlab和python实现): https://blog.csdn.net/taw19960426/article/details/103528111 高斯混合模型(GMM)及MATLAB代码: https://www.cnblogs.com/jins-note/p/11342498.html

    GMM高斯混合模型及EM算法(matlab和python实现):
    https://blog.csdn.net/taw19960426/article/details/103528111

    高斯混合模型(GMM)及MATLAB代码:
    https://www.cnblogs.com/jins-note/p/11342498.html

    EM算法原理详解
    https://blog.csdn.net/pipisorry/article/details/42550815

    展开全文
  • 混合高斯背景建模,运动检测。 建模函数是自己编写的,原理简单,便于学习,有详细注释。 处理视频是用笔记本摄像头实时采集的画面。
  • 在本篇文章中将试图使用高斯混合模型 (GMM) 对股市中的不同市场行情进行聚类分析 介绍 通过过去的十年的发展,普通人越来越容易进入股票市场,每天进出市场的资金量创历史新高。 作为投资者,你可以通过多种方式培养...

    在本篇文章中将试图使用高斯混合模型 (GMM) 对股市中的不同市场行情进行聚类分析

    介绍

    通过过去的十年的发展,普通人越来越容易进入股票市场,每天进出市场的资金量创历史新高。

    作为投资者,你可以通过多种方式培养何时买入或卖出的经验和直觉。其中一种最简单的方法是咨询朋友或其他投资者,但他们很快就会用相互矛盾的观点淹没你。

    本篇文章将试图用严谨的数学工具而不是生硬的意见解决这个赚钱的黄金问题——我应该什么时候买入或卖出?

    我将演示如何使用高斯混合模型来帮助确定资金何时进入或退出市场。

    从数学上讲,任何给定时间的市场行情都可以称为“市场状态”。行情通常可以解释为任意数量的概念,例如熊市或牛市;波动大小等等。我们可以根据一些特征将交易日的状态进行聚类,这样会比每个对每个概念单独命名要好的多。

    由于市场行情没有明确的定义——因此也没有代表市场的响应变量——所以使用无监督机器学习模型来确认市场状态可能要比监督式模型好很多,这也是本篇文章的理论假设。

    有监督与无监督机器学习

    这两种方法的区别在于使用的数据集是否有标记:监督学习使用有标注的输入和输出数据,而无监督学习算法没有确定的输出。数据集的标注是响应变量或试图预测的变量包含数值或分类值。因此,当使用监督机器学习算法时,预测变量是明确定义的。一个非常简单但强大的监督学习的例子是线性回归。通过x预测y

    高斯混合模型(GMM)

    高斯混合模型是p维空间中多个正态分布的重叠。 空间的维度由变量的数量生成。 例如,如果我们有一个变量(标准普尔 500 指数回报),GMM 将基于一维数据进行拟合。 GMM 可用于模拟股票市场以及其他金融应用程序的状态。 股市回报的一个特征是由高波动日产生的重尾。 在分布的尾部捕获高度波动的日子的能力对于在建模过程中捕获信息十分重要。

    上图代表了一些具有 4 个集群的多模态数据。 高斯混合模型是一种用于标记数据的聚类模型。

    使用 GMM 进行无监督聚类的一个主要好处是包含每个聚类的空间可以呈现椭圆形状。 高斯混合模型不仅考虑均值,还考虑协方差来形成集群

    GMM 方法的一个优点是它完全是数据驱动的。 提供给模型的数据就可以进行聚类。 重要的是,每个集群的标签可以是数字,因为数据驱动了潜在的特征,而不是人类的意见。

    GMM 的数学解释

    高斯混合模型的目标是将数据点分配到n个多正态分布中的一个。 为此,使用期望最大化 (EM) 算法来求解每个多正态分布的参数。

    第 1步:随机初始化起始正态分布参数

    第 2 步:执行E步(Expectation),根据当前的参数值,计算样本隐藏变量的期望;

    第 3 步:执行M步(Maximum),根据当前样本的隐藏变量,求解参数的最大似然估计;

    第 4 步:计算(数据给状态的分数,平均值,协方差)的联合概率的对数似然

    第 5 步:重复第 2-4 步,直到对数似然收敛

    每个数据点属于某个集群的概率如下所示。在索引的基础上,我们得到了每个数据点属于每个独立集群的概率。矩阵的大小将是按集群数量计算的数据点数。因为它是一个概率矩阵,在索引“i”下的值和为1。

    索引i代表每个数据点或向量。 索引 c 代表给定的集群; 如果我们有三个集群 © 将是 1 或 2 或 3。

    上面是多变量高斯公式,其中 mu 和 sigma 是需要使用 EM 算法进行估计的参数。

    另一个关键概念是我们空间中的每个高斯分布都是无界的并且彼此重叠。 根据数据点的位置,从每个分布中为其分配一个概率。 属于任何集群的每个数据点的概率总和为 1。

    最后,由于 EM 算法是一个迭代过程,我们需要衡量每一步的进度以了解何时停止。 为此,我们使用模型的对数似然函数来测量参数何时收敛。

    GMM 的实现

    本节将分为两节,每节代表 GMM 的一个应用。

    使用 GMM 将 S&P500 的回报分为三个状态。 数据来自雅虎财经。

    import pandas as pd
    import numpy as np
    from datetime import datetime , timedelta 
    import yfinance as yf  #import data via Yahoo
    sp_list = ['SPY']
    
    today = datetime.today()
    
    # dd/mm/YY
    #get last business day
    offset = max(1, (today.weekday() + 6) % 7 - 3)
    timed = timedelta(offset)
    today_business = today - timed
    print("d1 =", today_business)
    today = today_business.strftime("%Y-%m-%d")
    
    symbols_list = sp_list
    start = '2000-01-01' 
    end = today
    
    print('S&P500 Stock download')
    r = yf.download(symbols_list, start,end)
    
    df_pivot = r
    #replace all nan data with zero
    treasury_yeild = df_pivot.Close
    

    在这里我需要确定有多少状态最能代表市场环境,我们将假设三种状态——熊市、震荡、牛市。

    我将使用 S&P500 的对数回报来拟合 GMM。

    一维数据上 GMM 的 Python 实现非常简单。

    from scipy.stats import multivariate_normal
    from sklearn.mixture import GaussianMixture
    #'10YrYeild':treasury_yeild.Close.values
    # 0. Create dataset
    sp_list = ['SPY']
    
    symbols_list = sp_list
    start = '2008-01-01'
    
    print('S&P500 Stock download')
    r = yf.download(symbols_list, start,end)
    
    daily_returns = (r.Close.pct_change()) #Daily log returns Close price for each day -  Y observations 
    daily_returns = daily_returns.iloc[1:]
    
    X = daily_returns.values
    
    GMM = GaussianMixture(n_components=3).fit(X.reshape(-1,1)) # Instantiate and fit the model
    

    使用 sklearn 的高斯混合模型就可以找到我们想得到的状态。

    从上面的分析来看,两个状态也可能就可以了

    可能出现的一个问题是趋同性。有可能是基于初始条件和EM算法中某个阈值的标准的定义上,也有可能是形成不同的分布。这个还需要进一步的调查。

    使用符合 GMM 的宏观经济数据对美国经济进行分类

    为了直观演示 GMM,我将使用二维数据(两个变量)。 每个对应的簇都是三个维度的多正态分布。 在这个例子中,第一个维度是通胀值(我们称之为 X),第二个维度是 S&P500 的月回报率(我们称之为 Y),第三个维度是 X&Y 的联合概率。 换句话说,X 和 Y 的某个组合的概率是多少。

    from scipy.stats import multivariate_normal
    from sklearn.mixture import GaussianMixture
    #'10YrYeild':treasury_yeild.Close.values
    # 0. Create dataset
    gmm_data = pd.DataFrame({'Inflation':inflation.Weight,'Market_return':spy.Close.values})
    gmm_data = gmm_data.to_numpy()
    
    X = gmm_data
    
    x,y = np.meshgrid(np.sort(X[:,0]),np.sort(X[:,1]))
    XY = np.array([x.flatten(),y.flatten()]).T
    
    GMM = GaussianMixture(n_components=3).fit(X) # Instantiate and fit the model
    print('Converged:',GMM.converged_) # Check if the model has converged
    

    该图展示了GMM相对于其他聚类算法的一个主要优点。正态分布可以产生椭圆形状,这个性质来自协方差矩阵。

    给定二维数据,GMM 能够产生三种不同的状态。

    最后,如果要创建一个有意义的模型,应该考虑更多的变量。 实际上一系列不同的指标构成了美国经济及其表现。我们可以继续并合并任意数量的维度,但是在进入 n 维度之前,了解提供给模型的数据的相关结构很重要。

    总结

    这是我们如何将 GMM 应用于金融市场和经济的简单介绍。 请记住这只是一个介绍, 引入 GMM 方法是为了提高将股票市场价格数据分类为状态的稳健性,市场条件和经济之间的联系还需要更加深入的研究。

    作者:Ethan Johnson-Skinner, MSc

    展开全文
  • 异常检测:假如你要进行一个飞机引擎异常检测,需要检测新生产的发动机是否正常。使用的feature为产热,震动程度等等。如下图,我们可以很直观的看出异常检测的思想:那些远离主体分布的点,我们就把它们当作异常点...

    目录

    问题背景

    算法

    开发和评价一个异常检测系统

    异常检测与监督学习对比

     选择特征

    误差分析

    多元高斯分布

    使用多元高斯分布进行异常检测

    参考文献


    问题背景

    异常检测:假如你要进行一个飞机引擎异常检测,需要检测新生产的发动机是否正常。使用的feature为产热,震动程度等等。如下图,我们可以很直观的看出异常检测的思想:那些远离主体分布的点,我们就把它们当作异常点来处理。

    在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。这种方法称为密度估计,表达如下:

                                                                                                                 if \ p(x)\left \left\{\begin{matrix} < \varepsilon \ anomaly \\ \geq \varepsilon \ normal \end{matrix}\right.

    在实际应用中,例如在线采集而来的有关用户的数据,一个特征向量中可能会包含如:用户多久登录一次,访问过的页面,在论坛发布的帖子数量,甚至是打字速度等。尝试根据这些特征构建一个模型,可以用这个模型来识别那些不符合该模式的用户。

    再一个例子是检测一个数据中心,特征可能包含:内存使用情况,被访问的磁盘数量,CPU的负载,网络的通信量等。根据这些特征可以构建一个模型,用来判断某些计算机是不是有可能出错了。

    算法

    对于给定的数据集x^{(1)}, x^{(2)}, \ldots, x^{(m)},我们要针对每一个特征计算\mu和 \sigma^2的估计值。

                                                                              \mu_{j}=\frac{1}{m} \sum_{i=1}^{m} x_{j}^{(i)}

                                                                             \sigma_{j}^{2}=\frac{1}{m} \sum_{i=1}^{m}\left(x_{j}^{(i)}-\mu_{j}\right)^{2}                           

    一旦我们获得了平均值和方差的估计值,给定新的一个训练实例,根据模型计算p(x)

                                                                     p(x)=\prod_{j=1}^{n} p\left(x_{j} ; \mu_{j}, \sigma_{j}^{2}\right)=\prod_{j=1}^{1} \frac{1}{\sqrt{2 \pi} \sigma_{j}} \exp \left(-\frac{\left(x_{j} \mu_{j}\right)^{2}}{2 \sigma_{j}^{2}}\right)

    p(x)< \varepsilon时,为异常。

    下图是一个由两个特征的训练集,以及特征的分布情况:

    下面的三维图表表示的是密度估计函数,z轴为根据两个特征的值所估计p(x)值:

    我们选择一个\varepsilon,将p(x)=\varepsilon作为我们的判定边界,当p(x)> \varepsilon时预测数据为正常数据,否则为异常。

    上图中,左上角左下角图像中,粉色阴影代表异常的区域。如果取\varepsilon =0.02的话,x_{test1}是正常的而x_{test2}是异常的。

    开发和评价一个异常检测系统

    异常检测算法是一个非监督学习算法,意味着我们无法根据结果变量 y的值来告诉我们数据是否真的是异常的。我们需要另一种方法来帮助检验算法是否有效。当我们开发一个异常检测系统时,我们从带标记(异常或正常)的数据着手,我们从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。

    具体的评价方法:

    1. 根据测试集数据,我们估计特征的平均值和方差并构建p(x)函数
    2. 对交叉检验集,我们尝试使用不同的\varepsilon值作为阀值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择\varepsilon
    3. 选出\varepsilon后,针对测试集进行预测,计算异常检验系统的F1值,或者查准率与查全率之比

    异常检测与监督学习对比

    之前我们构建的异常检测系统也使用了带标记的数据,与监督学习有些相似,下面的对比有助于选择采用监督学习还是异常检测:

                           异常检测  Anomaly Detection                                    监督学习  Supervised Learning
    非常少量的正向类(异常数据y=1), 大量的负向类(y=0同时有大量的正向类和负向类
    许多不同种类的异常,非常难。根据非常 少量的正向类数据来训练算法。有足够多的正向类实例,足够用于训练算法,未来遇到的正向类实例可能与训练集中的非常近似。
    未来遇到的异常可能与已掌握的异常、非常的不同。 
    例如:欺诈行为检测 生产(例如飞机引擎)检测数据中心的计算机运行状况例如:邮件过滤器 天气预报 肿瘤分类

     选择特征

    异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够工作,但是最好还是将数据转换成高斯分布,例如使用对数函数:x=log(x+c),其中c为非负常数;或者x=x^cc为 0-1 之间的一个分数。

    误差分析

    一个常见的问题是一些异常的数据可能也会有较高的p(x)值,因而被算法认为是正常的。这种情况下误差分析能够帮助我们,我们可以分析那些被算法错误预测为正常的数据,观察能否找出一些问题。我们可能能从问题中发现我们需要增加一些新的特征,增加这些新特征后获得的新算法能够帮助我们更好地进行异常检测。

    我们通常可以通过将一些相关的特征进行组合,来获得一些新的更好的特征(异常数据的该特征值异常地大或小)。

    例如,在检测数据中心的计算机状况的例子中,我们可以用CPU负载与网络通信量的比例作为一个新的特征,如果该值异常地大,便有可能意味着该服务器是陷入了一些问题中。

    多元高斯分布

    假使我们有两个相关的特征,而且这两个特征的值域范围比较宽,这种情况下,一般的高斯分布模型可能不能很好地识别异常数据。其原因在于,一般的高斯分布模型尝试的是去同时抓住两个特征的偏差,因此创造出一个比较大的判定边界。

     

    例如上图两个相关特征,红色的线是一般的高斯分布模型获得的判定边界,很明显绿色的x所代表的数据点很可能是异常值,但是其p(x)值却仍然在正常范围内。多元高斯分布将创建像图中蓝色曲线所示的判定边界。

    在一般的高斯分布模型中,我们计算  的方法是: 通过分别计算p(x)每个特征对应的几率然后将其累乘起来,在多元高斯分布模型中,我们将构建特征的协方差矩阵,用所有的特征一起来计算p(x)

    我们首先计算所有特征的平均值,然后再计算协方差矩阵:

                                                                                         p(x)=\prod_{j=1}^{n} p\left(x_{j} ; \mu, \sigma_{j}^{2}\right)=\prod_{j=1}^{n} \frac{1}{\sqrt{2 \pi} \sigma_{j}} \exp \left(-\frac{\left(x_{j}-\mu_{j}\right)^{2}}{2 \sigma_{j}^{2}}\right)                                        

                                                                                                                       \mu=\frac{1}{m} \sum_{i=1}^{m} x^{(i)}                                   

                                                                                            \Sigma=\frac{1}{m} \sum_{i=1}^{m}\left(x^{(i)}-\mu\right)\left(x^{(i)}-\mu\right)^{T}=\frac{1}{m}(X-\mu)^{T}(X-\mu)                                          

    注:其中\mu是一个向量,其每一个单元都是原特征矩阵中一行数据的均值。最后我们计算多元高斯分布的p(x):

                                                                                 p(x)=\frac{1}{(2 \pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}} \exp \left(-\frac{1}{2}(x-\mu)^{T} \Sigma^{-1}(x-\mu)\right)                                                           

    协方差矩阵是如何影响模型的?

    上图是5个不同的模型,从左往右依次分析:

    1. 是一个一般的高斯分布模型
    2. 通过协方差矩阵,令特征1拥有较小的偏差,同时保持特征2的偏差
    3. 通过协方差矩阵,令特征2拥有较大的偏差,同时保持特征1的偏差
    4. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的正相关性
    5. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的负相关性

    使用多元高斯分布进行异常检测

    首先,我们把我们的训练集,和我们的拟合模型,我们计算p(x),要知道,设定\mu和描述的一样\Sigma

    如图,该分布在中央最多,越到外面的圈的范围越小。

    并在该点是出路这里的概率非常低。

    原始模型与多元高斯模型的关系如图:m>10n

    其中:协方差矩阵\Sigma为:

    多元高斯分布模型与原高斯分布模型相比:

    原高斯分布模型多元高斯分布模型
    不能捕捉特征之间的相关性 但可以通过将特征进行组合的方法来解决自动捕捉特征之间的相关性
    计算代价低,能适应大规模的特征计算代价较高训练集较小时也同样适用,例如数据5000-10000条非常适用
    训练集小也ok必须要有数据远大于标签(行数远大于列数m\gg n),不然的话协方差矩阵不可逆的,通常需要另外特征冗余也会导致协方差矩阵不可逆

    参考文献

    EM算法-高斯混合模型GMM详细代码实现

    斯坦福机器学习视频笔记 Week9 异常检测和高斯混合模型 Anomaly Detection

     

     

     

    展开全文
  • 针对高斯混合模型存在背景更新收敛性差、易受环境噪声和光照突变影响、易产生虚假目标等问题,提出一种基于高斯混合模型的改进算法,用于视频中行人目标检测。通过将帧差法引入高斯混合模型,快速区分背景区域和运动...
  • 针对传统混合高斯模型(GMM)在检测运动目标时存在噪声、计算量大、效果不佳等问题,提出了一种混合四帧差分算法的改进混合高斯目标检测方法。通过选定不同规则,分别更新前后帧图像的学习速率来消除“鬼影”;提出...
  • 混合高斯模型运动前景提取的matlab程序,效果还不错这样有利于处理期间感兴趣前景提取的matlab程序,利用帧差法实现的视屏前景提取前景提取的matlab程序,利用帧差法实现的视屏前景提取
  • 在matlab上实现的二维高斯混合模型 是基于界面形式的 直接画出高斯分布 更方便的了解GMM 你值得拥有 机器学习
  • 用于检测运动目标
  • 混合高斯模型中,对图像中每一个像素点建立K个高斯模型,对于t时刻像素点X的概率密度函数如下所示。 2背景的选取 首先,按权值和标准差的比值将每个像素点的K个高斯分布由大到小进行排序,则描述背景可能...

        运动目标检测是计算机视觉领域中的一个重要内容,其检测效果将会对目标跟踪与识别造成一定的影响。

    混合高斯背景模型

        在混合高斯模型中,对图像中每一个像素点建立K个高斯模型,对于时刻像素点X的概率密度函数如下所示。

     2 背景的选取

        首先,按权值和标准差的比值将每个像素点的K个高斯分布由大到小进行排序,则描述背景可能性越大的分布越靠前,描述背景可能性越小的分布越靠后。因此,选择前B个分布作为背景像素模型,如公式(3)所示。式中,H通常取最佳经验阈值0.75。

    展开全文
  • 此外,依据恶意软件家族的目的性、继承性与多样性,构建了恶意软件家族的传递闭包关系,并改进了基于高斯混合模型的增量聚类方法来识别恶意软件家族。实验证明,所提方法不仅能节省恶意软件检测的存储空间,还能显著...
  • 高斯混合模型有效更新前景物体检测结果准确
  • 本文件主要是关于高斯混合模型的运动目标检测,以及针对高斯混合模型检测方法的不足,提出了改进的方法。需要的可以下载下来看看。
  • 基于视频的车流量检测的MATLAB代码,采用虚拟检测线法统计车流量,采用基于高斯混合模型的背景建模方法。
  • 利用OpenCV实现了基于YCbCr、混合高斯以及YCbCg肤色检测,同时其中YCbCr、混合高斯给出两种不同方式(直接和间接)读取图像数据的实现。
  • 关于上次的Kmeans算法,今天发现了一个程序...高斯混合算法(GMM)原理介绍,看了好多,发现这篇写的不错, https://www.ituring.com.cn/article/497545 附上大佬的链接:【opencv学习笔记】高斯模型 https://b...
  • 为满足复杂场景下视频烟雾检测的实时性、准确率等需求,提出了一种将高斯混合模型与卷积神经网络相结合的视频烟雾检测方法。基于高斯混合模型的背景减除法和形态学方法实现对视频图像的运动目标提取;针对烟雾检测效率...
  • 这是opencv实现的高斯混合模型,已经运行成功
  • 基于改进高斯混合模型的运动车辆检测
  • 基于混合高斯模型的前景目标检测,代码已调通,只需把读入的文件名称改成相同路径下自己的文件名即可。
  • 提出一种红外图像特征与改进高斯混合模型(Gaussian Mixture Model,GMM)相结合的矿用输送带纵向撕裂在线检测方法。设计了一种自适应混合中值滤波技术;针对高斯混合模型初始化易错的缺点,采用加权可选择模糊C-均值...
  • 高斯混合模型提取背景matlab code
  • 新颖检测中,可应用高斯混合模型建立已知数据模型,拟合数据分布,但当数据维数较高时,自由参数太多,训练需要巨大的数据采样,而ICA搜寻数据的最大统计独立表示,可以将数据从高维空间投影到低维空间。提出一种...
  • 图像处理之高斯混合模型

    万次阅读 2017-05-26 17:15:17
    图像处理之高斯混合模型 一:概述高斯混合模型(GMM)在图像分割、对象识别、视频分析等方面均有应用,对于任意给定的数据样本集合,根据其分布概率, 可以计算每个样本数据向量的概率分布,从而根据概率分布对其进行...
  • GMM(高斯混合模型)的动态背景分割

    千次阅读 热门讨论 2019-11-13 14:19:10
    以下是GMM(高斯混合模型)的动态背景分割的实验报告以及源码,另外用到了形态学操作与多通道的处理,提升了实验结果的性能。 一.实验名称 基于混合高斯模型的动态背景分割 二.实验目的 探索如何对...
  • 对于语音活动检测(VAD),您可以使用Voicebox中的"vadsohn"功能,以10 ms帧跳跃率输出帧级决策(0表示静音,1表示语音). 从数据库中提取功能后,您可以按照Identity Toolbox提供的gmm_ubm_demo中的步骤来训练UBM模型. 如果...
  • 自己写的基于混合高斯背景建模的运动目标检测算法,没有利用opencv本身封装的GMM函数。
  • 高斯混合模型

    2019-08-23 21:59:00
    使用单高斯模型来建模有一些限制,例如,它一定只有一个众数,它一定对称的。...高斯混合模型就是多个单高斯模型的和。它的表达能力十分强,任何分布都可以用GMM来表示。例如,在下面这个图中,彩色的线表示一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,992
精华内容 3,596
关键字:

高斯混合模型检测