本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種基于缺失數(shù)據(jù)的預(yù)估方法及裝置。
背景技術(shù):
目前,互聯(lián)網(wǎng)已經(jīng)成為人們獲取信息的重要途徑,隨著網(wǎng)絡(luò)數(shù)據(jù)量的不斷增加,數(shù)據(jù)挖掘和分析日趨得到關(guān)注。其中,數(shù)據(jù)分析是一種商業(yè)信息處理技術(shù),在銀行、電信、保險、交通和零售等領(lǐng)域得到了廣泛的應(yīng)用。通過對大量數(shù)據(jù)進行抽取、轉(zhuǎn)換、分析和模型化處理,可以預(yù)估未來一段時間內(nèi)某個業(yè)務(wù)產(chǎn)生數(shù)據(jù)的趨勢。
時間序列分析是一種動態(tài)數(shù)據(jù)處理的統(tǒng)計方法。該方法基于隨機過程理論和數(shù)理統(tǒng)計學(xué)方法,研究隨機數(shù)據(jù)序列所遵從的統(tǒng)計規(guī)律。此外,該方法還可以被應(yīng)用在其他預(yù)估領(lǐng)域,例如:入侵檢測和庫存預(yù)估等。具體地,在采用時間序列分析方法對未來一段時間內(nèi)的數(shù)據(jù)進行預(yù)估之前,需要采集在預(yù)設(shè)時間段內(nèi)的歷史數(shù)據(jù)。在理想情況下,在預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)是不存在缺失的,這樣就可以根據(jù)預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù)預(yù)估未來一段時間內(nèi)的數(shù)據(jù);但是在實際情況下,在預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)是存在缺失的?,F(xiàn)有基于缺失數(shù)據(jù)的預(yù)估方法主要包括以下兩種:
第一、當預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)存在缺失時,將預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)在最后一個缺失的歷史數(shù)據(jù)之后進行截斷;然后根據(jù)最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)進行預(yù)估。例如,假設(shè)預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù)[a,b]中存在A、B和C三個缺失的歷史數(shù)據(jù),將預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)在歷史數(shù)據(jù)C之后截斷;然后根據(jù)歷史數(shù)據(jù)C之后的歷史數(shù)據(jù)(C,b]進行預(yù)估。
第二、當預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)存在缺失時,先在各個缺失的歷史數(shù)據(jù)處進行插值,然后根據(jù)預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)和插值后的歷史數(shù)據(jù)進行預(yù)估。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:
在現(xiàn)有第一種基于缺失數(shù)據(jù)的預(yù)估方法中,當最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)較少時,根據(jù)最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)進行預(yù)估會出現(xiàn)偏差;在現(xiàn)有第二種基于缺失數(shù)據(jù)的預(yù)估方法中,在各個缺失的歷史數(shù)據(jù)中直接進行插值,當預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)中缺失的歷史數(shù)據(jù)較多時,預(yù)估結(jié)果會產(chǎn)生嚴重的偏差現(xiàn)象。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種基于缺失數(shù)據(jù)的預(yù)估方法及裝置,能夠有效地改善預(yù)估結(jié)果的偏差現(xiàn)象。
為達到上述目的,本發(fā)明實施例公開了一種基于缺失數(shù)據(jù)的預(yù)估方法,所述方法包括:
獲取預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù);
根據(jù)所述全部歷史數(shù)據(jù)與采集時間的對應(yīng)關(guān)系,將預(yù)設(shè)時間段內(nèi)所述全部歷史數(shù)據(jù)劃分到M個子時間段中,其中,所述M為大于或等于2的自然數(shù);
在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段;
計算所述當前子時間段中缺失的歷史數(shù)據(jù)的缺失密度;
判斷所述當前子時間段中歷史數(shù)據(jù)的缺失密度是否大于預(yù)設(shè)閾值;
如果否,返回所述在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段的步驟;
如果是,在所述當前子時間段中確定滿足預(yù)先設(shè)置的截斷條件的待截斷數(shù)據(jù);
根據(jù)時間先后順序,至少將待截斷數(shù)據(jù)之前的所有的數(shù)據(jù)截斷;
根據(jù)所述全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,其中,所述剩余的歷史數(shù)據(jù)為除截斷的數(shù)據(jù)以外的數(shù)據(jù)。
可選地,所述根據(jù)時間先后順序,至少將待截斷數(shù)據(jù)之前的所有的數(shù)據(jù)截斷,所述的方法還包括:
根據(jù)時間先后順序,將待截斷數(shù)據(jù)所在的子時間段的最后一個數(shù)據(jù)之前的所有的數(shù)據(jù)截斷。
可選地,所述在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段,包括:
在全部子時間段中選擇最后一個子時間段作為第一子時間段;
按照時間倒序,在所述全部子時間段中選擇與所述第一子時間段之前相鄰的子時間段作為第二子時間段;
將當前選擇的所述第一子時間段或者所述第二子時間段作為當前子時間段。
可選地,所述計算所述當前子時間段中缺失的歷史數(shù)據(jù)的缺失密度,包括:
統(tǒng)計各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量;
根據(jù)所述各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量以及預(yù)先確定的各個子時間段中歷史數(shù)據(jù)的總數(shù)量,計算各個時間段中缺失的歷史數(shù)據(jù)的缺失密度。
可選地,所述在所述當前子時間段中確定滿足預(yù)先設(shè)置的截斷條件的待截斷數(shù)據(jù),包括:
判斷所述當前子時間段中最后一個缺失的歷史數(shù)據(jù)之后是否存在至少一個非缺失的歷史數(shù)據(jù);
當所述最后一個缺失的歷史數(shù)據(jù)之后存在至少一個非缺失的歷史數(shù)據(jù)時,確定所述最后一個缺失的歷史數(shù)據(jù)之后第一個非缺失的歷史數(shù)據(jù)為所述待截斷數(shù)據(jù);或
當所述最后一個缺失的歷史數(shù)據(jù)之后不存在至少一個非缺失的歷史數(shù)據(jù),則判定所述最后一個缺失的歷史數(shù)據(jù)為當前子時間段的最后一個數(shù)據(jù)時,在所述最后一個缺失的歷史數(shù)據(jù)處進行插值;
確定插值后的最后一個歷史數(shù)據(jù)為所述待截斷數(shù)據(jù)。
可選地,所述在所述最后一個缺失的歷史數(shù)據(jù)處進行插值,包括:
判斷所述當前子時間段中非缺失的歷史數(shù)據(jù)的非缺失數(shù)量是否大于或等于N;其中,N是大于或等于1的自然數(shù);
當所述非缺失數(shù)量大于或等于N時,根據(jù)所述最后一個歷史數(shù)據(jù)之前的N個非缺失的歷史數(shù)據(jù)在所述最后一個缺失的歷史數(shù)據(jù)處進行插值;
當所述非缺失數(shù)量小于N時,根據(jù)所述最后一個歷史數(shù)據(jù)之前的全部非缺失的歷史數(shù)據(jù)在所述最后一個缺失的歷史數(shù)據(jù)處進行插值。
可選地,在所述根據(jù)所述全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估之前,所述方法還包括:
當全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)存在缺失時,在各個缺失的歷史數(shù)據(jù)處進行插值;
所述根據(jù)所述全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,包括:
根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)插值后的歷史數(shù)據(jù)進行預(yù)估。
為達到上述發(fā)明目的,本發(fā)明還公開了一種基于缺失數(shù)據(jù)的預(yù)估裝置,所述裝置包括:
獲取模塊,用于獲取預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù);
劃分模塊,用于根據(jù)所述全部歷史數(shù)據(jù)與采集時間的對應(yīng)關(guān)系,將預(yù)設(shè)時間段內(nèi)所述全部歷史數(shù)據(jù)劃分到M個子時間段中,其中,所述M為大于或等于2的自然數(shù);
選擇模塊,用于在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段;
計算模塊,用于計算所述當前子時間段中缺失的歷史數(shù)據(jù)的缺失密度;
判斷模塊,用于判斷所述當前子時間段中歷史數(shù)據(jù)的缺失密度是否大于預(yù)設(shè)閾值;
返回模塊,用于如果否,返回所述在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段的步驟;
確定模塊,用于如果是,在所述當前子時間段中確定滿足預(yù)先設(shè)置的截斷條件的待截斷數(shù)據(jù);
截斷模塊,用于根據(jù)時間先后順序,至少將待截斷數(shù)據(jù)之前的所有的數(shù)據(jù)截斷;
預(yù)估模塊,用于根據(jù)所述全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,其中,所述剩余的歷史數(shù)據(jù)為除截斷的數(shù)據(jù)以外的數(shù)據(jù)。
可選地,所述截斷模塊,還用于,根據(jù)時間先后順序,將待截斷數(shù)據(jù)所在的子時間段的最后一個數(shù)據(jù)之前的所有的數(shù)據(jù)截斷。
可選地,所述選擇模塊,包括:
第一子時間段選擇子模塊,用于在全部子時間段中選擇最后一個子時間段作為第一子時間段;
第二子時間段選擇子模塊,用于按照時間倒序,在所述全部子時間段中選擇與所述第一子時間段之前相鄰的子時間段作為第二子時間段;
當前子時間段選擇子模塊,用于將當前選擇的所述第一子時間段或者所述第二子時間段作為當前子時間段。
可選地,所述計算模塊,包括:
統(tǒng)計子模塊,用于統(tǒng)計各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量;
計算子模塊,用于根據(jù)所述各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量以及預(yù)先確定的各個子時間段中歷史數(shù)據(jù)的總數(shù)量,計算各個時間段中缺失的歷史數(shù)據(jù)的缺失密度。
可選地,所述確定模塊,包括:
判斷子模塊,用于判斷所述當前子時間段中最后一個缺失的歷史數(shù)據(jù)之后是否存在至少一個非缺失的歷史數(shù)據(jù);
第一確定子模塊,用于當所述最后一個缺失的歷史數(shù)據(jù)之后存在至少一個非缺失的歷史數(shù)據(jù)時,確定所述最后一個缺失的歷史數(shù)據(jù)之后第一個非缺失的歷史數(shù)據(jù)為所述待截斷數(shù)據(jù);或
插值子模塊,用于當所述最后一個缺失的歷史數(shù)據(jù)之后不存在至少一個非缺失的歷史數(shù)據(jù),則判定所述最后一個缺失的歷史數(shù)據(jù)為當前子時間段的最后一個數(shù)據(jù)時,在所述最后一個缺失的歷史數(shù)據(jù)處進行插值;
第二確定子模塊,用于確定插值后的最后一個歷史數(shù)據(jù)為所述待截斷數(shù)據(jù)。
可選地,所述插值子模塊,包括:
判斷單元,用于判斷所述當前子時間段中非缺失的歷史數(shù)據(jù)的非缺失數(shù)量是否大于或等于N;其中,N是大于或等于1的自然數(shù);
第一插值單元,用于當所述非缺失數(shù)量大于或等于N時,根據(jù)所述最后一個歷史數(shù)據(jù)之前的N個非缺失的歷史數(shù)據(jù)在所述最后一個缺失的歷史數(shù)據(jù)處進行插值;
第二插值單元,用于當所述非缺失數(shù)量小于N時,根據(jù)所述最后一個歷史數(shù)據(jù)之前的全部非缺失的歷史數(shù)據(jù)在所述最后一個缺失的歷史數(shù)據(jù)處進行插值。
可選地,所述預(yù)估裝置還包括:
插值模塊,用于當全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)存在缺失時,在各個缺失的歷史數(shù)據(jù)處進行插值;
所述預(yù)估模塊,具體用于,根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)插值后的歷史數(shù)據(jù)進行預(yù)估。
本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法及裝置中,通過獲取預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù),將全部歷史數(shù)據(jù)劃分到M個子時間段中,在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段,計算當前子時間段中缺失的歷史數(shù)據(jù)的缺失密度,判斷當前子時間段中歷史數(shù)據(jù)的缺失密度是否大于預(yù)設(shè)閾值,在所述當前子時間段中確定滿足預(yù)先設(shè)置的截斷條件的待截斷數(shù)據(jù),根據(jù)時間先后順序,至少將待截斷數(shù)據(jù)之前的所有的數(shù)據(jù)截斷,通過對缺失值嚴重的序列進行截斷,對該序列是否適合使用時間序列分析算法進行預(yù)判,并選擇不同預(yù)估方法,提高對未來數(shù)據(jù)預(yù)估的準確性。根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,避免了當最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)較少時,根據(jù)最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)進行預(yù)估出現(xiàn)偏差。在本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法,根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,以及在缺失數(shù)據(jù)小于預(yù)設(shè)閾值的剩余歷史數(shù)據(jù)的缺失數(shù)據(jù)處進行插值,有效改善了現(xiàn)有基于缺失數(shù)據(jù)的預(yù)估方法中,在各個缺失的歷史數(shù)據(jù)中直接進行插值,當預(yù)設(shè)時間段內(nèi)采集到的歷史數(shù)據(jù)中缺失的歷史數(shù)據(jù)較多時,預(yù)估結(jié)果產(chǎn)生的偏差現(xiàn)象。當然,實施本發(fā)明的任一產(chǎn)品或方法必不一定需要同時達到以上所述的所有優(yōu)點。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法流程圖;
圖2為本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法實施圖;
圖3為本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法裝置圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
為達到上述發(fā)明目的,本發(fā)明實施例公開了一種基于缺失數(shù)據(jù)的預(yù)估方法,如圖1所示,圖1為本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法流程圖,方法包括:
S101,獲取預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù);
具體地,根據(jù)需要設(shè)定預(yù)設(shè)時間,在系統(tǒng)數(shù)據(jù)庫中獲取該預(yù)設(shè)時間段的全部歷史數(shù)據(jù),該歷史數(shù)據(jù)為預(yù)估未來時間段數(shù)據(jù)情況的參考數(shù)據(jù)。具體可根據(jù)業(yè)務(wù)類型、或者實施人員需要預(yù)估未來時間段的該業(yè)務(wù)數(shù)據(jù)變化的趨勢,獲取相對應(yīng)的歷史數(shù)據(jù)。
S102,根據(jù)全部歷史數(shù)據(jù)與采集時間的對應(yīng)關(guān)系,將預(yù)設(shè)時間段內(nèi)全部歷史數(shù)據(jù)劃分到M個子時間段中,其中,M為大于或等于2的自然數(shù);
具體地,根據(jù)上述獲得到的歷史數(shù)據(jù)與采集時間的對應(yīng)關(guān)系,在實施過程中可根據(jù)實施人員的要求,將歷史數(shù)據(jù)利用分桶的方法劃分成M個子時間段中。
例如,當采用過去250天的庫存數(shù)據(jù)作為歷史數(shù)據(jù)時,可根據(jù)業(yè)務(wù)類型以及時間順序,將這250天的數(shù)據(jù)劃分在50個子時間段內(nèi)。
S103,在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段;
具體地,在得到上述的M個子時間段中,遍歷查找子時間段的缺失數(shù)據(jù)。在實施過程中可根據(jù)實施人員的需要,按照時間順序遍歷歷史數(shù)據(jù),或者按照時間倒序遍歷歷史數(shù)據(jù)都是可取的。
S104,計算當前子時間段中缺失的歷史數(shù)據(jù)的缺失密度;
具體地,在上述查找到子時間段的缺失數(shù)據(jù)后,計算出該子時間段的缺失密度。
S105,判斷當前子時間段中歷史數(shù)據(jù)的缺失密度是否大于預(yù)設(shè)閾值;
具體地,根據(jù)歷史數(shù)據(jù)以及經(jīng)驗設(shè)定每個子時間段的缺失密度閾值大小,將該值定義為預(yù)設(shè)閾值。在上述計算完該子時間段的缺失密度后,將該子時間段的缺失密度與設(shè)置的預(yù)設(shè)閾值進行比較。
S106,如果否,返回在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段的步驟;
具體地,在判斷出該子時間段的缺失密度小于設(shè)置的預(yù)設(shè)閾值時,說明該子時間段的缺失數(shù)據(jù)是可以接受的,對未來數(shù)據(jù)的預(yù)估影響偏差不會太大,則需要返回到劃分的M子時間段中,按要求選取下一個未選擇的子時間段,再判斷當前選擇的子時間段的缺失密度與預(yù)設(shè)閾值的關(guān)系。
S107,如果是,在當前子時間段中確定滿足預(yù)先設(shè)置的截斷條件的待截斷數(shù)據(jù);
具體地,在判斷出該子時間段的缺失密度大于設(shè)置的預(yù)設(shè)閾值時,說明該子時間段的缺失數(shù)據(jù)過多,會影響對未來數(shù)據(jù)的預(yù)估。設(shè)置截斷條件,確定出滿足截斷條件的數(shù)據(jù),將該部分數(shù)據(jù)定義為待截斷數(shù)據(jù)。按照此循環(huán)方式,找出待截斷數(shù)據(jù)。
S108,根據(jù)時間先后順序,至少將待截斷數(shù)據(jù)之前的所有的數(shù)據(jù)截斷;
具體地,在判斷出待截斷數(shù)據(jù)后,根據(jù)時間先后順序,至少截斷待截斷數(shù)據(jù)之前的所有歷史數(shù)據(jù)。
S109,根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,其中,剩余的歷史數(shù)據(jù)為除截斷的數(shù)據(jù)以外的數(shù)據(jù)。
具體地,根據(jù)全部歷史數(shù)據(jù)截斷后的剩余的歷史數(shù)據(jù)預(yù)估未來數(shù)據(jù)??筛鶕?jù)剩余歷史數(shù)據(jù)量以及實施人員需要,選擇合適的預(yù)估方法,例如時間序列法、統(tǒng)計方法或其他方法預(yù)估未來數(shù)據(jù)。
本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法,通過獲取預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù),根據(jù)全部歷史數(shù)據(jù)與采集時間的對應(yīng)關(guān)系,將預(yù)設(shè)時間段內(nèi)全部歷史數(shù)據(jù)劃分到M個子時間段中,通過遍歷查找的方式對每個子時間段查找缺失數(shù)據(jù),根據(jù)缺失密度與預(yù)設(shè)閾值的大小關(guān)系,判定截斷數(shù)據(jù)以及剩余的歷史數(shù)據(jù),對缺失值嚴重的序列進行截斷,對該序列是否適合使用時間序列分析算法進行預(yù)判,并選擇不同預(yù)估方法,提高對未來數(shù)據(jù)預(yù)估的準確性。根據(jù)剩余的歷史數(shù)據(jù)預(yù)估未來時間段數(shù)據(jù),避免了當最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)較少時,根據(jù)最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)進行預(yù)估出現(xiàn)偏差。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法中,根據(jù)時間先后順序,至少將待截斷數(shù)據(jù)之前的所有的數(shù)據(jù)截斷,還包括:
根據(jù)時間先后順序,將待截斷數(shù)據(jù)所在的子時間段的最后一個數(shù)據(jù)之前的所有的數(shù)據(jù)截斷。
具體地,根據(jù)預(yù)先設(shè)置好的截斷條件確定出待截斷數(shù)據(jù)。在實施過程中,可找到該待截斷數(shù)據(jù)所在的子時間段的最后一個數(shù)據(jù),在該待截斷數(shù)據(jù)所在的子時間段的最后一個數(shù)據(jù)處,按照時間先后順序、截斷全部歷史數(shù)據(jù)該子時間段的最后一個數(shù)據(jù)之前的全部歷史數(shù)據(jù)。
可見,通過截斷待截斷數(shù)據(jù)所在的子時間段的最后一個數(shù)據(jù)處之前的所有歷史數(shù)據(jù),可使剩余的歷史數(shù)據(jù)更趨近于當前歷史數(shù)據(jù),對未來數(shù)據(jù)的預(yù)估結(jié)果更加精準。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法中,在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段,包括:
在全部子時間段中選擇最后一個子時間段作為第一子時間段;
具體地,在劃分好的全部子時段間中,選擇最后一個子時間段作為遍歷搜索待截斷數(shù)據(jù)的起始子時間段,將該子時間段定義為第一子時間段。
按照時間倒序,在全部子時間段中選擇與第一子時間段之前相鄰的子時間段作為第二子時間段;
具體地,在選擇的第一子時間段后,按照時間倒序,將第一子時間段后的下一個時間段定義為第二子時間段,依次遍歷第二子時間段,尋找待截斷的歷史數(shù)據(jù)的點。
將當前選擇的第一子時間段或者第二子時間段作為當前子時間段。
具體地,將當前選擇的第一子時間段或第二子時間段作為當前子時間段,對當前子時間段遍歷搜索待截斷的數(shù)據(jù)。
可見,本發(fā)明實施例中通過時間倒序的方式,在所有的子時間段中查找待截斷的歷史數(shù)據(jù),可以更好的判斷最近一段時間的缺失數(shù)據(jù)的情況,將最近一段時間對未來數(shù)據(jù)影響較大的數(shù)據(jù)截斷,提高對未來數(shù)據(jù)預(yù)估的準確性。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法中,計算當前子時間段中缺失的歷史數(shù)據(jù)的缺失密度,包括:
第一步,統(tǒng)計各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量;
具體地,在對每一個子時間段的遍歷過程中,需要計算出每一個子時間段的缺失密度,計算出每個時間段的缺失密度與預(yù)設(shè)閾值作比較,判斷出待截斷數(shù)據(jù)。具體在實施過程中,先統(tǒng)計出當前遍歷的子時間段的缺失的歷史數(shù)據(jù)的缺失數(shù)據(jù)量。
第二步,根據(jù)各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量以及預(yù)先確定的各個子時間段中歷史數(shù)據(jù)的總數(shù)量,計算各個時間段中缺失的歷史數(shù)據(jù)的缺失密度。
具體地,在統(tǒng)計完當前子時間段的缺失數(shù)據(jù)的缺失數(shù)據(jù)量后,以及預(yù)先知道的該子時間段的所有歷史數(shù)據(jù)量總和后,用統(tǒng)計的缺失數(shù)據(jù)量除以該子時間段數(shù)據(jù)總量,計算出該子時間段的缺失密度。按照此方法可計算出各個子時間段的缺失密度。
可見,通過統(tǒng)計各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量,根據(jù)各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量以及預(yù)先確定的各個子時間段中歷史數(shù)據(jù)的總數(shù)量,計算各個時間段中缺失的歷史數(shù)據(jù)的缺失密度,可快速的判斷出子時間段的缺失數(shù)據(jù)情況,本發(fā)明實施例中使用分桶的方法計算缺失密度,充分考慮了缺失值自身的分布情況,可以根據(jù)不同的樣條擬合方法,靈活調(diào)節(jié)缺失密度,以達到最佳的插值效果。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法中,在當前子時間段中確定滿足預(yù)先設(shè)置的截斷條件的待截斷數(shù)據(jù),包括:
判斷當前子時間段中最后一個缺失的歷史數(shù)據(jù)之后是否存在至少一個非缺失的歷史數(shù)據(jù);
具體地,在實施過程中,需要設(shè)置截斷條件。具體實施過程為:找到當前子時間段的最后一個缺失的歷史數(shù)據(jù),當找到最后一個缺失的歷史數(shù)據(jù)后,檢測該最后一個缺失的歷史數(shù)據(jù)之后是否還有非缺失的歷史數(shù)據(jù)。
當最后一個缺失的歷史數(shù)據(jù)之后存在至少一個非缺失的歷史數(shù)據(jù)時,確定最后一個缺失的歷史數(shù)據(jù)之后第一個非缺失的歷史數(shù)據(jù)為待截斷數(shù)據(jù);或
具體地,當上述檢測該最后一個缺失的歷史數(shù)據(jù)之后還有非缺失的歷史數(shù)據(jù)時,將最后一個缺失的歷史數(shù)據(jù)之后的第一個非缺失的歷史數(shù)據(jù)作為待截斷數(shù)據(jù)。
當最后一個缺失的歷史數(shù)據(jù)之后不存在至少一個非缺失的歷史數(shù)據(jù),則判定最后一個缺失的歷史數(shù)據(jù)為當前子時間段的最后一個數(shù)據(jù)時,在最后一個缺失的歷史數(shù)據(jù)處進行插值;
具體地,當上述檢測該最后一個缺失的歷史數(shù)據(jù)之后沒有非缺失的歷史數(shù)據(jù)時,說明該最后一個缺失的歷史數(shù)據(jù)為該子時間段的最后一個歷史數(shù)據(jù),在該最后一個缺失數(shù)據(jù)處進行插值。
確定插值后的最后一個歷史數(shù)據(jù)為待截斷數(shù)據(jù)。
具體地,在上述該子時間段的最后一個歷史數(shù)據(jù)處插完值后,確定插值后的第一個歷史數(shù)據(jù)為待截斷的歷史數(shù)據(jù)。
可見,通過本發(fā)明實施例確定待截斷數(shù)據(jù),可以清楚地得到待截斷的歷史數(shù)據(jù)以及剩余有用的歷史數(shù)據(jù),方便對未來數(shù)據(jù)的預(yù)估,也使預(yù)估的結(jié)果更加準確。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法中,在最后一個缺失的歷史數(shù)據(jù)處進行插值,包括:
判斷當前子時間段中非缺失的歷史數(shù)據(jù)的非缺失數(shù)量是否大于或等于N;其中,N是大于或等于1的自然數(shù);
具體地,給當前子時間段非缺失數(shù)據(jù)設(shè)置一個閾值,該閾值用來檢測當前子時間段非缺失的歷史數(shù)據(jù)的個數(shù)與設(shè)置的閾值的關(guān)系,在本發(fā)明實施例中將該閾值設(shè)置為N。
當非缺失數(shù)量大于或等于N時,根據(jù)最后一個歷史數(shù)據(jù)之前的N個非缺失的歷史數(shù)據(jù)在最后一個缺失的歷史數(shù)據(jù)處進行插值;
具體地,當上述檢測到非缺失的歷史數(shù)據(jù)的非缺失數(shù)量大于或等于設(shè)置的閾值N時,可將最后一個歷史數(shù)據(jù)之前的N個歷史數(shù)據(jù)的平均值計算出來,將該N個歷史數(shù)據(jù)的平均值插在該最后一個缺失的歷史數(shù)據(jù)處。
當非缺失數(shù)量小于N時,根據(jù)最后一個歷史數(shù)據(jù)之前的全部非缺失的歷史數(shù)據(jù)在最后一個缺失的歷史數(shù)據(jù)處進行插值。
具體地,當上述檢測到非缺失的歷史數(shù)據(jù)的非缺失數(shù)量小于設(shè)置的閾值N時,計算出該子時間段最后一個歷史數(shù)據(jù)之前的所有歷史數(shù)據(jù)的平均值,將該平均值插在最后一個缺失的歷史數(shù)據(jù)處。
可見,通過本發(fā)明實施例在最后一個缺失數(shù)據(jù)處進行插值,可根據(jù)該子時間段非缺失歷史數(shù)據(jù)的個數(shù)情況,得到最終插值的結(jié)果,這樣的分類插值處理方法,更能體現(xiàn)出插值的準確性以及對后期預(yù)估結(jié)果的準確性。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法中,在根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估之前,方法還包括:
當全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)存在缺失時,在各個缺失的歷史數(shù)據(jù)處進行插值;
具體地,在對全部歷史數(shù)據(jù)階截斷后,對剩余的歷史數(shù)據(jù)的各個缺失的歷史數(shù)據(jù)處進行插值。具體插值方法為:計算出缺失歷史數(shù)據(jù)處前幾個非缺失數(shù)據(jù)的平均數(shù),將該平均數(shù)插在該缺失數(shù)據(jù)處。按照此方法,在剩余數(shù)據(jù)中所有缺失數(shù)據(jù)處進行插值。需要說明的是,該插值方法不限于此方法,具體可根據(jù)實施人員的需要,選擇合適的插值方法,在各個缺失的歷史數(shù)據(jù)處進行插值。
相應(yīng)的,根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,包括:
根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)插值后的歷史數(shù)據(jù)進行預(yù)估。
具體地,在上述對剩余歷史數(shù)據(jù)的所有缺失數(shù)據(jù)進行插值后,得到剩余完整的歷史數(shù)據(jù)??筛鶕?jù)該插值后剩余的完整歷史數(shù)據(jù)預(yù)估未來數(shù)據(jù)。
可見,在本發(fā)明實施例中,通過對截斷后剩余的歷史數(shù)據(jù)在缺失數(shù)據(jù)處進行插值,可實現(xiàn)數(shù)據(jù)的完整性,增加預(yù)估數(shù)據(jù)樣本量。另外,對于現(xiàn)有技術(shù)中,在缺失數(shù)據(jù)處插入數(shù)據(jù),當缺失的數(shù)據(jù)較多時,插入的數(shù)據(jù)量也較大,插入后的數(shù)據(jù)會影響真實數(shù)據(jù)的正確性,預(yù)估的結(jié)果偏差較大,本發(fā)明實施例通過設(shè)定閾值來判斷每個子時間段的缺失數(shù)據(jù),避免了缺失值過多時,插入的值過多后數(shù)據(jù)波動性較大,有效解決了預(yù)估偏差,利用該插值后的剩余歷史數(shù)據(jù)預(yù)估未來數(shù)據(jù),進一步提高預(yù)估結(jié)果的準確性。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法中,可采用如下的一種實施方法,如圖2所示,圖2為本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估方法實施圖,包括;
第一步:把歷史數(shù)據(jù)的日期映射到范圍數(shù)組range(1,index)上,使日期與對應(yīng)的歷史數(shù)據(jù)的數(shù)值索引index綁定,其中,1代表日期。把日期抽象為數(shù)字,生成存儲歷史數(shù)據(jù)值數(shù)組data和存儲歷史數(shù)據(jù)的相應(yīng)下標的索引數(shù)組index。
第二步:把采集到X天的歷史數(shù)據(jù)用分桶的方式分為M個子時間段,即分桶的桶個數(shù)為M。用桶bucket數(shù)組存儲每段缺失的歷史數(shù)據(jù)的缺失數(shù)量,用截斷數(shù)組cut記錄每段最后一個缺失數(shù)據(jù)后第一個非缺失數(shù)據(jù)的歷史數(shù)據(jù)相應(yīng)下標的索引index。遍歷index數(shù)組,計算每個桶bucket中缺失數(shù)量,同時更新bucket數(shù)組和cut數(shù)組。若當前桶bucket最后一個歷史數(shù)據(jù)缺失,則計算出該桶bucket最后一個歷史數(shù)據(jù)前面非缺失歷史數(shù)據(jù)的平均值,將該平均值填充在該桶bucket最后一個缺失數(shù)據(jù)處。
第三步:從最后一個bucket數(shù)組開始遍歷,若缺失密度大于或等于預(yù)設(shè)閾值時,則在該bucket數(shù)組對應(yīng)的cut數(shù)組存儲的index數(shù)組下標處截斷。
第四步:對截斷后剩余的歷史數(shù)據(jù)在缺失數(shù)據(jù)處進行樣條插值。
第五步:插值后若剩余歷史數(shù)據(jù)量太少,則使用統(tǒng)計方法進行預(yù)測,否則使用時間序列預(yù)估方法預(yù)測。
為達到上述發(fā)明目的,本發(fā)明實施例還公開了一種基于缺失數(shù)據(jù)的預(yù)估裝置,如圖3所示。圖3為本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置圖,裝置包括:
獲取模塊301,用于獲取預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù);
劃分模塊302,用于根據(jù)全部歷史數(shù)據(jù)與采集時間的對應(yīng)關(guān)系,將預(yù)設(shè)時間段內(nèi)全部歷史數(shù)據(jù)劃分到M個子時間段中,其中,M為大于或等于2的自然數(shù);
選擇模塊303,用于在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段;
計算模塊304,用于計算當前子時間段中缺失的歷史數(shù)據(jù)的缺失密度;
判斷模塊305,用于判斷當前子時間段中歷史數(shù)據(jù)的缺失密度是否大于預(yù)設(shè)閾值;
返回模塊306,用于如果否,返回在全部子時間段中選擇一個未被選擇過的子時間段作為當前子時間段的步驟;
確定模塊307,用于如果是,在當前子時間段中確定滿足預(yù)先設(shè)置的截斷條件的待截斷數(shù)據(jù);
截斷模塊308,用于根據(jù)時間先后順序,至少將待截斷數(shù)據(jù)之前的所有的數(shù)據(jù)截斷;
預(yù)估模塊309,用于根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)進行預(yù)估,其中,剩余的歷史數(shù)據(jù)為除截斷的數(shù)據(jù)以外的數(shù)據(jù)。
本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置,通過獲取預(yù)設(shè)時間段內(nèi)采集到的全部歷史數(shù)據(jù),根據(jù)全部歷史數(shù)據(jù)與采集時間的對應(yīng)關(guān)系,將預(yù)設(shè)時間段內(nèi)全部歷史數(shù)據(jù)劃分到M個子時間段中,通過遍歷查找的方式對每個子時間段查找缺失數(shù)據(jù),根據(jù)缺失密度與預(yù)設(shè)閾值的大小關(guān)系,判定截斷數(shù)據(jù)以及剩余的歷史數(shù)據(jù),對缺失值嚴重的序列進行截斷,對該序列是否適合使用時間序列分析算法進行預(yù)判,并選擇不同預(yù)估方法,提高對未來數(shù)據(jù)預(yù)估的準確性。根據(jù)剩余的歷史數(shù)據(jù)預(yù)估未來時間段數(shù)據(jù),避免了當最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)較少時,根據(jù)最后一個缺失的歷史數(shù)據(jù)之后的歷史數(shù)據(jù)進行預(yù)估出現(xiàn)偏差。
需要說明的是,本發(fā)明實施例的裝置是應(yīng)用上述一種基于缺失數(shù)據(jù)的預(yù)估方法的裝置,則上述基于缺失數(shù)據(jù)的預(yù)估方法的所有實施例均適用于該裝置,且均能達到相同或相似的有益效果。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置中,截斷模塊308,還用于,根據(jù)時間先后順序,將待截斷數(shù)據(jù)所在的子時間段的最后一個數(shù)據(jù)之前的所有的數(shù)據(jù)截斷。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置中,選擇模塊303,包括:
第一子時間段選擇子模塊,用于在全部子時間段中選擇最后一個子時間段作為第一子時間段;
第二子時間段選擇子模塊,用于按照時間倒序,在全部子時間段中選擇與第一子時間段之前相鄰的子時間段作為第二子時間段;
當前子時間段選擇子模塊,用于將當前選擇的第一子時間段或者第二子時間段作為當前子時間段。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置中,計算模塊304,包括:
統(tǒng)計子模塊,用于統(tǒng)計各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量;
計算子模塊,用于根據(jù)各個子時間段中缺失的歷史數(shù)據(jù)的缺失數(shù)量以及預(yù)先確定的各個子時間段中歷史數(shù)據(jù)的總數(shù)量,計算各個時間段中缺失的歷史數(shù)據(jù)的缺失密度。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置中,確定模塊307,包括:
判斷子模塊,用于判斷當前子時間段中最后一個缺失的歷史數(shù)據(jù)之后是否存在至少一個非缺失的歷史數(shù)據(jù);
第一確定子模塊,用于當最后一個缺失的歷史數(shù)據(jù)之后存在至少一個非缺失的歷史數(shù)據(jù)時,確定最后一個缺失的歷史數(shù)據(jù)之后第一個非缺失的歷史數(shù)據(jù)為待截斷數(shù)據(jù);或
插值子模塊,用于當最后一個缺失的歷史數(shù)據(jù)之后不存在至少一個非缺失的歷史數(shù)據(jù),則判定最后一個缺失的歷史數(shù)據(jù)為當前子時間段的最后一個數(shù)據(jù)時,在最后一個缺失的歷史數(shù)據(jù)處進行插值;
第二確定子模塊,用于確定插值后的最后一個歷史數(shù)據(jù)為待截斷數(shù)據(jù)。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置中,插值子模塊,包括:
判斷單元,用于判斷當前子時間段中非缺失的歷史數(shù)據(jù)的非缺失數(shù)量是否大于或等于N;其中,N是大于或等于1的自然數(shù);
第一插值單元,用于當非缺失數(shù)量大于或等于N時,根據(jù)最后一個歷史數(shù)據(jù)之前的N個非缺失的歷史數(shù)據(jù)在最后一個缺失的歷史數(shù)據(jù)處進行插值;
第二插值單元,用于當非缺失數(shù)量小于N時,根據(jù)最后一個歷史數(shù)據(jù)之前的全部非缺失的歷史數(shù)據(jù)在最后一個缺失的歷史數(shù)據(jù)處進行插值。
可選地,本發(fā)明實施例的一種基于缺失數(shù)據(jù)的預(yù)估裝置中,裝置還包括:
插值模塊,用于當全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)存在缺失時,在各個缺失的歷史數(shù)據(jù)處進行插值;
相應(yīng)的,預(yù)估模塊309,具體用于,根據(jù)全部歷史數(shù)據(jù)中剩余的歷史數(shù)據(jù)插值后的歷史數(shù)據(jù)進行預(yù)估。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關(guān)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。