Phân tích thông số của quá trình training và cách lựa chọn parameter tự động
Machine Learning cơ bản với NumPy


Danh sách bài học
Phân tích thông số của quá trình training và cách lựa chọn parameter tự động
Nội dung bài viết Học nhanh
Dẫn nhập
Trong bài trước, chúng ta đã tìm hiểu về TỔNG KẾT LINEAR REGRESSION.
Ở bài này Kteam sẽ giới thiệu đến các bạn Phân tích thông số của quá trình training và cách lựa chọn parameter tự động để hiểu rõ hơn thuật toán của mình và cải thiện hiệu năng.
Nội dung
Để theo dõi bài này tốt nhất bạn cần có kiến thức về:
- LẬP TRÌNH PYTHON CƠ BẢN
- GIỚI THIỆU MACHINE LEARNING VÀ CÀI ĐẶT NUMPY
- MA TRẬN VÀ VECTOR VỚI NUMPY
- LINEAR REGRESSION VÀ HÀM hθ(x) CHO LINEAR REGRESSION.
- THUẬT TOÁN GRADIENT DESCENT CHO LINEAR REGRESSION
- FEATURE NORMALIZE & GRADIENT DESCENT CHO MULTIVARIATE PROBLEM
- NORMAL EQUATION CHO LINEAR REGRESSION
- TỔNG KẾT LINEAR REGRESSION
Trong bài này chúng ta sẽ tìm hiểu về:
- Cách debug thuật toán Machine Learning của bạn.
- Phân biệt các trường hợp Bias và Overfit
- Hệ thống, phân chia training set
- Tự động lựa chọn parameter
- Learning curves
Debug thuật toán Machine Learning
Qua các bài trước bạn đã có thể tự tạo ra một thuật toán Machine Learning cho riêng bạn. Đối với training set, thuật toán hoạt động rất tốt, tuy nhiên khi bạn áp dụng thuật toán với một bộ data hoàn toàn mới, nó lại không hoạt động như ý muốn. Khi này, bạn có một số lựa chọn sau:
- Tìm thêm data cho training set
- Giảm số lượng feature của training set
- Tạo ra thêm feature cho training set
- Thêm các polynomial feature (feature bậc cao như mũ 2, mũ 3,…)
- Thay đổi hệ số regularization (Kteam sẽ hướng dẫn trong các bài sau)
Vậy với nhiều lựa chọn khác nhau như vậy, bạn có thể phải tạo ra 1 diagnostic tool cho thuật toán (một tool chẩn đoán cho thuật toán của bạn). Tuy việc thiết kế tốn kha khá thời gian, nhưng nếu bạn đang không biết phải debug như thế nào thì nó rất đáng để thử.
Phân biệt các trường hợp Bias và Overfit
Trong quá trình training, rất có thể bạn sẽ bắt gặp các trường hợp bias và overfiting, ảnh hưởng đến kết quả của thuật toán. Vậy chúng là gì?
Bias
Đây là trường hợp đường dự đoán của chúng ta không đủ phức tạp để có thể khớp hoàn toàn training set
Overfit
Trái ngược với Bias, Overfiting là trường hợp mà đường dự đoán quá phức tạp, tuy khớp hoàn toàn từng example trong training set nhưng khi sử dụng thuật toán ngoài thực tế thì hoàn toàn sai.
Hệ thống, phân chia training set
Vì có thể thuật toán của chúng ta rơi vào trường hợp overfiting, tuy kết quả của hàm J(θ) rất tốt nhưng thực tế lại không như vậy, ta cần phải phân chia lại bộ data thành 3 phần: train, cross validation và test. Đây cũng là bước đầu để tạo diagnostic tool.
Thông thường tỷ lệ giữa các phần data là:
- Training set: 60%, đây chính là bộ data dùng để train thuật toán
- Cross validation: 20%, đây là bộ data dùng để kiểm tra chất lượng của thuật toán, dùng trong việc tự động lựa chọn parameter
- Test set: đây chính là bộ data dùng để kiểm tra chất lượng sau cùng của thuật toán
Ta tiến hành load data như thường lệ:
Sau đó chúng ta sẽ tách data thành 3 phần:
Bạn có thể plot phần training set ra để xem thử hình dạng của training set lần này (mối liên hệ giữa lượng nước thay đổi (x) và lượng nước xả ra khỏi đập (y)):
Tự động lựa chọn parameter
Trong thuật toán của chúng ta, ta cần phải lựa chọn các parameter như alpha, model, lambda (trong việc regularization, Kteam sẽ hướng dẫn trong các bài sau)… Ta không thể tự mình lựa chọn hết tất cả parameter này được, vì thế Kteam sẽ hướng dẫn các bạn cách tự động lựa chọn các parameter này.
Đối với các parameter là số (alpha, lambda, số lượng training example….) chúng ta sẽ tạo một list các giá trị có thể của các parameter này. Sau đó chúng ta sẽ tạo một vòng lặp thực hiện các bước sau:
- Chọn một giá trị từ list
- Tiến hành training với parameter này (lưu ý chỉ training trên training set đã chia)
- Tính J(θ) của thuật toán được train với parameter này trên cross-validation set
- Tính J(θ) của thuật toán trên training set (dùng để plot learning curves)
Sau khi lưu lại toàn bộ các J(θ) của từng giá trị, ta có thể so sánh và biết được với giá trị nào thì thuật toán hoạt động tốt nhất. Ta cũng có thể plot ra để có cái nhìn tổng quát hơn.
Kết luận
Qua bài này chúng ta đã tìm hiểu cách Phân tích thông số của quá trình training và cách lựa chọn parameter tự động.
Ở bài sau, Kteam sẽ hướng dẫn CÁCH TẠO POLYNOMIAL FEATURE.
Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quyên “Luyện tập – Thử thách – Không ngại khó”.
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Phân tích thông số của quá trình training và cách lựa chọn parameter tự động dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Khóa học
Machine Learning cơ bản với NumPy
Với mục đích giới thiệu đến mọi người về Machine Learning cũng như tạo điểm khởi đầu cho các bạn mới, muốn tham gia và tìm hiểu ban đầu về lĩnh vực khá hot này. Cùng Kteam tìm hiểu về Machine Learning cơ bản với ngôn ngữ Python.
Thông qua khóa học MACHINE LEARNING VỚI NUMPY, Kteam sẽ hướng dẫn các kiến thức cơ bản của thuật toán Machine Learning để các bạn có thể tạo ra những sản phẩm Machine Learning của riêng mình.
Thuật toán kiểm tra chất lượng sau cùng đâu ad xtest với ytest chưa thấy được chức năng test set của nó mong ad bổ sung thêm
qua thử nghiệm mình thấy rằng việc alpha được thể hiện qua GradientDescent phụ thuộc vào step rất nhiều. Cụ thể thì đê đạt điều kiện như hàm if trong GradientDescent thì alpha =0.001 cần loop xấp xỉ 15000 lần. Vậy để tìm được aplha 1 cách hiệu quả thì ta cần làm thế nào để chon được số bước step hợp lý nhất cho GradientDescent? Mong tác giả giải đáp giúp mình. Xin cảm ơn.
Minh ủng hộ làm tiếp đến Neural network để xử lý hình ảnh đi
Chưa có clip giảng hả bạn?
a ơi phần tải xuống là file data mà ạ