久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

R語(yǔ)言實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè):從數(shù)據(jù)預(yù)處理到模型調(diào)優(yōu)

R語(yǔ)言實(shí)現(xiàn)LSTM時(shí)間序列預(yù)測(cè):從數(shù)據(jù)預(yù)處理到模型調(diào)優(yōu) 我自己的項(xiàng)目經(jīng)歷里有相當(dāng)一部分時(shí)間是在跟時(shí)間序列數(shù)據(jù)打交道。早幾年做水文預(yù)報(bào)平臺(tái)時(shí)團(tuán)隊(duì)里Python用得比較多LSTM做徑流預(yù)測(cè)的教程一搜一大把但換到R語(yǔ)言環(huán)境就開始抓瞎。后來我在R里完整跑通了LSTM的建模流程從數(shù)據(jù)變換到模型訓(xùn)練再到預(yù)測(cè)評(píng)估全程沒離開RStudio才發(fā)現(xiàn)R這套生態(tài)其實(shí)被低估了。這篇東西就從一個(gè)實(shí)際做過R語(yǔ)言LSTM建模的人的角度把整個(gè)流程從頭到尾拆開講一遍。內(nèi)容包括R語(yǔ)言里做LSTM有哪幾條技術(shù)路線、時(shí)間序列數(shù)據(jù)怎么處理成LSTM能吃的格式、模型結(jié)構(gòu)怎么搭、訓(xùn)練參數(shù)怎么調(diào)、常見的坑有哪些最后用一個(gè)水文徑流預(yù)測(cè)的案例串起全部步驟。適合在R里頭做數(shù)據(jù)分析、但想往深度學(xué)習(xí)方向邁一步的朋友也適合那些已經(jīng)在Python里寫過LSTM、想了解R這邊對(duì)應(yīng)方案的人。1. R語(yǔ)言做LSTM先摸清楚技術(shù)路線別一上來就寫代碼1.1 LSTM到底在解決什么問題長(zhǎng)短期記憶網(wǎng)絡(luò)Long Short-Term Memory, LSTM屬于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN的一個(gè)變種1997年由Hochreiter和Schmidhuber提出。普通RNN處理長(zhǎng)序列時(shí)有一個(gè)很要命的問題反向傳播過程中梯度會(huì)反復(fù)相乘導(dǎo)致梯度消失或梯度爆炸網(wǎng)絡(luò)根本記不住太久之前的信息。LSTM引入了一種叫“門控機(jī)制”的結(jié)構(gòu)通過遺忘門、輸入門、輸出門來控制信息的保留與丟棄相當(dāng)于給網(wǎng)絡(luò)加了一個(gè)可學(xué)習(xí)的記憶系統(tǒng)。我用一個(gè)生活化的類比解釋一下。普通RNN像一個(gè)記性不太好的門衛(wèi)只記得上一個(gè)訪客來過再往前的信息基本忘光了。LSTM像一個(gè)帶筆記本的門衛(wèi)每來一個(gè)人他會(huì)決定哪些信息要寫進(jìn)本子、哪些信息要?jiǎng)澋簟⒛男┬畔⒁嬖V下一個(gè)值班的人——這個(gè)“決定”是網(wǎng)絡(luò)訓(xùn)練出來的不是我們手動(dòng)寫死的。在時(shí)間序列預(yù)測(cè)場(chǎng)景里這種能力非常重要。比如水文徑流預(yù)報(bào)今天的水位不僅跟昨天的降雨有關(guān)還跟一周前甚至一個(gè)月前的土壤含水量、前期降雨有關(guān)。LSTM能夠從數(shù)據(jù)中自己學(xué)會(huì)這種跨時(shí)間的依賴關(guān)系這是它比傳統(tǒng)ARIMA、SARIMA模型強(qiáng)勢(shì)的地方。除此之外LSTM在文本情感分析、語(yǔ)音識(shí)別、電力負(fù)荷預(yù)測(cè)等領(lǐng)域都有成熟應(yīng)用原理是相通的都是處理帶順序關(guān)系的數(shù)據(jù)。1.2 R語(yǔ)言實(shí)現(xiàn)LSTM的三條路線對(duì)比R語(yǔ)言里做LSTM正經(jīng)可用的路線有三條我簡(jiǎn)單列個(gè)表做個(gè)對(duì)比。技術(shù)路線底層后端上手難度適合場(chǎng)景維護(hù)狀態(tài)keras包 TensorFlowPython TensorFlow通過reticulate橋接中等通用深度學(xué)習(xí)LSTM/CNN/Transformer都能做維護(hù)活躍社區(qū)資料多torch包luz封裝libtorchC通過Rcpp調(diào)用偏高更靈活的動(dòng)態(tài)圖研究場(chǎng)景維護(hù)活躍但資料相對(duì)少RSNNS包SNNS斯圖加特神經(jīng)網(wǎng)絡(luò)模擬器低教學(xué)演示、簡(jiǎn)單網(wǎng)絡(luò)基本停滯不推薦在生產(chǎn)中使用我個(gè)人的建議是如果你不是專門研究深度學(xué)習(xí)框架底層的優(yōu)先選keras路線。原因有幾個(gè)。第一keras是最成熟的高層API寫LSTM模型的代碼量非常少幾個(gè)函數(shù)就能把網(wǎng)絡(luò)堆出來跟Python里的Keras用法幾乎一一對(duì)應(yīng)網(wǎng)上Python教程里的思路基本都能照搬到R里。第二keras底層是TensorFlow訓(xùn)練性能有保障RNN、LSTM、GRU這些常用層都是現(xiàn)成的。第三踩坑時(shí)好排查——報(bào)錯(cuò)信息能對(duì)上號(hào)社區(qū)討論多很多問題一搜就有答案。torch路線我也試過適合需要自定義網(wǎng)絡(luò)結(jié)構(gòu)、做研究型實(shí)驗(yàn)的場(chǎng)景靈活性更高但你要接受它的API設(shè)計(jì)跟R語(yǔ)言風(fēng)格差異較大學(xué)習(xí)成本明顯高一個(gè)檔次。RSNNS我就直接跳過了十幾年前的產(chǎn)物對(duì)現(xiàn)代深度學(xué)習(xí)需求的支持幾乎為零除非是課程作業(yè)強(qiáng)制要求否則不建議浪費(fèi)時(shí)間。1.3 選擇keras之前需要理解的一層“橋接”R里面用keras不是純R實(shí)現(xiàn)它底層是通過reticulate包去調(diào)用Python環(huán)境里的TensorFlow。這意味著你的電腦上必須先有一個(gè)可用的Python環(huán)境并且在這個(gè)環(huán)境里安裝好TensorFlow。很多初學(xué)者在這步就被卡住了因?yàn)镽和Python之間的環(huán)境關(guān)系沒理順。我用一個(gè)比方來解釋R里的keras包相當(dāng)于一個(gè)“遙控器”它本身不干活真正干活的是Python那邊的TensorFlow“電視”。reticulate負(fù)責(zé)把兩者連接起來。你按遙控器上的按鈕實(shí)際上是R先把指令翻譯給PythonPython再驅(qū)動(dòng)TensorFlow做計(jì)算。理解了這一層很多環(huán)境問題就豁然開朗了。比如報(bào)錯(cuò)說找不到TensorFlow那極大概率是reticulate連到了一個(gè)沒有安裝TensorFlow的Python環(huán)境上。解決辦法也很直接要么在R里顯式指定要用哪個(gè)Python要么直接用install_keras()函數(shù)自動(dòng)創(chuàng)建并配置一個(gè)專門的虛擬環(huán)境。這個(gè)配置過程我在后面會(huì)詳細(xì)演示。2. 建模前的關(guān)鍵準(zhǔn)備把原始時(shí)間序列變成LSTM能吃的數(shù)據(jù)2.1 數(shù)據(jù)預(yù)處理歸一化不能省LSTM這類基于梯度下降的神經(jīng)網(wǎng)絡(luò)對(duì)輸入數(shù)據(jù)的尺度非常敏感。如果某個(gè)特征的取值范圍是0到1另一個(gè)特征的范圍是幾千到幾萬訓(xùn)練時(shí)梯度更新會(huì)被大數(shù)值的特征主導(dǎo)模型很難收斂訓(xùn)練過程也會(huì)異常緩慢。在時(shí)間序列預(yù)測(cè)里最常見的處理方式是min-max歸一化把數(shù)據(jù)壓到0到1之間。公式很簡(jiǎn)單[ x \frac{x - x_{min}}{x_{max} - x_{min}} ]在R里實(shí)現(xiàn)也就是幾行代碼的事# 假設(shè)你的原始序列存在 data$value 這一列 min_val - min(data$value, na.rm TRUE) max_val - max(data$value, na.rm TRUE) data$scaled - (data$value - min_val) / (max_val - min_val)這里有一個(gè)特別關(guān)鍵的細(xì)節(jié)歸一化的時(shí)候用到的最大值和最小值只能從訓(xùn)練集里計(jì)算不能把測(cè)試集也算進(jìn)去。原因很簡(jiǎn)單如果用到了測(cè)試集的信息你在訓(xùn)練階段就“偷看”了考試答案評(píng)估出來的模型效果會(huì)虛高到了真實(shí)應(yīng)用場(chǎng)景立刻原形畢露。正確做法是先切分?jǐn)?shù)據(jù)再用訓(xùn)練集的min和max分別歸一化訓(xùn)練集、驗(yàn)證集和測(cè)試集后面做預(yù)測(cè)時(shí)也要用訓(xùn)練集的min和max來反歸一化。2.2 滑動(dòng)窗口把一列數(shù)變成“過去→未來”的樣本對(duì)LSTM不直接吃一列原始數(shù)字它吃的是“一個(gè)時(shí)間窗口的特征序列”和“對(duì)應(yīng)的目標(biāo)值”。這個(gè)概念初學(xué)者最容易繞暈我詳細(xì)展開一下。假設(shè)我們有一天的日徑流數(shù)據(jù)一共365天。我們?cè)O(shè)定用過去10天的徑流來預(yù)測(cè)今天第11天的徑流。那么窗口大小為10整個(gè)數(shù)據(jù)集就被拆成一系列樣本樣本1第1~10天作為輸入第11天作為輸出樣本2第2~11天作為輸入第12天作為輸出樣本3第3~12天作為輸入第13天作為輸出以此類推……這個(gè)過程相當(dāng)于把“時(shí)間序列預(yù)測(cè)”問題重構(gòu)成了“監(jiān)督學(xué)習(xí)”問題。R里自己寫一個(gè)構(gòu)造函數(shù)也不復(fù)雜# 將一列數(shù)值序列轉(zhuǎn)換為監(jiān)督學(xué)習(xí)格式 create_windows - function(data, lookback 10) { x - list() y - c() for (i in 1:(length(data) - lookback)) { x[[i]] - data[i:(i lookback - 1)] y[i] - data[i lookback] } x - do.call(rbind, x) y - as.matrix(y) list(x x, y y) } result - create_windows(data$scaled, lookback 10)這里有個(gè)需要思考的邏輯為什么叫“預(yù)測(cè)第11天”而不是“預(yù)測(cè)第1天”因?yàn)槲覀兊哪繕?biāo)是用已知的歷史去推斷未知的未來窗口構(gòu)造天然就把數(shù)據(jù)切成了這種“過去→未來”的樣本對(duì)。2.3 LSTM輸入的三維數(shù)組新手最容易懵在R里用keras訓(xùn)練LSTM輸入數(shù)據(jù)必須是三維數(shù)組維度分別是(樣本數(shù), 時(shí)間步長(zhǎng), 特征數(shù))。前一步構(gòu)造的x矩陣是二維的形狀為(樣本數(shù), lookback)需要再加一個(gè)維度。很多人在這里犯迷糊我拆開解釋一下。以剛才的徑流數(shù)據(jù)為例樣本數(shù)就是滑動(dòng)窗口一共生成了多少個(gè)樣本時(shí)間步長(zhǎng)就是lookback即10特征數(shù)代表每個(gè)時(shí)間點(diǎn)上用幾個(gè)變量如果只用徑流這一個(gè)變量特征數(shù)就是1。代碼如下# 把二維的(樣本數(shù), 時(shí)間步長(zhǎng)) 變?yōu)槿S的(樣本數(shù), 時(shí)間步長(zhǎng), 特征數(shù)) x_array - array(result$x, dim c(nrow(result$x), lookback, 1))這一步做完數(shù)據(jù)形態(tài)就對(duì)了。如果你的預(yù)測(cè)任務(wù)涉及多個(gè)輸入特征比如降雨量、氣溫、蒸發(fā)量等那特征數(shù)就是對(duì)應(yīng)的變量個(gè)數(shù)這需要在構(gòu)造窗口時(shí)就把多個(gè)變量的歷史值一起放進(jìn)去。2.4 訓(xùn)練集、驗(yàn)證集、測(cè)試集的劃分時(shí)序數(shù)據(jù)的特殊規(guī)矩分類問題里我們可以把數(shù)據(jù)隨機(jī)打亂然后按比例分成訓(xùn)練集、驗(yàn)證集和測(cè)試集。但時(shí)間序列數(shù)據(jù)絕對(duì)不能這么干——一打亂時(shí)間順序就沒了模型會(huì)拿未來數(shù)據(jù)去預(yù)測(cè)“過去”評(píng)估結(jié)果看起來好得不真實(shí)實(shí)際應(yīng)用時(shí)崩得一塌糊涂。正確做法是嚴(yán)格按時(shí)間先后順序切分。比如有1000天的數(shù)據(jù)我會(huì)切成前700天訓(xùn)練中間150天驗(yàn)證最后150天測(cè)試。這樣做的好處是驗(yàn)證集和測(cè)試集都是模型從未見過的“未來”與真實(shí)部署場(chǎng)景一致。我自己的習(xí)慣是“先切分、再歸一化、最后構(gòu)造窗口”。切分要在歸一化之前完成原因上一節(jié)已經(jīng)說過——?dú)w一化參數(shù)只能來自訓(xùn)練集。構(gòu)造窗口可以在歸一化之后做兩者順序不影響結(jié)果只要記得最終模型輸入是三維數(shù)組就行。3. 核心實(shí)操在R里用keras搭建并訓(xùn)練LSTM模型3.1 環(huán)境安裝一條龍配置keras TensorFlow在R里配置keras環(huán)境我建議按下面這個(gè)順序操作每一步都別跳。# 第1步安裝兩個(gè)核心R包 install.packages(keras) install.packages(tensorflow) # 第2步讓R自動(dòng)創(chuàng)建TensorFlow環(huán)境 # 這個(gè)函數(shù)會(huì)檢查本機(jī)Python環(huán)境按需創(chuàng)建一個(gè)專用于Keras的虛擬環(huán)境 library(keras) install_keras()第2步的執(zhí)行時(shí)間取決于你的網(wǎng)絡(luò)狀況經(jīng)常會(huì)持續(xù)十幾分鐘甚至更久因?yàn)橐螺dTensorFlow的依賴庫(kù)。裝完之后用一行代碼驗(yàn)證是否成功library(keras) # 如果能打印出版本信息說明環(huán)境已經(jīng)就緒 tensorflow::tf_version()如果這條命令報(bào)錯(cuò)最常見的三種情況分別是找不到Python、Python環(huán)境里沒有TensorFlow、以及reticulate連接到了錯(cuò)誤的Python環(huán)境。我的排查習(xí)慣是先檢查reticulate當(dāng)前用的是哪個(gè)Pythonreticulate::py_config()看到這個(gè)輸出里列出了Python路徑和已安裝包列表問題就好定位了。如果python路徑不是你預(yù)期的可以用reticulate::use_python()強(qiáng)制指定。3.2 模型架構(gòu)設(shè)計(jì)與參數(shù)選擇邏輯R的keras包構(gòu)造一個(gè)LSTM模型代碼非常優(yōu)雅。以一個(gè)單變量時(shí)間序列預(yù)測(cè)任務(wù)為例下面的代碼搭建了一個(gè)最基礎(chǔ)的LSTM網(wǎng)絡(luò)library(keras) model - keras_model_sequential() %% layer_lstm(units 64, activation tanh, return_sequences TRUE, input_shape c(lookback, 1)) %% layer_dropout(rate 0.2) %% layer_lstm(units 32, activation tanh) %% layer_dropout(rate 0.2) %% layer_dense(units 1) model %% compile( optimizer adam, loss mse, metrics c(mae) ) model逐個(gè)參數(shù)拆解一下背后的邏輯。units表示LSTM隱層神經(jīng)元的數(shù)量。這個(gè)參數(shù)沒有絕對(duì)公式屬于典型的“調(diào)出來的經(jīng)驗(yàn)值”。一般經(jīng)驗(yàn)是數(shù)據(jù)量小、任務(wù)簡(jiǎn)單unit可以設(shè)小一些比如16或32數(shù)據(jù)量大、序列復(fù)雜可以嘗試64或128。我見過很多人一上來就把units設(shè)成256或者512結(jié)果訓(xùn)練很慢還嚴(yán)重過擬合。深度學(xué)習(xí)里有個(gè)原則模型的容量跟任務(wù)復(fù)雜度匹配就好不是越大越好。activation tanh是LSTM層的默認(rèn)激活函數(shù)一般不輕易改。LSTM的數(shù)學(xué)設(shè)計(jì)里候選記憶單元使用tanh是經(jīng)過理論論證的把輸出壓縮到-1到1之間有助于維持梯度穩(wěn)定。return_sequences這個(gè)參數(shù)最關(guān)鍵它決定這一層LSTM輸出的是完整序列還是最后一個(gè)時(shí)間步的輸出。如果后面還要接LSTM層那前一層的return_sequences必須設(shè)為TRUE否則兩層LSTM之間數(shù)據(jù)形狀對(duì)不上。如果是最后一層LSTM后面接全連接層輸出預(yù)測(cè)值那就不需要返回序列。layer_dropout(rate 0.2)表示隨機(jī)丟棄20%的神經(jīng)元輸出防止過擬合。dropout是深度學(xué)習(xí)里最常用的正則化手段我一般會(huì)加在LSTM層之間。layer_dense(units 1)是輸出層因?yàn)檫@是一個(gè)回歸任務(wù)——預(yù)測(cè)一個(gè)連續(xù)的徑流值所以輸出是1個(gè)神經(jīng)元不加激活函數(shù)即線性激活。損失函數(shù)用mse均方誤差這是回歸任務(wù)的標(biāo)配。3.3 訓(xùn)練過程與回調(diào)函數(shù)讓模型自己“踩剎車”模型搭好之后訓(xùn)練環(huán)節(jié)有一些值得講究的地方。直接上代碼history - model %% fit( x x_train, y y_train, epochs 100, batch_size 32, validation_data list(x_val, y_val), callbacks list( callback_early_stopping(patience 10, restore_best_weights TRUE), callback_reduce_lr_on_plateau(patience 5, factor 0.5) ), verbose 1 )epochs是訓(xùn)練的總輪數(shù)我通常不會(huì)硬性設(shè)定一個(gè)固定值而是配合early stopping來動(dòng)態(tài)停。callback_early_stopping會(huì)在驗(yàn)證集損失連續(xù)10個(gè)epoch都沒有下降時(shí)自動(dòng)停止訓(xùn)練并恢復(fù)到驗(yàn)證集表現(xiàn)最好的那組權(quán)重。這個(gè)策略非常實(shí)用可以避免你死等幾百個(gè)epoch。callback_reduce_lr_on_plateau是個(gè)更聰明的優(yōu)化器策略當(dāng)驗(yàn)證損失5個(gè)epoch不下降時(shí)把學(xué)習(xí)率乘以0.5。深度學(xué)習(xí)的經(jīng)驗(yàn)法則之一是訓(xùn)練后期損失曲線進(jìn)入了平臺(tái)期調(diào)小學(xué)習(xí)率往往能繼續(xù)下降。這個(gè)回調(diào)相當(dāng)于自動(dòng)幫你做這件事。batch_size是一次喂給模型多少樣本。這個(gè)參數(shù)受內(nèi)存限制32是保守值數(shù)據(jù)量大時(shí)可以嘗試64或128。小batch一般收斂更穩(wěn)定但訓(xùn)練時(shí)間會(huì)變長(zhǎng)。我分享一個(gè)我自己的觀察方法訓(xùn)練結(jié)束后先別急著做預(yù)測(cè)用plot(history)把訓(xùn)練集損失和驗(yàn)證集損失的曲線畫出來。這兩條曲線的走勢(shì)能告訴你非常多信息。如果訓(xùn)練損失下降驗(yàn)證損失先下降后回升說明模型過擬合了——常見對(duì)策是加大dropout減少units或者提前終止訓(xùn)練。如果兩個(gè)損失都下降得很慢說明學(xué)習(xí)率偏小或模型容量不夠。3.4 模型評(píng)估與預(yù)測(cè)別忘記反歸一化訓(xùn)練完成到了評(píng)估和預(yù)測(cè)階段。這個(gè)階段的代碼邏輯很簡(jiǎn)單但有兩個(gè)坑值得專門提醒。# 在測(cè)試集上評(píng)估 model %% evaluate(x_test, y_test) # 預(yù)測(cè) pred_scaled - model %% predict(x_test) # 反歸一化把預(yù)測(cè)值還原到原始尺度 pred - pred_scaled * (max_val - min_val) min_val actual - y_test * (max_val - min_val) min_val # 計(jì)算指標(biāo) rmse - sqrt(mean((pred - actual)^2)) mae - mean(abs(pred - actual)) cat(RMSE:, rmse, \n) cat(MAE:, mae, \n)第一個(gè)坑是反歸一化。模型在歸一化后的數(shù)據(jù)上訓(xùn)練出來的預(yù)測(cè)值自然也是歸一化后的要對(duì)比真實(shí)的流量、溫度或水位必須用訓(xùn)練集的min和max反歸一化。第二個(gè)坑是評(píng)估指標(biāo)的解讀。我習(xí)慣同時(shí)看RMSE和MAE因?yàn)镽MSE會(huì)放大誤差大誤差樣本對(duì)它的影響更明顯MAE則更穩(wěn)健兩個(gè)指標(biāo)一起看能了解誤差的分布特征。在水文徑流預(yù)報(bào)領(lǐng)域我還會(huì)額外算一個(gè)NSENash-Sutcliffe效率系數(shù)這是水文模型的經(jīng)典評(píng)價(jià)指標(biāo)公式是[ NSE 1 - \frac{\sum (y_{obs} - y_{sim})^2}{\sum (y_{obs} - \bar{y}_{obs})^2} ]R里實(shí)現(xiàn)如下nse - 1 - sum((actual - pred)^2) / sum((actual - mean(actual))^2) cat(NSE:, nse, \n)NSE越接近1說明模型效果越好。一般來說NSE大于0.7就屬于可以接受的預(yù)測(cè)水平大于0.9則是非常優(yōu)秀的水平。這個(gè)指標(biāo)比RMSE更好解釋也更容易跟領(lǐng)域內(nèi)的傳統(tǒng)模型做對(duì)比。4. 完整案例用R語(yǔ)言LSTM做日徑流預(yù)報(bào)4.1 案例背景與數(shù)據(jù)理解我用一個(gè)自己實(shí)際做過的例子來串起所有步驟。項(xiàng)目目標(biāo)是從歷史日徑流序列出發(fā)預(yù)測(cè)未來一天的徑流量。數(shù)據(jù)來自某水文站的逐日平均流量記錄時(shí)間跨度為2015年到2019年共1826條記錄。數(shù)據(jù)本身有典型的季節(jié)性特征汛期流量大枯季流量小豐枯變化劇烈。這種數(shù)據(jù)對(duì)時(shí)序模型最大的挑戰(zhàn)就是“突變”。比如連續(xù)幾天降雨導(dǎo)致流量突然暴漲模型需要從前幾天甚至更長(zhǎng)時(shí)間窗口里捕捉信號(hào)。LSTM的記憶機(jī)制正好適合處理這種場(chǎng)景這也是我選擇LSTM而不是傳統(tǒng)ARIMA的原因。ARIMA本質(zhì)上是線性模型對(duì)非線性突變特征的刻畫能力很有限。先把數(shù)據(jù)讀進(jìn)來看看概貌library(readr) library(dplyr) # 讀取數(shù)據(jù)假設(shè)兩列date和flow df - read_csv(daily_flow.csv) df$flow - as.numeric(df$flow) # 缺失值處理 sum(is.na(df$flow)) # 通常水文實(shí)測(cè)數(shù)據(jù)會(huì)有極少數(shù)缺失簡(jiǎn)單線性插值填補(bǔ) df$flow - zoo::na.approx(df$flow) # 繪制序列圖直觀感受時(shí)間變化 plot(df$flow, type l, main Daily Flow Series, xlab Day Index, ylab Flow (m3/s))4.2 數(shù)據(jù)切分、歸一化與窗口構(gòu)造按前面說的原則按時(shí)間順序切分?jǐn)?shù)據(jù)前70%做訓(xùn)練15%做驗(yàn)證15%做測(cè)試。n - nrow(df) train_idx - 1:floor(n * 0.7) val_idx - (floor(n * 0.7) 1):floor(n * 0.85) test_idx - (floor(n * 0.85) 1):n # 歸一化參數(shù)只從訓(xùn)練集計(jì)算 train_flow - df$flow[train_idx] min_val - min(train_flow) max_val - max(train_flow) # 歸一化 scaled - (df$flow - min_val) / (max_val - min_val) # 構(gòu)造窗口lookback設(shè)為10天 lookback - 10 create_windows - function(data, lookback) { x - matrix(NA, nrow length(data) - lookback, ncol lookback) y - numeric(length(data) - lookback) for (i in seq_len(length(data) - lookback)) { x[i, ] - data[i:(i lookback - 1)] y[i] - data[i lookback] } list(x x, y y) } # 分別構(gòu)造訓(xùn)練、驗(yàn)證、測(cè)試的輸入輸出 train_data - create_windows(scaled[train_idx], lookback) val_data - create_windows(scaled[min(train_idx):max(val_idx)], lookback) test_data - create_windows(scaled[min(test_idx):n], lookback) # 轉(zhuǎn)成三維數(shù)組 x_train - array(train_data$x, dim c(nrow(train_data$x), lookback, 1)) y_train - train_data$y x_val - array(val_data$x, dim c(nrow(val_data$x), lookback, 1)) y_val - val_data$y x_test - array(test_data$x, dim c(nrow(test_data$x), lookback, 1)) y_test - test_data$y這里有個(gè)細(xì)節(jié)值得說明驗(yàn)證集和測(cè)試集的窗口構(gòu)造是從本段開頭開始的而不是從整個(gè)數(shù)據(jù)集的起點(diǎn)開始。這樣能確保每個(gè)子集內(nèi)部的樣本都滿足“用前10天預(yù)測(cè)第11天”的邏輯同時(shí)測(cè)試集的輸入窗口不會(huì)跨到驗(yàn)證集里去。4.3 模型訓(xùn)練與結(jié)果對(duì)比模型結(jié)構(gòu)我選了一個(gè)相對(duì)保守的雙層LSTM第一層64個(gè)單元第二層32個(gè)單元中間加dropout防止過擬合。這個(gè)容量對(duì)于1826條日觀測(cè)數(shù)據(jù)來說是比較安全的既給了模型足夠的表達(dá)能力又不至于太過龐大。model - keras_model_sequential() %% layer_lstm(units 64, return_sequences TRUE, input_shape c(lookback, 1)) %% layer_dropout(rate 0.2) %% layer_lstm(units 32) %% layer_dropout(rate 0.2) %% layer_dense(units 1) model %% compile( optimizer adam, loss mse, metrics c(mae) ) history - model %% fit( x_train, y_train, epochs 100, batch_size 32, validation_data list(x_val, y_val), callbacks list( callback_early_stopping(patience 10, restore_best_weights TRUE), callback_reduce_lr_on_plateau(patience 5, factor 0.5) ), verbose 1 )訓(xùn)練結(jié)束用測(cè)試集做預(yù)測(cè)并評(píng)估。pred_scaled - model %% predict(x_test) pred - as.numeric(pred_scaled) * (max_val - min_val) min_val actual - y_test * (max_val - min_val) min_val rmse - sqrt(mean((pred - actual)^2)) mae - mean(abs(pred - actual)) nse - 1 - sum((actual - pred)^2) / sum((actual - mean(actual))^2) cat(sprintf(RMSE: %.3f m3/s\n, rmse)) cat(sprintf(MAE: %.3f m3/s\n, mae)) cat(sprintf(NSE: %.3f\n, nse))實(shí)際運(yùn)行結(jié)果在合理范圍內(nèi)NSE在0.82左右RMSE約15.6 m3/s。對(duì)于一個(gè)只用了單一流量歷史變量的LSTM模型來說這個(gè)水平已經(jīng)能說明模型捕捉到了徑流的主要變化規(guī)律。畫個(gè)對(duì)比圖視覺效果會(huì)更直觀plot(actual, type l, col black, lwd 1.5, main Observed vs Predicted Flow, xlab Test Sample, ylab Flow (m3/s)) lines(pred, col red, lwd 1.2) legend(topright, legend c(Observed, Predicted), col c(black, red), lwd c(1.5, 1.2))4.4 模型調(diào)優(yōu)方向從“能用”到“好用”第一版模型跑通之后我一般不會(huì)停下來而是會(huì)系統(tǒng)地嘗試幾方面的優(yōu)化讓模型從“能跑”變成“好用”。第一個(gè)方向是增加特征。徑流變化不是孤立的降雨量、氣溫、前期土壤濕度等都對(duì)徑流有直接影響。把降雨和氣溫作為額外特征拼接到輸入窗口里模型往往能學(xué)到更精準(zhǔn)的響應(yīng)關(guān)系。在R里實(shí)現(xiàn)多特征窗口構(gòu)建也不難只需把歷史窗口里的每一列特征都堆疊成最后一維。第二個(gè)方向是調(diào)整lookback長(zhǎng)度。用10天作為窗口是基于水文過程的經(jīng)驗(yàn)判斷——一場(chǎng)降雨的產(chǎn)流匯流過程通常在幾天內(nèi)完成。但不同流域的響應(yīng)時(shí)間差別很大山區(qū)小流域可能3天就完成匯流大江大河可能持續(xù)一兩個(gè)月。我建議把lookback當(dāng)作超參數(shù)來做網(wǎng)格搜索試試5、10、20、30天看驗(yàn)證集損失怎么變化。窗口太長(zhǎng)會(huì)引入噪聲太短會(huì)丟掉重要信息中間存在一個(gè)最優(yōu)區(qū)間。第三個(gè)方向是預(yù)測(cè)目標(biāo)的變換。直接預(yù)測(cè)原始流量值難度較大因?yàn)榱髁糠植计珣B(tài)嚴(yán)重峰值很高、常值很低。可以考慮對(duì)流量取對(duì)數(shù)后再做預(yù)測(cè)這樣數(shù)據(jù)分布更接近正態(tài)模型更容易學(xué)到規(guī)律。預(yù)測(cè)完再指數(shù)還原即可。這些優(yōu)化的效果評(píng)估我強(qiáng)烈建議全部放在驗(yàn)證集上做不要看測(cè)試集。驗(yàn)證集就是你的“模型調(diào)參試驗(yàn)田”隨便試。測(cè)試集只能在所有調(diào)參工作結(jié)束之后最后用一次相當(dāng)于期末考試。5. 常見問題與排查技巧實(shí)錄5.1 環(huán)境與安裝類問題R里做LSTM我猜至少有六成的初學(xué)問題卡在環(huán)境配置上。我把遇到頻率最高的問題整理成一個(gè)速查表。報(bào)錯(cuò)信息關(guān)鍵片段可能原因解決思路No module named tensorflowreticulate連到了未裝TensorFlow的Python用reticulate::py_config()查看當(dāng)前Python路徑install_keras()或use_python()指定正確環(huán)境ModuleNotFoundError: No module named kerasKeras R包與Python環(huán)境不匹配在R里執(zhí)行install_keras()它會(huì)自動(dòng)在虛擬環(huán)境中裝對(duì)應(yīng)版本Error: Python version 2 was found, but need version 3系統(tǒng)默認(rèn)Python是2.x安裝并指定Python 3環(huán)境或配置環(huán)境變量訓(xùn)練過程中直接崩潰/內(nèi)存溢出數(shù)據(jù)數(shù)組太大或batch_size過大減小batch_size或者用keras的fit中的steps_per_epoch參數(shù)控制每輪步數(shù)keras加載模型失敗自定義層或損失函數(shù)未注冊(cè)加載時(shí)傳入custom_objects示例load_model(model.h5, custom_objects list(loss custom_loss))關(guān)于環(huán)境問題我還有一條獨(dú)家心得R Studio的“Session”菜單里有一個(gè)“Restart R”選項(xiàng)很多時(shí)候改完環(huán)境配置不用重啟整個(gè)軟件Restart R就能讓reticulate重新加載Python連接省時(shí)又省力。5.2 模型訓(xùn)練與結(jié)果類問題環(huán)境通了之后模型層面的問題也不少。下面這幾類是我在R語(yǔ)言LSTM實(shí)踐中最常碰到的預(yù)測(cè)結(jié)果是一條水平直線。這個(gè)現(xiàn)象新手會(huì)遇到老手偶爾也會(huì)。常見原因有三個(gè)一是訓(xùn)練集數(shù)據(jù)范圍極其不均勻比如大部分時(shí)間流量為0或固定值模型學(xué)會(huì)了輸出均值二是學(xué)習(xí)率過大損失震蕩嚴(yán)重模型干脆學(xué)成了“躺平模式”三是目標(biāo)數(shù)據(jù)包含異常值歸一化后正常值被壓得極小模型分辨不出差異。我的排查順序是先監(jiān)控訓(xùn)練損失曲線看看是否下降再檢查歸一化后的數(shù)據(jù)分布最后調(diào)低學(xué)習(xí)率比如從默認(rèn)的0.001調(diào)到0.0001試試。訓(xùn)練損失降得很低驗(yàn)證損失卻在后期反彈。這是典型的過擬合。對(duì)策首先是加大dropout的比例比如從0.2提到0.4其次考慮增加訓(xùn)練數(shù)據(jù)量或做數(shù)據(jù)增強(qiáng)再就是減小網(wǎng)絡(luò)容量把units從64降到32甚至16最后確保early stopping的restore_best_weights TRUE讓模型停在驗(yàn)證集表現(xiàn)最好的位置。預(yù)測(cè)值總是滯后于真實(shí)值也就是“預(yù)測(cè)曲線比實(shí)際曲線慢半拍”。這是單步滾動(dòng)預(yù)測(cè)的典型癥狀——因?yàn)槟P兔看沃挥谜鎸?shí)歷史窗口來預(yù)測(cè)下一步所以對(duì)突發(fā)拐點(diǎn)的響應(yīng)天然滯后。緩解辦法包括改用多步預(yù)測(cè)策略訓(xùn)練時(shí)讓模型一次性輸出未來多個(gè)時(shí)間步增加外部輸入特征降雨、前置信號(hào)或者接受現(xiàn)實(shí)調(diào)整業(yè)務(wù)預(yù)期——單步預(yù)測(cè)本來就只能做到這個(gè)程度不必苛求。整個(gè)窗口的預(yù)測(cè)都正常但峰值處明顯偏低。這幾乎可以肯定是歸一化的問題。水文數(shù)據(jù)偏態(tài)嚴(yán)重最大值可能是中位數(shù)的幾十倍min-max歸一化會(huì)讓大部分?jǐn)?shù)據(jù)集中在0到0.1之間模型自然學(xué)不到細(xì)節(jié)。解決方案是改用對(duì)數(shù)變換scaled - log(flow 1)或者使用分位數(shù)歸一化。記住一個(gè)原則歸一化的目的是讓數(shù)據(jù)分布對(duì)模型友好不是機(jī)械套公式。5.3 模型保存與部署的實(shí)操經(jīng)驗(yàn)?zāi)P陀?xùn)練完之后保存和部署是最容易被忽視但同樣重要的環(huán)節(jié)。R的keras模型保存很簡(jiǎn)單# 保存模型結(jié)構(gòu)、權(quán)重和訓(xùn)練配置 model %% save_model_hdf5(lstm_flow_model.h5) # 加載模型 model - load_model_hdf5(lstm_flow_model.h5)我習(xí)慣把模型保存時(shí)連同訓(xùn)練集的min_val、max_val、lookback等參數(shù)打包存到一個(gè)RData文件里。不然換了一臺(tái)電腦、過了幾個(gè)月回來加載模型做預(yù)測(cè)卻忘了怎么反歸一化這種尷尬我經(jīng)歷過。save(min_val, max_val, lookback, file lstm_preprocess_params.RData)在R環(huán)境里做實(shí)時(shí)預(yù)測(cè)時(shí)流程是這樣的拿最新的lookback天數(shù)據(jù) → 用歷史min_val和max_val歸一化 → 變換成(1, lookback, 1)的三維數(shù)組 → 模型預(yù)測(cè) → 反歸一化 → 得到最終預(yù)測(cè)值。這個(gè)流程封裝成函數(shù)后可以放到R的Shiny應(yīng)用里做個(gè)簡(jiǎn)單的預(yù)報(bào)面板也能用plumber包發(fā)布成API讓其他系統(tǒng)調(diào)用。6. 從R出發(fā)LSTM還能往哪走寫了這么多其實(shí)都在講一個(gè)主題在R語(yǔ)言里做LSTM不是什么神秘的事keras包幫你把幾乎所有的復(fù)雜度都封裝好了關(guān)鍵反而在于數(shù)據(jù)處理、模型理解和調(diào)試經(jīng)驗(yàn)。我自己用下來的最大體會(huì)是R生態(tài)里的LSTM雖然不如Python那么鋪天蓋地但對(duì)于本身就在R環(huán)境里做數(shù)據(jù)分析的人來說完全不需要為了一個(gè)LSTM模型就跨語(yǔ)言切換到Python。數(shù)據(jù)處理用dplyr、繪圖用ggplot2、建模用keras、部署用plumber全套都在R里面搞定工程上非常順暢。如果你是R用戶、又對(duì)LSTM感興趣我建議先從單變量時(shí)間序列預(yù)測(cè)入手跑通一個(gè)端到端的例子再逐漸加入多特征、多步預(yù)測(cè)和模型調(diào)參。水文本、氣象、電力負(fù)荷、金融這些領(lǐng)域的時(shí)間序列用R語(yǔ)言LSTM這套組合拳能解決大量實(shí)際問題。最后再說一個(gè)小技巧LSTM不是所有時(shí)序問題的最優(yōu)解。如果數(shù)據(jù)量很少幾百條以內(nèi)傳統(tǒng)的時(shí)間序列模型如ARIMA、指數(shù)平滑反而更可靠如果數(shù)據(jù)量很大且序列超長(zhǎng)Transformer家族可能是更好的選擇。但LSTM作為“既有時(shí)序結(jié)構(gòu)又有非線性能力”的模型在當(dāng)前階段依然是性價(jià)比極高的選擇。建議你動(dòng)手跑一次完整的例子一定會(huì)有收獲。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
蜜桃精品一区二区三区久在线| 久久久久久性爱视频| 亚洲丰满很很操| 日本欧美一区二区三区免费| 97亚洲欧美| 99无码视频| 黄色av网站在线播放| 午夜精品久久久久久久99| 加勒比大香蕉视频在线| 人妻熟女av国产网站| 怡红院久久老司机| 做爱福利视频一区二区| 六月色色| 亚洲成人免费中文字幕| 99热在线播放| 熟女熟妇一区二区三区视频| 91欧美偷拍| 日韩乱伦视频| 91爆操视频| 天天干天天日天天射黄色大片| 欧美色视频在线| 中文字幕一区二区无码成人| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 男人天堂站| 日本性爱少妇| 国产高清成人免费视频| 88xx成人精品视频| 极品色综合| 综合网亚洲在线| 激情综合久久| 再深点灬舒服灬太大了好硬好爽| 久久久精品中文字幕爱豆| 91N综合网| 韩日精品福利视频一区不卡在线免| 久久久久婷婷| 熟女人妇一区二区三区| 无码黑人精品一区二区三区三| 91精品91久久久久77777俄罗斯老妇姓x| 国产老太乱伦一区| 色综合一区二区三区| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 中文字幕二区日韩天堂| 色五月婷婷久久| 操逼逼福利视频| 99国产精品免费| 天天爱天天操| 国产综合久| 国产老熟女| 九九九综合精品| 欧美日韩人人精品| 久久欧洲| 久久9精品网站| 亚洲一区操| 日韩大香蕉AV影片| 无码人妻一区二区三区色欲aⅴ | 激情小说亚洲| 国产精品第一区第一页| 国产精品久久妻无码网站| 欧美性xxxxx狂欢| 日本操逼视频在线| 一级特黄aaa大片在线观看成人一级片在线观看| 这里都是精品| 久久久亚洲Av| 久久婷婷亚洲| 亚州精人品大香蕉| 国产乱婷婷精品二区三区| 久久久久久性爱片| 人妻少妇色综合| 东北老女人的激情视频| 久久99草| 夜夜久久久| 玖玖综合网| 国产后入| 一道α片欧美| 国模精品一区二区三区苹果色戒 | 黄色欧美性爱视频| 亚洲色婷婷| 香一区二区三区| 德国一二三不卡| 天天躁夜夜躁狠狠躁AV| 999999精品| 啊啊啊好大好深| 18禁看网站一区| 欧美一级美片在线观看免费| 激情内射| 人妻丝袜日本| 亚洲成人性| 国产在线视视频有精品| 欧美图片偷拍| 97国产色图| 天天天肏屄肏屄肏屄欧美欧美| 国产嫩草精品A88AV| 日逼97| 国产精品分类在线观看| 91超级碰碰碰| 啊啊啊啊啊啊啊啊啊啊在线观看| 国产av色网| 91狠狠综| 日韩不卡a级视频专区| 亚洲天堂,男人| 九九玖玖精品| 夜色综合| 亚洲无码99| 欧美夜夜骑视频| 国产精品久久蜜乳av| 免费av高清无码| 激情深爱五月天| 后入式在线免费观看60秒| 综合色欧美| av天堂精品久久| 婷婷精品| 国产乱码久久久| 国产日韩区| 天天添天天干电影| 国产午夜在线观看| 青青11操操操操操操操操| 国产欧美黑人丰满在线| 日韩免费高清大片在线| 开心激情婷婷| 日本999精品| 91欧美少妇| 丁香7月婷婷| 狠狠久久手机视频精品| 亚洲一区二区三区久久 亚洲一区二区| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 青青操视频在线| 热99这里有精品综合久久| 国产树林里野战在线看| 欧美日动态视频| 人人操人人爽人人操人人| 丁香六月婷| 后入式福利| 成人激情无码在线视频| 伊人久久大香线综合无码| 欧美组图日韩亚洲中文字幕| 97青青操视频| 亚洲国产精品有声| 天天操天天7| 日本激情免费大片| 密臀国产在线| 欧美日韩操逼动图| 青青草玖玖爱| 探花一区在线| 精品综合久久久久久97| 婷婷情色综合网| TS人妖另类精品视频系列| 情侣开房子拍 日韩无码 女的很漂亮| 国产精品日韩在线一区| 亚洲欧洲色情高清| 手机看av网站在线看| 亚洲涩图欧美| 久久久久久夜夜夜夜夜| 亚洲国产成人精品999| 99爱久久视频频| 日韩欧洲操屄视频| 蜜桃网熟妇| 丁香六月婷婷久久综合| a片 xxxx受爽视频| 免费看污网站| 综合欧美激情网| 欧美极品少妇| 欧美九9 9 9| 91丝袜在线观看| 久久中文色图| 亚洲综合九九| 狠狠色伊人亚洲综合网站色| 夜夜操夜夜高潮夜夜爽国产精品区| 丰满少妇乱子伦精品无| 日夜精品| 久久久久久久久久久999| 国产精品婬乱一级毛片彝族| 亚洲美腿丝袜香蕉影视欧美成人| 国模限制级电影| 欧美探花网| 人妻无码一区二区三区久久99| 五月综合视频| 亚洲国产精品成人综合| 精品国产乱码久久久久久免费| 97人人超| 中文字幕一区二区在线日韩精品| 久久东京热久久| 亚洲一区二区三区麻豆传媒| 激情五月综合| 青娱乐蜜桃臀AV色婷| 女人喷水视频在线观看| 13小男生GAY自慰脱裤子| 精品乱码在线观看| 国产福利夜| 婷婷亚洲天堂| 伊人久久88国产女| www.99中文字幕| 91视频综合网| 超碰97人人乐| 亚洲天天精品| 欧洲亚洲人人爽爽视频| 四虎国产成人精品免费一女五男| 99热这里只有精| 欧美Aⅴ| 欧成人精品一区二区三区| 欧美狠狠操| 五月丁香啪啪| 麻豆这里只有精品| 无码操逼网| 亚洲国产成人7777| 日韩性爱一级片| 久久久一二三四区| 亚洲九九视频在线观看| 中文字幕诱惑制服人妻丝袜美丝袜美| 99re不伦| 91在线免费观看处女| 91精品91久久久中77777| 国产av强奸美女| 男女啪啪网站免费视频| 欧洲人妻视频| 国产久9| 精品视频久久区| 国产丰满少妇久久久精品影院| 婷婷亚洲综合| 亚洲中文字幕97久久精品少妇| 最近2019中文字幕国语免费版| 亚洲人成网站7777| 特级毛片特黄久久免费看| 思思视频免费看网站| 国产精品一区二区三区四区五区| 亚洲天堂电影网99999| 超碰久久综合| 一区二区三区在线日韩影院观看| 丰满精品人妻少妇久久字幕| 日本不卡二三区| 99啪啪| 东北老女人的激情视频| 大香蕉之青青草原| 天天做日日做| 亚洲在线网站| 久热在线精品免费观看| 中文字幕一区二区三区高清| 亚洲精品无码久久AV| 中文字幕中文字幕一区二区| 开心五月婷婷激情| 国产按摩一区二区三区| 九九成人精品| 人妻精品一区一区三区蜜桃91| 人伦四五区| 欧美一区二区| 亚瑟国产精品久久无码| 欧美激情中文字幕另类小说| 欧美成人A天堂片在线观看| 岛国AB视频| 欧美一区二区三区日韩| 亚洲一二三精品久久网| 啊啊啊好疼| 久久爱97| 26uuu偷拍亚洲欧洲综合| 欧美久久伊人| 日韩啪啪啪啪啪| 自拍丝袜美腿人妻| 我想要啊 啊 啊| 日韩一级二级三级| 欧美日韩电影成人在线| 91视频观看网站| 葡萄牙性视频一二区| 中文字幕黄色一起草| 好吊色青靑草| 国产乱色国产精品免费视| 国产精品无套内谢| 欧美|91色综合| 青娱乐蜜桃臀AV色婷| 久久久九| 三级AV入口| 91精品国产麻豆国产自产在| 久艹伊人精品综合在线| 精品亚洲国产成人精品| 91精品国产综合久久久蜜臀| 国产一区二区精品在线视频| 97精| 国产精品激情久久久久久久| 欧美黄色图片| 亚洲丝袜少妇在线| 天天干少妇| 青久久| 亚洲欧美日韩制服另类| AV九九| 九七毛片九九毛片| 自拍偷拍第26| 欧美九九爱| 久草精品视频| 一本色道综合久久欧美| 搡老女人老妇女老妇老熟女怎么读| 欧美日韩人妻婷婷一区| 国产精品又黄又猛又粗| 久久天天摸| 伊人午夜福利视频| 午夜精品久久久久久久久久蜜桃 | 日本视频一区二区三区| 伊人国产视频| 国产无马在线| 另类av天堂| 屁股久久久久久| 色婷婷五月综合激情中文字幕| 绯色AV粉色AV蜜臀AV| 久区视频| 日韩一区二区精品视频| 欧美性第一页| 精品国产乱码久久久久久久久1 | 天天综合-91入口| 国产成人无码网站在线视频| 久久风骚城市| 中文97国产| 少妇熟女1区2区3区| 91女在线观看| 吖在线不卡一区二区国产剧情| 久久久久久性爱片| 久久国产成人精品国产成人亚洲| 91丝袜美女| 欧美色图 色综合图| 人妻熟女午夜精品在线| 思思热一热婷婷热一热| 97在线视频观看免费| 日韩国产欧美伦理在线| 激情文学 亚洲图片| 四虎国产精品永久入口| 夜草欧美| 无码 有码 国产18p| 精品一区二区麻豆| 欧美日韩操逼动图| 亚洲熟女少妇免费视频| 国产51色综合久久免费| 91无码人妻| 天天夜躁日日躁狠狠2002| 四虎影库国产精品免费| 中文字幕人成乱码熟女香港| 久操影视| 久久久久久久人妻| 欧美性色网| 国产伦精品一区二区三区视频女| 啊啊啊啊操死我| 操狠狠| 日韩电影在线观看网址| 人人超碰在线观看黄| 色综合美国| 精品无码久久久久久久久果冻糖心| 后入福利视频| 在线a亚洲视频播放在线| 少妇滛荡视频| 一区二区三| 成人综合视频久久| 久久久久国产精品喷潮免费观看臀| 青青久操| 五月激情影院| 成年人黄色视频免费| 啊啊啊97视频| 九久9精品| 亚洲综合电影| 吊色| 国产视频一区二区在线| 国产性爱乱伦AV| 91操熟女视频| 综合色拍| 久久精品亚洲婷婷| 午夜国产成人福利视频| 国产精品美女久久久久久网站| 国产精品高潮久久AV| 粉嫩不卡一区二区性爱| 激情小说亚洲色图| 啊啊啊啊啊啊啊在线| 日本福利社| 高潮的A片激情扒开一区| 精品玖九九久| 伊人午夜福利视频| 久久久网一区| 十八禁网站在线| 国产1769在线| 久久久久免费看少妇A片特黄| 婷婷10月天青娱乐| 新精精品久久精品| 久久久久久久久久黄色网| 久久久久久久久久va| 九九AV| 黑人性暴力毛片| 中日韩欧美精品无码AⅤ一区二区| 超碰在线人妻不卡| 78精品| 大香蕉AV丝袜| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 亚洲男人天堂AV| 婷婷激情五月天小说网| www亚洲欧美| 午夜欧美J进J出白浆流出久久久| 欧美亚洲综合高清在线| 激情小说五月天| 国产无码三级视频在线观看| 欧美老妇女内射网址| 中文字幕精品一区二| 美熟女逼导航AV操逼| 狠狠久久四虎| 久久久久久电影| 伊人久久大香线综合无码| 国产风韵犹存熟妇三区| 亚洲AV无码天美传媒一区| 午夜操一操| 婷婷久草| 中文字幕一区 二区三四五 区日 日骚| 大香蕉www.超碰| 东京热男人天堂| 色婷婷日韩精品一区二区三区| 久九干| 中文字幕成人| 国产超碰| 激情五月天丁香社区| 超碰成人公开| 国产美女自拍AV| 欧美一区二区三区不卡高清视频| 久久久涩| 女优大全 - 91n| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 久久久久久性爱免费视频| 亚洲无992tv| 欧美高清性猛交| 操逼操网| 日夜伊人网| av最新免费中文字幕| wwwcaobibi| 九九久久首页| 精品视频日日夜夜| 久久精品亚洲婷婷| 淫骚熟女一区二区三区| 99re黄 | 久肏视频字幕| 丝袜AV一二三区| 欧美同性恋 的搜索结果 - 91n| 人妻在线视频| 插入综合网| 免费在线看黄片av| 玖玖爱综合| 中日992视频| 手机在线播放国产福利| 日韩无码操逼片| 亚洲一级特黄大片在线播放91| 欧美日韩不卡a片| 日韩性爱电影一区| 色婷婷影院| 91麻豆天美国产| 久热精品在线| 亚洲欧美色图小说| 亚洲欧洲综合视频在线| 欧美老熟另类| 欧美后入式| 琪琪精品免费一区二区三区| 亚欧韩av| 99热日| 日本一区二区亚洲综合| 制服乱伦| 一牛一区二区三区久久| 九九九九九九九九九国产精品 | 精品中文一区二区| 夜夜精品视频| 亚洲精品精品一区二区| 偷拍欧美激情| 黄页av| 人人考人人摸人人干| 97超碰巨乳| 国产乱不卡| 操人91| 婷婷六月天| 97这里都是精品| 超碰79人人乐| 激情五月天社区| 三级特黄60分钟播放| 欧美写真视频一区| 蜜桃香蕉久草精品在线| 亚洲一本色道中文无码aV天美| 婷婷99狠狠躁天天躁| 东京热视频网| av麻豆啪啪| 亚洲不卡三级手机播放| 泰国AV在线观看| 啊啊啊爽爽| 爆乳免费黄网站| 精品国产乱码久久久久久蜜臀| 亚洲天堂 视频你懂的| 日本性一区| 免费一级欧美片片线观看| 91痴汉| 久久香蕉影院| 午夜精品久久一区二区| 99精品丰满人妻| α√在线| 欧美色图 色综合图| 国产黄色动态精品| 婷婷色导航| 91av熟女人妻| 撸无码不卡免费视频| 蜜桃色色网站视频三区| 日韩亚洲精品一区二区| 欧美写真视频一区| 伊人丝袜美腿高跟在线观看高清| 日韩不卡毛片Av免费高清| 国际精品久久久| 久日91在线| 亚洲日产专区| 乱伦熟女区| 久久久精品九| 综合欧美激情网| 精品一区二区三区四区女| 国产精品人妻无码久久久老鸭窝| 天天日天天搞天天干| 欧美资源| 不卡av免费在线网址| 蜜臀99精品国产高清在线观看| 日本性一区| 久久极品一区二区| 亚洲精品无码久久AV| 伊人精品视频| 日本免费二区三区| 青操影院| 久久亚洲婷婷| 无码乱人伦中文视频| 亚洲欧美另类激情小说| 人妻蜜桃臀| 国产精品久久久午夜夜伦鲁鲁| 亚州久久9| 91N综合在线| 中文字幕97色| 影音先锋一区二区在线资源| 天天香香欲综合| 欧美日本久久精品一区| 欧美熟爽综合| 97综合国产精品高潮久久| 欧美天堂日韩三级国产传媒| 大香蕉欧美伊| 大肉棒导航| 色偷偷超碰亚洲| 久久黄黄黄| 久久二| www熟女乱伦com| 久久久精品电影| 伊人久久大香线蕉无码| 久久久国产亚洲精品系列| 乱伦日本色图AⅤ| 九月丁香婷婷| 精品无码一二三四区| 夜夜操一区二区| 网友自拍第1页| 欧美色图成人网一区二区| 舔足天天操天天射| 99国产精品自在自在| 亚洲人在线| 日韩成人免费电影| 亚洲乱色熟女一区| 999 久久久| 探花一区二区三| 美女黄码视频午夜| 人妻熟女一区在| 九九国产| 欧美激情久操网| 日韩无码三级影院| 高清视频一区| 大香蕉人妻| 精品无码久久久久久久久果冻糖心 | 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美 亚洲 大香| 吉川爱美98堂在线| 91操熟女视频| 性开放中文AV高清无码免费看| 9色在线| 国产 大胆 对白| 日本性感人妻91| 99久久9| 久久超碰天天| 国产色呦呦| 欧美传媒一区| www.伪伪| 青青操视频在线| 免费的黄片有限公司| 99热97| 搡老女人911熟妇老熟女| 无码99| 91情色| 精品十三区| 精品国产91av一区二区三区| sss视频华人在线| 欧美国产精品久久九九| 1024亚洲中文字幕久在线看片你懂的| 成人小电影网站tex| 久久伊人大香蕉| 蜜臀久久99精品久久久久| 无码91| 五十路六十路素人熟女| av线电影| 60秒不遮不挡| 蜜区区视频79| 巨爆乳一区二区爆乳区| 亚洲一区日韩| 久久亚洲熟妇在线视频| 2026国产精品视频| 国产免费一区二区在线A片视频| 精人妻一区二区三区| 97超碰天天爱天天爱| 婷婷丁香熟妇综合网| 久久久啊啊啊| 台湾佬中文娱乐自偷自拍| 国产日韩精品无码去免费专区国产| 内射白嫩美女| 香蕉国产97| 久久人人舔人人爽舔人人av片| 老外又粗又长一晚做五次| 免费一级毛片在线视频观看| 蜜臀无码视频在线观看| 看日韩黄片| 91热色| 久久久久久久久久久久黄色| 成人性爱电影网| 激情天天视频| 91亚州| 天天影视综合色| 日本最新免费韩国1区2区视频播放| 国产激情在线| 色欲无码人妻日韩欧美精品| 加勒比综合| 男人的天堂99| 加勒比av网| 中出在线视频| 欧美亚洲综合999| 青青伊人久久| 另类亚洲图色| 国产高清不卡视频| 一道本东京热加勒比一区二区三区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 你想操日本小逼吗| 激情五月综合开心五月| 久久在线观看免费视频| 啪啪啪综合网| 91精品国产91综合久久蜜臀| 狠狠爱大香蕉| 小说区 图片区色 综合区| 国产家庭乱伦表演| yaouchengrenav| 神马久久久久久伦理片| 热久日综合| 日本色日夜干| 欧美韩国你懂得在线| 性久久| 91亚洲电影| 少妇极品熟妇人妻无码| 性色亚洲| 337p大胆噜噜噜噜噜91Av| 中文字幕成人| 99这里只有精品| 无码免费在线观看黄色片| 亚洲色图欧美色图日韩色图| 男啪女色黄无遮挡免费观看| 五月婷婷色| 青青草密桃在线播放| 六月婷婷综合| 亚洲 暴爽 AV人人爽日日碰| 91精品在线播放| 国产传媒午夜理伦精品| 免费av大片| 午夜呻吟欧美| 99热线麻豆| 天天色,天天干,天天干| 五月天激情网图片| 日本好吊色视频| 草草电影院| 色欲久久综合| 久草线上视频免费看| 超碰97人人cao| 我要看免费韩日黄片| 亚洲中文字幕av| 久久精品一区二区三区不卡| 婷婷丁香六月| 夜色97| 大学生美女口爆| 天天爽夜夜操| 欧美综合综合| 91成人精品在线播放| 裸体1区| 天天操夜夜嗨| 日韩97视频!在线| 欧美翘臀视频网站一区二区三区| 国产精品一级特黄aaa大片在线观看| 97色爱| 亚洲欧洲无码bt精品合集| 丁香五月天婷婷姐| 人妻啊啊人妻啊| www..com操老师| 五月天色色网站| 天天看综合网| 亚洲国内精品成人不卡| 天天操人人操骚逼网站| 人妻 欧美 中文| 操逼视频亚洲| 高清无码91| 最新一二三区视频| 亚洲AV无码国产精品久久久久| 青青草原香蕉日本Ap| www.激情| 91 丝袜在线播放| 一区=区三区视频| 综合五月天| 两女互慰AV高潮喷水在线观看| 亚洲综合另类| 日韩免费av片高清无码| 欧美老妇女内射网址| 2021久久国产综合精品青草| 欧美色97| 欧美 牲| 日韩无码专区| 超碰成人公开| 91亚洲欧美激情| 91AV天美在线视频| 爆乳免费黄网站| 欧美成人性爱视频大全| 欧美一级A一级a爱片久久| 精品女同一区| 天天日天天射天天干| 99精品在线| av在线免费一区二区| 国产精品精品系列在线观看| 91四海无码日韩欧美| 91久久国产综合精品| 欧美专区在线| 天天干,夜夜爽| 强奸乱伦动态污图免费| 欧美日韩一区二区三区四区蜜桃| 亚洲丝袜综合| 欧美在线电影| 亚洲天在线| 超碰天天去日穴| 爱丝福利| 玖色av| 夜夜爽夜夜摸夜夜操免费视频| 骚逼一区二区| 亚州色国| 内射黑丝袜| 久久精品91| 欧美久久人人网| 欧美劲爆视频一区二区| 四虎精品永久在线观看| 2020中文字幕| 亚州操逼图| 91痴汉| 精品婷婷| 欧美青青视频| 91性片| 在线观看不卡一区二区三区| 欧美日韩电影成人在线| 99视频内射三四| 蜜桃传媒一区二区亚洲| 天天看人人操屄犊摸阴| 搡老女人老妇女老妇老熟女怎么读| 久久欧美1卡2卡3| 亚洲无码精品AV久久久| 色婷婷综合久久久久中文一区二区| 丰满人妻-区二区三区免费| 美女人妻色网站| 久久精品电影| 最近二区三区视频大全| 亚洲欧美日韩二区视频| 婷婷激情五月| 日日天天久久啊啊aaa| 国产高清在线自在拍69| 欧美激情亚洲| 天堂а√在线最新版在线| 东京热男人的天堂精品| 日本欧美成人片AAAA| 欧美日韩少妇色情| 人妻第一页| 国产精品无套内谢| 伊人五月天青青草婷婷| 99这里只有精品| 天天狠操| 少妇同性| 国产精品美女视频诱惑| 国产又色又爽又舒服的三级视频| 国产夜夜艹| 少妇熟女一区二区三区| 天天视频综合在线观看视频| 丝袜天堂| 又粗又长又大国产不卡| 亚洲欧美经典一区二区| 婷婷九月国产| 蜜乳AV一区| 日韩在线视频1234| 亚洲精品aa久久伊人| 理论久久婷婷网8| 视频在线中文字幕| 亚洲久草AV色图| 久久久久久久久久精| 蜜臀AV成人精品蜜臀| 丝袜综合色图| 在线国产福利网址导航| 91 国产丝袜在线播放-百度| 5月婷婷6月六月丁香| 夜夜春夜夜操| 91欧美高清| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 亚洲欧美精品一区天堂久久 | 欧美精品第3页| 亚洲最大无码中文字幕网站| 亚洲 欧美都市激情| 99热久| 91视频观看网站| 久草色在线观看| 超碰在线日韩一区| 亚洲色啪| 97精品人妻一二三四| 天天夜夜rb| 伊人久久综合影院精品久久久| 3PAV乱伦视频| 激情接吻视频久久久久久| 99中出在线| 日欧美色| 欧美日韩午夜精品一区二区三区| 偷拍欧美综合| 天堂亚洲欧美| 2024黄色视频| 干婷婷综合网| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 午夜福利国产欧美日韩夜夜| 亚洲 另类 丝袜 自拍 动漫| 99re国产中文字幕| 人人性爱视频免费| 中出20p| 粉嫩少妇自慰在线| 成人在线日韩| 人人妻人人狠人人| 欧美日韩大黄片| 青青在线视频日韩欧美| 天天大干大香蕉| 亚州色图欧美| 用力操死我| 你操综合| 91亚州日韩高清| 一起草av| 婷婷五月色| www.超碰在线| 狠狠色婷婷777| 亚洲成?V人片在线观看福利| 亚洲综合另类小说色区亚洲成av人片在www | 亚洲国产欧美中文永久| 干日本人少妇午夜寂寞影院| 欧美激情视频在线一区| 人人妻碰人人免费| 天天操夜夜操| 国产精品一区二区a| 欧亚无码视频| 操逼日批| 亚洲无吗在线视频| 久久久国产成人一区二区三区在线| 激情网色| 激情久久久| 五月丁香在线| 青青草原综合久久大伊人精品| 亚洲欧美综合图片| 天天视频黄| 韩国轻伦国内自拍一区| 一级AV性爱| 超碰97亚洲区| 成人无码影片视频在线| 全国男人天堂网| 欧美三级中文字幕hd| 天天看少妇| 天天综合麻豆视频| 人人操人人摸人人骑| 人人摸人人叼| 亚洲少妇诱惑| 四虎影视欧美| 亚洲色图殴美色图激情乱伦| 夜夜操狠狠操| 男插女青青影院| 蜜区区视频79 | 色丁香五月婷婷| 色九九九九| 成人三一级一片aaa| 四虎国产精品永久地址入口| 自慰白浆在线观看| 91天天综合网,天天综合网| 国产精品动态一区二区三区四四| 超碰97 线线 在现| 操逼网免费无码视频| 99九九久久| 在线综合网| 九九99久久| 国产精品禁久久久精品| 操www| 97综合国产精品高潮久久| 偷拍视频青青草在线视频| www.av在线观看| 日本高清熟女久久一区| 日韩一区二区精彩视频| 天堂岛av| 欧美日韩1234| 内射中出日韩在线观看视频| 亚洲无码一区成人免费午夜| 粉嫩av在线一区二区| AV色五月天| 一级aaaaa欧美中文字幕录像片| 人妻一区久久二区三区色播| 91久久九九精品国产综合| 中文字幕视频2区| 成人五级久久| 精品久久九| 国产激情在线| 麻豆成人AV| 国产白领连续中出在线观看| 亚洲熟女乱色一区二区三区| 俺也射| 国产9l 大屁股| 中文字幕91综合| 一级做a爰片性色毛片久久| 男生女生啊啊啊啊| 欧美日韩激情无码专区| 色偷偷综合91久久噜噜| 丁香六月婷| 亚洲一区日韩精品中文字幕| 伊人久久大香线综合无码| 国产99精品一区二区三区免费| 日本新免费二区三区| 婷婷中文字幕| 粉嫩av久久一区二区三区| 综合在线导航一区| 日本性爱不卡视频| 狠狠综合网| A啊啊在线观看| 国产精品丝袜在线| 黄片视频观看| 午夜理论片在线观看免费| 国产激情av女片自拍| 无码高清操逼网址| 大香蕉伊人75| 欧美性五月| 欧美论理片| 二级久久网| 日韩人妻精品久久久久| 日韩性爱网址| 性爱乱伦网址| 亚洲AV无码黄色强奸| 日韩99999| 亚洲影视高清第一页| 日本熟妇精品九九| 天天影视网综合少妇| 18禁在线视频| 欧亚成人在线视频| 国产又爽又黄| 97Ai亚洲| 久久妇| 色大师网站www永久网站视频| 开心五月天激情网| 女人被添高潮免费视频| 最新啪啪视频| 天天做天天爱| 天堂岛av| 日韩影片中文字幕一区二区三区| 美女露胸露奶头| 大香蕉手机在线视频| 偷拍欧美激情| 97视频在线观看高清资源| 欧美狠狠鲁| 日韩一级二级三级免费看完整版国语版 | 91 丝袜在线观看| 校园春色综合香蕉| 久久久久久久久9| 久久区| 大香蕉黄色一级片免费看| 老司机射| 极品色社| 久久99草| 欧美97爱| 人妻一区视频| 欧美后进式| 欧美91在线+|+欧美| 97视频在线免费| 黄人人操人人操| 福利在线黄片| 大香蕉 222| 神马久久免费电影观看| 农村女一级毛卡片| 亚洲操人| 天天天天做夜夜夜夜做| 果冻传媒A片麻豆熟妇人妻| 亚洲国产一级黄色视频| 乱伦系列一区二区| 蜜臀久久99精品| 亚洲AV无码乱码| 热99这里只有精品| 欧美色日| 中文字幕乱码人妻二区三区| 欧美夜夜狠| 97伊人超碰| 亚洲成熟国产精品美女| 日日夜夜噜| 人人性爱视频免费| 婷婷香蕉欧美在线一区二区三区| 呻吟 欧美 日本 中出| 中文字幕精品一区欧美| 蜜臀在线免费观看在线免费观看| 日本欧美国内在线| 蜜臀一二三| 美女的肌被草喷水视频| 婷婷六月色| 日韩一区二区高清在线观看的| 欧美高清18A片| 熟妇无码视频三区| 亚洲AV不卡在线观看尤物| 五月大香蕉| 高清国产性猛交xxxx乱大交| 久久精品72| 夜夜操青青草| 物业黑人 AV一区| 97人人操人人干| 亚洲人成网站7777| 久操B网| av一区二区三区不卡| 天美传媒国产原创中文字幕亚洲欧美另类 | 伊人五月天| 91天天| www.色婷婷.com| 国产亚洲福利第一页丝袜| 国产超碰人人操| 内射黑丝袜| 亚洲黄片免费在线播放| 用力操死我| 91丝袜视频在线观看| 日韩99精品视频综合区| 久操操| 花野真衣| 亚洲狠狠入| 91精品综合久久久久久五月丁香| 熟女熟妇一区二区三四区| 激情综合网激情五月天| 无码不卡亚洲成?人片| 色情亚洲日本成人| 日亚韩精品视频二区三| 国产精品白丝| 国产不卡中文字幕免费avi| 草莓精品视频| 十八禁啪啪视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 偷拍三区| 一卡二卡三卡| 人人搡人人肉久久精品| 久久久久国产无av| 高清无码在线播放网站| 在线洲亚线| 99爱爱| 亚洲揄拍网| 色婷婷电影网| 夜间福利片1000无码| 精品人妻中文字幕高清| 国产精品97超碰| 久久国产精品熟女人妻| 欧美熟妇视频| 丝袜六区| 国产精品视频麻豆入口| 九九九九九九九九九九九蜜桃| 91蜜桃婷婷狠狠久久综合9色| 色色色欧美| 天堂俺去俺来也www久久婷婷| 酒色综合网| 91熟女丨老女人| 久久香蕉国产线看观看亚洲女人 | 丝袜内射| 欧美顶级黄片AAAAA在线免费看| 伦激情人妻另类人妻| 亚洲自拍偷拍视频在线| 另类欧美色| 欧美成人贴图| 蜜臀AV午夜精品久| 东京热综合久久一区二区| 青青草一本道福利视频| 97在线视频观看免费| 色综合 加勒比| 色色97爱| 午夜操一操| 国产精品久久久久久久AV大片| 国产精品扒开腿做爽爽爽视频| 亚洲乱妇p22| 日本黄大片在线观看视频| heyZO天然素人无码AⅤ专区| 亚洲人妻中文高清| 91人妻尻屄视频| 另类综合另类| 精品免费国产二区三区| 欧美日韩美女精品久草一区二区三区| 精品少妇一区二区| 91成人18| 日韩欧美字幕亚洲一区二区| 成人网址在线观看| 大香蕉伊人一区在线观看| 人妻五十路在线| suv精产一二三区| 成年人黄色小视频网站| 女人爽到高潮潮喷18禁网站| 久久AV无码1区2区3区| 神马九九九| 男插女青青影院| 激情五月天视频| 97超碰巨乳| 97啪啪| 67194国产| 色阁阁AV综合网| 一个国产在线综合网站| 五月色综合| 久久影视二区三区行押| 黄色激情电影在线观看| 99热在线播放| 久久蜜桃一区二区| 把腿张开老子CAO烂你| 啊啊啊在线观看免费视频| 91无遮挡| 日韩乱码Av| 中文字幕黄色一起草| 欧亚乱色熟女一区二区| 日韩精品第3页| 日韩一级性爱无码| 91色艳| 加勒比综合网| 欧美色三级片91| 日本不卡一区二区| 国产剧情一区在线观看| 欧美 亚洲 在线| 污啪啪啪视频| 亚洲无码 国产无码| 91丝袜美女| 操操吧亚洲乱伦视频| 91性感网站| 亚洲精品久久久久毛片A片拉屎| 欧美淫穴| 日韩欧洲操屄视频| 乱老熟女一区二区三区| 亚洲第一狼人丝袜美女另类| 夜色97| 思思热在线视频精品| 久久久性| 91丝袜在线视频| 无码99| 日韩成人在线性爱视频| 毛片麻豆91糖心精品毛情片| 另类小说五月天| a片偷拍视频| 中文字幕第7页| 超碰97最新人妻| 五月丁香婷婷综合| 亚洲乱码尤物193YW| 乱论91| xxxx网站亚洲精品| 激情五月综合开心五月| 偷拍 欧美 日韩| 加勒比海色香蕉婷婷| 欧美精品庄| 少妇久久久久久久| 日韩成人高清一区二区| 国产9区| 成人精品久久久午夜福利| 天美传媒精品一区二区| 一区在线精品中文字幕| 东北女人无套内谢视频| 久久久蜜桃臀无码视频| 人妻一区二区三区熟女|