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

5.0 (2 đánh giá)
Tạo bởi Huy Trịnh Cập nhật lần cuối 5 năm trước 13.191 lượt xem 5 bình luận
Tác giả/Dịch giả: Huy Trịnh
Học nhanh

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

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

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

Phân tích thông số của quá trình training và cách lựa chọn parameter tự động, Python, Kteam, Howkteam, Numpy

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.

Phân tích thông số của quá trình training và cách lựa chọn parameter tự động, Python, Kteam, Howkteam, Numpy


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

Bài 9 - Reasource

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

Phân tích thông số của quá trình training và cách lựa chọn parameter tự động, Python, Kteam, Howkteam, Numpy


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:

  1. Chọn một giá trị từ list
  2. Tiến hành training với parameter này (lưu ý chỉ training trên training set đã chia)
  3. Tính J(θ) của thuật toán được train với parameter này trên cross-validation set
  4. 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.

Phân tích thông số của quá trình training và cách lựa chọn parameter tự động, Python, Kteam, Howkteam, Numpy


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 likeshare để ủng hộ Kteam và tác giả nhé!

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!


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.

Tác giả/Dịch giả

Chào các bạn!! Mình là Huy - một cậu bé đam mê lập trình :D Trong một mùa hè rảnh rỗi trước năm cuối cấp đầy cam go, sau khi đã cày hết 7749 bộ anime thì mình muốn làm một việc gì đó "có ích cho đời" hơn. Từ đó mình đã thành 1 Kter :)))

Liên hệ: huytrinhm@gmail.com

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.

Đánh giá

MinhVu đã đánh giá 4 năm trước

trandaongochung đã đánh giá 5 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
sieuthiensu1 đã bình luận 3 năm trước

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 

peacecun2208 đã bình luận 3 năm trước

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.

huynh_ngoc_long_88 đã bình luận 4 năm trước

Minh ủng hộ làm tiếp đến Neural network để xử lý hình ảnh đi 

lenhan555 đã bình luận 5 năm trước

Chưa có clip giảng hả bạn?

Truong Le đã bình luận 5 năm trước

a ơi phần tải xuống là file data mà ạ

 

Không có video.