1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về công cụ dự báo PROPHET (Đồ án SE121.L21)

11 420 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 900,98 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xây dựng mô hình đự đoán là việc sử dụng các số liệu thống kê để dự đoán kết quả của một vấn đề nào đó.. Người ta thường dùng kỹ thuật này để dự đoán một kết quả nào đó trong tương lai,

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

- -TÌM HIỀU VỀ CÔNG CỤ DỰ BÁO PROPHET

Bộ môn

Đồ án 1 - SE121.L21

Giảng viên hướng dẫn

Nguyễn Công Hoan

Sinh viên thực hiện

Nguyễn Huy Hoàng – 15520255

Trang 2

1 Predictive modelling

1.1 Mô hình dự đoán là gì?

Xây dựng mô hình đự đoán là việc sử dụng các số liệu thống kê để dự đoán kết quả của một vấn đề nào đó Người ta thường dùng kỹ thuật này để dự đoán một kết quả nào đó trong tương lai, nhưng với những tiến bộ công nghệ, việc sử dụng mô hình dự đoán không chỉ dừng lại ở đó mà còn được sử dụng để đoán trước các sự kiện vô định bất kể nó có xảy ra hay không

Ví dụ mô hình dự đoán thường được sử dụng để nhận diện các tội phạm sau khi một vụ án xảy ra Thông thường, một mô hình được chọn dựa trên xác suất dự đoán của kết quả với một lượng dữ liệu cho trước Giả sử tỉ lệ một email là spam khi cho ra một email bất kì Trong một số trường hợp, việc xây dựng mô hình dự đoán gần giống như lĩnh vực Machine Learning trong khoa học máy tính và dữ liêu Nhưng khi thuật ngữ này được sử dụng trong môi trường thương mại, thuật ngữ này thường được hiểu là “Phân tích dự đoán” hơn là “Mô hình dự đoán”

Để có cái nhìn tổng quát về cách mà một mô hình dự đoán hoạt động, hình minh họa cho thấy có 3 lớp (Xanh, Trắng và Cam)

- Lớp thứ nhât: tượng trưng cho đầu vào một thông tin cần lấy kết quả dự đoán, cụ thể có là nội dung của một email, các thông số của một ngồi nhà

- Lớp thứ hai: là mô hình dự đoán mà ta đã xây dựng được từ những dữ liệu có sẵn Giả sử, trong 10 năm hoạt động của công ty đã thu thập được 20 ngàn dữ liệu giá bán của sắt thép, từ những dữ liệu có sẵn đó ta có thể sử dụng công cụ, phương pháp toán học để xây dựng một mô hình (một biểu thức toán học) để cho

ra kết quả dự đoán của những năm tiếp theo

Hình 1 Minh họa cơ chế của một mô hình dự đoán

Trang 3

- Lớp thứ ba: Kết quả, là đầu ra của một mô hình dự đoán Ví dụ như kết quả một email là Spam hay không Spam, ngồi nhà đáng giá bao nhiêu tiền…

1.2 Các loại mô hình dự đoán

Trước khi bắt đầu đi vào xây dựng một mô hình dự đoán, ta cần xác định loại mô hình

dự đoán mà vấn đề đang chứa đựng Từ hai ví dụ trên, “Spam hay không Spam” và “Giá của một ngôi nhà” là hai loại phổ biến của việc xây dựng mô hình dự đoán

1.2.1 Classification (Phân loại)

Mô hình dự đoán mang tính phân loại là công việc phỏng đoán một lượng dữ liệu X

để cho ra những kết quả rời rạc (y)

Ví dụ, một email có nội dung có thể được phân thành 2 loại: “Spam” hoặc “Không Spam”:

- Một vấn đề mang tính phân loại cần một lượng thông tin có sẳn được phân chia thành từng loại khác nhau

- Việc phân loại có thể cho ra kết quả dạng xác suất hay dạng kết quả rời rạc

- Vấn đề có hai trường hợp có thể xảy ra còn được gọi là Phân loại nhị phân (Nghĩa là đúng/sai, Spam/Không spam,…)

- Vấn đề có hơn hai trường hợp có thể xảy ra, được gán nhanh nhiều mục khác nhau được gọi là Multi-label classification

Việc dự đoán một mô hình mang tính phân loại có kết quả là một số thực tượng trưng cho xác suất của một đầu vào A thuộc loại B khá phổ biến Xác suất thường được hiểu là: khả năng, hay độ tự tin (confidence) một thông số đầu vào (một mục

dữ liệu) thuộc vào một Loại nào đó Với kết quả này, chúng ta có thể chuyển sang một kết quả phân loại bằng cách chọn đầu ra có xác suất cao nhất Ví dụ với nội dung của một email là X, khi đi vào mô hình dự đoán phân loại cho kết quả A là: 60% Spam, nghĩa là 40% không phải là spam Nếu chúng ta định nghĩa một email là Spam nếu đầu ra > 50%, thì ta có thể chuyển đổi kết quả A thành: Spam (ví 60% > 50%)

Để đánh giá sự chính xác của mô hình phân loại, ta chỉ cần đánh giá sự chính xác của kết quả phân loại dựa trên một dữ liệu kiểm thử

Hình 2 Một số loại mô hình dự đoán

Trang 4

Ví dụ nếu một mô hình phân loại, từ 5 đầu vào cho ra 3 kết quả đúng và 2 kết quả sai, ta có thể đánh giá độ chính xác bằng cách

- Accuracy = correction predictions/total predictions * 100

- Accuracy = 3 / 5 * 100

- Accuracy = 60%

Một thuật toán có thể thiết lập một mô hình phân loại được gọi là thuật toán phân loại

1.2.2 Regression Predictive Modelling

Regression predictive modelling là công việc ước lượng qua một mô hình từ các thông số đầu vào X, để cho ra kết quả là một con số liên tục (y)

Thông số đầu ra liên tục có giá trị một số thực, như là số nguyên, số chấm phảy động Thường những con số này tượng trưng cho những đặc tính về lượng như số lượng và kích thước

Ví dụ, một căn nhà có thể dự đoán để bán với một số lượng tiền nhất định Ví dụ trong khoản từ 1 tỷ đến 2 tỷ

- Một Regression Problem yêu cầu dự đoán các thông số về lượng

- Regression có thể có thông số đầu vào là số thực hoặc các biến rời rạc

- Một vấn đề có thể có nhiều thông số đầu vào, được gọi là Multivariate regression problem

- Một vấn đề regression với các thông số đầu vào được sắp xếp theo trình tự thời gian được gọi là vấn đề đự đoán các sự kiện theo dòng thời gian (Time series forecasting problem)

Vì một mô hình dự đoán Regression dự đoán một lượng cụ thể, sự chính xác của của

mô hình được coi là “tỉ lệ lỗi” trong một dự đoán

Có nhiều cách để ước tính sự chính xác của một mô hình Regression, nhưng phổ biến nhất là tính RMSE (Root Mean Squared Error)

Ví dụ, một mô hình cho ra 2 dự đoán, 1 là 1.5 (so với kết quả thực là 1), hai là 3.3 với kết quả thực là 3.3 Vậy thì RMSE sẽ là:

- RMSE = sqrt(average(error^2)

- Error = Y – Y’ (Y là kết quả thực, Y’ là kết quả dự đoán được)

- RMSE = sqrt(((1.0 – 1.5)^2 + (3.0 – 3.3)^2) / 2 )

- RMSE = sqrt((025 + 0.09)/2)

- RMSE = sqrt(0.17)

- RMSE = 0.412 Thuận lời của việc tính RMSE là đơn vị của tỉ lệ sai phạm trùng với tỉ lệ dự đoán Một thuật toán có thể sử dựng Regression Predictive Model được gọi là một thuật toán Regression

Với một số thuật toán có từ Regression trong tên gọi có thể gây nhầm lẫn như, với Linear Regression là một thuật toán Regression, trong khi Logistic Regression là một thuật toán phân loại

Trang 5

II Machine Learning

1 Các bước xây dựng mô hình dự đoán

Giả sử với những dữ liêu sẵn có, ta có thể bắt đầu công việc xây dựng mô hình dự đoán qua các công đoạn sau:

- Phân tích tổng thể dữ liệu – Chiếm 50% thời gian

- Xử lý sơ bộ dữ liệu (Xử lý liệu biên, dữ liệu bị thiếu) – 40% thời gian

- Xây dựng mô hình dự đoán

- Đánh giá sự chính xác của mô hình.

Do sự tiến bộ về các công cụ và thuật toán machine learning, nên việc xây dựng mô hình dự đoán có thể làm rất nhanh và dễ dạng Do đó, thay vì dành phần lớn thời gian để thiết kế lại những gì đã có sẵn (mô hình dự đoán), ta dành thời gian đó cho việc quan sát sơ bộ dữ liệu

để đánh giá tổng thể về độ tin cây, nhận diện các dữ liệu còn thiếu, các dữ liệu biên, các trường dữ liệu không liên quan đễn vấn đề cần giải quyết Thời gian nay sẽ giúp chúng ta hiểu rõ hơn dữ liều mà mình đang làm việc, từ đó có cách tiếp cận đúng trong việc xây dựng

mô hình dự đoán, tránh tình trạng mô hình được tạo ra dựa trên các giá trị không thực thế hay không tồn tại, ảnh hướng đến kết quả dự đoán

1.2 Xử lý sơ bộ dữ liệu (Xử lý liệu biên, dữ liệu bị thiếu)

Đây được xem là phần chiếm nhiều thời gian nhất, cần những biện pháp thông minh để hoàn tất giai đoạn này Đây là những cách để chúng ta sử lý những dữ liệu xấu

o Gán những biến tạm cho các giá trị còn thiếu: các giá trị còn thiếu của một lượng thông tin có thể cho chúng ta biết nhiều điều Bằng cách gán các giá trị tạm để mô hình dự đoán biết đó là giá trị còn thiếu có thể cho ra các kết quả chuẩn xác hơn

o Gán những giá trị còn thiếu bằng giá trị trung bình trong cùng một trường

dữ liệu (data imputation) Đây cũng là cách phổ biến để xử lý các dữ liệu còn thiếu

1.3 Xây dựng mô hình dự đoán

Sử dụng các công cụ hoặc các thuật toán để xây dụng mô hình dựa trên các dữ liệu đã được

xử lý Các kỹ thuật để xây dựng mô hình dự đoán sẽ được đề cập ở phần sau, Machine Learning

1.4 Đánh giá sự chính xác của mô hình.

Đi kèm với xây dựng mô hình dự đoán là đánh giá mô hình dự đó Có việc này đề chúng ta biết được sự tin cây của mô hình dự đoán lên các dữ liệu trong tương lai Giai đoạn này là lúc chúng ta có thể đưa ra những quyết định có hay không sử dụng hay cải thiện mô hình dựa trên các thông số về độ chính xác hay RMSE đã được đề cập ở phần trước

2 Các nền tảng và thư viện sẽ sử dụng

Đối với đô án này, ta sẽ sử dụng:

+ TensorFlow Python

Trang 6

+ Facebook’s Prophet API for stock market prediction

+Alpha Vantage for historical stock price

+plot.ly for data plotting

2.1 TensorFlow

Tensorflow là 1 thư viện mã nguồn mở miễn phí để xử lý dataflow và phân loại dữ liệu dựa

trên nhiều yêu cầu khác nhau Nó là 1 thư viện toán học cung cấp khả năng xử lí tính toán số học dựa trên biểu đồ mô tả sự thay đổi của dữ liệu Tensor được sử dụng khi bạn cần giải quyết các bài toán supervised learning Tensorflow được phát triển bởi Google Brain team để

sử dụng nội bộ và được phát hành rộng rãi vào tháng 9/2015 Thư viện này được sử dụng trong nghiên cứu lẫn trong các sản phẩm và dịch vụ của Google

Trong tesorflow có một vài khái niệm cơ bản sau:

Tensor là cấu trúc dữ liệu trong tensorflow đại diện cho tất cả các loại dữ liệu Nói cách

khác, tất cả các kiểu dữ liệu khi đưa vào trong tensorflow thì đều được gọi là Tensor Vậy nên có thể hiểu được Tensorflow là một thư viện mô tả, điều chỉnh dòng chảy của các Tensor Tensor có 3 thuộc tính cơ bản là rank, shape và type

Rank là số bậc của tensor Ví dụ Tensor = [1] thì có rank = 1, Tensor = [[3,4],[5,6]] thì

sẽ có rank = 2 Việc phân rank này khá quan trọng vì nó đồng thời cũng giúp phân loại

dữ liệu của Tensor

Shape là chiều của tensor Vi dụ Tensor = [[[1,1,1],[178,62,74]]] sẽ có Shape = (1,2,3),

Tensor = [[1,1,1],[178,62,74]] sẽ có Shape = (2,3)

Type kiểu dữ liệu của các elements trong Tensor Vì một Tensor chỉ có duy nhất một

thuộc tính Type nên từ đó cũng suy ra là chỉ có duy nhất một kiểu Type duy nhất cho toàn bộ các elements có trong Tensor hiện tại

2.2 Facebook’s Prophet API for stock market prediction

Trang 7

Prophet là 1 thuật toán dự báo mã nguồn mở được phát hành bởi đội ngũ Core Data Science của Facebook dựa trên mô hình Sklearn (scikit-learn) trên nền tảng Python Cụ thể hơn là thuật toán dự đoán giá của chứng khoán, cho kết quả là 1 chuỗi dữ liệu theo thời gian dựa theo 1 mô hình tuyến tính theo năm, theo tháng và theo ngày, với cà sự ảnh hưởng của ngày lễ Nó được sử dụng cho nhiều ứng dụng của Facebook với độ chính xác cao và tốc độ xử lý nhanh.

Prophet có thể xử lý dữ liệu lộn xộn 1 cách dễ dàng, thích ứng với các ngoại lệ mà không cần xử lý thủ công, mất dữ liệu và thay đổi đột ngột trong chuỗi thời gian Prophet cũng hỗ trợ các khả năng tinh chỉnh dự đoán, sử dụng các thông số khác nhau để cải thiện dự đoán bằng hiểu biết của bạn về tên miền chứng khoán đó.

Cốt lõi của nó là tổng của ba hàm số của thời gian cộng với một thuật ngữ lỗi: tăng trưởng g(t) , thời vụ s(t) , ngày lễ h(t) và lỗi e_t :

Facebook Prophet hoạt động tương tự như scikit-learning, vì vậy trước tiên chúng tôi khởi tạo mô hình, sau đó gọi fit(ts)việc chuyển chuỗi thời gian qua nó Khi gọi predict(ts), Prophet xuất ra rất nhiều thông tin May mắn thay, các nhà phát triển đã thêm một phương pháp được gọi là

.make_future_dataframe(periods = 10)sẽ dễ dàng thu thập tất cả các kết quả đầu ra một cách có tổ chức Phương pháp này xuất ra khung dữ liệu gấu trúc trống mà chúng tôi sẽ điền vào dự báo bằng predict(ts)phương pháp này Dự báo sẽ chứa một dự đoán cho mọi giá trị lịch sử có trong tập

dữ liệu cộng với các dự báo bổ sung cho số giai đoạn đã chuyển qua phương pháp (trong trường hợp trên 10) Có nhiều cột thông tin hữu ích trong khung dữ liệu tương lai này nhưng những cột quan trọng nhất là:

ds chứa mục nhập dấu thời gian của dự báo

yhat chứa giá trị dự báo của chuỗi thời gian

yhat_lower chứa dưới cùng của khoảng tin cậy cho dự báo

yhat_upper chứa dưới cùng của khoảng tin cậy cho dự báo

2.3 Alpha Vantage for historical stock price

Áp Alpha Vantage Inc cung cấp bộ API miễn phí cho dữ liệu chứng khoán trong quá khứ hay trong thời gian thực của các công ty lớn trên toàn cầu, dữ liệu forex (FX) và tiền điện tử.

Phần Stock time series cung cấp dữ liệu thời gain thực trong ngày cùng với dữ liệu quá khứ trong các khoảng thời gian theo từng ngày, từng tuần, từng tháng với dữ liệu trong hơn 20 năm về trước (và hơn thế nếu request thêm) về giá mở sàn, giá đóng sàn, giá trần và giá đáy

2.4 plot.ly for data plotting

Tính plot.ly là 1 trang web cung cấp công cụ vẽ biểu đồ, phân tích và thống kê dữ liệu và cả thư viện API mã nguồn mở miễn phí để xây dựng biểu đồ cho nhiều ngôn ngữ lập trình trong đó có Python

Trang 8

III Xây dựng mô hình dự đoán Giá Chứng khoán

1 Tiếp cận: Lĩnh vực chứng khoán

Chứng khoán là kênh đầu tư có khả năng sinh lợi cao và cũng tiềm ẩn nhiều rủi ro Do đó, việc dự báo xu hướng vận động của thị trường và giá cổ phiếu luôn được quan tâm Một mô hình dự đoán

có hiệu quả có thể được các nhà đầu tư sử dụng để đưa ra quyết định hoặc có thể được sử dụng bên trong một hệ thống giao dịch tự động

Việc dự đoán đúng giá một chứng khoán có thể tăng hoặc giảm trong khoảng

thời gian tới sẽ giúp đưa ra các quyết định đầu tư đúng đắn.

2 Setup Environment

Các bước thực hiện (với hình)

Download và cài đặt Anaconda

Trang 9

Mở Anaconda Prompt, gõ và chạy lệnh sau:

conda create -n prophet_env

conda activate prophet_env

conda install -c conda-forge fbprophet

Qua đó, ta đã có được môi trường python đã được cài đặt prophet

3 Nguồn dữ liệu – Xử lý bằng API

Giá chứng khoán thường có nhiều API và data đã được chuẩn hóa như yahoo finance, google finance, Alpha Vantage

Trong project này, nhóm quyết định sử dụng Alpha Vantage.

Key API miễn phí được lấy từ website của Alpha Vantage

Trang 10

4 Chạy ví dụ của Prophet – Chạy ví dụ đồ án mẫu

Report Kết quả (với hình)

Facebook (FB):

Google (GOOGL):

Microsoft (MSFT):

Trang 11

Nintendo (NTDOY):

Link Github:

https://github.com/Kahdeg-15520487/stock-predict

Ngày đăng: 28/08/2021, 22:34

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w