ROCKET (Random Convolutional Kernel Transform) là một phương pháp phân loại chuỗi thời gian (TSC) vừa hiệu quả cao vừa chính xác. Nó được thiết kế để khắc phục những hạn chế của các phương pháp hiện có, thường phải đánh đổi giữa hiệu quả tính toán và hiệu suất phân loại. Phương pháp này được giới thiệu trong bài báo:
Dempster, Angus, François Petitjean, and Geoffrey I. Webb. “ROCKET: Exceptionally Fast and Accurate Time Series Classification Using Random Convolutional Kernels.” Data Mining and Knowledge Discovery 34.5 (2020).
Tóm tắt bài báo “ROCKET: Exceptionally Fast and Accurate Time Series Classification Using Random Convolutional Kernels”
Mục tiêu
Bài báo giới thiệu ROCKET – một phương pháp phân loại chuỗi thời gian (TSC) vừa nhanh vừa chính xác. Phương pháp này nhằm khắc phục những hạn chế của các phương pháp hiện tại, vốn thường phải đánh đổi giữa hiệu quả tính toán và độ chính xác phân loại.
Ý tưởng và những điểm chính
Bộ nhân tích chập ngẫu nhiên
ROCKET sử dụng số lượng lớn các bộ nhân tích chập ngẫu nhiên để trích xuất đặc trưng từ dữ liệu chuỗi thời gian, nhằm nâng cao hiệu suất và độ chính xác trong việc phân tích và xử lý các tín hiệu phức tạp từ nhiều nguồn dữ liệu khác nhau.
Các tham số của bộ nhân tích chập — bao gồm độ dài, trọng số, độ lệch và độ giãn — được lấy mẫu ngẫu nhiên.
Trích xuất đặc trưng
Phương pháp này tạo ra hai thống kê tóm tắt đơn giản từ đầu ra của các tích chập:
- Giá trị cực đại, và
- Tỷ lệ các giá trị dương.
Các thống kê này dễ tính toán và cung cấp thông tin phân biệt tốt cho nhiệm vụ phân loại.
Bộ phân loại
Các đặc trưng được trích xuất sau đó được sử dụng với các bộ phân loại đơn giản, nhanh như:
- SVM,
- Hồi quy ridge, hoặc
- Hồi quy logistic,
giúp ROCKET cực kỳ mở rộng được.
Hiệu suất
ROCKET đạt độ chính xác hàng đầu, tương đương với các mô hình phức tạp hơn như các phương pháp dựa trên shapelet và học sâu.
Phương pháp này nhanh hơn đáng kể so với các phương pháp TSC truyền thống, cả trong giai đoạn huấn luyện lẫn dự đoán.
Khả năng mở rộng
- ROCKET mở rộng tuyến tính với số lượng chuỗi thời gian.
- Có thể xử lý các tập dữ liệu lớn với hàng triệu mẫu.
- Tính đơn giản của ROCKET cho phép triển khai hiệu quả và dễ dàng thích nghi với các kiến trúc phần cứng khác nhau.
Kết quả thực nghiệm
ROCKET vượt trội hơn hầu hết các phương pháp cơ bản về tốc độ, đồng thời duy trì độ chính xác cạnh tranh hoặc vượt trội trên nhiều tập dữ liệu chuẩn từ kho lưu trữ chuỗi thời gian UCR/UEA.
Ứng dụng
Thích hợp cho các lĩnh vực mà phân loại chuỗi thời gian là quan trọng như:
- Chăm sóc sức khỏe
- Tài chính
- Phân tích dữ liệu cảm biến
Đặc biệt hữu ích trong các tình huống yêu cầu xử lý theo thời gian thực hoặc trong môi trường hạn chế tài nguyên.
Kết luận
ROCKET mang lại một bước tiến mới trong phân loại chuỗi thời gian bằng cách tận dụng tính ngẫu nhiên và đơn giản để đạt được cả tốc độ và độ chính xác. Việc sử dụng sáng tạo các bộ nhân tích chập ngẫu nhiên và thống kê tóm tắt nhẹ nhàng khiến nó trở thành một công cụ thiết yếu trong bộ công cụ TSC.
Mã minh họa sử dụng ROCKET trong thư viện sktime
Lưu ý: Thư viện sktime
có hỗ trợ cả hồi quy thông qua RocketRegressor
, nhưng ở đây chúng ta chỉ xét bài toán phân loại.
Hướng dẫn từng bước:
1. Nhập các thư viện cần thiết:
from sktime.classification.kernel_based import RocketClassifier
from sktime.datasets import load_unit_test
import numpy as np
2. Tải dữ liệu:
X_train, y_train = load_unit_test(split="train", return_X_y=True)
X_test, y_test = load_unit_test(split="test", return_X_y=True)
load_unit_test(split="train")
: Tải phần dữ liệu huấn luyện (X_train là đặc trưng, y_train là nhãn).load_unit_test(split="test")
: Tải phần dữ liệu kiểm tra (X_test, y_test).return_X_y=True
: Trả về đặc trưng và nhãn dưới dạng hai biến riêng biệt.
3. Khởi tạo mô hình:
reg = RocketClassifier(num_kernels=500)
num_kernels=500
: Số lượng kernel tích chập ngẫu nhiên được sử dụng để trích đặc trưng.
4. Huấn luyện mô hình:
reg.fit(X_train, y_train)
5. Dự đoán:
y_pred = reg.predict(X_test)
6. Đánh giá độ chính xác:
accuracy = np.mean(y_pred == y_test)
print("Accuracy:", accuracy)
Tóm lược điểm chính
- Ưu điểm ROCKET: Nhanh, hiệu quả, dễ mở rộng, độ chính xác cao.
- Dữ liệu: Dữ liệu unit test nhỏ gọn, phù hợp kiểm thử nhanh.
- Chỉ số đánh giá: Sử dụng độ chính xác để đánh giá hiệu quả mô hình.
Toàn bộ code (tải về):
# Import the RocketClassifier from sktime
from sktime.classification.kernel_based import RocketClassifier
# Import the unit test dataset from sktime
from sktime.datasets import load_unit_test
# Load the training data (features and target)
X_train, y_train = load_unit_test(split="train", return_X_y=True)
# Load the testing data (features and target)
X_test, y_test = load_unit_test(split="test", return_X_y=True)
# Initialize the RocketClassifier with 500 kernels
reg = RocketClassifier(num_kernels=500)
# Fit the RocketClassifier model on the training data
reg.fit(X_train, y_train)
# Predict the target values for the test data
y_pred = reg.predict(X_test)
# Calculate the accuracy of the predictions
accuracy = np.mean(y_pred == y_test)
Discover more from Science Comics
Subscribe to get the latest posts sent to your email.