Học máy - Huấn luyện/kiểm tra
- Trang trước Phóng to
- Trang tiếp theo Cây quyết định
Đánh giá mô hình
Trong học máy, chúng ta tạo mô hình để dự đoán kết quả của một số sự kiện, giống như trong chương trước khi chúng ta hiểu về trọng lượng và khối lượng động cơ, chúng ta đã dự đoán lượng khí thải CO2 của ô tô.
Để đo lường xem mô hình có đủ tốt hay không, chúng ta có thể sử dụng một phương pháp gọi là huấn luyện/kiểm tra.
Gì là huấn luyện/kiểm tra
Huấn luyện/kiểm tra là một phương pháp đo lường độ chính xác của mô hình.
Lý do gọi là huấn luyện/kiểm tra là vì chúng ta đã chia dữ liệu thành hai nhóm: bộ dữ liệu huấn luyện và bộ dữ liệu kiểm tra.
80% được sử dụng cho việc huấn luyện, 20% được sử dụng cho việc kiểm tra.
Bạn có thể sử dụng bộ dữ liệu huấn luyện để huấn luyện mô hình.
Bạn có thể sử dụng bộ dữ liệu kiểm tra để kiểm tra mô hình.
Huấn luyện mô hình có nghĩa là tạo mô hình.
Kiểm tra mô hình có nghĩa là kiểm tra độ chính xác của mô hình.
Bắt đầu từ dữ liệu.
Bắt đầu từ dữ liệu cần kiểm tra.
Dữ liệu của chúng tôi đã hiển thị 100 khách hàng trong cửa hàng và thói quen mua sắm của họ.
Ví dụ
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x plt.scatter(x, y) plt.show()
Kết quả:
Trục x biểu thị số phút trước khi mua sắm.
Trục y biểu thị số tiền chi tiêu cho việc mua sắm.

Chia tập đào tạo/kiểm tra
Tập đào tạo nên là 80% của dữ liệu ban đầu được chọn ngẫu nhiên.
Tập kiểm tra nên là 20% còn lại.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Hiển thị tập đào tạo
Hiển thị biểu đồ điểm rơi giống như tập đào tạo:
Ví dụ
plt.scatter(train_x, train_y) plt.show()
Kết quả:
Nó trông giống như tập dữ liệu ban đầu, vì vậy có vẻ như là một lựa chọn hợp lý:

Hiển thị tập kiểm tra
Để đảm bảo rằng tập kiểm tra không hoàn toàn khác biệt, chúng ta cũng cần xem xét tập kiểm tra.
Ví dụ
plt.scatter(test_x, test_y) plt.show()
Kết quả:
Tập kiểm tra cũng trông giống như tập dữ liệu ban đầu:

Phù hợp hóa tập dữ liệu
Tập dữ liệu như thế nào? Tôi nghĩ rằng phương trình đa thức là phù hợp nhất, vì vậy hãy vẽ một đường đa thức回归.
Để vẽ một đường qua các điểm dữ liệu, chúng ta sử dụng mô-đun matplotlib plott()
Phương pháp:
Ví dụ
Vẽ đường đa thức回归 qua các điểm dữ liệu:
import numpy import matplotlib.pyplot as plt numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) myline = numpy.linspace(0, 6, 100) plt.scatter(train_x, train_y) plt.plot(myline, mymodel(myline)) plt.show()
Kết quả:

Kết quả này có thể hỗ trợ cho gợi ý của chúng ta về việc phù hợp với đa thức của tập dữ liệu, ngay cả khi chúng ta thử dự đoán các giá trị ngoài tập dữ liệu thì cũng có thể mang lại một số kết quả kỳ lạ. Ví dụ: dòng này cho thấy một khách hàng đã mua sắm trong 6 phút, sẽ hoàn thành một giao dịch mua sắm có giá trị 200. Điều này có thể là dấu hiệu của việc quá phù hợp.
Nhưng về R-squared score thì sao? R-squared score rất tốt trong việc chỉ ra mức độ phù hợp của tập dữ liệu với mô hình của tôi.
R2
Nhớ lại R2, cũng được gọi là R平方 (R-squared) không?
Nó đo mối quan hệ giữa trục x và trục y, giá trị từ 0 đến 1, trong đó 0 có nghĩa là không có mối quan hệ, còn 1 thì hoàn toàn có mối quan hệ.
Mô-đun sklearn có một tên gọi rs_score()
Cách đó, phương pháp này sẽ giúp chúng ta tìm ra mối quan hệ đó.
Tại đây, chúng ta cần đo lường mối quan hệ giữa thời gian khách hàng ở trong cửa hàng và số tiền họ chi.
Ví dụ
Vậy dữ liệu đào tạo của chúng ta có phù hợp với phương trình đa thức như thế nào?
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(train_y, mymodel(train_x)) print(r2)
Ghi chú:Kết quả 0.799 cho thấy mối quan hệ rất tốt.
Giới thiệu tập kiểm tra
Hiện tại, ít nhất trong dữ liệu đào tạo, chúng ta đã xây dựng được một mô hình rất tốt.
Sau đó, chúng ta cần sử dụng dữ liệu kiểm tra để kiểm tra mô hình, để xem có cho ra kết quả tương tự hay không.
Ví dụ
Hãy xác định số điểm R2 khi sử dụng dữ liệu kiểm tra:
import numpy from sklearn.metrics import r2_score numpy.random.seed(2) x = numpy.random.normal(3, 1, 100) y = numpy.random.normal(150, 40, 100) / x train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:] mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4)) r2 = r2_score(test_y, mymodel(test_x)) print(r2)
Ghi chú:Kết quả 0.809 cho thấy mô hình này cũng phù hợp với tập kiểm tra, chúng ta tin rằng có thể sử dụng mô hình này để dự đoán giá trị tương lai.
Giá trị dự đoán
Bây giờ chúng ta đã xác định rằng mô hình của chúng ta rất tốt, có thể bắt đầu dự đoán giá trị mới.
Ví dụ
Nếu khách hàng mua hàng ở cửa hàng trong 5 phút, họ sẽ tiêu tốn bao nhiêu tiền?
print(mymodel(5))
Ví dụ này dự đoán rằng khách hàng đã tiêu tốn 22.88 đô la, có vẻ như phù hợp với biểu đồ sau:

- Trang trước Phóng to
- Trang tiếp theo Cây quyết định