Tải bản đầy đủ (.docx) (11 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (773.03 KB, 11 trang )

ĐẠ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 Hồng – 15520255


Contents

I Mơ hình dự đốn
1. Predictive modelling

1.1

Mơ hình dự đốn là gì?

Xây dựng mơ hình đự đố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ự đốn khơng chỉ
dừng lại ở đó mà cịn được sử dụng để đố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ự đố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ự đốn” hơn là “Mơ
hình dự đốn”

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

Để có cái nhìn tổng qt về cách mà một mơ hình dự đố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ự đố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ự đố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 tốn học để xây dựng một mơ hình (một biểu thức tốn học) để cho
ra kết quả dự đoán của những năm tiếp theo.


-

1.2

Lớp thứ ba: Kết quả, là đầu ra của một mơ hình dự đố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…

Các loại mơ hình dự đốn

Trước khi bắt đầu đi vào xây dựng một mơ hình dự đốn, ta cần xác định loại mơ hình
dự đố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ự đốn

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

1.2.1 Classification (Phân loại)

Mơ hình dự đố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ự đố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ự đố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ử.


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 tốn có thể thiết lập một mơ hình phân loại được gọi là thuật tố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ự đố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ự đố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 đề đự đốn các sự kiện theo dịng thời gian (Time series

forecasting problem)

Vì một mơ hình dự đốn Regression dự đố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ự đố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 tốn có thể sử dựng Regression Predictive Model được gọi là một thuật
tốn Regression.
Với một số thuật tố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.


II Machine Learning
1. Các bước xây dựng mơ hình dự đố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ự đố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ự đốn
Đánh giá sự chính xác của mơ hình.

1.1

Phân tích tổng thể dữ liệu
Do sự tiến bộ về các cơng cụ và thuật tốn machine learning, nên việc xây dựng mơ hình dự
đố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ự đố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ự đố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 để
hồ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.
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ự đố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.
o


1.3 Xây dựng mơ hình dự đốn
Sử dụng các cơng cụ hoặc các thuật tố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ự đố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ự đố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


+ 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 tốn học cung cấp khả năng xử lí tính tố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


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 tồ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


III Xây dựng mơ hình dự đốn Giá Chứng khố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ự đố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 khố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


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


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):



Nintendo (NTDOY):

Link Github:
/>


×