Ngoại lệ trong chuỗi thời gian python
Ngoại lệ là gì?
Ngoại lệ là các điểm dữ liệu cách xa hầu hết các điểm dữ liệu khác Show
Trong ví dụ về chuỗi thời gian này, tất cả các điểm bên ngoài dải màu xanh có thể được coi là ngoại lệ Ở đây chúng ta sẽ sử dụng thư viện có tên là tsmoothie. Trên chuỗi thời gian trong hình. chúng ta có thể thấy rằng chúng ta có 4 ngoại lệ, chúng ta có thể lấy chúng bằng cách
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Xét rằng khung dữ liệu df có một cột có tên là 'giá trị'. Chào mừng bạn đến với GrabNGoInfo. Hướng dẫn này sẽ nói về cách thực hiện phát hiện bất thường chuỗi thời gian bằng mô hình Tiên tri Facebook (Meta) trong Python. Dị thường còn được gọi là ngoại lệ và chúng tôi sẽ sử dụng hai thuật ngữ này thay thế cho nhau trong hướng dẫn này. Sau phần hướng dẫn, bạn sẽ học
Tài nguyên cho bài đăng này
Bắt đầu nào Bước 0. Thuật toán phát hiện bất thường chuỗi thời gianỞ bước 0, hãy nói về thuật toán phát hiện sự bất thường của chuỗi thời gian. Ở cấp độ cao, các ngoại lệ được phát hiện dựa trên khoảng thời gian dự đoán của chuỗi thời gian. Việc thực hiện bao gồm các bước sau
Bước 1. Cài đặt và nhập thư việnTrong bước đầu tiên, chúng tôi sẽ cài đặt và nhập thư viện # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'6 là gói python để lấy dữ liệu chứng khoán từ Yahoo Finance. # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'7 là gói dành cho mô hình chuỗi thời gian. Sau khi cài đặt # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'6 và # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'7, chúng sẽ được nhập vào sổ ghi chép Chúng tôi cũng nhập # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()0 và # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()1 để xử lý dữ liệu, # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()2 và # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()3 để trực quan hóa, và # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()4 và # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()5 để đánh giá hiệu suất mô hình # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'1 Bước 2. Kéo dữ liệuBước thứ hai lấy dữ liệu chứng khoán từ Yahoo Finance API. Dữ liệu hàng ngày trong hai năm từ đầu năm 2020 đến cuối năm 2021 được lấy cho phân tích này
# Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01' Mục tiêu của mô hình chuỗi thời gian là dự đoán giá đóng cửa của cổ phiếu Google, vì vậy, mã đánh dấu của Google # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()9 được sử dụng để lấy dữ liệu Nhà tiên tri yêu cầu ít nhất hai cột làm đầu vào. một # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'70 cột và một # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'71 cột
# Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head() Sử dụng # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'76, chúng ta có thể thấy rằng tập dữ liệu có 505 bản ghi và không có giá trị nào bị thiếu # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'7 đầu ra # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'6 Tiếp theo, hãy hình dung giá đóng cửa của hai mã cổ phiếu bằng cách sử dụng # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()2 và thêm chú giải vào biểu đồ bằng cách sử dụng # Pull close data from Yahoo Finance for the list of tickers ticker_list = ['GOOG'] data = yf.download(ticker_list, start=start_date, end=end_date)[['Close']] # Change column names data = data.reset_index() data.columns = ['ds', 'y'] # Take a look at the data data.head()3. Chúng ta có thể thấy rằng giá của Google đã tăng lên rất nhiều kể từ cuối năm 2020 và tăng gần gấp đôi vào cuối năm 2021 # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'9 Họ Địa chỉ email. Để trống trường này nếu bạn là người.Bước 3. Xây dựng mô hình chuỗi thời gian bằng tiên tri trong PythonỞ bước 3, chúng ta sẽ xây dựng mô hình chuỗi thời gian bằng Prophet trong Python Lưu ý rằng chúng tôi đã không thực hiện phân tách thử nghiệm huấn luyện cho tập dữ liệu mô hình hóa. Điều này là do mục tiêu của mô hình không phải là dự đoán giá cổ phiếu trong tương lai, thay vào đó, mục tiêu là phù hợp với một mô hình dự đoán tốt về giá trong quá khứ. Do đó, chúng tôi sẽ sử dụng toàn bộ tập dữ liệu cho cả đào tạo và dự báo
Chúng tôi giữ mô hình đơn giản trong ví dụ này để tập trung vào quá trình phát hiện bất thường. Nếu bạn quan tâm đến việc xây dựng một mô hình phức tạp, vui lòng tham khảo hướng dẫn trước của tôi Dự báo chuỗi thời gian đa biến với tính thời vụ và hiệu ứng ngày lễ bằng cách sử dụng tiên tri trong Python # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'3 Bước 4. Đưa ra dự đoán bằng cách sử dụng nhà tiên tri trong PythonSau khi xây dựng mô hình, ở bước 4, chúng ta sử dụng mô hình để đưa ra dự đoán trên tập dữ liệu. Biểu đồ dự báo cho thấy rằng các dự đoán nói chung phù hợp với các giá trị thực tế # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'4 Chúng tôi cũng có thể kiểm tra biểu đồ thành phần để biết xu hướng, tính thời vụ hàng tuần và tính thời vụ hàng năm # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'5 Bước 5. Kiểm tra hiệu suất mô hình chuỗi thời gianỞ bước 5, chúng ta sẽ kiểm tra hiệu suất của mô hình chuỗi thời gian. Khung dữ liệu dự báo không bao gồm các giá trị thực tế, vì vậy chúng tôi cần hợp nhất khung dữ liệu dự báo với khung dữ liệu thực tế để so sánh các giá trị thực tế với các giá trị dự đoán. Hai chỉ số hiệu suất được bao gồm
Để biết thêm các chỉ số đánh giá hiệu suất theo chuỗi thời gian, chẳng hạn như MSE (Lỗi bình phương trung bình), RMSE (Lỗi bình phương trung bình gốc), MDAPE (Lỗi tỷ lệ phần trăm tuyệt đối trung bình) và SMAPE (Lỗi tỷ lệ phần trăm trung bình trung bình đối xứng), vui lòng tham khảo chuỗi thời gian hướng dẫn trước đây của tôi # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'6 Sai số tuyệt đối trung bình (MAE) của mô hình là 31 đô la, nghĩa là trung bình, dự báo sai lệch 31 đô la. Cho rằng giá của Google là hàng nghìn, dự đoán không tệ Lỗi phần trăm tuyệt đối trung bình (MAPE) cho mô hình cơ sở là 1. 7%, nghĩa là trung bình, dự báo sai lệch 1. 7% giá cổ phiếu # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'0 Bước 6. Xác định sự bất thườngỞ bước 6, chúng ta sẽ xác định các điểm bất thường của chuỗi thời gian bằng cách kiểm tra xem giá trị thực có nằm ngoài khoảng bất định hay không. Nếu giá trị thực tế nhỏ hơn giới hạn dưới hoặc lớn hơn giới hạn trên của khoảng không chắc chắn, thì chỉ báo bất thường được đặt thành 1, nếu không, nó được đặt thành 0 Sử dụng # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'62, chúng tôi có thể thấy rằng có 6 giá trị ngoại lệ trong số 505 điểm dữ liệu # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'1 đầu ra # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'2 Sau khi in ra các điểm bất thường, chúng ta có thể thấy rằng tất cả các điểm bất thường đều thấp hơn giới hạn dưới của khoảng bất định # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'3 Trong phần trực quan hóa, tất cả các dấu chấm là giá trị thực và đường màu đen biểu thị giá trị dự đoán. Các chấm màu cam là ngoại lệ # Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'4 Đặt tất cả các mã lại với nhau# Data start date start_date = '2020-01-02' # Data end date. yfinance excludes the end date, so we need to add one day to the last day of data end_date = '2022-01-01'5 Tóm lượcTrong hướng dẫn này, chúng ta đã thảo luận cách phát hiện bất thường chuỗi thời gian bằng Prophet trong Python. Bạn đã học
Để biết thêm thông tin về khoa học dữ liệu và máy học, vui lòng xem kênh YouTube và Trang phương tiện của tôi Tôi có nên loại bỏ các ngoại lệ trong chuỗi thời gian không?Bạn chỉ nên xóa các giá trị ngoại lệ khi có lý do chính đáng để làm như vậy . Một số ngoại lệ đại diện cho các biến thể tự nhiên trong dân số và chúng nên được giữ nguyên như trong tập dữ liệu của bạn. Chúng được gọi là ngoại lệ thực sự.
Làm cách nào để phát hiện sự bất thường trong dữ liệu chuỗi thời gian bằng Python?ADTK là gói python mã nguồn mở để phát hiện sự bất thường của chuỗi thời gian . Tên ADTK là viết tắt của Bộ công cụ phát hiện bất thường. Gói này được phát triển bởi ARUNDO. Các tính năng của nó cho phép chúng tôi triển khai các mô hình thực dụng rất dễ dàng và các tính năng này cũng làm cho ADTK khác với các công cụ phát hiện bất thường khác.
Làm cách nào để phát hiện các điểm thay đổi và ngoại lệ theo mùa trong chuỗi thời gian của bạn?Phát hiện và loại bỏ ngoại lệ . Phân tách chuỗi thời gian bằng cách sử dụng phân tách theo mùa Xóa xu hướng và tính thời vụ để tạo chuỗi thời gian còn lại Phát hiện các điểm trong phần dư nằm ngoài 3 lần phạm vi liên vùng |