Logo Zephyrnet

Dự báo có thể giải thích và Dự báo hiện tại với Mạng thần kinh sâu hiện đại và Mô hình nhân tố động

Ngày:

By Ajay Arunachalam, Chuyên gia ML và Kiến trúc sư giải pháp đám mây | Nhà khoa học dữ liệu cao cấp.

Hình ảnh của tác giả: Trình bày trực quan khả năng giải thích của mô hình và dự báo sâu với DeepXF.

Thông qua bài đăng này, chúng ta sẽ điểm qua một trong những vấn đề kinh doanh thường xanh quan trọng - tức là Dự báo. Chúng ta sẽ thấy một số hiểu biết nhanh về lý thuyết về dự báo nói chung, sau đó là hướng dẫn từng bước với nhiều ví dụ demo thực hành. Chúng ta sẽ xem thư viện python như thế nào sâu-xf rất hữu ích để bắt đầu xây dựng các mô hình sâu một cách dễ dàng. Hơn nữa, chúng ta sẽ xem cách ước tính độ lệch của mô hình để theo dõi độ lệch và độ lệch dự đoán. Ngoài ra, chúng ta sẽ thấy phần mô-đun có thể giải thích của thư viện này, phần này có thể được sử dụng để hiểu các suy luận mô hình và diễn giải kết quả ở dạng đơn giản mà con người có thể hiểu được. Để có phần giới thiệu nhanh và tất cả các ứng dụng ca sử dụng có thể được hỗ trợ bởi sâu-xf nói chung, gói được liệt kê trong bài đăng trên blog tại đây. Ngoài ra, hãy xem bài đăng blog chi tiết có liên quan chặt chẽ khác của tôi trên đang phát sóng từ tại đây.

Vấn đề dự báo được xem xét lại

Với sự sẵn có của phần cứng (cảm biến), Internet vạn vật (IoT) và kiến ​​trúc Đám mây chi phí thấp, việc thu thập dữ liệu, truyền dữ liệu và lưu trữ dữ liệu không còn là vấn đề quan trọng nữa. Ngày nay, chúng ta bắt gặp một loạt thiết bị phát trực tuyến và thiết bị đeo có thể đo lường nhiều thông số suốt ngày đêm một cách dễ dàng. Trước đây, dự báo chuỗi thời gian đã được giải thích tốt bằng các phương pháp tuyến tính, tăng cường, tập hợp và thống kê. Với sự tiến bộ của các thuật toán học sâu, chắc chắn người ta có thể tận dụng tối đa lợi ích tiềm năng của nó, vì cho đến nay, chúng ta đã thấy những khả năng to lớn liên quan đến các kỹ thuật học sâu. Tất cả chúng ta đều biết về một số trường hợp sử dụng có bối cảnh cho các luồng chuỗi thời gian trong đó học kĩ càng đã rất quan trọng. Trước tiên, chúng ta hãy hiểu ý nghĩa của dự báo bằng ngôn ngữ đơn giản, sau đó là cách xây dựng vấn đề dự báo trong bối cảnh học máy. “Dự báo là một dự đoán hoặc một phỏng đoán đúng đắn về tương lai. Đơn giản, nó giống như nói những gì có thể xảy ra trong tương lai”. Sơ đồ dưới đây trình bày cấu trúc mô hình dự báo rất cơ bản với các ký hiệu đầu vào và đầu ra. Hơn nữa, chúng ta thấy một vấn đề dự báo có thể được hình thành như thế nào dựa trên các chuỗi đầu vào theo bước thời gian lịch sử.

Ảnh của tác giả: Cấu trúc dự báo đơn giản và xây dựng bài toán dự báo.

Để có giải thích trực quan, chi tiết hơn về dữ liệu chuỗi thời gian, hãy kiểm tra tại đây. Và, để lựa chọn tính năng không được giám sát từ dữ liệu chuỗi thời gian, hãy kiểm tra tại đây.

Các phương pháp/kỹ thuật thông thường được sử dụng để dự báo

Dự báo định tính dựa trên ý kiến, trực giác và giả định thuần túy. Trong khi Dự báo định lượng sử dụng các mô hình thống kê, toán học và máy học để đưa ra dự báo dựa trên dữ liệu lịch sử.

Từ bối cảnh đến mô hình tài chính, Các phương pháp đơn giản được ưu tiên hàng đầu bao gồm các phương pháp được hiển thị trong bảng bên dưới (nhưng không giới hạn ở những phương pháp này).

Ảnh của tác giả: Các loại phương pháp dự báo cơ bản để dự đoán giá trị tương lai.

Tôi sẽ không tập trung quá nhiều vào các khái niệm lý thuyết về dự báo vì đó hoàn toàn không phải là trọng tâm của bài đăng trên blog này và tôi cũng sẽ không nói bất cứ điều gì ở đây về các kiến ​​trúc mạng học sâu hiện đại khác nhau như có rất nhiều tài liệu hữu ích tốt đã có sẵn ở đó. Vì vậy, hãy chuyển sang bản demo trực tiếp.

Bắt đầu

Chúng ta sẽ xem cách xây dựng một mô hình dự báo chuyên sâu với Deep-XF thư viện thoải mái. Để cài đặt, hãy làm theo các bước đã cho tại đâyvà đối với bất kỳ cài đặt tiên quyết thủ công nào khác, hãy kiểm tra tại đây. Chúng tôi bắt đầu bằng cách nhập thư viện, như được hiển thị trong các bước bên dưới. Tiếp theo, chúng tôi đặt cấu hình trước tùy chỉnh cho quy trình dự báo dựa trên học tập sâu của mình, thiết lập các tham số với set_model_config() hoạt động bằng cách chọn các thuật toán thích hợp do người dùng chỉ định (ví dụ: RNN, LSTM, GRU, BIRNN, BIGRU và bộ chia tỷ lệ đầu vào, ví dụ: MinMaxScaler, StandardScaler, MaxAbsScaler, RobustScaler), đồng thời sử dụng cửa sổ một khoảng thời gian trước đây làm đầu vào, để dự báo các giá trị tương lai theo trình tự. Tiếp theo, set_variables() và get_variables() các hàm được sử dụng để cài đặt và phân tích chỉ mục dấu thời gian, chỉ định biến kết quả dự báo được quan tâm, sắp xếp dữ liệu, loại bỏ trùng lặp, v.v. Ngoài ra, chúng ta cũng có thể chọn các siêu tham số tùy chỉnh để huấn luyện mô hình dự báo với siêu tham số_config() hàm lấy một loạt các siêu tham số chính từ tỷ lệ họcrơi ra ngoàiphân rã trọng lượngkích thước lôkỷ nguyên, Vv

Nhập thư viện Deep-XF

Tùy chỉnh cấu hình trước dành riêng cho người dùng
Đặt siêu tham số mô hình tùy chỉnh

Khám phá và chuẩn bị dữ liệu

Sau khi tất cả các cấu hình đã được đặt, chúng tôi nhập dữ liệu, thực hiện phân tích dữ liệu khám phá, xử lý trước dữ liệu, đào tạo mô hình sâu, đánh giá hiệu suất của mô hình với nhiều số liệu quan trọng chính, sau đó lưu và xuất kết quả dự báo vào đĩa và cũng vẽ chúng dưới dạng biểu đồ tương tác về kết quả dự báo cho cửa sổ dự báo do người dùng cung cấp. Tiếp theo, chúng tôi ước tính độ lệch dự báo để xác thực xem mô hình của chúng tôi cuối cùng không đưa ra kết quả dự báo cao/thiếu hay không. Và cuối cùng, mô-đun giải thích giúp chúng tôi hiểu/giải thích kết quả mô hình của dự báo được suy luận cho mẫu dự báo do người dùng nhập.

Chúng ta sẽ thấy hai trường hợp sử dụng khác nhau ở đây. Cách đầu tiên là sử dụng dữ liệu của máy ảo đám mây Alibaba, một tập dữ liệu đa biến có khoảng tần số giây (tức là cứ sau 10 giây). Tập dữ liệu thô có sẵn từ tại đây. Ngược lại, dữ liệu thứ hai là dữ liệu Bán hàng & Tiếp thị cũng là tập dữ liệu đa biến có tần suất hàng tháng. Tập dữ liệu thô có thể được lấy từ tại đây.

Ví dụ về dữ liệu tần số giây -

Trước tiên chúng ta hãy xem qua dữ liệu bằng cách hiển thị một vài hàng. Như đã thấy, chúng ta có 6 cột, bao gồm chỉ mục dấu thời gian.

Hình ảnh của tác giả: hiển thị một số hàng đầu tiên từ tập dữ liệu của máy ảo đám mây Alibaba.

Tiếp theo, hãy lấy thông tin kiểu dữ liệu bằng cách sử dụng gấu trúc đơn giản thông tin () chức năng,

Hình ảnh của tác giả: lấy thông tin cột.

Tiếp theo, chúng tôi sử dụng trực quan lô_dataset() để trực quan hóa xu hướng của chỉ số thời gian ghi cột kết quả với sự trợ giúp của các biểu đồ tương tác rõ ràng như dưới đây.

Hình ảnh của tác giả: Âm mưu trực quan hóa xu hướng tương tác.

Hơn nữa, chúng tôi tiếp tục bằng cách thực hiện Kỹ thuật tính năng. Kỹ thuật tính năng là một trong những thành phần chính của vòng đời máy học. Nói một cách đơn giản, nó đề cập đến quá trình sử dụng kiến ​​thức miền để chọn, chuyển đổi các biến phù hợp nhất và trong quá trình đó, rút ​​ra các tính năng mới từ dữ liệu thô. Chúng tôi bắt đầu bằng cách tạo các tính năng đơn giản từ dấu thời gian bằng cách sử dụng generate_date_time_features_hour() chức năng, tiếp theo là tạo ra các tính năng tuần hoàn từ ngày, giờ bằng cách sử dụng generate_cycle_features() phương pháp và cũng tạo ra các tính năng khác có liên quan đến bối cảnh dữ liệu chuỗi thời gian bằng cách sử dụng generate_other_relative_features() phương pháp. Ở đây, người ta cũng có thể sử dụng các quan sát có độ trễ làm đặc điểm. Hơn nữa, người ta cũng có thể rút ra một số tính năng hữu ích khác liên quan đến xu hướng giá trị trên các cửa sổ tổng hợp khác nhau: tức là sự thay đổi và tốc độ thay đổi ở mức trung bình, độ lệch chuẩn trên một cửa sổ nhất định, tỷ lệ thay đổi, tốc độ tăng trưởng với độ lệch chuẩn, thay đổi theo thời gian, tốc độ thay đổi theo thời gian, tăng trưởng hoặc suy giảm, tốc độ tăng trưởng hoặc suy giảm, số lượng giá trị trên hoặc dưới giá trị ngưỡng trung bình, v.v. như được hiển thị tại đây.

Ví dụ về dữ liệu tần suất hàng tháng —

Hình ảnh sau đây cho thấy một đoạn trích của dữ liệu. Như đã thấy, nó bao gồm hai thuộc tính, tức là 'Doanh số' và 'Chi phí tiếp thị' với 'Khoảng thời gian' làm chỉ mục dấu thời gian.

Hình ảnh của tác giả: hiển thị một số hàng đầu tiên từ tập dữ liệu bán hàng và tiếp thị.

Tiếp theo, chúng tôi trực quan hóa dữ liệu như bên dưới với thuộc tính kết quả (tức là doanh số bán hàng trong trường hợp cụ thể này).

Hình ảnh của tác giả: Sơ đồ đồ thị tương tác liên quan đến thuộc tính dự báo.

Tiếp theo, đối với kỹ thuật tính năng, chúng tôi sử dụng generate_date_time_features_month() chức năng, tiếp theo là tạo ra các tính năng tuần hoàn từ ngày bằng cách sử dụng generate_cycle_features() phương pháp và cũng tạo ra các tính năng khác có liên quan đến bối cảnh dữ liệu chuỗi thời gian bằng cách sử dụng generate_other_relative_features() phương pháp. Ở đây, người ta cũng có thể sử dụng các quan sát có độ trễ làm đặc điểm. Hơn nữa, người ta cũng có thể rút ra một loạt các tính năng hữu ích khác, như được hiển thị tại đây.

Đào tạo mô hình dự báo

Sau khi hoàn thành phần kỹ thuật tính năng, tiếp theo chúng ta tiến hành đào tạo mô hình bằng cách sử dụng xe lửa() phương pháp sử dụng tài nguyên CPU/GPU có sẵn, đồng thời cung cấp khung dữ liệu đã xử lý, cột kết quả, tức là được đổi tên thành 'giá trị' với đặt/nhận các phương thức, tỷ lệ phân chia để phân chia tập hợp kiểm tra xác thực đào tạo và tất cả các tham số được định cấu hình trước khác làm đầu vào cho phương thức. Kết quả đào tạo tương ứng được hiển thị dưới đây. Chúng tôi cũng vẽ các dự đoán do mô hình đưa ra dựa trên các giá trị thực tế, như được thấy trong biểu đồ bên dưới. Các kết quả được mô tả ở đây chỉ dựa trên một vài kỷ nguyên mà không thực hiện bất kỳ điều chỉnh siêu tham số nào. Người ta chắc chắn có thể tinh chỉnh mô hình hơn nữa để cải thiện hiệu suất. Chúng tôi cũng đánh giá mô hình bằng các số liệu đánh giá được sử dụng rộng rãi và vẽ biểu đồ để so sánh song song. Các sơ đồ dự báo tương tác cũng được vẽ cho cửa sổ thời gian do người dùng cung cấp. Các kết quả của mô hình dự báo cũng được xuất ra đĩa dưới dạng tệp CSV phẳng cũng như các sơ đồ trực quan hóa tương tác có thể được lưu vào đĩa một cách dễ dàng.

Hình ảnh của tác giả: Hiển thị Phân chia Train-Val-Test với tài nguyên tính toán có sẵn với tổn thất đào tạo/val.

Kết quả

Hình ảnh của tác giả: Sơ đồ biểu đồ mất xác thực-đào tạo mô hình.

Hình ảnh của tác giả: Sơ đồ trực quan tương tác hiển thị các dự đoán được đưa ra bởi mô hình tuyến tính và mô hình sâu.

Hình ảnh của tác giả: Xác thực mô hình dự báo về kết quả sử dụng CPU của bộ dữ liệu máy ảo đám mây Alibaba.

Để có lời giải thích đơn giản, trực quan về các số liệu hồi quy được sử dụng rộng rãi, hãy xem blog này tại đây. Hơn nữa, người ta cũng có thể kiểm tra thư viện này “biểu đồ hồi quy” có thể được sử dụng để dễ dàng tính toán một số chỉ số đánh giá hồi quy được sử dụng rộng rãi và vẽ biểu đồ chúng một cách dễ dàng bằng mã một dòng cho các thuật toán học máy được sử dụng rộng rãi khác nhau, đồng thời cũng có thể so sánh nhanh từng khía cạnh.

Chúng ta hãy nhanh chóng nhìn qua 'SMPE', một trong những số liệu ước tính trong số một số số liệu ước tính khác theo mặc định, chẳng hạn như r, MAE, RMSE, MAPE, RMSRE, điểm phương sai, v.v. sai số phần trăm tuyệt đối trung bình đối xứng (SMAPE) chỉ đơn giản là thước đo độ chính xác dựa trên lỗi phần trăm (hoặc tương đối). Nói chung, các lỗi phần trăm rất dễ hiểu và dễ giải thích. Theo thuật ngữ thông thường, nó đưa ra ước tính về tính vô hạn của các dự báo cao hơn thực tế.

SMAPE được tính toán như hiển thị trong cú pháp đoạn mã python bên dưới.

Hình ảnh của tác giả: Biểu đồ thanh hiệu suất mô hình với các số liệu đánh giá chính được sử dụng rộng rãi.

Hình ảnh của tác giả: Sơ đồ trực quan tương tác của các dự báo.

Ảnh của tác giả: Mô hình dự báo suy luận về kết quả bán hàng.

Ước tính sai lệch và khả năng giải thích của mô hình

Xu hướng dự báo có thể được mô tả là xu hướng dự báo quá mức (nghĩa là dự báo nhiều hơn thực tế) hoặc dự báo dưới mức (nghĩa là dự báo nhỏ hơn thực tế), dẫn đến sai số dự báo. Độ lệch dự báo có thể được ước tính bằng cách sử dụng các công thức như dưới đây.

Hình ảnh của tác giả: Công thức toán học Dự báo thiên vị.

Thuật toán tính toán độ lệch dự báo như được hiển thị bằng cú pháp đoạn mã python bên dưới đưa ra độ lệch ước tính như trong hình bên dưới, đồng thời ước tính một số chỉ số chính và vẽ chúng dưới dạng biểu đồ thanh.

'fc_bias' : (np.sum(np.array(df.value) — np.array(df.prediction)) * 1.0/len(df.value))

Hình ảnh của tác giả: Ước tính xu hướng dự báo.

Hình ảnh của tác giả: Biểu đồ thanh với các số liệu đánh giá mô hình dự báo.

Cuối cùng, chúng tôi tiến hành giải thích mô hình bằng cách sử dụng có thể giải thích được_forecast() phương pháp cho mẫu đầu vào dự báo cụ thể được yêu cầu. Chúng tôi cũng lập kế hoạch giá trị hình dángs để hiểu sự đóng góp giá trị của tính năng đối với suy luận mô hình được thực hiện cụ thể.

Hình ảnh của tác giả: Khả năng giải thích mô hình dựa trên các đặc điểm dẫn xuất cho điểm dữ liệu dự báo.

Biểu đồ trên là kết quả của mẫu dữ liệu dự báo. Có thể thấy rằng các tính năng đóng góp đáng kể vào suy luận mô hình tương ứng đối với cột kết quả dựa trên ngày giờ dẫn xuất, tính tuần hoàn và các tính năng được tạo khác đặc biệt là tham chiếu đến một tháng cụ thể, tầm quan trọng của một tuần cụ thể trong năm, những điều ngụ ý tầm quan trọng đối với một ngày tương ứng trong tuần, cho dù ngày lễ nói riêng có quan trọng hay không, v.v.

Lưu ý: Gói này nhìn chung vẫn đang trong quá trình hoàn thiện, vì vậy hãy luôn sẵn sàng đón nhận nhận xét của bạn và những điều mà bạn cảm thấy cũng nên đưa vào. Ngoài ra, nếu bạn muốn trở thành một cộng tác viên, bạn luôn được chào đón nồng nhiệt nhất. Vui lòng liên hệ nếu bạn muốn trở thành cộng tác viên ở bất kỳ khả năng nào.

RNN/LSTM/GRU/BiRNN/BiGRU đã là một phần của phiên bản phát hành đầu tiên, trong khi Mạng thần kinh Spiking, Mạng thần kinh đồ thị, Transformers, GAN, BiGAN, DeepCNN, DGCNN, LSTMAE và nhiều mạng khác đang được thử nghiệm và sẽ được bổ sung sớm sau khi quá trình thử nghiệm hoàn tất.

Kết luận

Chúng tôi đã thấy các mô hình dự báo dựa trên học sâu có thể được xây dựng một cách dễ dàng như thế nào chỉ bằng một vài dòng mã với thông tin đầu vào tùy chỉnh dành riêng cho người dùng mà không cần phải thiết kế kiến ​​trúc mạng sâu ngay từ đầu. Chúng tôi đã xem xét hai trường hợp sử dụng khác nhau của các kịch bản dự báo.

DeepXF giúp thiết kế các mô hình dự báo và phát sóng hiện tại phức tạp với tiện ích tích hợp cho dữ liệu chuỗi thời gian. Người ta có thể tự động xây dựng các mô hình dự báo sâu và phát sóng hiện tại một cách dễ dàng bằng giải pháp đơn giản, dễ sử dụng và ít mã này. Với thư viện này, người ta có thể dễ dàng thực hiện Phân tích dữ liệu khám phá với các dịch vụ như lập hồ sơ dữ liệu, lọc các ngoại lệ, tạo biểu đồ đơn biến/đa biến, biểu đồ tương tác theo biểu đồ, biểu đồ cửa sổ cuộn, phát hiện đỉnh, v.v. và cũng dễ dàng xử lý trước dữ liệu cho dữ liệu chuỗi thời gian của họ với các dịch vụ như tìm kiếm bị thiếu, chỉ định bị thiếu, trích xuất ngày giờ, tạo dấu thời gian duy nhất, loại bỏ các tính năng không mong muốn, v.v. Người ta cũng có thể nhận được số liệu thống kê mô tả nhanh chóng cho dữ liệu chuỗi thời gian được cung cấp. Nó cũng cung cấp khả năng kỹ thuật tính năng với các dịch vụ như tạo độ trễ thời gian, tính năng ngày giờ, mã hóa một lần, tính năng tuần hoàn ngày giờ, v.v. Ngoài ra, nó còn phục vụ cho dữ liệu tín hiệu nơi người ta có thể nhanh chóng tìm thấy điểm tương đồng giữa hai đầu vào tín hiệu chuỗi thời gian đồng nhất. Nó cung cấp phương tiện để loại bỏ nhiễu khỏi các đầu vào tín hiệu chuỗi thời gian, v.v.

Sẽ là một hướng đi đầy hứa hẹn để phát hiện các đột biến trong các cài đặt không gian thời gian nhất định và xây dựng mô hình dự báo với Quy tắc học tiếng Do Thái. Nếu bạn quan tâm thì chắc chắn hãy xem công việc khác của tôi trong bối cảnh xây dựng các mô hình dự đoán với Mạng nơ-ron tăng đột biến từ tại đây.

Đây là liên kết Google Colab Notebook hoàn chỉnh cho cả hai ca sử dụng-1 và ca sử dụng-2 thảo luận trong bài viết này.

Nguyên. Đăng lại với sự cho phép.

Nguồn: https://www.kdnuggets.com/2021/12/sota-explainable-forecasting-and-nowcasting.html

tại chỗ_img

Tin tức mới nhất

tại chỗ_img