第37周:文獻閱讀

目錄

摘要

Abstract

文獻閱讀

問題引入

研究背景

研究意義

研究目的?

實驗方法

TimeGAN

數據增強?

預測模型的獨立性?

創新點

實驗研究

數據準備

合成數據分析

模型比較?

總結


摘要

該文獻圍繞利用 TimeGAN 提高供熱變電站熱負荷預測精度展開。結構上,依次闡述研究背景、材料與方法、結果與討論和結論。特點在于首次將 TimeGAN 應用于供熱領域進行數據增強。優勢是能生成高質量數據,對異常現象有屏蔽作用。應用于新供熱變電站及供熱中期和末期數據不足的場景,原因是這些情況下傳統方法難以獲取足夠高質量數據 。效果比較顯示,新站初期數據擴充 3 倍時模型誤差可降 50%,中期和末期擴充至 15,000 - 30,000 時誤差降低 3% - 8%。未來改進方向是確定更精準的最優添加數據量。總體而言,TimeGAN 有效提升了預測精度,為供熱負荷預測提供了新途徑。

Abstract

This literature focuses on using TimeGAN to improve the accuracy of heat load forecasting in heating substations. Structurally, explain the research background, materials and methods, results and discussions, and conclusions in sequence. The feature is the first application of TimeGAN for data augmentation in the heating field. The advantage is that it can generate high-quality data and has a shielding effect on abnormal phenomena. Applied to new heating substations and scenarios where there is insufficient data during the mid-term and final stages of heating, the reason is that traditional methods are difficult to obtain sufficiently high-quality data in these situations. Comparison of results shows that when the initial data of the new station is expanded by three times, the model error can be reduced by 50%, and when expanded to 15000-30000 in the middle and late stages, the error can be reduced by 3-8%. The future improvement direction is to determine a more accurate optimal amount of added data. Overall, TimeGAN effectively improves prediction accuracy and provides a new approach for heating load forecasting.?

文獻閱讀

title:Data augmentation for improving heating load prediction of heating substation based on TimeGAN

?https://www.sciencedirect.com/science/article/abs/pii/S0360544222018205

問題引入

研究背景

準確的供熱負荷預測,能夠幫助操作人員制定合理的參數,減少能源浪費。其性能高度依賴于訓練數據的數量和質量,如新建供熱子站和供熱末期,無法提供足夠的高質量數據用于模型訓練,導致模型精度較低。因此,解決數據不足問題對于提高供熱負荷預測精度至關重要。

研究意義

通過引入TimeGAN進行數據增強,本文不僅有效解決了新建供熱子站和供熱末期數據不足的問題,還顯著提高了供熱負荷預測的精度。?

研究目的?

首次將TimeGAN應用于供熱領域,旨在通過生成高質量的時間序列數據來解決數據不足問題,并提高供熱負荷預測模型的精度。具體目標包括:1、僅使用供熱初期兩天的數據建立高精度預測模型,解決新建供熱子站缺乏歷史數據的問題;2、提高供熱中期和末期的預測精度,尤其是在數據量較少的情況下;3、以及確定TimeGAN與SVR、XGB和RF模型融合后的最佳訓練數據量,以優化模型性能。?

實驗方法

TimeGAN

TimeGAN是一種結合生成對抗網絡(GAN)和序列生成模型優點的時間序列生成模型。該模型的主要組件包括嵌入網絡、生成器、判別器和有監督網絡。?

GAN?

?

上述模型主要包含三大部分:生成器、判別器和損失函數

生成器:它的輸入是隨機噪聲向量,然后經過簡單的分布,最終得到生成器生成的合成數據

判別器:它的輸入主要是真實數據和合成數據,然后同樣經過簡單的分布,最終對輸入的兩類數據進行判別

損失函數:它的目的就是訓練生成器和判別器,使得生成器能生成更接近真實數據的合成數據,并且判別器能夠更準確的辨別兩類數據

自動編碼器

自動編碼器是一種無監督學習模型,主要用于數據的壓縮和特征學習。?它包含三部分:編碼器、解碼器和隱藏層。自編碼器的訓練目標是最小化重建誤差,通常通過某種損失函數(如均方誤差)來衡量。

?

TimeGAN就是結合上述兩個框架(GAN+Autoencoder),不僅如此,它相較于GAN的普通對抗損失之外,還增加了一個有監督的損失機制,目的就是為了指導生成器生成更加準確的合成數據,它的構建也是基于自編碼器的重建誤差。

代碼設計?

1)TimeGAN的設計

import tensorflow as tf
import numpy as np# 生成器網絡
class Generator(tf.keras.Model):def __init__(self, hidden_dim, output_dim):super(Generator, self).__init__()self.dense1 = tf.keras.layers.Dense(hidden_dim, activation='relu')self.dense2 = tf.keras.layers.Dense(hidden_dim, activation='relu')self.dense3 = tf.keras.layers.Dense(output_dim)def call(self, inputs):x = self.dense1(inputs)x = self.dense2(x)return self.dense3(x)# 判別器網絡
class Discriminator(tf.keras.Model):def __init__(self, hidden_dim):super(Discriminator, self).__init__()self.dense1 = tf.keras.layers.Dense(hidden_dim, activation='relu')self.dense2 = tf.keras.layers.Dense(hidden_dim, activation='relu')self.dense3 = tf.keras.layers.Dense(1)def call(self, inputs):x = self.dense1(inputs)x = self.dense2(x)return self.dense3(x)# 嵌入網絡
class Embedder(tf.keras.Model):def __init__(self, hidden_dim):super(Embedder, self).__init__()self.dense1 = tf.keras.layers.Dense(hidden_dim, activation='relu')self.dense2 = tf.keras.layers.Dense(hidden_dim)def call(self, inputs):x = self.dense1(inputs)return self.dense2(x)# 恢復網絡
class Recovery(tf.keras.Model):def __init__(self, hidden_dim, output_dim):super(Recovery, self).__init__()self.dense1 = tf.keras.layers.Dense(hidden_dim, activation='relu')self.dense2 = tf.keras.layers.Dense(output_dim)def call(self, inputs):x = self.dense1(inputs)return self.dense2(x)# 時間鑒別器網絡
class Supervisor(tf.keras.Model):def __init__(self, hidden_dim):super(Supervisor, self).__init__()self.dense1 = tf.keras.layers.Dense(hidden_dim, activation='relu')self.dense2 = tf.keras.layers.Dense(hidden_dim)def call(self, inputs):x = self.dense1(inputs)return self.dense2(x)# TimeGAN 模型
class TimeGAN(tf.keras.Model):def __init__(self, hidden_dim, output_dim):super(TimeGAN, self).__init__()self.generator = Generator(hidden_dim, output_dim)self.discriminator = Discriminator(hidden_dim)self.embedder = Embedder(hidden_dim)self.recovery = Recovery(hidden_dim, output_dim)self.supervisor = Supervisor(hidden_dim)def call(self, z):return self.generator(z)

2)模型的訓練?

# 訓練 TimeGAN
def train_timegan(model, data, epochs, batch_size, learning_rate):optimizer = tf.keras.optimizers.Adam(learning_rate)for epoch in range(epochs):for i in range(0, len(data), batch_size):batch = data[i:i + batch_size]z = np.random.normal(size=(len(batch), data.shape[1], data.shape[2]))# 訓練嵌入網絡和恢復網絡with tf.GradientTape() as tape:h = model.embedder(batch)x_tilde = model.recovery(h)e_loss0 = tf.reduce_mean(tf.square(batch - x_tilde))variables = model.embedder.trainable_variables + model.recovery.trainable_variablesgradients = tape.gradient(e_loss0, variables)optimizer.apply_gradients(zip(gradients, variables))# 訓練監督器with tf.GradientTape() as tape:h = model.embedder(batch)h_hat_supervised = model.supervisor(h[:, :-1, :])s_loss = tf.reduce_mean(tf.square(h[:, 1:, :] - h_hat_supervised))variables = model.supervisor.trainable_variablesgradients = tape.gradient(s_loss, variables)optimizer.apply_gradients(zip(gradients, variables))# 訓練生成器和鑒別器for k in range(2):# 訓練生成器with tf.GradientTape() as tape:h_hat = model.generator(z)h_hat_supervised = model.supervisor(h_hat[:, :-1, :])d_fake = model.discriminator(h_hat)g_loss_u = -tf.reduce_mean(d_fake)g_loss_s = tf.reduce_mean(tf.square(h_hat[:, 1:, :] - h_hat_supervised))h = model.embedder(batch)x_tilde = model.recovery(h_hat)g_loss_v = tf.reduce_mean(tf.square(batch - x_tilde))g_loss = g_loss_u + 100 * tf.sqrt(g_loss_s) + 100 * g_loss_vvariables = model.generator.trainable_variables + model.supervisor.trainable_variablesgradients = tape.gradient(g_loss, variables)optimizer.apply_gradients(zip(gradients, variables))# 訓練鑒別器with tf.GradientTape() as tape:h = model.embedder(batch)d_real = model.discriminator(h)h_hat = model.generator(z)d_fake = model.discriminator(h_hat)d_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_real, labels=tf.ones_like(d_real)))d_loss_fake = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_fake, labels=tf.zeros_like(d_fake)))d_loss = d_loss_real + d_loss_fakevariables = model.discriminator.trainable_variablesgradients = tape.gradient(d_loss, variables)optimizer.apply_gradients(zip(gradients, variables))print(f'Epoch {epoch + 1}/{epochs}, E_loss: {e_loss0.numpy()}, S_loss: {s_loss.numpy()}, G_loss: {g_loss.numpy()}, D_loss: {d_loss.numpy()}')

數據增強?

數據增強是一種技術,通過對現有數據進行各種變換和處理來生成新的訓練樣本,從而增加數據集的多樣性和數量。用來改善數據缺乏的問題?

該文獻中使用“基于生成模型”的方法來實現數據的擴增。

下面是使用了“數據增強“的供熱負荷和室內溫度的變化圖:?

?在整個時間序列的初期,數據量較少,通過生成多個類似于真實數據集的合成數據來增強模型的學習效果;在供熱中期,GAN模型生成合成數據,用來補充和豐富數據集;在供熱后期,發電機已經比較了解熱負荷的不同特性,此時增加數據來達到優化模型的效果。

# 數據增強函數
def data_augmentation(model, original_data, num_samples):z = np.random.normal(size=(num_samples, original_data.shape[1], original_data.shape[2]))generated_data = model(z)augmented_data = np.concatenate([original_data, generated_data.numpy()], axis=0)return augmented_data

預測模型的獨立性?

上面利用TimeGAN模型解決了數據增強的問題,接下來就要進行機器學習預測模型的評估?

SVR

SVR,支持向量回歸(Support Vector Regression),是一種基于支持向量機(SVM)的回歸方法。它的核心思想是找到一個盡可能平滑的超平面,使得數據點盡可能地被這個超平面所擬合,同時允許一定的誤差。?

RF

RF模型屬于集成學習中的bagging流派。核心思想是通過引入隨機性來降低模型的方差,從而避免過擬合。

XGB?

XGBoost(eXtreme Gradient Boosting)是一種強大的集成學習算法,廣泛應用于分類和回歸任務。它通過結合多個弱學習器(通常是決策樹)來構建一個強大的預測模型,具有高效性和高準確性的特點。?核心思想是通過梯度提升逐步減少預測誤差

性能評估?

?

創新點

首次應用 TimeGAN 解決供熱數據問題?

開創性地將 TimeGAN 算法應用于供熱領域,針對供熱數據的時間序列特性,生成高質量的時間序列和多特征數據,填補了該領域數據增強研究的空白。?

顯著提升新站及不同供熱階段模型精度?

僅用供熱初期兩天的數據,借助 TimeGAN 擴展原始數據集,就能大幅提升模型預測精度,新站模型誤差最多可降低 50%。對于供熱中期和末期,當數據擴充到 15,000 - 30,000 時,預測誤差可降低 3% - 8%。相比現有研究,該方法有效改善了不同供熱階段模型精度較低的問題,提高了模型的實用性和可靠性。?

實驗研究

數據準備

滑動窗口法是機器學習和數據分析中一種常用的技術,特別是在處理時間序列數據時。它能夠讓我們從連續的數據流中提取有用的信息,實現數據的局部分析。核心思想是通過在序列數據上定義一個固定大小的窗口,窗口將在數據序列上進行移動。每次移動窗口時,我們可以從窗口中提取特征并執行某種機器學習算法。

?

合成數據分析

首先選取同樣數量的樣本數據和合成數據,在供熱序列的前期、中期和后期二者的擬合情況

???

可以看出,在供熱初期和末期,合成數據與真實數據的趨勢較為一致,尤其是在初期表現最優;但是在供熱中期,合成數據的分布和斜率與真實數據相比有較大差異。?

針對上述在供熱中期差異較大的問題,中期圈內的真實數據未被合成數據所覆蓋,有可能是數據異常導致模型并未學習到該圈內的特征。所以單獨挑出異常樣本分析:

?在上圖中可以明顯的看出,供熱負荷和室內溫度具有基本一致的變化曲線,這不符合常理,所以模型未能學習到這一異常是有好處的,可能TimeGAN模型對該種異常具有自動屏蔽的特性。

為了進一步檢測合成數據的可靠性,選取了一段連續時間內的真實數據和合成數據的”供熱負荷“和”室內溫度“進行趨勢對比:

?結果表明,真實數據和合成數據基本能夠保持一致起伏,并且兩個特征的相關性也是符合常理的。?

模型比較?

?三種預測模型在給其數據集中不斷加入合成數據的結果比較如下:

?

對于上述的所有模型來說,在適量增加合成數據的情況下,模型性能都會提高;在相同數量的合成數據下,XGB和RF模型的性能通常優于SVR模型,這可能與模型的特性和數據集的適應性有關。?

上面是利用CV-RMSE來衡量模型的好壞,接下來直觀的將真實數據、沒有添加合成數據的3種預測模型的預測結果、添加了合成數據的3種預測模型的預測結果進行對比:

初期?

?合成數據對于提高供熱負荷預測的準確性具有重要作用,尤其是在數據不足的供熱初期。不同的機器學習模型對合成數據的利用效果不同,但總體上,XGB模型表現最佳。

末期?

?

末期的結果同初期。?

總結

本文獻創新性地應用了TimeGAN來增強供熱負荷預測的數據集,解決了因數據不足導致的預測準確度問題。研究者們利用TimeGAN生成的合成數據,結合真實數據訓練了三種機器學習模型:支持向量回歸(SVR)、隨機森林(RF)和極端梯度提升(XGB)。實驗結果表明,TimeGAN生成的數據有效提升了模型預測精度,尤其是在供熱初期,且存在一個最優的合成數據添加量。這項研究不僅提高了供熱負荷預測的準確性,也為數據增強技術在類似領域的應用提供了新的思路。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74071.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74071.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74071.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NFS 安裝與測試

NFS 安裝與測試 服務器 # NFS 共享目錄 mkdir -p ${HOME}/Share/nfs && sudo chown -R nobody:nogroup ${HOME}/Share/nfs# 安裝 NFS Server sudo apt install nfs-kernel-server# 配置 NFS 目錄 sudo cp -arf /etc/exports /etc/exports.bak sudo tee -a /etc/exports…

算法題(103):數獨

審題: 本題需要我們找出數獨的解,并打印出來 時間復雜度分析: 本題是9*9的數獨格子,所以數據量小于25,可以使用2^n的算法 思路: 方法一:深度優先搜索 首先確定搜索及插入策略: 我們采…

snmp/mib采用子代理模式,編碼,部署

0.環境 0.1 編譯net-snmp cd net-snmp-5.7.2 ./configure --prefix/usr/local/snmp BEGIN failed--compilation aborted at Makefile.PL line 1. make: *** [perlmakefiles] Error 2 yum install cpan -y make && make install /…

# [RPA] 使用八爪魚進行高效網頁數據采集

在許多行業中,數據是核心資產。然而,雖然許多網站的文本內容可以免費訪問,但手動一條一條采集,不僅耗時耗力,還容易出錯。這種情況下,使用自動化工具來提高采集效率就顯得尤為重要。本文將介紹 八爪魚 這一…

IDI_APPLICATION 與 IDC_ARROW資源存放在工程的哪個路徑?

書籍:《windows程序設計(第五版)》的開始 環境:visual studio 2022 內容:HELLOWIN程序 說明:以下內容大部分來自騰訊元寶。 IDI_APPLICATION 和 IDC_ARROW 是 ?Windows 系統預定義的資源標識符,它們并不以文件形式…

算法 | 優化算法比較

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 優化算法 ?一、主流優化算法分類?1?、傳統梯度類算法?2?、啟發式算…

騰訊云HAI1元體驗:輕松調用DeepSeek-R1模型搭建網站

前言 隨著云計算和人工智能技術的不斷發展,構建和部署智能化的網頁變得越來越簡單。騰訊云提供的HAI(人工智能平臺)和DeepSeek(智能搜索引擎)服務,能幫助開發者快速搭建智能化網頁,提升用戶體驗…

AI Agent系列(七) -思維鏈(Chain of Thought,CoT)

AI Agent系列【七】 前言一、CoT技術詳解1.1 CoT組成1.2 CoT的特點 二、CoT的作用三、CoT的好處四、CoT適用場景五、CoT的推理結構 前言 思維鏈(Chain of Thought,CoT),思維鏈就是一系列中間的推理步驟(a series of intermediate reasoning steps),通過…

【一起來學kubernetes】21、Secret使用詳解

Secret 的詳細介紹 Secret 是 Kubernetes 中用于存儲和管理敏感信息(如密碼、令牌、密鑰等)的資源對象。Secret的設計目的是為了安全地存儲和傳輸敏感信息,如密碼、API密鑰、證書等。這些信息通常不應該直接硬編碼在配置文件或鏡像中&#x…

opencv中stitch圖像融合

openv版本: opencv249 vs &#xff1a;2010 qt : 4.85 #include "quanjing.h"#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <open…

1201. 【高精度練習】蜜蜂路線

題目描述 一只蜜蜂在圖5.1-2所示的數字蜂房上爬動&#xff0c;已知它只能從標號小的蜂房爬到標號大的相鄰蜂房&#xff0c; 現在問你&#xff1a;蜜蜂從蜂房M開始爬到蜂房N&#xff0c;l≤M 輸入 M&#xff0c;N的值。 輸出 一個數表示爬行路線種數。 樣例輸入 1 14 樣…

linux下基本命令和擴展命令(安裝和登錄命令、文件處理命令、系統管理相關命令、網絡操作命令、系統安全相關命令、其他命令)歡迎補充噢

基本命令 ls: 列出目錄內容 ls&#xff1a;列出當前目錄內容ls -l&#xff1a;以長格式列出&#xff08;顯示詳細信息&#xff09;ls -a&#xff1a;顯示隱藏文件ls -lh&#xff1a;以易讀格式顯示文件大小 pwd: 顯示當前工作目錄 pwd&#xff1a;顯示當前目錄的絕對路徑 cd:…

《C++11 基于CAS無鎖操作的atomic原子類型》

count; count--; 我們知道&#xff0c;/--操作并不是原子性的&#xff0c;其實對應三條匯編指令來完成的。 讀取&#xff1a;從內存中把變量的值讀取到寄存器修改&#xff1a;在寄存器里將變量的值1/-1寫入&#xff1a;把修改后的值寫入到內存 在單線程環境下&#xff0c;這…

C++常用多線程模式

文章目錄 1. Fork - Join模式2. Producer - Consumer模式3. Readers - Writers模式4. Work Thread模式5. Actor模式6、 Pipeline模式概述應用場景C實現示例代碼解釋 1. Fork - Join模式 原理&#xff1a;將一個大任務分解為多個子任務&#xff0c;這些子任務在不同的線程中并行…

【時時三省】(C語言基礎)習題2 scanf函數

山不在高&#xff0c;有仙則名。水不在深&#xff0c;有龍則靈。 ----CSDN 時時三省 用下面的scanf函數輸入數據&#xff0c;使a 3&#xff0c;b 7&#xff0c;x 8.5&#xff0c;y 71.82&#xff0c;c1 A&#xff0c;c2 x在鍵盤上應如何輸入? 分析第一個 scanf 函數&…

微信小程序計算屬性與監聽器:miniprogram-computed

小程序框架沒有提供計算屬性相關的 api &#xff0c;但是官方為開發者提供了拓展工具庫 miniprogram-computed。 該工具庫提供了兩個功能&#xff1a; 計算屬性 computed監聽器 watch 一、安裝 miniprogram-computed 在項目的根目錄下&#xff0c;使用如下命令&#xff0c;…

SOFAStack-00-sofa 技術棧概覽

SOFAStack 前言 大家好&#xff0c;我是老馬。 sofastack 其實出來很久了&#xff0c;第一次應該是在 2022 年左右開始關注&#xff0c;但是一直沒有深入研究。 最近想學習一下 SOFA 對于生態的設計和思考。 &#x1f31f; 核心項目 ?? SOFABoot GitHub: sofastack/sofa…

企業模板(QiMoban)是一個專注于企業官網搭建的高效平臺

企業模板(QiMoban.com )是一個專注于為企業提供高效、低成本網站建設解決方案的平臺&#xff0c;主要面向中小企業和創業者。其核心優勢在于幫助用戶快速搭建企業官網&#xff0c;提升品牌形象并拓展業務渠道。以下是關于企業模板(QiMoban.com )的詳細分析&#xff1a; 適用場…

Oracle 數據庫安全評估(DBSAT)簡明過程

下載DBSAT 從這里下載。 實際是從MOS中下載&#xff0c;即&#xff1a;Oracle Database Security Assessment Tool (DBSAT) (Doc ID 2138254.1)。 最新版本為3.1.0 (July 2024)&#xff0c;名為dbsat.zip&#xff0c;近45MB。 $ ls -lh dbsat.zip -rw-rw-r-- 1 oracle oins…

【Linux 維測專欄 1 -- Hung Task 分析與驗證】

文章目錄 Linux Hung Task 簡介1. Hung Task 概述2. D 狀態與 Hung Task3. Hung Task 的工作原理4. Hung Task 的配置5. Hung Task 的典型輸出6. Hung Task 的應用場景7. kernel 配置7.1 編譯選項7.2 參數控制7.3 驗證方法4. 擴展接口 8. 注意事項 Linux Hung Task 簡介 1. Hu…