wordpress讀音seo的概念
作者主頁(yè): 七七的個(gè)人主頁(yè)
文章收錄專(zhuān)欄: 論文復(fù)現(xiàn)
歡迎大家點(diǎn)贊 👍 收藏 ? 加關(guān)注哦!💖💖
短期電力負(fù)荷
- 論文發(fā)表
- 問(wèn)題背景
- 一. 基本問(wèn)題
- 二. 本論文發(fā)現(xiàn)的問(wèn)題
- 對(duì)于論文發(fā)現(xiàn)問(wèn)題的解決方案:
- 復(fù)現(xiàn):
- 一. 多維特征提取的提取框架:
- 二. 論文中進(jìn)行性能測(cè)試的MultiTag2Vec-STLF模型:
- 三. 與整數(shù)編碼(IE)的特征處理方法進(jìn)行對(duì)比
- 部署方式
本文所涉及所有資源均在這里可獲取。
論文發(fā)表
- 來(lái)自《IEEE Transactions on Smart Grid》2022年7月的13卷第4期,《IEEE Transactions on Smart Grid》在中科院升級(jí)版中,大類(lèi)工程技術(shù)位于1區(qū),小類(lèi)工程:電子與電氣位于1區(qū),非綜述類(lèi)期刊。
- 作者包括IEEE會(huì)員Nakyoung Kim、IEEE學(xué)生會(huì)員Hyunseo Park、IEEE高級(jí)會(huì)員Joohyung Lee,以及IEEE高級(jí)會(huì)員Jun Kyun Choi。
- 鏈接地址。
問(wèn)題背景
一. 基本問(wèn)題
短期電力負(fù)荷預(yù)測(cè)(STLF),即對(duì)未來(lái)幾小時(shí)到幾周的電力負(fù)荷進(jìn)行準(zhǔn)確預(yù)測(cè)。
二. 本論文發(fā)現(xiàn)的問(wèn)題
在電力負(fù)荷預(yù)測(cè)中,由于數(shù)據(jù)的高維性和波動(dòng)性,傳統(tǒng)的特征提取方法往往難以捕捉到負(fù)荷數(shù)據(jù)中的復(fù)雜模式和關(guān)系。
對(duì)于論文發(fā)現(xiàn)問(wèn)題的解決方案:
本論文通過(guò)提出一個(gè)名為MultiTag2Vec的特征提取框架來(lái)解決短期電力負(fù)荷預(yù)測(cè)(STLF)中的特征工程問(wèn)題。該框架包括兩個(gè)主要過(guò)程:標(biāo)記(tagging)和嵌入(embedding)。
- 標(biāo)記過(guò)程:首先,通過(guò)從高維時(shí)間序列數(shù)據(jù)中提取關(guān)鍵信息,將電氣負(fù)荷數(shù)據(jù)轉(zhuǎn)換成緊湊形式。這一步通過(guò)聚類(lèi)子序列來(lái)發(fā)現(xiàn)重復(fù)出現(xiàn)的模式,并為每個(gè)模式分配唯一的標(biāo)簽,從而實(shí)現(xiàn)數(shù)據(jù)的標(biāo)記。
- 嵌入過(guò)程:接下來(lái),通過(guò)學(xué)習(xí)標(biāo)簽序列中的時(shí)間和維度關(guān)系來(lái)提取特征。為了捕捉這些關(guān)系,提出了一個(gè)帶有卷積層的網(wǎng)絡(luò)模型,該模型采用數(shù)學(xué)分析設(shè)計(jì)的多輸出結(jié)構(gòu)。通過(guò)訓(xùn)練,可以從任何任意多維標(biāo)簽中提取特征。
復(fù)現(xiàn):
一. 多維特征提取的提取框架:
時(shí)間序列切分,聚類(lèi),打標(biāo)簽
def segment_time_series(X, T):"""將時(shí)間序列 X 分段為長(zhǎng)度為 T 的子序列。X: 多元時(shí)間序列 (N x D), N 為時(shí)間序列長(zhǎng)度, D 為維度數(shù)T: 每個(gè)子序列的長(zhǎng)度返回: 分段后的子序列集合,形狀為 (N_segment, T, D)"""N, D = X.shapeN_segment = N // T # 計(jì)算分段后的子序列數(shù)量segments = np.array([X[i*T:(i+1)*T] for i in range(N_segment)])return segments# 2. 模式發(fā)現(xiàn)
def discover_patterns(segments, K):"""對(duì)分段后的子序列進(jìn)行聚類(lèi),提取模式。segments: 分段后的子序列集合, 形狀為 (N_segment, T, D)K: 聚類(lèi)的數(shù)量,即模式的數(shù)量返回: 每個(gè)維度的模式集合,形狀為 (K, T, D)"""N_segment, T, D = segments.shapepatterns = []# 對(duì)每個(gè)維度單獨(dú)進(jìn)行聚類(lèi)for d in range(D):# 提取第 d 個(gè)維度的所有子序列data_d = segments[:, :, d] # 形狀為 (N_segment, T)# 使用 KMeans 進(jìn)行聚類(lèi)kmeans = KMeans(n_clusters=K, random_state=42)kmeans.fit(data_d)# 保存聚類(lèi)中心(模式)patterns.append(kmeans.cluster_centers_)# patterns 為 D 維的聚類(lèi)中心集合,形狀為 (D, K, T)return np.array(patterns)# 3. 數(shù)據(jù)標(biāo)記
def tag_data(segments, patterns):"""對(duì)每個(gè)子序列打標(biāo)簽,標(biāo)簽為距離最近的聚類(lèi)中心。segments: 分段后的子序列集合, 形狀為 (N_segment, T, D)patterns: 每個(gè)維度的聚類(lèi)中心集合,形狀為 (D, K, T)返回: 每個(gè)子序列的標(biāo)簽集合,形狀為 (N_segment, D)"""N_segment, T, D = segments.shapeK = patterns.shape[1] # 模式的數(shù)量labels = np.zeros((N_segment, D), dtype=int)# 對(duì)每個(gè)維度進(jìn)行標(biāo)記for d in range(D):for i in range(N_segment):# 計(jì)算當(dāng)前子序列與所有聚類(lèi)中心的距離distances = np.linalg.norm(segments[i, :, d] - patterns[d], axis=1)# 選擇最小距離的聚類(lèi)中心的標(biāo)簽labels[i, d] = np.argmin(distances)return labels
嵌入網(wǎng)絡(luò)定義:
class EmbeddingNetwork(nn.Module):def __init__(self, D, K, M):super(EmbeddingNetwork, self).__init__()# 卷積層,用于提取輸入張量的特征self.conv = nn.Conv2d(in_channels=D, out_channels=M, kernel_size=(1, K), stride=1) self.pool = nn.AdaptiveAvgPool2d((1, 1))# 兩個(gè)并行的全連接層,用于預(yù)測(cè)兩個(gè)維度的輸出標(biāo)簽self.fc1 = nn.Linear(M, K)self.fc2 = nn.Linear(M, K)def forward(self, x):# 卷積層print(x.shape)x = self.conv(x) # 卷積操作print(x.shape)x = self.pool(x) # 使用自適應(yīng)平均池化,將每個(gè)樣本縮減為大小為 (M, 1)print(x.shape)x = x.view(x.size(0), -1) # 展平張量,形狀變?yōu)?(batch_size, M)# 兩個(gè)并行的全連接層output1 = self.fc1(x) # 維度1的輸出output2 = self.fc2(x) # 維度2的輸出# 將兩個(gè)輸出拼接在一起,形成最后的輸出output = torch.stack((output1, output2), dim=1)return output
二. 論文中進(jìn)行性能測(cè)試的MultiTag2Vec-STLF模型:
class FeatureExtractor(nn.Module):def __init__(self, embedding_network):super(FeatureExtractor, self).__init__()self.conv = embedding_network.convdef forward(self, x):x = self.conv(x) # 卷積層x = x.view(x.size(0), -1) # 展平張量return x# 初始化特征提取器
feature_extractor = FeatureExtractor(embedding_network)# 4. 定義 MultiTag2Vec-STLF 模型
class MultiTag2VecSTLF(nn.Module):def __init__(self, input_dim, hidden_dim, output_dim, feature_extractor):super(MultiTag2VecSTLF, self).__init__()self.feature_extractor = feature_extractor# 凍結(jié)特征提取器的參數(shù)for param in self.feature_extractor.parameters():param.requires_grad = False# 雙向 LSTM 層self.lstm = nn.LSTM(input_dim, hidden_dim, batch_first=True, bidirectional=True)# 自注意力機(jī)制self.attention = nn.MultiheadAttention(embed_dim=2 * hidden_dim, num_heads=1, batch_first=True)# 全連接層用于預(yù)測(cè)下一天 24 小時(shí)的負(fù)荷self.fc = nn.Linear(2 * hidden_dim, output_dim)def forward(self, x):x = self.feature_extractor(x)x = x.view(x.size()[0], seg_c, -1)# LSTM 前向傳播lstm_out, _ = self.lstm(x) # lstm_out 形狀: (batch_size, seq_length, 2 * hidden_dim)# 注意力機(jī)制attn_output, _ = self.attention(lstm_out, lstm_out, lstm_out) # 計(jì)算自注意力,形狀: (batch_size, seq_length, 2 * hidden_dim)context_vector = torch.sum(attn_output, dim=1) # 計(jì)算上下文向量,形狀: (batch_size, 2 * hidden_dim)# 全連接層預(yù)測(cè)output = self.fc(context_vector) # 預(yù)測(cè)輸出,形狀: (batch_size, output_dim)return output
三. 與整數(shù)編碼(IE)的特征處理方法進(jìn)行對(duì)比
使用論文中的GEFCom2014數(shù)據(jù)集中的溫度和負(fù)荷數(shù)據(jù),訓(xùn)練的參數(shù)設(shè)置按照論文中最優(yōu)效果的參數(shù)設(shè)置。論文中使用的溫度數(shù)據(jù)來(lái)自于數(shù)據(jù)集中的哪一個(gè)氣象站,論文中沒(méi)有說(shuō),此處是選擇w1氣象站的溫度數(shù)據(jù)訓(xùn)練的結(jié)果和論文中的RMSE指標(biāo)不太一樣,但是從IE和MultiTag2Vec的RMSE指標(biāo)對(duì)比可以看到,論文提出的特征提取方法具有一定優(yōu)勢(shì)。
部署方式
Python 3.9.12
Pytorch
以及其他的常用python庫(kù)
詳細(xì)復(fù)現(xiàn)過(guò)程的項(xiàng)目源碼、數(shù)據(jù)和預(yù)訓(xùn)練好的模型可從該文章下方鏈接獲取:https://www.aspiringcode.com/content。
??關(guān)于 【論文復(fù)現(xiàn)】短期電力負(fù)荷的詳細(xì)講解,七七就先分享到這里了,如果你認(rèn)為這篇文章對(duì)你有幫助,請(qǐng)給七七點(diǎn)個(gè)贊吧,如果發(fā)現(xiàn)什么問(wèn)題,歡迎評(píng)論區(qū)留言!!💕💕