Bạn có dữ liệu chuỗi thời gian được sử dụng để đo gia tốc. Bạn cần xác định khi máy ở trạng thái danh nghĩa (TẮT) và trạng thái dị thường (BẬT). Vấn đề này sẽ được giải quyết tốt nhất bằng cách sử dụng các thuật toán phát hiện bất thường. Nhưng, có rất nhiều cách để bạn có thể tiếp cận vấn đề này.
Chuẩn bị dữ liệu cho bạn
Tất cả các phương pháp sẽ dựa vào phương pháp trích xuất tính năng bạn chọn. Giả sử chúng tôi tiếp tục sử dụng 3 cửa sổ thời gian mẫu như bạn đề xuất. Trong thuật toán này, bạn sẽ tính toán một thống kê cho trạng thái danh nghĩa này . Tôi sẽ đề xuất ý nghĩa như tôi giả sử bạn đang làm, lấy trung bình của ba gia tốc kết quả mẫu. Sau đó, bạn sẽ được để lại một số lượng lớn các giá trị trong tập huấn luyện được xác định lày= 0S
S= { s0, s1, . . . , sn}
Trong đó là giá trị trung bình của các mẫu cây trong cửa sổ. được định nghĩa làSS
STôi= 13ΣTôik = i - 2xk
Trong đó là các quan sát mẫu của bạn và .xi ≥ 2
Sau đó thu thập thêm dữ liệu nếu có thể với máy hoạt động sao cho .y= 1
Bây giờ bạn có thể chọn nếu bạn muốn đào tạo thuật toán của mình trên bộ dữ liệu một lớp (phát hiện anomlay thuần túy). Một bộ dữ liệu thiên vị (phát hiện bất thường) hoặc một bộ dữ liệu cân bằng. Số dư của tập dữ liệu là tỷ lệ giữa hai lớp trong tập dữ liệu của bạn. Một bộ dữ liệu hoàn hảo cho phân loại 2 lớp sẽ là 1: 1. 50% dữ liệu thuộc về mỗi lớp. Bạn dường như có một bộ dữ liệu thiên vị, giả sử bạn không muốn lãng phí nhiều điện.
Xin lưu ý rằng không có gì ngăn bạn giữ các mẫu lân cận được phân tách làm ví dụ trong tập dữ liệu của bạn. Ví dụ:
xTôi xtôi - 1 xtôi - 2 | yTôi
Điều này sẽ tạo không gian đầu vào 3 chiều cho một đầu ra cụ thể được xác định cho mẫu hiện được lấy.
Một bộ dữ liệu thiên vị
Giải pháp dễ dàng
Cách dễ nhất mà tôi muốn đề xuất. Giả sử bạn đang sử dụng một thống kê duy nhất để xác định những gì đang xảy ra trong suốt 3 cửa sổ mẫu. Từ dữ liệu thu thập được, lấy tối đa của điểm danh nghĩa của bạn ( ) và tối thiểu của điểm bất thường ( ). Sau đó lấy dấu nửa chừng giữa hai cái này và sử dụng nó làm ngưỡng của bạn.Sy= 0Sy= 1
Nếu một mẫu thử nghiệm mới lớn hơn ngưỡng thì gán .S^y= 1
Bạn có thể mở rộng điều này bằng cách tính trung bình cho tất cả các mẫu danh nghĩa của bạn . Sau đó tính giá trị trung bình cho các mẫu dị thường của bạn . Nếu một mẫu mới rơi gần với giá trị trung bình của các mẫu dị thường thì phân loại nó là .Sy= 0y= 1y= 1
Nhưng tôi muốn có được ưa thích!
Có một số kỹ thuật khác bạn có thể sử dụng để thực hiện nhiệm vụ chính xác này.
- Hàng xóm gần nhất
- Mạng lưới thần kinh
- Hồi quy tuyến tính
- SVM
Nói một cách đơn giản, hầu như mọi thuật toán học máy đều phù hợp với mục đích này. Nó chỉ phụ thuộc vào lượng dữ liệu có sẵn cho bạn và phân phối của nó.
Tôi thực sự muốn sử dụng SVM
Nếu đây là trường hợp giữ ba mẫu hoàn toàn tách biệt. Ma trận đào tạo của bạn sẽ có 3 cột như đã thảo luận ở trên. Và sau đó bạn sẽ có đầu ra của bạn . Sử dụng SVM trong python rất dễ dàng: http://scikit-learn.org/urdy/modules/svm.html .y
from sklearn import svm
X = [[0, 0, 0], [1, 1, 1], ..., [1, 0, 1]]
y = [0, 1, ..., 1]
clf = svm.SVC()
clf.fit(X, y)
Điều này đào tạo mô hình của bạn. Sau đó, bạn sẽ muốn dự đoán kết quả cho một mẫu mới.
clf.predict([[2., 2., 1]])