0Pricing
Learn AI with Python · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. องค์ประกอบของอนุกรมเวลาและภาวะสถิต
  2. แบบจำลอง ARIMA และ SARIMA
  3. Prophet สำหรับการพยากรณ์อัตโนมัติ
  4. LSTM สำหรับการพยากรณ์อนุกรมเวลา
← กลับไปที่ Learn AI with Python