LSTM สำหรับการพยากรณ์อนุกรมเวลา
การเตรียมลำดับข้อมูล LSTM แบบไร้สถานะเทียบกับแบบมีสถานะ หน้าต่างย้อนดู และการพยากรณ์หลายขั้น
LSTM สำหรับการพยากรณ์อนุกรมเวลา เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงใช้ LSTM กับอนุกรมเวลา
LSTM (หน่วยความจำระยะสั้นและระยะยาว) เป็นเครือข่ายประสาทแบบวนซ้ำที่จดจำรูปแบบตลอดลำดับที่มีความยาวมากได้ โดยใช้เซลล์หน่วยความจำที่มีประตูควบคุม แบบจำลองนี้สามารถจำลองความสัมพันธ์แบบไม่เชิงเส้นที่ ARIMA ทำไม่ได้ จึงเหมาะสำหรับอนุกรมที่ซับซ้อนเมื่อมีข้อมูลเพียงพอ
การแบ่งลำดับเป็นหน้าต่าง
LSTM เรียนรู้จาก หน้าต่าง ซึ่งเป็นช่วงข้อมูลจากขั้นตอนในอดีตที่มีความยาวคงที่และใช้คาดการณ์ค่าถัดไป หากหน้าต่างมีความยาว 10 แบบจำลองจะเห็นขั้นตอนที่ 1–10 เพื่อคาดการณ์ขั้นตอนที่ 11 จากนั้นจะใช้ขั้นตอนที่ 2–11 เพื่อคาดการณ์ขั้นตอนที่ 12 และทำเช่นนี้ต่อไป
การสร้างหน้าต่างด้วยโค้ด
ฟังก์ชันช่วยจะแปลงอนุกรมหนึ่งมิติให้เป็นคู่ข้อมูลนำเข้าและเป้าหมาย
import numpy as np
def make_windows(series, window):
X, y = [], []
for i in range(len(series) - window):
X.append(series[i:i+window])
y.append(series[i+window])
return np.array(X), np.array(y)
X, y = make_windows(values, window=10)การปรับสเกลข้อมูล
เครือข่ายประสาทจะฝึกได้ดีกว่าเมื่อข้อมูลนำเข้าถูกปรับสเกล ใช้ MinMaxScaler เพื่อแมปค่าให้อยู่ในช่วง [0, 1] และอย่าลืมใช้ inverse_transform กับผลการคาดการณ์ในภายหลัง
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled = scaler.fit_transform(values.reshape(-1, 1))การปรับรูปร่างข้อมูลสำหรับ LSTM
ชั้น LSTM ของเคอราสคาดหวังข้อมูลนำเข้าที่มีรูปร่างเป็น (ตัวอย่าง, ขั้นเวลา, คุณลักษณะ) สำหรับอนุกรมตัวแปรเดียว จำนวนคุณลักษณะจะเท่ากับ 1
# X is (samples, timesteps); add a feature axis
X = X.reshape((X.shape[0], X.shape[1], 1))
print(X.shape) # (samples, timesteps, 1)การสร้างแบบจำลอง
โครงสร้างอย่างง่ายคือ ชั้น LSTM(50) หนึ่งชั้นที่ส่งข้อมูลไปยังเอาต์พุต Dense(1) ซึ่งคาดการณ์ค่าถัดไป
from tensorflow.keras import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(50, input_shape=(X.shape[1], 1)),
Dense(1)
])เหตุใดจึงใช้ชั้นหนาแน่นขนาด 1
การคาดการณ์ล่วงหน้าหนึ่งขั้นเป็นการถดถอยที่มีเอาต์พุตตัวเลขเพียงค่าเดียว ดังนั้นชั้นสุดท้ายจึงเป็น Dense(1) โดยไม่มีฟังก์ชันกระตุ้น หากต้องการคาดการณ์หลายขั้น จะใช้ Dense(n_steps)
การคอมไพล์
ใช้ตัวปรับค่า adam และฟังก์ชันสูญเสีย mse (ความคลาดเคลื่อนกำลังสองเฉลี่ย) ซึ่งเป็นตัวเลือกมาตรฐานสำหรับการถดถอยที่มีเป้าหมายต่อเนื่อง
model.compile(optimizer="adam", loss="mse")การฝึกสอน
ฝึกแบบจำลองด้วยข้อมูลที่แบ่งเป็นหน้าต่าง การแบ่งข้อมูลสำหรับตรวจสอบจะช่วยติดตามความสามารถในการนำไปใช้กับข้อมูลใหม่ในแต่ละรอบการฝึก
history = model.fit(
X, y,
epochs=50,
batch_size=32,
validation_split=0.2
)การคาดการณ์
คาดการณ์จากหน้าต่างใหม่ แล้วใช้การแปลงย้อนกลับเพื่อคืนค่าให้เป็นสเกลเดิม
pred_scaled = model.predict(X_test)
pred = scaler.inverse_transform(pred_scaled)การซ้อนชั้นและการปรับแต่ง
สำหรับอนุกรมที่ยากขึ้น ให้ซ้อนชั้น LSTM หลายชั้น โดยกำหนด return_sequences=True ให้ทุกชั้นยกเว้นชั้นสุดท้าย และเพิ่มดรอปเอาต์ ชั้นที่มากขึ้นจะจับรูปแบบที่ลึกขึ้นได้ แต่ต้องใช้ข้อมูลมากขึ้นและมีความเสี่ยงที่จะเกิดการเรียนรู้เกินพอดี
model = Sequential([
LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
LSTM(50),
Dense(1)
])ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับการคาดการณ์ด้วย LSTM ของคุณ
สรุปทบทวน
คุณได้เตรียม หน้าต่าง ปรับสเกลด้วย MinMaxScaler ปรับรูปร่างเป็น (ตัวอย่าง, ขั้นเวลา, คุณลักษณะ) สร้าง LSTM(50) + Dense(1) คอมไพล์ด้วย adam/mse ฝึกสอน และคาดการณ์โดยแปลงค่ากลับเป็นสเกลเดิมแล้ว นี่เป็นการจบหลักสูตรอนุกรมเวลา หลักสูตรถัดไปคือระบบแนะนำ
คำถามที่พบบ่อย
บทเรียน “LSTM สำหรับการพยากรณ์อนุกรมเวลา” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “LSTM สำหรับการพยากรณ์อนุกรมเวลา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “LSTM สำหรับการพยากรณ์อนุกรมเวลา”
การเตรียมลำดับข้อมูล LSTM แบบไร้สถานะเทียบกับแบบมีสถานะ หน้าต่างย้อนดู และการพยากรณ์หลายขั้น คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “LSTM สำหรับการพยากรณ์อนุกรมเวลา” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- องค์ประกอบของอนุกรมเวลาและภาวะสถิต
- แบบจำลอง ARIMA และ SARIMA
- Prophet สำหรับการพยากรณ์อัตโนมัติ
- LSTM สำหรับการพยากรณ์อนุกรมเวลา