Bài viết dưới đây sẽ cung cấp cho bạn thông tin về học máy với PyThon phân tích dữ liệu trong dự báo.
- Mở đầu về trí tuệ nhân tạo học máy
Machine Learning (ML) hay học máy là một phần của trí tuệ nhân tạo AI (Artificial Intelligence), đây là lĩnh vực nghiên cứu cho phép máy tính có thể tự cải thiện bản thân của chúng dựa trên các dữ liệu mẫu (training data) hay dựa vào kinh nghiệm là những gì đã được học trước đó. Machine Learning cũng có thể tự dự đoán cũng như đưa ra quyết định mà không cần lập trình hướng đi cụ thể, chi tiết.
Học máy vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu cơ sở và lựa chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời, trước khi sử dụng, dữ liệu phải sạch, không có sai lệch và không có dữ liệu giả.
Các mô hình học máy yêu cầu lượng dữ liệu đủ lớn để “huấn luyện” và đánh giá mô hình. Trước đây, các thuật toán học máy thiếu quyền truy cập vào một lượng lớn dữ liệu cần thiết để mô hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng trưởng trong dữ liệu lớn (big data) đã cung cấp các thuật toán học máy với đủ dữ liệu để cải thiện độ chính xác của mô hình và dự đoán.
- Các bước cơ bản trong machine learning
- Thu thập dữ liệu
Để máy tính có thể học và đưa ra các dự đoán, phân tích, lập trình viên cần cung cấp một bộ dữ liệu gọi là Dataset cho máy. Thông thường, bạn có thể thu thập các dữ liệu này hoặc sử dụng các Dataset có sẵn trên các nền tảng.
Cần lưu ý lựa chọn những bộ dữ liệu từ những nguồn chính thống đáng tin cậy, như vậy quá trình học máy tính mới có thể học được một cách chính xác và đưa ra những kết quả đúng đắn, có tỷ lệ hiệu quả cao hơn.
- Tiền xử lý
Bước tiền xử lý trong Machine Learning dùng để chuẩn hóa các dữ liệu vừa thu thập được, giúp loại bỏ các thuộc tính không cần thiết, những dữ liệu bị sai, hỏng, thiếu. Đồng thời bước này sẽ tiến hành gán nhãn, mã hóa các đặc trưng, trích xuất những đặc trưng và rút gọn bộ dữ liệu mà vẫn đảm bảo kết quả đầu ra.
Bước Preprocessing chiếm thời gian nhất trong toàn bộ quá trình làm việc, nó tỷ lệ thuận với độ lớn, khối lượng dữ liệu mà chúng ta cung cấp. Từ đó, tổng thời gian thực hiện hai bước 1 và 2 ở trên chiếm tổng thời gian khoảng 70% toàn quá trình.
- Huấn luyện mô hình
Bước huấn luyện mô hình này sử dụng để cho máy học trên dữ liệu đã cung cấp và tiến hành xử lý ở hai bước đầu tiên.
- Đánh giá mô hình
Sau khi đã tiến hành huấn luyện mô hình, bước tiếp theo trong Machine Learning đó là đánh giá mô hình vừa tạo ra. Tùy thuộc vào từng các loại độ đo khác nhau mà mô hình vừa huấn luyện được đánh giá là tốt hay không tốt khác nhau. Về cơ bản, độ chính xác của mô hình vừa huấn luyện đạt trên 80% được cho là đảm bảo hiệu quả.
- Cải thiện thuật toán
Trong bước cải thiện này, những mô hình sau khi đã được đánh giá nếu không đạt chuẩn thì sẽ được tiến hành lại bước thứ 3 cho đến khi độ chính xác đạt đúng kỳ vọng cần thiết. Ba bước cuối của quá trình học máy làm việc (Machine Learning Workflow) là khoảng 30% tổng quá trình.
2. Thuật toán hồi quy
- Khái niệm
“Hồi quy tuyến tính” là một phương pháp thống kê để hồi quy dữ liệu với biến phụ thuộc có giá trị liên tục trong khi các biến độc lập có thể có một trong hai giá trị liên tục hoặc là giá trị phân loại. Nói cách khác “hồi quy tuyến tính” là một phương pháp để dự đoán biến phụ thuộc (y) dựa trên giá trị của biến độc lập (x). Nó có thể được sử dụng cho các trường hợp chúng ta muốn dự đoán một số lượng liên tục.
- Phương trình của hồi quy
Trong khi sử dụng hồi quy tuyến tính, mục tiêu của chúng ta là để làm sao một đường thẳng có thể tạo được sự phân bố gần nhất với hầu hết các điểm. Do đó làm giảm khoảng cách (sai số) của các điểm dữ liệu cho đến đường đó.
Ví dụ, ở các điểm ở hình trên (trái) biểu diễn các điểm dữ liệu khác nhau và đường thẳng (bên phải) đại diện cho một đường gần đúng có thể giải thích mối quan hệ giữa các trục X, Y. Thông qua, hồi quy tuyến tính chúng ta cố gắng tìm ra một đường như vậy. Ví dụ, nếu chúng ta có một biến phụ thuộc Y và một biến độc lập X thì quan hệ giữa X và Y có thể được biểu diễn dưới dạng phương trình sau:
Y = Β0 + Β1*X
Ở đây:
Y = Biến phụ thuộc
X = biến độc lập
Β0 = Hằng số
Β1 = Hệ số mối quan hệ giữa X và Y
3. Tìm đường hồi quy tuyến tính
Sử dụng công cụ thống kê ví dụ như Excel, R, SAS … bạn sẽ trực tiếp tìm hằng số (B0 và B1) như là kết quả của hàm hồi quy tuyến tính. Như lý thuyết ở trên, nó hoạt động và cố gắng giảm bớt sai số.
Ví dụ, giả sử chúng ta muốn dự đoán y từ x trong bảng sau và giả sử rằng phương trình hồi quy của chúng ta sẽ giống như: Y=B0+B1*X
Ở đây,
Nếu chúng ta phân biệt các tổng còn lại của diện tích sai số tương ứng với B0, B1 và tương đương với các kết quả bằng không, chúng ta có được các phương trình sau đây như là một kết quả:
Đưa giá trị từ bảng 1 vào các phương trình trên,
Do đó, phương trình hồi quy nhất sẽ trở thành –
Hãy xem, dự đoán của chúng ta như thế nào bằng cách sử dụng phương trình này
- Bài toán chuẩn bị
Bài toán áp dụng với một mặt hàng “Vàng”. Vàng là một trong những kim loại quý quý giá nhất trên thế giới, luôn được nhiều người tích trữ giá trị hoặc các nhà đầu tư quan tâm của sự quan tâm, đầu tư và phân tích. Giá vàng không chỉ phản ánh sự biến động của thị trường tài chính mà còn được xem là một chỉ số quan trọng về tình hình kinh tế và tâm lý của nhà đầu tư. Việc dự đoán giá vàng tương lai là một thách thức đáng kể, nhưng có thể giúp nhà đầu tư, doanh nghiệp, người tiêu dùng đưa ra quyết định thông minh.
- Chuẩn bị dữ liệu
Nguồn dữ liệu dùng để tranning gồm các cột và quá trình ghi nhận giá vàng trong các ngày hoặc các phiên đã giao dịch.
sách trống để lưu các dự đoán
predicted_prices = []
# Dự đoán giá vàng cho mỗi ngày trong tương lai
for i in range(5):
datestart = ‘5’
stringDate = datestart + ‘-Oct-23’
# Tạo ngày mới cho dự đoán
new_date = datetime.strptime(stringDate, ‘%d-%b-%y’)
new_date += pd.DateOffset(days=i) # Cập nhật ngày cho mỗi lần lặp
new_day_of_year = new_date.timetuple().tm_yday
new_data = [[new_day_of_year, 5.5, 3.7, 48, 3.6, 24000]]
new_data = scaler.transform(new_data)
predicted_price = model.predict(new_data)
predicted_prices.append(predicted_price[0])
# In dự đoán cho mỗi ngày
print(f’Giá vàng dự đoán cho ngày {new_date}: {predicted_prices[i]}’)
# Tạo biểu đồ trực quan hoá dữ liệu
plt.figure(figsize=(15, 15))
plt.plot(data[‘Date’][:len(y_test)], y_test, label=’Giá vàng thực tế’)
plt.plot(data[‘Date’][:len(y_test)], y_pred, label=’Giá vàng dự đoán’)
plt.axvline(x=new_date, color=’r’, linestyle=’–‘, label=’Ngày dự đoán’)
plt.xlabel(‘Ngày’)
plt.ylabel(‘Giá vàng’)
plt.title(‘Dự đoán giá vàng’)
plt.legend()
plt.show()
Tài Liệu Tham Khảo
- Hal Daumé III, Free-Machine-Learning-Books-master (2012).
- Sebastian Raschka, Python Machine Learning (2016).
[3].
[4]. Link code tham khảo :
Giảng viên: Tạ Đăng Chí
Bộ môn Ứng dụng phần mềm
FPT Mạng cá cược bóng đá
Hà Nội