Mô hình Không gian Trạng thái: Cách hoạt động và Ứng dụng
Tìm hiểu cách mô hình không gian trạng thái biểu diễn hệ động thông qua trạng thái ẩn và quan sát, bao gồm phương trình trạng thái và quan sát, lọc Kalman, và các ứng dụng chuỗi thời gian.
Hãy hình dung một con tàu di chuyển trong sương mù. GPS bị nhiễu, dòng hải lưu thì không biết trước, còn vị trí chính xác thì không thể đo trực tiếp. Nó chỉ có thể được ước lượng từ các cảm biến. Mô hình không gian trạng thái được xây dựng chính xác cho kiểu bài toán này: những hệ thống mà thứ bạn quan tâm là ẩn, và bạn chỉ có các phép đo không hoàn hảo về nó.
Bài viết này trình bày cấu trúc của mô hình không gian trạng thái, cách ước lượng các trạng thái ẩn thông qua lọc và làm trơn, vai trò của bộ lọc Kalman, và cách triển khai các mô hình này trong Python và R.
Mô hình Không gian Trạng thái là gì?
Mô hình không gian trạng thái là một khuôn khổ toán học để mô tả một hệ thống thay đổi theo thời gian thông qua các trạng thái mà bạn không thể quan sát trực tiếp. Có hai đại lượng chính: trạng thái, tức thông tin nền tảng mô tả hệ thống tại mỗi thời điểm, và quan sát, tức phép đo gián tiếp có nhiễu mà bạn thực sự thu được.
Mô hình quy định hai điều: trạng thái ẩn tiến hóa từ bước thời gian này sang bước kế tiếp như thế nào, và trạng thái ẩn đó tạo ra các quan sát bạn thấy ra sao. Sự tách biệt này làm cho khuôn khổ trở nên rất tổng quát. Nó xuất hiện trong xử lý tín hiệu, kinh tế lượng, hệ thống điều khiển, và học máy — thường là mọi người không nhận ra họ đang làm việc trong cùng một cấu trúc hình thức.
Cách Mô hình Không gian Trạng thái hoạt động
Lõi logic theo một chuỗi đơn giản tại mỗi bước thời gian:
Trạng thái trước → Trạng thái hiện tại → Quan sát
Hệ thống chuyển từ trạng thái ẩn trước đó sang trạng thái mới. Quá trình chuyển tiếp này có thể có tính ngẫu nhiên, vì các hệ thống thực tế không hoàn toàn dự đoán được. Trạng thái mới sau đó tạo ra một phép đo quan sát được, vốn đi kèm với nhiễu riêng. Bạn không bao giờ nhìn thấy trạng thái trực tiếp; bạn chỉ thấy những gì nó tạo ra, một cách không hoàn hảo.
Điều bạn có thể làm là dùng mỗi quan sát mới để cập nhật ước lượng tốt nhất về trạng thái ẩn. Đó là bài toán suy luận, và đó là điều hầu hết các thuật toán quanh mô hình không gian trạng thái được thiết kế để giải.
Các trạng thái ẩn tạo ra các quan sát nhiễu theo thời gian. Ảnh: Tác giả.
Phương trình Trạng thái và Quan sát
Cấu trúc của mô hình quy về hai phương trình. Một cho cách trạng thái chuyển động, một cho những gì bạn có thể đo.
Phương trình trạng thái
Phương trình trạng thái mô tả cách trạng thái ẩn tiến hóa. Dạng vô hướng:
Ở đây, zₜ là trạng thái ẩn hiện tại, a biểu thị động lực chuyển tiếp (mức độ trạng thái trước đó được duy trì), và wₜ là nhiễu quá trình — sự ngẫu nhiên trong cách hệ thống chuyển động. Trong dạng ma trận cho hệ đa biến, a trở thành ma trận chuyển tiếp, nhưng ý tưởng là như nhau.
Phương trình quan sát
Phương trình quan sát liên kết trạng thái ẩn với những gì bạn đo được:
yₜ là phép đo quan sát được, c định nghĩa mối quan hệ quan sát, và vₜ là nhiễu đo lường. Hãy bắt đầu với các phiên bản vô hướng như thế này trước khi bận tâm đến dạng ma trận tổng quát. Ma trận chỉ thêm tính tổng quát, không phải ý tưởng mới.
Ví dụ đơn giản về Mô hình Không gian Trạng thái
Hãy nghĩ về một chiếc xe chạy trên đường. Vị trí và vận tốc thực là trạng thái ẩn. Bạn không thể quan sát trực tiếp chúng. Những gì bạn có là tín hiệu GPS, vốn bị nhiễu. Phương trình trạng thái mô hình hóa cách vị trí và vận tốc thay đổi giữa các bước thời gian (xe tiếp tục chạy với tốc độ xấp xỉ như cũ). Phương trình quan sát liên kết vị trí thực với đọc số GPS, vốn có thể sai lệch vài mét.
Một trực quan hóa tốt sẽ có ba đường: vị trí thực (mượt), các đọc số GPS (rải rác quanh giá trị thực), và vị trí ước lượng từ mô hình (gần giá trị thực, mượt hơn số liệu GPS thô). Lấy được đường thứ ba là toàn bộ nhiệm vụ của mô hình.
Cách ước lượng Trạng thái
Định nghĩa mô hình chỉ là một nửa vấn đề. Bạn còn cần suy luận các trạng thái ẩn từ những quan sát bạn thực sự có. Ba tác vụ bao trùm không gian này:
Lọc ước lượng trạng thái hiện tại chỉ dùng các quan sát đến thời điểm hiện tại — suy luận thời gian thực, hữu ích cho bám theo và điều khiển. Làm trơn quay lại và điều chỉnh các ước lượng đó bằng cách dùng cả quan sát trước và sau một thời điểm — thường chính xác hơn, nhưng cần toàn bộ chuỗi. Dự báo ngoại suy về phía trước để ước lượng các trạng thái tương lai trước khi quan sát đến.
Đa số ứng dụng dùng lọc. Làm trơn xuất hiện khi bạn phân tích hồi cứu và độ chính xác quan trọng hơn tốc độ.
Lọc Kalman và Mô hình Không gian Trạng thái
Bộ lọc Kalman là thuật toán để lọc trong các mô hình không gian trạng thái tuyến tính Gauss. Cần chính xác: mô hình không gian trạng thái là mô hình; bộ lọc Kalman là một phương pháp suy luận áp dụng cho một lớp cụ thể của các mô hình đó.
Bộ lọc hoạt động theo hai bước luân phiên. Ở bước dự báo, nó dùng phương trình trạng thái để chiếu ước lượng hiện tại tiến về tương lai, kèm theo thước đo độ bất định của ước lượng đó. Ở bước cập nhật, một quan sát mới đến và ước lượng được điều chỉnh. Mức độ điều chỉnh phụ thuộc vào độ bất định tương đối giữa dự báo và phép đo. Nếu dự báo của mô hình đáng tin cậy, quan sát có ảnh hưởng ít hơn. Nếu tín hiệu GPS sạch và mô hình bất định, quan sát chiếm ưu thế. Sự pha trộn theo trọng số bất định đó là điều giúp bộ lọc Kalman hoạt động hiệu quả trong thực tế.
Có các phần mở rộng cho bối cảnh phi tuyến hoặc phi Gauss: bộ lọc Kalman mở rộng tuyến tính hóa động lực, bộ lọc Kalman không điểm dùng xấp xỉ khéo hơn, và bộ lọc hạt xử lý trường hợp tổng quát bằng cách lấy mẫu. Đó là những bài viết khác.
Các loại Mô hình Không gian Trạng thái
Khuôn khổ này bao phủ nhiều bối cảnh tùy theo giả định của bạn về động lực và nhiễu.
Mô hình không gian trạng thái tuyến tính Gauss là bối cảnh kinh điển: phương trình chuyển tiếp và quan sát tuyến tính, nhiễu Gauss. Lọc Kalman áp dụng trực tiếp và suy luận chính xác là khả thi.
Mô hình không gian trạng thái phi tuyến xuất hiện khi chuyển tiếp trạng thái hoặc quan hệ quan sát không tuyến tính — nghĩ tới con lắc, hoặc mô hình nơi tác động giá giảm dần. Khi đó không còn suy luận chính xác.
Mô hình không gian trạng thái phi Gauss bỏ giả định nhiễu tuân theo phân phối chuẩn. Dữ liệu đếm, kết quả nhị phân, và các quá trình đuôi dày đều thuộc nhóm này.
Mô hình Không gian Trạng thái so với các mô hình chuỗi thời gian liên quan
Có vài so sánh đáng nêu rõ, vì ranh giới ở đây mờ hơn vẻ bề ngoài.
Mô hình không gian trạng thái so với ARIMA
ARIMA mô hình hóa trực tiếp các giá trị quan sát và sai số quá khứ của chúng, không đưa vào bất kỳ trạng thái ẩn nào. Mô hình không gian trạng thái đưa các trạng thái tiềm ẩn vào một cách tường minh. Dẫu vậy, mô hình ARIMA có thể được viết lại dưới dạng không gian trạng thái — nên chúng không tách biệt như vẻ ban đầu, và phần mềm thường dùng biểu diễn không gian trạng thái bên trong để khớp ARIMA.
Mô hình không gian trạng thái so với mô hình Markov ẩn
Cả hai đều liên quan đến trạng thái ẩn. HMM cổ điển dùng các trạng thái tiềm ẩn rời rạc (hệ thống ở một trong k chế độ), trong khi hầu hết mô hình không gian trạng thái dùng trạng thái liên tục. Với nhận dạng giọng nói, các chế độ rời rạc là hợp lý; với bám theo một vật thể vật lý, trạng thái liên tục là lựa chọn tự nhiên.
Mô hình không gian trạng thái so với mô hình chuỗi thời gian cấu trúc
Mô hình chuỗi thời gian cấu trúc (phân rã chuỗi thành xu hướng, mùa vụ và thành phần bất thường) thường được biểu diễn dưới dạng mô hình không gian trạng thái hơn là cạnh tranh với chúng. Chúng là một trường hợp sử dụng cụ thể của khuôn khổ này.
Mô hình Không gian Trạng thái trong Python và R
Quy trình làm việc tương tự ở cả hai ngôn ngữ — định nghĩa mô hình, khớp nó, và trích xuất các ước lượng trạng thái ẩn.
Mô hình không gian trạng thái trong Python
Thư viện statsmodels cung cấp một giao diện gọn gàng để khớp các mô hình không gian trạng thái. Dưới đây là mô hình mức cục bộ (mô hình cấu trúc đơn giản nhất, trạng thái là random walk và quan sát có nhiễu) được khớp với một chuỗi thời gian:
import statsmodels.api as sm
# Fit a local level (random walk plus noise) model
model = sm.tsa.UnobservedComponents(time_series, level='local level')
result = model.fit(disp=False)# Filtered state estimates (the hidden level at each time step)print(result.filtered_state[0])# Forecast the next 10 periods
forecast = result.forecast(10)Được hỗ trợ bởi
Trạng thái đã lọc cho bạn ước lượng tốt nhất của mô hình về mức ẩn tại mỗi thời điểm. Đó là đầu ra chính bạn quan tâm, không phải các tham số tự thân.
Mô hình không gian trạng thái trong R
Trong R, gói KFAS xử lý các mô hình không gian trạng thái Gauss và rất đáng biết nếu bạn thường xuyên làm trong lĩnh vực này. Quy trình phản chiếu Python: định nghĩa một đối tượng mô hình, khớp nó, và trích xuất các trạng thái đã làm trơn hoặc đã lọc. Hãy diễn giải các ước lượng trạng thái ẩn, không chỉ các thống kê khớp.
library(KFAS)# Fit a local level (random walk plus noise) model
model <- SSModel(time_series ~ SSMtrend(1, Q =NA), H =NA)
fit <- fitSSM(model, inits = c(log(1), log(1)))
out <- KFS(fit$model)# Filtered state estimates (the hidden level at each time step)
out$att
# Forecast the next 10 periods
predict(fit$model, n.ahead =10)Được hỗ trợ bởi
Ưu điểm và Hạn chế của Mô hình Không gian Trạng thái
Giống hầu hết các khuôn khổ mô hình, điểm mạnh và điểm yếu đến từ cùng một chỗ: bạn phải cam kết với một cấu trúc ngay từ đầu.
Ưu điểm: Chúng biểu diễn rõ ràng các quá trình ẩn thay vì che mờ chúng. Chúng xử lý tự nhiên các hệ thống thay đổi theo thời gian. Bất định đo lường được xây dựng ngay trong mô hình, không phải suy nghĩ sau. Và cùng một khuôn khổ hỗ trợ lọc, làm trơn, và dự báo mà không cần thay đổi cấu trúc mô hình.
Hạn chế: Việc chỉ định mô hình có thể khó. Bạn cần quyết định trạng thái ẩn có ý nghĩa gì và nó tiến hóa ra sao, điều này đòi hỏi phán đoán lĩnh vực thực sự. Với các hệ phi tuyến hoặc phi Gauss, suy luận trở nên tốn kém. Và nếu giả định của bạn về động lực hay nhiễu sai, các ước lượng sẽ sai theo những cách không phải lúc nào cũng hiển nhiên.
Kết luận
Một mô hình không gian trạng thái mô tả hai điều: trạng thái không quan sát được tiến hóa theo thời gian như thế nào, và trạng thái đó tạo ra các quan sát bạn có thể đo ra sao. Đó là phương trình trạng thái và phương trình quan sát. Mọi thứ khác (lọc Kalman, làm trơn, dự báo) là về việc suy luận trạng thái ẩn từ dữ liệu mà mô hình tạo ra.
Điều tôi thấy hữu ích ở khuôn khổ này là nó buộc bạn phải nói rõ những gì bạn không biết. Thay vì mô hình trực tiếp các quan sát (như ARIMA), bạn buộc phải cam kết với một câu chuyện về quá trình nền tảng. Đó là một ràng buộc, nhưng cũng là một sự làm rõ. Khi bạn đã viết ra điều bạn cho là trạng thái ẩn và cách nó chuyển động, bài toán suy luận trở nên cơ học. Phần khó vốn là khâu mô hình hóa.
Nếu bạn đến từ các phương pháp chuỗi thời gian kinh điển, mô hình không gian trạng thái đáng để hiểu theo đúng bản chất của chúng, chứ không chỉ như một khái quát hóa từ thứ bạn đã biết. Khóa học Time Series with Python của chúng tôi bao quát bộ công cụ rộng hơn, và nếu HMM hay lọc Kalman là điểm đến tiếp theo của bạn, nền tảng khái niệm ở đây chuyển giao trực tiếp.
Vinod Chugani bắt đầu sự nghiệp tại Tokyo với vai trò Trưởng bàn giao dịch bán hàng Quỹ phòng hộ trẻ nhất của JPMorgan, sau đó lập kỷ lục doanh số cá nhân tại Lehman Brothers, rồi xây dựng một doanh nghiệp phân phối điện tử tại 30 quốc gia vượt mốc doanh thu 100 triệu đô la Singapore trước khi chuyển hướng sang dữ liệu. Tốt nghiệp Kinh tế Duke và là cựu học viên NYC Data Science Academy, anh là một trong ba người nhận học bổng trong hơn 100 ứng viên cho khóa học Building AI Applications của Hugo Bowne-Anderson trên Maven. Hiện nay, anh viết cho DataCamp, KDnuggets, Machine Learning Mastery và Statology về các chủ đề từ thống kê đến AI hành động, và cố vấn cho các chuyên gia dữ liệu tại NYC Data Science Academy với hơn 1.000 buổi kèm 1-1 đã thực hiện.
Câu hỏi thường gặp
Sự khác biệt giữa mô hình không gian trạng thái và mô hình chuỗi thời gian như ARIMA là gì?⌄
ARIMA mô hình hóa trực tiếp mối quan hệ giữa các giá trị quan sát và sai số quá khứ của chúng — không có trạng thái ẩn. Mô hình không gian trạng thái đưa vào một trạng thái tiềm ẩn mà từ đó các quan sát được sinh ra. Trên thực tế, nhiều mô hình chuỗi thời gian (bao gồm ARIMA) có thể được viết dưới dạng không gian trạng thái, nên chúng bổ trợ nhau nhiều hơn là cạnh tranh.
Tôi có cần hiểu lọc Kalman để dùng mô hình không gian trạng thái không?⌄
Không cần để sử dụng — các thư viện như statsmodels trong Python và KFAS trong R xử lý việc lọc bên trong. Nhưng hiểu logic dự báo–cập nhật sẽ giúp bạn diễn giải đầu ra và gỡ lỗi khi mô hình không khớp tốt.
Khi nào tôi nên dùng làm trơn thay vì lọc?⌄
Hãy dùng làm trơn khi bạn có toàn bộ dữ liệu và muốn ước lượng trạng thái chính xác nhất — phân tích hồi cứu, phát hiện bất thường, hoặc làm sạch chuỗi lịch sử. Dùng lọc khi bạn cần ước lượng thời gian thực khi dữ liệu đến.
Điều gì xảy ra nếu hệ thống của tôi phi tuyến?⌄
Bộ lọc Kalman chuẩn không còn áp dụng chính xác. Các lựa chọn phổ biến là bộ lọc Kalman mở rộng (tuyến tính hóa quanh ước lượng hiện tại), bộ lọc Kalman không điểm (dùng xấp xỉ khéo léo hơn), và bộ lọc hạt (lấy mẫu từ phân phối trạng thái và hoạt động cho trường hợp tổng quát).
Tôi chọn những gì để đưa vào trạng thái ẩn như thế nào?⌄
Đây là phần khó — và là quyết định mô hình hóa, không thuần túy thống kê. Trạng thái ẩn nên chứa mọi thứ chi phối quan sát kế tiếp mà bạn không thể đo trực tiếp. Với vật thể chuyển động, thường là vị trí và vận tốc. Với chuỗi kinh tế, có thể là xu hướng nền và thành phần mùa vụ. Bắt đầu đơn giản và chỉ thêm phức tạp nếu mô hình đơn giản rõ ràng thất bại.
Mô hình không gian trạng thái có xử lý được thiếu quan sát không?⌄
Có, và đây là một trong những lợi thế thực sự so với các phương pháp như ARIMA. Khi một quan sát bị thiếu, bộ lọc đơn giản bỏ qua bước cập nhật và truyền dự báo tiến lên. Độ bất định tự nhiên tăng trong khoảng trống, và đó chính là hành vi đúng đắn.
Mối quan hệ giữa mô hình không gian trạng thái và các mô hình chuỗi sâu như LSTM là gì?⌄
Cả hai đều mô hình dữ liệu tuần tự với trạng thái ẩn, nhưng điểm chung dừng lại ở đó. LSTM học động lực trạng thái từ dữ liệu mà không có cấu trúc diễn giải được; mô hình không gian trạng thái chỉ định động lực một cách tường minh và đưa ra ước lượng bất định. Về khả năng diễn giải và tập dữ liệu nhỏ, mô hình không gian trạng thái thường hữu ích hơn. Với tập lớn và mẫu phức tạp, cách tiếp cận mạng nơ-ron thường thắng về hiệu năng thuần túy.
Trạng thái ẩn có luôn một chiều không?⌄
Không. Trạng thái có thể là một vectơ với bất kỳ kích thước nào. Trong ví dụ vật thể chuyển động, trạng thái là hai chiều: vị trí và vận tốc. Trong các mô hình cấu trúc phức tạp hơn, trạng thái có thể bao gồm một thành phần xu hướng, nhiều thành phần mùa vụ, và đồng thời cả một hạng mục hồi quy. Dạng ma trận xử lý đồng nhất tất cả những điều này.
Hãy hình dung một con tàu di chuyển trong sương mù. GPS bị nhiễu, dòng hải lưu thì không biết trước, còn vị trí chính xác thì không thể đo trực tiếp. Nó chỉ có thể được ước lượng từ các cảm biến. Mô hình không gian trạng thái được xây dựng chính xác cho kiểu bài toán này: những hệ thống mà thứ bạn quan tâm là ẩn, và bạn chỉ có các phép đo không hoàn hảo về nó.
Bài viết này trình bày cấu trúc của mô hình không gian trạng thái, cách ước lượng các trạng thái ẩn thông qua lọc và làm trơn, vai trò của bộ lọc Kalman, và cách triển khai các mô hình này trong Python và R.
Mô hình Không gian Trạng thái là gì?
Mô hình không gian trạng thái là một khuôn khổ toán học để mô tả một hệ thống thay đổi theo thời gian thông qua các trạng thái mà bạn không thể quan sát trực tiếp. Có hai đại lượng chính: trạng thái, tức thông tin nền tảng mô tả hệ thống tại mỗi thời điểm, và quan sát, tức phép đo gián tiếp có nhiễu mà bạn thực sự thu được.
Mô hình quy định hai điều: trạng thái ẩn tiến hóa từ bước thời gian này sang bước kế tiếp như thế nào, và trạng thái ẩn đó tạo ra các quan sát bạn thấy ra sao. Sự tách biệt này làm cho khuôn khổ trở nên rất tổng quát. Nó xuất hiện trong xử lý tín hiệu, kinh tế lượng, hệ thống điều khiển, và học máy — thường là mọi người không nhận ra họ đang làm việc trong cùng một cấu trúc hình thức.
Cách Mô hình Không gian Trạng thái hoạt động
Lõi logic theo một chuỗi đơn giản tại mỗi bước thời gian:
Trạng thái trước → Trạng thái hiện tại → Quan sát
Hệ thống chuyển từ trạng thái ẩn trước đó sang trạng thái mới. Quá trình chuyển tiếp này có thể có tính ngẫu nhiên, vì các hệ thống thực tế không hoàn toàn dự đoán được. Trạng thái mới sau đó tạo ra một phép đo quan sát được, vốn đi kèm với nhiễu riêng. Bạn không bao giờ nhìn thấy trạng thái trực tiếp; bạn chỉ thấy những gì nó tạo ra, một cách không hoàn hảo.
Điều bạn có thể làm là dùng mỗi quan sát mới để cập nhật ước lượng tốt nhất về trạng thái ẩn. Đó là bài toán suy luận, và đó là điều hầu hết các thuật toán quanh mô hình không gian trạng thái được thiết kế để giải.
Các trạng thái ẩn tạo ra các quan sát nhiễu theo thời gian. Ảnh: Tác giả.
Phương trình Trạng thái và Quan sát
Cấu trúc của mô hình quy về hai phương trình. Một cho cách trạng thái chuyển động, một cho những gì bạn có thể đo.
Phương trình trạng thái
Phương trình trạng thái mô tả cách trạng thái ẩn tiến hóa. Dạng vô hướng:
Ở đây, zₜ là trạng thái ẩn hiện tại, a biểu thị động lực chuyển tiếp (mức độ trạng thái trước đó được duy trì), và wₜ là nhiễu quá trình — sự ngẫu nhiên trong cách hệ thống chuyển động. Trong dạng ma trận cho hệ đa biến, a trở thành ma trận chuyển tiếp, nhưng ý tưởng là như nhau.
Phương trình quan sát
Phương trình quan sát liên kết trạng thái ẩn với những gì bạn đo được:
yₜ là phép đo quan sát được, c định nghĩa mối quan hệ quan sát, và vₜ là nhiễu đo lường. Hãy bắt đầu với các phiên bản vô hướng như thế này trước khi bận tâm đến dạng ma trận tổng quát. Ma trận chỉ thêm tính tổng quát, không phải ý tưởng mới.
Ví dụ đơn giản về Mô hình Không gian Trạng thái
Hãy nghĩ về một chiếc xe chạy trên đường. Vị trí và vận tốc thực là trạng thái ẩn. Bạn không thể quan sát trực tiếp chúng. Những gì bạn có là tín hiệu GPS, vốn bị nhiễu. Phương trình trạng thái mô hình hóa cách vị trí và vận tốc thay đổi giữa các bước thời gian (xe tiếp tục chạy với tốc độ xấp xỉ như cũ). Phương trình quan sát liên kết vị trí thực với đọc số GPS, vốn có thể sai lệch vài mét.
Một trực quan hóa tốt sẽ có ba đường: vị trí thực (mượt), các đọc số GPS (rải rác quanh giá trị thực), và vị trí ước lượng từ mô hình (gần giá trị thực, mượt hơn số liệu GPS thô). Lấy được đường thứ ba là toàn bộ nhiệm vụ của mô hình.
Cách ước lượng Trạng thái
Định nghĩa mô hình chỉ là một nửa vấn đề. Bạn còn cần suy luận các trạng thái ẩn từ những quan sát bạn thực sự có. Ba tác vụ bao trùm không gian này:
Lọc ước lượng trạng thái hiện tại chỉ dùng các quan sát đến thời điểm hiện tại — suy luận thời gian thực, hữu ích cho bám theo và điều khiển. Làm trơn quay lại và điều chỉnh các ước lượng đó bằng cách dùng cả quan sát trước và sau một thời điểm — thường chính xác hơn, nhưng cần toàn bộ chuỗi. Dự báo ngoại suy về phía trước để ước lượng các trạng thái tương lai trước khi quan sát đến.
Đa số ứng dụng dùng lọc. Làm trơn xuất hiện khi bạn phân tích hồi cứu và độ chính xác quan trọng hơn tốc độ.
Lọc Kalman và Mô hình Không gian Trạng thái
Bộ lọc Kalman là thuật toán để lọc trong các mô hình không gian trạng thái tuyến tính Gauss. Cần chính xác: mô hình không gian trạng thái là mô hình; bộ lọc Kalman là một phương pháp suy luận áp dụng cho một lớp cụ thể của các mô hình đó.
Bộ lọc hoạt động theo hai bước luân phiên. Ở bước dự báo, nó dùng phương trình trạng thái để chiếu ước lượng hiện tại tiến về tương lai, kèm theo thước đo độ bất định của ước lượng đó. Ở bước cập nhật, một quan sát mới đến và ước lượng được điều chỉnh. Mức độ điều chỉnh phụ thuộc vào độ bất định tương đối giữa dự báo và phép đo. Nếu dự báo của mô hình đáng tin cậy, quan sát có ảnh hưởng ít hơn. Nếu tín hiệu GPS sạch và mô hình bất định, quan sát chiếm ưu thế. Sự pha trộn theo trọng số bất định đó là điều giúp bộ lọc Kalman hoạt động hiệu quả trong thực tế.
Có các phần mở rộng cho bối cảnh phi tuyến hoặc phi Gauss: bộ lọc Kalman mở rộng tuyến tính hóa động lực, bộ lọc Kalman không điểm dùng xấp xỉ khéo hơn, và bộ lọc hạt xử lý trường hợp tổng quát bằng cách lấy mẫu. Đó là những bài viết khác.
Các loại Mô hình Không gian Trạng thái
Khuôn khổ này bao phủ nhiều bối cảnh tùy theo giả định của bạn về động lực và nhiễu.
Mô hình không gian trạng thái tuyến tính Gauss là bối cảnh kinh điển: phương trình chuyển tiếp và quan sát tuyến tính, nhiễu Gauss. Lọc Kalman áp dụng trực tiếp và suy luận chính xác là khả thi.
Mô hình không gian trạng thái phi tuyến xuất hiện khi chuyển tiếp trạng thái hoặc quan hệ quan sát không tuyến tính — nghĩ tới con lắc, hoặc mô hình nơi tác động giá giảm dần. Khi đó không còn suy luận chính xác.
Mô hình không gian trạng thái phi Gauss bỏ giả định nhiễu tuân theo phân phối chuẩn. Dữ liệu đếm, kết quả nhị phân, và các quá trình đuôi dày đều thuộc nhóm này.
Mô hình Không gian Trạng thái so với các mô hình chuỗi thời gian liên quan
Có vài so sánh đáng nêu rõ, vì ranh giới ở đây mờ hơn vẻ bề ngoài.
Mô hình không gian trạng thái so với ARIMA
ARIMA mô hình hóa trực tiếp các giá trị quan sát và sai số quá khứ của chúng, không đưa vào bất kỳ trạng thái ẩn nào. Mô hình không gian trạng thái đưa các trạng thái tiềm ẩn vào một cách tường minh. Dẫu vậy, mô hình ARIMA có thể được viết lại dưới dạng không gian trạng thái — nên chúng không tách biệt như vẻ ban đầu, và phần mềm thường dùng biểu diễn không gian trạng thái bên trong để khớp ARIMA.
Mô hình không gian trạng thái so với mô hình Markov ẩn
Cả hai đều liên quan đến trạng thái ẩn. HMM cổ điển dùng các trạng thái tiềm ẩn rời rạc (hệ thống ở một trong k chế độ), trong khi hầu hết mô hình không gian trạng thái dùng trạng thái liên tục. Với nhận dạng giọng nói, các chế độ rời rạc là hợp lý; với bám theo một vật thể vật lý, trạng thái liên tục là lựa chọn tự nhiên.
Mô hình không gian trạng thái so với mô hình chuỗi thời gian cấu trúc
Mô hình chuỗi thời gian cấu trúc (phân rã chuỗi thành xu hướng, mùa vụ và thành phần bất thường) thường được biểu diễn dưới dạng mô hình không gian trạng thái hơn là cạnh tranh với chúng. Chúng là một trường hợp sử dụng cụ thể của khuôn khổ này.
Mô hình Không gian Trạng thái trong Python và R
Quy trình làm việc tương tự ở cả hai ngôn ngữ — định nghĩa mô hình, khớp nó, và trích xuất các ước lượng trạng thái ẩn.
Mô hình không gian trạng thái trong Python
Thư viện
statsmodelscung cấp một giao diện gọn gàng để khớp các mô hình không gian trạng thái. Dưới đây là mô hình mức cục bộ (mô hình cấu trúc đơn giản nhất, trạng thái là random walk và quan sát có nhiễu) được khớp với một chuỗi thời gian:Trạng thái đã lọc cho bạn ước lượng tốt nhất của mô hình về mức ẩn tại mỗi thời điểm. Đó là đầu ra chính bạn quan tâm, không phải các tham số tự thân.
Mô hình không gian trạng thái trong R
Trong R, gói
KFASxử lý các mô hình không gian trạng thái Gauss và rất đáng biết nếu bạn thường xuyên làm trong lĩnh vực này. Quy trình phản chiếu Python: định nghĩa một đối tượng mô hình, khớp nó, và trích xuất các trạng thái đã làm trơn hoặc đã lọc. Hãy diễn giải các ước lượng trạng thái ẩn, không chỉ các thống kê khớp.Ưu điểm và Hạn chế của Mô hình Không gian Trạng thái
Giống hầu hết các khuôn khổ mô hình, điểm mạnh và điểm yếu đến từ cùng một chỗ: bạn phải cam kết với một cấu trúc ngay từ đầu.
Ưu điểm: Chúng biểu diễn rõ ràng các quá trình ẩn thay vì che mờ chúng. Chúng xử lý tự nhiên các hệ thống thay đổi theo thời gian. Bất định đo lường được xây dựng ngay trong mô hình, không phải suy nghĩ sau. Và cùng một khuôn khổ hỗ trợ lọc, làm trơn, và dự báo mà không cần thay đổi cấu trúc mô hình.
Hạn chế: Việc chỉ định mô hình có thể khó. Bạn cần quyết định trạng thái ẩn có ý nghĩa gì và nó tiến hóa ra sao, điều này đòi hỏi phán đoán lĩnh vực thực sự. Với các hệ phi tuyến hoặc phi Gauss, suy luận trở nên tốn kém. Và nếu giả định của bạn về động lực hay nhiễu sai, các ước lượng sẽ sai theo những cách không phải lúc nào cũng hiển nhiên.
Kết luận
Một mô hình không gian trạng thái mô tả hai điều: trạng thái không quan sát được tiến hóa theo thời gian như thế nào, và trạng thái đó tạo ra các quan sát bạn có thể đo ra sao. Đó là phương trình trạng thái và phương trình quan sát. Mọi thứ khác (lọc Kalman, làm trơn, dự báo) là về việc suy luận trạng thái ẩn từ dữ liệu mà mô hình tạo ra.
Điều tôi thấy hữu ích ở khuôn khổ này là nó buộc bạn phải nói rõ những gì bạn không biết. Thay vì mô hình trực tiếp các quan sát (như ARIMA), bạn buộc phải cam kết với một câu chuyện về quá trình nền tảng. Đó là một ràng buộc, nhưng cũng là một sự làm rõ. Khi bạn đã viết ra điều bạn cho là trạng thái ẩn và cách nó chuyển động, bài toán suy luận trở nên cơ học. Phần khó vốn là khâu mô hình hóa.
Nếu bạn đến từ các phương pháp chuỗi thời gian kinh điển, mô hình không gian trạng thái đáng để hiểu theo đúng bản chất của chúng, chứ không chỉ như một khái quát hóa từ thứ bạn đã biết. Khóa học Time Series with Python của chúng tôi bao quát bộ công cụ rộng hơn, và nếu HMM hay lọc Kalman là điểm đến tiếp theo của bạn, nền tảng khái niệm ở đây chuyển giao trực tiếp.