^Back To Top

foto1 foto2 foto3 foto4 foto5


Get Adobe Flash player

Bài toán dự báo là bài toán có thể sử dụng các mô hình học máy để dự đoán giá trị của một biến số trong tương lai dựa trên các giá trị của biến số đó trong quá khứ. Các bài toán dự báo thường gặp trong thực tế bao gồm: Dự báo thời tiết; Dự báo doanh số bán hàng; Dự báo tình trạng bệnh tật; Dự báo kết quả thi… Bài viết này trình bày ứng dụng thuật toán SVM cho dự báo điểm thi của sinh viên thông qua các đặc trưng: Thời gian giờ ngủ, Thời gian tự học, Thời gian giải trí của sinh viên

Thuật toán SVM

2.1 Thuật Toán

Thuật toán Support Vector Machine (SVM) là một thuật toán máy học được sử dụng chủ yếu cho các vấn đề phân loại và hồi quy. Ý tưởng cơ bản của SVM là tìm ra đường phẳng (hoặc siêu phẳng) tốt nhất để phân chia không gian đặc trưng thành các lớp. Trong trường hợp phân loại nhị phân, mục tiêu là tìm một ranh giới quyết định sao cho khoảng cách giữa các điểm dữ liệu và đường phẳng là lớn nhất.

Thuật toán SVM cũng có thể được mở rộng để xử lý các tình huống phân loại đa lớp và thậm chí là dự báo hồi quy. Kernel trick là một khía cạnh quan trọng của SVM, cho phép ánh xạ dữ liệu từ không gian đặc trưng ban đầu sang một không gian cao chiều, giúp SVM giải quyết các vấn đề phức tạp hơn.

2.2. Ưu điểm, nhược điểm của thuật toán SVM

Ưu điểm:

  • Có thể xử lý phi tuyến tính bằng kỹ thuật Kernel.
  • Tạo độ bền tốt (Robustness)
  • Có thể được kiểm soát bằng kỹ thuật Soft Margins.

Nhược điểm: Không phù hợp với tập dữ liệu lớn vì mất nhiều thời gian để huấn luyện.

3. Cài đặt thực nghiệm

3.1. Dữ liệu: Dữ liệu gồm các đặc trưng Giờ học, giờ ngủ, giờ chơi gâm, kết quả thi (kết quả thi 0 là trượt, 1 là đậu). Bộ dữ liệu gồm 142 bản ghi, mỗi bản ghi mô tác các đặc trưng thực tế của một sinh qua khảo sát, làm dữ liệu huấn luyện cho bài toán.

(142 bộ dữ liệu trong file)

3.2. Thực nghiệm (step by step Coding)

  1. import pandas as pd
  2. import numpy as np
  3. importpyplot as plt
  4. frommplot3d import Axes3D
  5. frommodel_selection import train_test_split
  6. fromsvm import SVC
  7. frommetrics import accuracy_score
  8. frommetrics import accuracy_score, classification_report
  9. # Load data
  10. data =read_csv("./csv/student_data_.csv")
  11. …….
  12.   # Create DataFrame from input data
  13.   input_data_df =DataFrame(
  14.       {
  15.           "Study Hours": [study_hours],
  16.           "Sleep Hours": [sleep_hours],
  17.           "Play Game Hours": [gaming_hours],
  18.       }
  19.   )
  20.   # Predict the exam result
  21.   prediction =predict(input_data_df)
  22.   # Print the results
  23.   result = "Pass" if prediction[0] == 1 else "Fail"
  24.   print(f"name: {student_name}, exam: {result}")
  25.   # Plot the results on a 3D scatter plot
  26.   color = "green" if prediction[0] == 1 else "red"
  27. scatter(study_hours, sleep_hours, gaming_hours, c=color)
  28. # Display the hyperplane with a lower alpha value for a thinner appearance
  29. xx, yy =meshgrid(X.iloc[:, 0], X.iloc[:, 1])
  30. zz = (
  31.   -intercept_[0] - model.coef_[0, 0] * xx - model.coef_[0, 1] * yy
  32. ) /coef_[0, 2]
  33. plot_surface(xx, yy, zz, alpha=0.1, color="blue", label="Hyperplane")
  34. # Set axis labels
  35. set_xlabel("Study Hours")
  36. set_ylabel("Sleep Hours")
  37. set_zlabel("Play Game Hours")
  38. set_title("SVM classifier")
  39. # Display the 3D plot
  40. show()

4. Kết quả thực nghiệm và bình luận

4.1. Kết quả thực nghiệm :

24 t6 m1

4.1.1 giải thích classification report

1.  Accuracy (Độ chính xác): 0.9655172413793104

  • Độ chính xác là tỷ lệ giữa số lượng dự đoán đúng và tổng số mẫu trong tập kiểm tra.
  • Trong trường hợp này, độ chính xác là khoảng 96.55%.

2.  Classification Report (Báo Cáo Phân Loại):

  • Precision (Chính xác):

- Precision là tỷ lệ giữa số lượng dự đoán đúng của một lớp và tổng số lượng dự đoán thuộc lớp đó.

- Ví dụ, precision của lớp 0 là 0.93, nghĩa là 93% trong số các mẫu được dự đoán là lớp 0 thực sự là lớp 0.

- Recall (Độ phủ): Recall là tỷ lệ giữa số lượng dự đoán đúng của một lớp và tổng số lượng mẫu thực sự thuộc lớp đó. Ví dụ, recall của lớp 1 là 0.93, nghĩa là mô hình bắt kịp được 93% trong số mẫu thực sự thuộc lớp 1.

- F1-Score: F1-score là trung bình điều hòa giữa precision và recall. Nó được sử dụng khi chúng ta muốn cân nhắc cả precision và recall. Đối với cả lớp 0 và lớp 1, F1-score đều là khoảng 0.97, đây là một kết quả tốt.

- Support: Support là số lượng mẫu thực sự thuộc mỗi lớp trong tập kiểm tra.

- Macro Avg: Là trung bình của các giá trị precision, recall và f1-score trên tất cả các lớp. Macro Avg không quan tâm đến kích thước của các lớp, nó tính toán trung bình một cách bình đẳng cho mỗi lớp.

- Weighted Avg: Là trung bình có trọng số theo số lượng mẫu thực sự thuộc mỗi lớp. Weighted Avg đánh giá hiệu suất của mô hình với trọng số lớn hơn đối với các lớp có số lượng mẫu lớn hơn.

4.2. Đồ thị kết quả và siêu phẳng phân lớp

24 t6 m2

5. Kết luận

Support Vector Machine (SVM) là một thuật toán học máy phân lớp được sử dụng rộng rãi trong nhiều ứng dụng thực tế. SVM hoạt động bằng cách tìm một siêu phẳng trong không gian dữ liệu sao cho hai lớp dữ liệu được phân tách nhau một cách tối ưu, đồng thời đảm bảo khoảng cách giữa siêu phẳng và các điểm dữ liệu của hai lớp là lớn nhất có thể. Thực nghiệm bài toán dự báo điểm thi của sinh với thuật toán SVM với tập dữ liệu đầu vào trong bài viết cho kết quả chính xác lên đến 97% trong quá trình kiểm thử. Tuy nhiên trên thực tế, kết quả này còn phụ thuộc các đặc trưng của dữ liệu khảo sát trong khuôn khổ kết quả thi nghiêm túc được khảo sát.

6. Tài liệu tham khảo

https://www.nerd-data.com/svm/

https://viblo.asia/p/gioi-thieu-ve-support-vector-machine-svm-6J3ZgPVElmB