精华内容
下载资源
问答
  • 链接预测算法

    2014-12-29 21:53:11
    组合静态和时间序列链接预测算法为混合时间序列链接预测算法
  • arma预测算法

    2019-03-04 14:23:51
    arma时间序列预测算法,详细讲解了Arma的原理和使用历程
  • 为了提高物流数据预测算法效率,实现物流交通量的有效预测,就实现物流预测算法的改进,提出基于物流数据的绿色物流预测算法。首先对传统物流预测方法局限性进行了分析,分解交通流数据的特点,并且证实分解之后的...
  • python核心预测算法 结合流行的算法及教材进行讲解
  • 灰色预测算法 matlab

    2012-04-29 16:11:57
    灰色预测算法 matlab
  • 时间序列预测算法总结

    万次阅读 多人点赞 2018-10-18 10:30:48
    时间序列算法 time series data mining 主要包括decompose(分析数据的各个成分,例如趋势,周期性),prediction(预测未来的值),classification(对有序数据序列的feature提取与分类),clustering(相似数列...

    时间序列算法

    time series data mining 主要包括decompose(分析数据的各个成分,例如趋势,周期性),prediction(预测未来的值),classification(对有序数据序列的feature提取与分类),clustering(相似数列聚类)等。

    时间序列的预测

    常用的思路:

    1、计算平均值https://images0.cnblogs.com/blog2015/380470/201503/111044446527918.jpg

    2、exponential smoothing指数衰减https://images0.cnblogs.com/blog2015/380470/201503/111044446527918.jpg

       不同的时间点,赋予不同的权重,越接近权重越高

    3、snaive:假设已知数据的周期,上一个周期对应的值作为下一个周期的预测值

    4、drift:飘移,即用最后一个点的值加上数据的平均趋势

    https://images0.cnblogs.com/blog2015/380470/201503/111057599021339.jpg

    5、Holt-Winters:  三阶指数平滑

     Holt-Winters的思想是把数据分解成三个成分:平均水平(level),趋势(trend),周期性(seasonality)。R里面一个简单的函数stl就可以把原始数据进行分解:

    https://images0.cnblogs.com/blog2015/380470/201503/111102553559201.jpg

    一阶Holt—Winters假设数据是stationary的(静态分布),即是普通的指数平滑。

    二阶算法假设数据有一个趋势,这个趋势可以是加性的(additive,线性趋势),也可以是乘性的(multiplicative,非线性趋势),只是公式里面一个小小的不同而已。 

    三阶算法在二阶的假设基础上,多了一个周期性的成分。同样这个周期性成分可以是additive和multiplicative的。 举个例子,如果每个二月的人数都比往年增加1000人,这就是additive;如果每个二月的人数都比往年增加120%,那么就是multiplicative。

    性能衡量采用的是RMSE当然也可以采用别的metrics

    https://images0.cnblogs.com/blog2015/380470/201503/111113115892330.png

    6、ARIMA: AutoRegressive Integrated Moving Average,ARIMA是两个算法的结合:AR和MA。在ARMA模型中,AR代表自回归,MA代表移动平均。其公式如下:

    https://images0.cnblogs.com/blog2015/380470/201503/111116217458557.jpg

    • 是白噪声,均值为0, C是常数。  ARIMA的前半部分就是Autoregressive:https://images0.cnblogs.com/blog2015/380470/201503/111118174178729.jpg, 后半部分是moving average: https://images0.cnblogs.com/blog2015/380470/201503/111119099337241.jpg。  AR实际上就是一个无限脉冲响应滤波器(infinite impulse resopnse), MA是一个有限脉冲响应(finite impulse resopnse),输入是白噪声。

    ARIMA里面的I指Integrated(差分)。 ARIMA(p,d,q)就表示p阶AR,d次差分,q阶MA。

    为什么要进行差分呢? ARIMA的前提是数据是stationary的,也就是说统计特性(mean,variance,correlation等)不会随着时间窗口的不同而变化。用数学表示就是联合分布相同。

    当然很多时候并不符合这个要求,例如这里的airline passenger数据。有很多方式对原始数据进行变换可以使之stationary:

    (1) 差分,即Integrated。 例如一阶差分是把原数列每一项减去前一项的值。二阶差分是一阶差分基础上再来一次差分。这是最推荐的做法。

    (2)先用某种函数大致拟合原始数据,再用ARIMA处理剩余量。例如,先用一条直线拟合airline passenger的趋势,于是原始数据就变成了每个数据点离这条直线的偏移。再用ARIMA去拟合这些偏移量。

    (3)对原始数据取log或者开根号。这对variance不是常数的很有效。

    如何做平稳性检验呢?一种方法是肉眼观察,根据肉眼及人的经验判断,不同的人可能会给出不同的结论,还有另一种更客观的统计学方法来辅助判断,也就是“单位根检验”。

    对差分后的数据做单位根检验,参考代码如下:

    print("单位根检验:\n")

    print(ADF(data.diff1.dropna()))

    得到:1%、%5、%10不同程度拒绝原假设的统计值和ADF Test result的比较,p-value接近于0,ADF Test result同时小于5%、10%即说明很好地拒绝该假设,也就是差分后的序列是平稳的。

    序列平稳后,还需要做白噪声检验

    from statsmodels.stats.diagnostic import acorr_ljungbox

    acorr_ljungbox(data.diff1.dropna(), lags = [i for i in range(1,12)],boxpierce=True)

    结果通过P<α,拒绝原假设,说明差分后的序列是平稳的非白噪声序列,可以进行下一步建模。

    模型定阶

    经过平稳性检测和白噪声检测,得到平稳的时间序列后,就开始选择合适的ARIMA模型,即ARIMA模型中合适的p,q

    第一步我们要先检查平稳时间序列的自相关图和偏自相关图。通过sm.graphics.tsa.plot_acf和sm.graphics.tsa.plot_pacf得到图形

    这里就要用到两个很常用的量了: ACF(auto correlation function)和PACF(patial auto correlation function)。对于non-stationary的数据,ACF图不会趋向于0,或者趋向0的速度很慢。

    acf(train)                                ——原始数据

    acf(diff(train,lag=1))                    ——一阶差分

    acf(diff(diff(train,lag=7)))              ——去除周期性的一阶差分

    确保stationary之后,下面就要确定p和q的值了。定这两个值还是要看ACF和PACF:

    https://images0.cnblogs.com/blog2015/380470/201503/111144188395319.jpg

    AR(p)模型,PACF会在lag=p时截尾,也就是,PACF图中的值落入宽带区域中。

    MA(q)模型,ACF会在lag=q时截尾,同理,ACF图中的值落入宽带区域中。

    确定好p和q之后,就可以调用R里面的arime函数了。

    ARIMA更多表示为  ARIMA(p,d,q)(P,D,Q)[m] 的形式,其中m指周期(例如7表示按周),p,d,q就是前面提的内容,P,D,Q是在周期性方面对应的p,d,q含义。

    R里面有两个很强大的函数: ets 和 auto.arima。 用户什么都不需要做,这两个函数会自动挑选一个最恰当的算法去分析数据。

    在R中各个算法的效果如下:

    https://images0.cnblogs.com/blog2015/380470/201503/111148182457526.jpg

    模型优化

    在这里插入图片描述

    其中L是在该模型下的最大似然,n是数据数量,k是模型的变量个数。

    python代码如下:

    arma_mod20 = sm.tsa.ARIMA(data["xt"],(1,1,0)).fit()

    arma_mod30 = sm.tsa.ARIMA(data["xt"],(0,1,1)).fit()

    arma_mod40 = sm.tsa.ARIMA(data["xt"],(1,1,0)).fit()

    values = [[arma_mod20.aic,arma_mod20.bic,arma_mod20.hqic],[arma_mod30.aic,arma_mod30.bic,arma_mod30.hqic],[arma_mod40.aic,arma_mod40.bic,arma_mod40.hqic]]

    df = pd.DataFrame(values,index=["AR(1,1,0)","MA(0,1,1)","ARMA(1,1,0)"],columns=["AIC","BIC","hqic"])

    df

    构造这些统计量所遵循的统计思想是一致的,就是在考虑拟合残差的同时,依自变量个数施加“惩罚”。但要注意的是,这些准则不能说明某一个模型的精确度,也即是说,对于三个模型A,B,C,我们能够判断出B模型是最好的,但不能保证B模型能够很好地刻画数据。可以用AIC(mod1)来检验与比较,值越小越好。

    参数估计

    from statsmodels.tsa.arima_model import ARIMA

    model = ARIMA(data["xt"], order=(0,1,1))

    result = model.fit()

    print(result.summary())

    模型检验

    在这里插入图片描述

    参数检验

    在这里插入图片描述

    P<α,拒绝原假设,认为该参数显著非零MA(2)模型拟合该序列,残差序列已实现白噪声

    模型的显著性检验

    resid = result.resid#残差

    fig = plt.figure(figsize=(12,8))

    ax = fig.add_subplot(111)

    fig = qqplot(resid, line='q', ax=ax, fit=True)

    qq图显示,我们看到红色的KDE线与N(0,1)平行,这是残留物正太分布的良好指标,说明残差序列是白噪声序列,模型的信息的提取充分,当让大家也可以使用前面介绍的检验白噪声的方法LB统计量来检验

    模型预测

    pred = result.predict('1988', '1990',dynamic=True, typ='levels')

    print (pred)

    plt.figure(figsize=(12, 8))

    plt.xticks(rotation=45)

    plt.plot(pred)

    plt.plot(data.xt)

    plt.show()

    预测效果评价:accuracy()函数包含了很多评价指标,也可以自定义。

    7、ARFIMA(p,d,q):分数积分自回归移动平均模型,时间序列长期记忆

          关键步骤在于对序列进行分数阶差分,得到满足零均值ARMA过程的序列,再进行参数估计。

     

    案例:

    我们有一个时间序列的数据 "D1_data.txt"

    1.拿到这个时间序列你先目测,上图通过目测可以认为是一个平稳的时间序列。

     

    R步骤

    a <- read.csv(“D:/D1_data.txt”) #括号中的东西取决于你的数据在电脑上存放的路径

    aa <-ts(a)  #命名该事件序列为aa

    plot(aa)  #画出时间序列aa如上图

     

    2、通过ACF和PACF也就是自相关系数和偏自相关系数来判断是否稳定

    由于ACF在lag=1之后便落入置信区间,PACF在lag=3之后落入置信区间,我们认为该时间序列稳定。

    R步骤

    layout(1:2)  #一次显示两张图

    acf(aa)  #显示自相关系数

    pacf(aa)  #显示偏自相关系数

     

    3、模型拟合

    选择ma(1)或者arma(3,1)

    用arima命令来拟合,并用AIC来看哪个模型更适合,AIC数值越小越好。

    R步骤

    ma1 <- arima(aa,order = c(0,0,1))

    arma13 <- arima(aa,order = c(3,0,1))

    AIC(ma1)

    AIC(arma13)

    #AIC结果:

    AIC(ma1) [1] 939.6636

    AIC(arma13) [1] 943.8848

    可以看出ma1优于arma13.

     

    4、看拟合好的模型的残差是否为白噪声

    R步骤

    acf(resid(ma1))   #ma1的残差的自相关系数

    注意事项:

    对于这几个模型的选择绝对不是IC谁高就选谁。

    正确的流程:1)根据acf和pacf的特点进行选择。比如题主的图acf缓慢下行,而pacf只有一个lag significant,这样对应的model是AR,相反如果pacf decays而acf cuts off,你就该去选MA。每个model都有对应的acf,pacf的特点,根据对应的特点细节去选model,选lag,增加sessional ar ma,验证残差等等。

    2)在1)的基础上选出的可能性的model中,用IC和残差的表现来选一个最好的,这时候才用到IC。不谈1)来谈IC没有意义。其中还有很多需要注意的点建议题主自己搜索学习一下。

    有trend代表一定不stationary,但这并不影响模型,在去除趋势项后,一个时间序列依然可以稳态,这个叫做trend stationary,因此即使有trend,依然可以使用ar等模型来model。

    存在趋势的序列都是非平稳的,AR等一系列模型是必须建立在平稳的基础上才有意义…一般时间序列建模的流程是:去除确定性因素(趋势还有季节性),然后对剩下的随机因素进行平稳性检验,检验通过之后进行arima建模,具体的阶数你可以用acf,pacf来确定,比较方便的是R里面的auto.arima直接定阶…然后进行模型的拟合与预测…最后就是对残差进行arch效应检验,如果有arch效应,就进一步用波动率模型进行建模…总的来说就是确定性因素的分解—随机因素的均值建模—波动率建模。

    疑问:

    如何判断一个序列是否平稳?

    1、均值 ,是与时间t 无关的常数。

    2、方差 ,是与时间t 无关的常数。这个特性叫做方差齐性。

    3、协方差 ,只与时期间隔k有关,与时间t 无关的常数。

    如果一个序列不平稳,就要用方法使它变平稳:如消除长期趋势、差分化

    检查平稳性的公式,

    1、引入Rho系数:X(t) = Rho * X(t-1) + Er(t)

    2、Dickey-Fuller检验是测试一个自回归模型是否存在单位根。X(t) - X(t-1) = (Rho - 1) X(t - 1) + Er(t),要测试如果Rho–1=0是否差异显著。如果零假设不成立,我们将得到一个平稳时间序列。

     

    如何判断一个序列符合AR还是MA?

    自回归AR案例:

    例如,x(t)代表一个城市在某一天的果汁的销售量。在冬天,极少的供应商进果汁。突然有一天,温度上升了,果汁的需求猛增到1000.然而过了几天,气温有下降了。但是众所周知,人们在热天会喝果汁,这些人会有50%在冷天仍然喝果汁。在接下来的几天,这个比例降到了25%(50%的50%),然后几天后逐渐降到一个很小的数。

    移动平均MA案例:

    一个公司生成某种类型的包,这个很容易理解。作为一个竞争的市场,包的销售量从零开始增加的。所以,有一天他做了一个实验,设计并制作了不同的包,这种包并不会被随时购买。因此,假设市场上总需求是1000个这种包。在某一天,这个包的需求特别高,很快库存快要完了。这天结束了还有100个包没卖掉。我们把这个误差成为时间点误差。接下来的几天仍有几个客户购买这种包。

    AR模型与MA模型的不同

    AR与MA模型的主要不同在于时间序列对象在不同时间点的相关性。

    MA模型用过去各个时期的随机干扰或预测误差的线性组合来表达当前预测值。n>某一个值时,x(t)与x(t-n)的相关性总为0.

    AM模型仅通过时间序列变量的自身历史观测值来反映有关因素对预测目标的影响和作用,步骤模型变量相对独立的假设条件约束,所构成的模型可以消除普通回退预测方法中由于自变量选择、多重共线性等造成的困难。即AM模型中x(t)与x(t-1)的相关性随着时间的推移变得越来越小。

    用ACF和PACF来区分AR与MA

    时间序列x(t)滞后k阶的样本自相关系数(ACF)和滞后k期的情况下样本偏自相关系数(PACF)。

    AR模型的ACF和PACF:

    通过计算证明可知:

    - AR的ACF为拖尾序列,即无论滞后期k取多大,ACF的计算值均与其1到p阶滞后的自相关函数有关。

    - AR的PACF为截尾序列,即当滞后期k>p时PACF=0的现象。

    http://i1.wp.com/www.analyticsvidhya.com/wp-content/uploads/2015/02/Gradual-decline.gif http://i1.wp.com/www.analyticsvidhya.com/wp-content/uploads/2015/02/cut-off.gif?resize=318%2C284

    上图蓝线显示值与0具有显著的差异。很显然上面PACF图显示截尾于第二个滞后,这意味这是一个AR(2)过程。

    MA模型的ACF和PACF:

    - MA的ACF为截尾序列,即当滞后期k>p时PACF=0的现象。

    - AR的PACF为拖尾序列,即无论滞后期k取多大,ACF的计算值均与其1到p阶滞后的自相关函数有关。

    http://i1.wp.com/www.analyticsvidhya.com/wp-content/uploads/2015/02/cut-off.gif?resize=318%2C284 http://i1.wp.com/www.analyticsvidhya.com/wp-content/uploads/2015/02/Gradual-decline.gif?resize=318%2C284

    很显然,上面ACF图截尾于第二个滞后,这以为这是一个MA(2)过程

     

    如何让时间序列变得平稳?

    1 消除趋势:这里我们简单的删除时间序列中的趋势成分

    2 差分:这个技术常常用来消除非平稳性。这里我们是对序列的差分的结果建立模型而不是真正的序列。

    x(t) – x(t-1) = ARMA (p , q)

    差分后,ARIMA对应为:p:AR    d:I     q:MA

    3 季节性:季节性直接被纳入ARIMA模型中。

    如何确定pdq的值?

    1、参数p,q可以使用ACF和PACF图发现。

    2、如果相关系数ACF和偏相关系数PACF逐渐减小,这表明我们需要进行时间序列平稳并引入d参数。

    选择模型时,选择AIC和BIC最小的(p,d,q)组合。

    进行时间序列预测的步骤

     

    展开全文
  • 随后采用真实网络流量验证了预测算法的性能,在保持与FARIMA 预测算法等价的时间复杂度下,其均方根和相对均方根误差与RBF神经网络预测算法相当,而高于FARIMA预测算法。同时,预测算法对突发流量的跟踪和预测性能...
  • MATLAB 时间序列预测算法(有代码)

    万次阅读 多人点赞 2019-09-05 09:57:44
    ##MATLAB 时间序列预测算法(有代码) #最近在学习时间序列,找了很多资料,都需要会员,充值,本着共同进步的原则,给大家分享一下我找到的学习资料,里面大部分代码能实现,只有ARMA部分不能,因为现在的库中没有...

    ##MATLAB 时间序列预测算法(有代码)
    #最近在学习时间序列,找了很多资料,都需要会员,充值,本着共同进步的原则,给大家分享一下我找到的学习资料,里面大部分代码能实现,只有ARMA部分不能,因为现在的库中没有garchset了,所以还在找替代的方法,有大佬知道了解,也希望伸出援助之手帮助我这个渣渣,谢谢。

    我是为了方便学习,就写在一个文档里了,你们实现的时候只要把你想用的算法前面的%去掉就好了。

    %平均移动法
    %clc;
    %clear all;
    %y=[0.35 0.33 0.29 0.19 0.23 0.24 0.39 0.37 0.21 0.21 0.21];
    %m=length(y);
    %n=[1,2]; % 自定义
    %for i=1:length(n)
     %   for j=1:m-n(i)+1
      %       yhat{i}(j)=sum(y(j:j+n(i)-1))/n(i);
       % end
        %y31(i)=yhat{i}(end);
        %s(i)=sqrt(mean((y(n(i)+1:m)-yhat{i}(1:end-1)).^2));
    %end
    %y31,s
    
    
    %加权平均
    %clc;
    %clear all;
    %y=[215 197 203 234 194 108 191 241 232 221 196 226 201 219 217 213 203 225 237 188 212 198 219 177 231 199 203];
    %w=[1/7;3/7;3/7];
    %m=length(y);n=3;
    %for i=1:m-n+1
     %   yhat(i)=y(i:i+n-1)*w;
        
    %end
    %yhat;
    %err=abs(y(n+1:m)-yhat(1:end-1))./y(n+1:m);
    %T_err=1-sum(yhat(1:end-1))/sum(y(n+1:m));
    %y1989=yhat(i)/(1-T_err);
    
    
    %趋势移动平均法
    %clc;
    %clear all;
    %y=[216 199 222 218 217 259 206 230 255 221 214 212 219 224 210 205 186 249 214 228 211 226 219 238 217 205 206];
    %y=[676 825 774 716 940 1159 1384 1524 1668 1688 1958 2031 2234 2566 2820 3006 3093 3277 3514 3770 4107];
    %m1=length(y);
    %n=6;
    %for i=1:m1-n+1
     %   yhat1(i)=sum(y(i:i+n-1))/n;
    %end
    %yhat1;
    %m2=length(yhat1);
    %for i=1:m2-n+1
     %   yhat2(i)=sum(yhat1(i:i+n-1))/n;
    %end
    %yhat2;
    %plot(1:27,y,'*');
    %a21=2*yhat1(end)-yhat2(end);
    %b21=2*(yhat1(end)-yhat2(end))/(n-1);
    %y1986=a21+b21
    %y1987=a21+2*b21
    
    
    %指数平滑法
    %clc,clear all;
    %yt=[216 199 222 218 217 259 206 230 255 221 214 212 219 224 210 205 186 249 214 228 211 226 219 238 217 205 206];
    %yt=[50 52 47 51 49 48 51 40 48 52 51 59];
    %n=length(yt); 
    %alpha=[0.2 0.5 0.8];m=length(alpha); 
    %yhat(1,1:m)=(yt(1)+yt(2))/2; 
    %for i=2:n 
     %yhat(i,:)=alpha*yt(i-1)+(1-alpha).*yhat(i-1,:); 
    %end
    %yhat;
    %y1=yt';
    %err=sqrt(mean((repmat(y1,1,m)-yhat).^2))
    %xlswrite('yt',yhat) ;
    %yhat1988=alpha*yt(n)+(1-alpha).*yhat(n,:)
    
    
    %三次指数平滑法
    %clc,clear;
    %yt=[20.04 20.06 25.72 34.61 51.77 55.92 80.65 131.11 148.58 162.67 232.26];
    %n=length(yt); 
    %alpha=0.3; st1_0=mean(yt(1:3)); st2_0=st1_0;st3_0=st1_0; 
    %st1(1)=alpha*yt(1)+(1-alpha)*st1_0; 
    %st2(1)=alpha*st1(1)+(1-alpha)*st2_0; 
    %st3(1)=alpha*st2(1)+(1-alpha)*st3_0; 
    %for i=2:n 
    % st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1); 
    % st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1); 
    % st3(i)=alpha*st2(i)+(1-alpha)*st3(i-1); 
    %end 
    %xlswrite('touzi.xls',[st1',st2',st3']) 
    %st1=[st1_0,st1];st2=[st2_0,st2];st3=[st3_0,st3]; 
    %a=3*st1-3*st2+st3; 
    %b=0.5*alpha/(1-alpha)^2*((6-5*alpha)*st1-2*(5-4*alpha)*st2+(4-3*alpha)*st3); 
    %c=0.5*alpha^2/(1-alpha)^2*(st1-2*st2+st3); 
    %yhat=a+b+c; 
    %xlswrite('touzi.xls',yhat','Sheet1','D1') 
    %plot(1:n,yt,'*',1:n,yhat(1:n),'O') 
    %legend('实际值','预测值') 
    %xishu=[c(n+1),b(n+1),a(n+1)]; 
    %yhat1990=polyval(xishu,2)
    
    
    %自适应滤波法
    %clc,clear;
    %yt=[217 207.5 215 223 222 221.5 209 213 217 213 217 215];
    %m=length(yt);k=0.083;
    %N=12;Terr=10000;
    %w=ones(1,N)/N;
    %while abs(Terr)>0.00001
     %   Terr=[];
      %  for j=N+1;m-1
         %    yhat(j)=w*yt(j-1:-1:j-N)';
          %   err=yt(j)-yhat(j);
            % Terr=[Terr,abs(err)];
            % w=w+2*k*err*yt(j-1:-1:j-N);
        % end
       %  Terr=max(Terr);
     %end
     %w,yhat
     
     
    %趋势外推预测法——修正指数曲线法(以下三种类似,选S标准误差小的模型)
    %function chanliang
    %clc,clear;
    %global a b k
    %%yt=[217 207.5 215 223 222 221.5 209 213 217 213 217];
    %yt=[42.1 47.5 52.7 57.7 62.5 67.1 71.5 75.7 79.8 83.7 87.5 91.1 94.6 97.9 101.1];
    %n=length(yt);m=n/3;
    %%值得注意的是,并不是任何一组数据都可以用修正指数曲线拟合。采用前应对数据进行检验,检验方法是看给定数据的逐期增长量的比率是否接近某一常数b
    %cf=diff(yt);
    %for i=1:n-2
     %   bzh(i)=cf(i+1)/cf(i)
    %end
    %range=minmax(bzh)     %b的范围
    %s1=sum(yt(1:m)),s2=sum(yt(m+1:2*m)),s3=sum(yt(2*m+1:end))
    %b=((s3-s2)/(s2-s1))^(1/m)
    %a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
    %k=(s1-a*b*(b^m-1)/(b-1))/m
    %y=yuce(1:18)
    %定义预测函数
    %function y=yuce(t)
    %global a b k
    %y=k+a*b.^t;
    
    %Compertz 曲线:  初期增长缓慢,以后逐渐加快。当达到一定程度后,增长率又逐渐下降。
    %clc,clear
    %yuce=@(t,a,b,k)k*a.^(b.^t);
    %y=[42.1 47.5 52.7 57.7 62.5 67.1 71.5 75.7 79.8 83.7 87.5 91.1 94.6 97.9 101.1];
    %yt=log(y);n=length(yt);m=n/3;
    %s1=sum(yt(1:m)),s2=sum(yt(m+1:2*m)),s3=sum(yt(2*m+1:end))
    %b=((s3-s2)/(s2-s1))^(1/m)
    %a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
    %k=(s1-a*b*(b^m-1)/(b-1))/m
    %a=exp(a)
    %k=exp(k)
    %y=yuce(1:18,a,b,k)
    
    
    %Logistic 曲线(生长曲线)
    %clc,clear
    %yuce=@(t,a,b,k) 1./(k+a*b.^t);
    %y=[42.1 47.5 52.7 57.7 62.5 67.1 71.5 75.7 79.8 83.7 87.5 91.1 94.6 97.9 101.1];
    %yt=1./y;n=length(yt);m=n/3;
    %s1=sum(yt(1:m)),s2=sum(yt(m+1:2*m)),s3=sum(yt(2*m+1:end))
    %b=((s3-s2)/(s2-s1))^(1/m)
    %a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
    %k=(s1-a*b*(b^m-1)/(b-1))/m
    %y1=yuce(1:18,a,b,k)
    

    [原文档在百度网盘里链接:https://pan.baidu.com/s/1rKEWW4ynqH-rM_Gt15aCUw
    提取码:tdby
    ]

    ##欢迎批评指正!

    展开全文
  • 本代码主要利用MATLAB工具进行灰色神经网络的预测算法的仿真,实现订单需求预测的模拟
  • H.264快速帧内预测算法研究H.264快速帧内预测算法研究H.264快速帧内预测算法研究H.264快速帧内预测算法研究H.264快速帧内预测算法研究
  • 一篇复杂网络链路预测算法,个人感觉比较有借鉴意义
  • java版的时间序列预测算法源码,是核心代码
  • 结合随机技术和爬山算法的遗传预测算法及其在数据预测领域的应用,张雨,崔竞松,本文主要介绍了基于神经网络的时间序列预测算法,利用遗传算法实现对未来的数据的分析和预测,在遗传算法的实现中利用了爬山算法
  • 足球预测算法分析之埃罗预测

    千次阅读 2016-03-03 22:26:25
    作为爆盘侠足球预测应用的开发者之一,在长时间研究架构爆盘侠的过程中,对于各种主流的足球赛事预测算法小有心得,今天决定分享出来,以我们的爆盘侠网站为样本,网址参见:http://www.baopanxia.com/  今天...
    作为爆盘侠足球预测应用的开发者之一,在长时间研究架构爆盘侠的过程中,对于各种主流的足球赛事预测算法小有心得,今天决定分享出来,以我们的爆盘侠网站为样本,网址参见:
    http://www.baopanxia.com/
    

     今天分享的是足球预测算法中的头马,可以说是最权威、科学性最强的埃罗预测法,这个算法是由欧洲著名的数学家埃罗博士发现并提出来的。当然,埃罗博士一生中研究的课题很多,但最为著名的就是埃罗足球预测法!

     埃罗算法是由联赛的积分权重为根本,所以在设计爆盘侠的预测系统时为了能够灵活并且松耦合的设计联赛权重模块,
    费了很多脑筋。实际运用中,可以取比赛双方最近1000或500或300场比赛的积分总额,来进行计算。统计时,要保证比赛双方的比赛数一样,这样更公平。

    计算P需要历史积分,这里只能假定最初所有队伍都在同一起跑线,都有相同的积分初始值,经过38万的数据累加计算下去,积分会逐渐准确。

    比赛最早从2004-12-02 开始, 拿出2005年、2006年来做最初的P积累,这两年中We 均为 0.5。

    下面列举一个足球预测数据的例子: http://www.baopanxia.com/qiusaiInfo?id=428720

    本次足球预测的结果里,其中埃罗预测的结果为:主胜率 54%  ,  客胜率 46%  

    很明显主队胜率更大,主队将会胜出,但是爆盘侠的预测模块会进行类比分析,结果进一步为:

    在 [426124] 场球赛中,埃罗系统预测大小顺序同样为 [主胜>客胜] 且,主客差值同样为 [0.08] 的赛事共有 [9249] 场,其中:
    主胜4386 场,主胜率46%平局2260 场,平局率23%客胜2344 场,客胜率25%
    展开全文
  • HMM预测算法——Viterbi算法

    千次阅读 2016-09-18 08:39:00
    **HMM预测算法——Viterbi算法** HMM是一个生成模型,表示状态序列和观测序列的联合分布,但是状态序是隐藏的,不可观测的。 Viterbi算法实际上用动态规划(dynamic programming)求HMM预测问题,用DP求概率最大...
                   **HMM预测算法——Viterbi算法**  
    

    HMM是一个生成模型,表示状态序列和观测序列的联合分布,但是状态序是隐藏的,不可观测的。
    Viterbi算法实际上用动态规划(dynamic programming)求HMM预测问题,用DP求概率最大路径,即寻找满足观测序列意义上最优隐含的状态序列。
    (一)Viterbi算法可以分为两步:
    第一步:从t=1开始,依次找到t=(1,2,,,T)时刻状态为i的各路径的最大概率。当t=T时,就可以得到最优路径的概率P*(t=T的最大概率)及其终结点;
    第二步:从开始,由后向前逐步回溯求得结点,得到最优路径。
    (二)Viterbi算法重要步骤详解
    首先定义两个变量 这里写图片描述这里写图片描述(分别读“德尔塔”、“可赛”)。表示在观测时刻t状态为i的所以单个路径中概率最大值
    这里写图片描述
    定义在t时刻状态为i的所以单个路径中概率最大的路径的第t-1个结点。表示的是一个由其上一次状态值产生的状态。

    定义为所以路径中对应的最大终结点的值,即最大的那个状态值

    下面贴上维特比算法(来自李航教授的《统计学习方法》)
    (三)Viterbi算法
    这里写图片描述
    (四)Viterbi算法R语言中简单例子
    因为我都是基于R来作数据分析的,所以简单的在R里面学习下Viterbi算法,可以在RStudio中利用“F1”和“F2”的帮助文档和源码更进来快速学习。

    # Initialise HMM
    hmm = initHMM(c("A","B"), c("L","R"), transProbs=matrix(c(.6,.4,.4,.6),2),
                  emissionProbs=matrix(c(.6,.4,.4,.6),2))
    print(hmm)
    # Sequence of observations
    observations = c("L","L","R","R")
    # Calculate Viterbi path
    viterbi = viterbi(hmm,observations)
    print(viterbi)

    (五)扩展思考
    1、HMM中计算概率问题与Viterbi中的递推关系式很类似,他们有联系吗?
    2、HMM与CRF条件随机场,最大熵模型之间的关系。
    3、概率上下文无关文法是HMM的进一步扩展。
    (六)学习总结
    学习的目的不仅仅只是掌握了Viterbi这个算法,更应该通过该算法去理解算法在模型中的运用的方法和设计的思想,学会在类似的问题上举一反三。下面是我对这块的知识小总结,也是我的小心得,希望能得到前辈们的批评和指导。
    1、HMM的3个基本问题总结
    概率计算问题
    直接计算法、向前-向后算法
    学习问题
    监督学习(极大似然估计)、非监督学习(Baum-Welch或EM算法)
    预测问题
    近似算法、Viterbi算法
    2、学习算法和模型没有什么捷径,见到公式就拿笔推推,见到算法就上机运行,然后真正的应用到应用问题中(这你才可以说,这玩意你理解了,至于能不能更深入前移学习,那需要下更多的功夫)。
    3、DP和贪心算法在最优解问题上的异同,在理解DP中的递推表达式中,其中的回溯具体是怎样查找路径的,不能就只是看着牛人的成果自我感觉会了。

    参考文献
    [1] 悉尼科大徐亦达博士的机器学习公开课中关于HMM的部分
    [2] 李航教授的《统计学习方法》第十章
    [3] 《7月算法》里周博老师机器学习视频讲解

    展开全文
  • Python机器学习预测算法

    千次阅读 2019-07-16 16:45:09
    a bytes-like object is required, not 'str'Python机器学习核心预测算法第2章 通过理解数据来了解问题2.1 解剖一个新问题2.1.1 属性和标签的不同类型决定模型的选择2.1.2 新数据集的注意事项2.2 分类问题:用声呐...
  • 将目前预测方法分为传统预测算法和现代预测算法,介绍了各种算法的原理、适用范围,以及大规模新能源并网运行对超短期负荷预测的影响.对比分析各种算法的优点和不足,提出了对历史数据预处理、建立分时段的综合预测...
  • 马尔可夫的教程说的很多,但是基本都没有代码实例,这个预测算法的文章,基本只有大学的论文才能找到比较详细的资料,但是都没有代码实例,特别是边际概率,离散型变量,检验'马氏性',自相关系数,滞时权重等说的不尽...
  • 常见的预测算法

    千次阅读 2017-11-20 14:42:55
    常见的预测算法有 1.简易平均法,包括几何平均法、算术平均法及加权平均法; 2.移动平均法,包括简单移动平均法和加权移动平均法; 3,指数平滑法,包括 一次指数平滑法和二次指数平滑法,三次指数平滑法; 4,线性...
  • MATLAB BP神经网络预测算法

    千次阅读 2019-11-24 06:22:53
    BP神经网络预测算法预测序号15的跳高成绩。 下表是国内男子跳高运动员各项素质指标 P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2 3.2 3.9 3.1 3.2; 9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2 ...
  • 这是灰色神经网络方面的经典论文,希望对大家有帮助.本文章主要描述了算法的实现.(灰色神经网络预测算法在 DMF 回收过程中的应用)
  • 基于H.264/AVC标准的帧内预测算法是一种减小宏块间空间冗余的预测算法。针对进一步提高H.264/AVC帧内预测性能的问题,提出了一种基于块匹配算法的帧内预测算法,该算法将帧内预测中的DC模式与BM模式两种模式相结合,...
  • 灰色最小二乘马尔可夫链预测算法灰色最小二乘马尔可夫链预测算法灰色最小二乘马尔可夫链预测算法
  • 时序预测算法

    2012-09-16 23:44:52
    weka额外的jar包,可以对一定时间的历史数据进行预测
  • 信息隐藏预测算法之MED

    千次阅读 2018-09-12 16:16:55
    下图为图像矩阵的一部分,用此为例来说明MED预测算法: 其中,x为待预测的像素点,a为x的左边像素点,b为x的上方像素点,c为x左上角的像素点。 此预测器在当前位置左侧存在垂直边缘的情况下预测当前像...
  • C#处理—预测算法.rar

    2020-08-11 17:43:38
    C#编写的算法示例,可直接编译运行,包含预测,处理算法。有需要的自行下载研究吧,我也是一个偶然机会获得的,我也不是原创,互相研究学习
  • 编程验证足球预测算法的准确概率

    千次阅读 2016-02-26 10:39:58
    最近闲来无事,学了golang语言,感觉简洁强大,索性用golang练手,开发了一系列的小软件,其中就有足球预测算法的分析软件,曾经醉心于研究足球预测,收集了很多预测算法,现在一一验证,数据是采用的爆盘侠的数据:...
  • 预测算法一(需求管理)

    千次阅读 2018-08-07 15:59:51
    背景:通过一段时间内的客户历史订单信息,运用数学的算法预测未来月在制造单元、...比较常用的预测算法 (1)简单移动平均 (2)加权移动平均 (3)线性回归 (4)指数平滑  3、预测层次设定 对于每种产品设定预...
  • 基于时间序列ARIMA模型的分析预测算法研究及系统实现

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 373,952
精华内容 149,580
关键字:

预测算法