博客專欄

        EEPW首頁(yè) > 博客 > 用隨機(jī)游動(dòng)生成時(shí)間序列的合成數(shù)據(jù)

        用隨機(jī)游動(dòng)生成時(shí)間序列的合成數(shù)據(jù)

        發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2021-09-19 來(lái)源:工程師 發(fā)布文章

        來(lái)源:DeepHub IMBA

        隨機(jī)游走是隨機(jī)過(guò)程。它們由數(shù)學(xué)空間中的許多步驟組成。最常見(jiàn)的隨機(jī)游走從值 0 開(kāi)始,然后每一步都以相等的概率加或減 1。

        隨機(jī)游走可用于為不同的機(jī)器學(xué)習(xí)應(yīng)用程序生成合成數(shù)據(jù)。例如當(dāng)沒(méi)有可用信息或沒(méi)有實(shí)時(shí)數(shù)據(jù)可用時(shí),具有隨機(jī)游走的合成數(shù)據(jù)可以近似實(shí)際數(shù)據(jù)。

        這篇文章利用一維隨機(jī)游走為時(shí)間序列算法生成數(shù)據(jù)。

        生成數(shù)據(jù)

        在創(chuàng)建和測(cè)試時(shí)間序列模型時(shí),以隨機(jī)數(shù)據(jù)為基準(zhǔn)測(cè)試模型是有益的。隨機(jī)游走可以模擬庫(kù)存、產(chǎn)能利用率甚至粒子運(yùn)動(dòng)的趨勢(shì)。

        通過(guò)每一步概率的調(diào)整,行為被添加到隨機(jī)游走中。此外,這些游走被修改為具有不同的步長(zhǎng),以產(chǎn)生更大或更小的波動(dòng)。

        在 Pandas 中使用“date_range”函數(shù)快速生成時(shí)間序列數(shù)據(jù)。下面是一個(gè)示例,它為 2019 年每天生成一個(gè)具有一個(gè)隨機(jī)值的df。

         import pandas as pd
         import numpy as np
         import matplotlib.pyplot as plt
         import random
         DATE_START = '2019-01-01'
         DATE_END = '2019-12-31'
         dates = pd.date_range(DATE_START, DATE_END)
         df = pd.DataFrame({
            'date': dates,
            'value': np.random.normal(0,1,dates.size)
         })
         df.set_index('date', inplace=True)
         plt.plot(df['value'])
         plt.ylabel('Value')
         plt.xlabel('Date')
         plt.title('Random Values')
         plt.show()

        1.jpg

        隨機(jī)游走

        雖然此處的數(shù)據(jù)可用于時(shí)間序列模型,但看不到任何模式。由于實(shí)際數(shù)據(jù)包含與先前點(diǎn)的緊急模式關(guān)系,因此需要改進(jìn)合成數(shù)據(jù)。隨機(jī)游走是生成一些逼真行為的可行解決方案。在 Pandas 中創(chuàng)建隨機(jī)游走需要遍歷df的每一行。步行中的每一步都取決于上一步。

        下面是生成隨機(jī)游走的代碼。第一個(gè)“previous_value”作為步行的起點(diǎn)。接下來(lái),步長(zhǎng)設(shè)置為 1。最后,“閾值”將正向或負(fù)向行走的概率設(shè)置為 50%。

        此外,隨機(jī)游走受到最小值和最大值的限制。對(duì)于許多數(shù)據(jù)集,例如股****價(jià)值,這些值都是嚴(yán)格的正數(shù)。

        隨機(jī)游走的圖是用‘matplotlib’生成的。

         def random_walk(
            df, start_value=0, threshold=0.5,
            step_size=1, min_value=-np.inf, max_value=np.inf
         ):
            previous_value = start_value
            for index, row in df.iterrows():
                if previous_value < min_value:
                    previous_value = min_value
                if previous_value > max_value:
                    previous_value = max_value
                probability = random.random()
                if probability >= threshold:
                    df.loc[index, 'value'] = previous_value + step_size
                else:
                    df.loc[index, 'value'] = previous_value - step_size
                previous_value = df.loc[index, 'value']
            return df

        2.jpg

        修改隨機(jī)游走

        這些隨機(jī)游走被調(diào)整以顯示所需的行為。例如,添加對(duì)隨機(jī)游走的最小值和最大值的限制來(lái)模擬容量利用率。

        隨機(jī)游走的行為通過(guò)改變其他初始條件進(jìn)一步改變,例如,強(qiáng)加整體積極趨勢(shì)。正趨勢(shì)是通過(guò)調(diào)整概率閾值來(lái)實(shí)現(xiàn)的。通過(guò)增加正向步驟的概率,隨機(jī)游走會(huì)產(chǎn)生正向趨勢(shì)。對(duì)于這個(gè)代碼,它是通過(guò)降低閾值來(lái)實(shí)現(xiàn)的。

        以這種方式設(shè)置隨機(jī)游走可以更接近股****趨勢(shì)。如果總體趨勢(shì)是積極的還是消極的,則可以將詳細(xì)信息納入合成數(shù)據(jù)中。

        3.jpg

        有幾個(gè)選項(xiàng)可以進(jìn)一步調(diào)整隨機(jī)游走。例如,在每一步都包含高斯噪聲或?qū)⒉介L(zhǎng)增加到更大的值會(huì)導(dǎo)致不同的步行跨越更大的空間。但是,還有一些其他調(diào)整會(huì)導(dǎo)致非常不同的行為。

        隨著時(shí)間的推移增加波動(dòng)性是通過(guò)在每個(gè)步驟后增加少量步長(zhǎng)來(lái)實(shí)現(xiàn)的。因此,隨著時(shí)間的推移,步長(zhǎng)會(huì)慢慢變大。

        平滑行走也可以通過(guò)修改步長(zhǎng)來(lái)實(shí)現(xiàn),但也可以通過(guò)在正步之后增加大小并在負(fù)步之后將大小減小一個(gè)小值來(lái)實(shí)現(xiàn)。

        4.jpg

        總結(jié)

        隨機(jī)游走是一個(gè)有趣的隨機(jī)過(guò)程。在很少的起始條件下,生成了許多不同的模式。因此,隨機(jī)游走可以用作合成時(shí)間序列數(shù)據(jù)并針對(duì)您的特定問(wèn)題實(shí)例進(jìn)行調(diào)整。

        編輯:黃繼彥

        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: AI

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 玉环县| 新兴县| 巴林右旗| 安阳市| 百色市| 安吉县| 兖州市| 抚顺县| 延庆县| 江源县| 鄂尔多斯市| 余姚市| 丹棱县| 凤山县| 镇原县| 榆社县| 秦皇岛市| 蚌埠市| 岱山县| 黄山市| 安国市| 灵台县| 揭东县| 大连市| 永靖县| 濉溪县| 武威市| 南通市| 宣汉县| 高阳县| 永泰县| 康乐县| 和龙市| 宜州市| 永登县| 巍山| 扎赉特旗| 康保县| 育儿| 鸡西市| 连城县|