De thi nhập môn học máy và khai phá dữ liệu


Học máy là một lĩnh vực của trí tuệ nhân tạo liên quan tới việc nghiên cứu và xây dựng các kỹ thuật cho phép các hệ thống học tự động để giải quyết những vấn đề cụ thể. Nếu bạn đã học qua môn nhập môn trí tuệ nhân tạo thì ắt hẳn đã có một chương giới thiệu về học máy và 2 bài toán với 2 phương pháp kinh điển trong học máy đó là phân loại văn bản với Naive Bayes và phân cụm với KNN. Với môn học này, chúng ta sẽ được tìm hiểu kĩ hơn, sâu hơn, được giới thiệu nhiều phương pháp hơn, cách làm quen và sử dụng thư viện,...

De thi nhập môn học máy và khai phá dữ liệu

Với các bạn học kỹ thuật máy tính thì môn này thuộc học phần kỹ sư và các bạn cũng không được học môn nhập môn trí tuệ nhân tạo nên có thể là một môn mới mẻ, còn đối với các bạn học khoa học máy tính, mặc dù có 2 bài nói về học máy thôi nhưng một số thầy/cô thường nói nhiều hơn về những gì được đề cập trong slide nên có thể những kiến thức trong môn học này có một số đã là kiến thức cũ mà các bạn đã từng được học qua. 

Môn này có một số thầy/cô dạy và các thầy/cô đều dạy rất hay, mỗi người đều có những nét đặc biệt riêng. Nếu bạn học thầy Nguyễn Nhật Quang thì bạn sẽ được học khá bài bản, tuy nhiên thì thầy chỉ dạy tập chung những gì trong slide, nếu bạn không có định hướng theo AI thì học thầy Quang là khá hợp lí, nếu bạn học thầy Ngô Văn Linh thì sẽ được nghe thêm rất nhiều kiến thức mà thầy nói thêm, các vấn đề nâng cao mà mình nghĩ bạn nào có định hướng theo AI thì nên học thầy Linh.

Thầy Khoát có một kênh youtube và các video bài giảng về học máy, các bạn muốn xem và học trước có thể xem tại: https://youtu.be/jc1wo_8VA1w

De thi nhập môn học máy và khai phá dữ liệu

BÀI TẬP LỚN

Bài tập lớn thì sẽ xung quanh các vấn đề về học máy rồi, nếu các bạn học thầy Quang thì yêu cầu về bài tập lớn sẽ đơn giản hơn khi học thầy Linh, các chủ đề bài tập lớn xoay quanh các chủ đề kinh điển như là: 

- Các bài toán phân loại (phân loại văn bản, phân loại thư rác, phân loại hoa iris)

- Các bài toán nhận dạng (nhận dạng chữ viết, nhận dạng khuôn mặt, nhận dạng biển số xe,...)

- Các bài toán dự đoán (dự đoán giá nhà, dự đoán giá xe máy) 

- ...

TÀI LIỆU MÔN HỌC

- Tải về slide thầy Quang: TẢI VỀ SLIDE

- Tải về slide thầy Linh: TẢI VỀ SLIDE

THI CUỐI KÌ

Về đề thi cuối kì, do ảnh hưởng của dịch nên chúng ta cũng chưa thể biết trước là sẽ thi cuối kì dạng trắc nghiệm hay tự luận nên các bạn phải chú ý thông báo của thầy/cô giáo trong mail hoặc trên qldt. 


Trong seri bài này mình sẽ tóm tắt các phần liên quan tới học máy và khai phá dữ liệu dựa trên slide và bài giảng môn học được thầy Thân Quang Khoát giảng dậy https://bkai.ai/ (facebook BK AI fb.com/bk.ai ). Bài viết gạch ra một số ý mà theo mình thì nên trọng tâm, tuy nhiên mình khuyên các bạn nên học bài bản và xem video vì cá nhân mình xem 1-2 lần thì vẫn hơi mông lung :(  . Đây là môn học nên tảng, cung cấp kiến thức cơ bản nhất cho các bạn theo định hướng data scientis (hiểu sơ sơ  là sử dụng các kĩ thuật học máy (cluster analysis, decision trees, random forest, neural networks, logistics regression, ...) để xây dựng các mô hình toán học phục vụ các bài toán kinh doanh ), còn cụ thể data scientis, data engineer, data analysis như nào các bạn có thể tham khảo yt.com/dataGuyStory và theo mình tìm hiểu data scientis thường là người có mức lương cao nhất.

De thi nhập môn học máy và khai phá dữ liệu

Bài này mình sẽ tóm tắt 2 phần giới thiệu chung và Hồi quy (Regression) , còn lại một số khác như -Phân cụm(Kmean) , Học dựa trên láng giềng KNN, Cây quyết định, ... có lẽ (chỉ là có lẽ :D ) mình sẽ ra ở bài sau. Tài liệu môn học này sẽ được đăng sau nha :D 

Giới thiệu chung

  • Học máy : xây dựng hệ thống tự cải thiện bản thân bằng cách học từ dữ liệu
  • Khai phá dữ liệu : tìm ra tri thức
  • Học : improve Performance at Task, following Experience.
    ví dụ với bài toán phân loại thư rác :
    • P : độ chính xác của phân loại thư đó là rác 
    • T : phân loại
    • E : tập thư thường/ rác đã có từ trước thời điểm phân loại 
  • Bản chất của việc học : học hàm f : x -> y. f còn gọi là model (dữ liệu theo 1 mô hình nào đó ). học model là học tham số của model đó.
  • Dữ liệu học : tập học (training set, tập quan sát ) gồm X, Y (tập các x và y tương ứng). x là dữ liệu đầu vào và y là đầu ra của dữ liệu đó 
  • Phân loại: 
    • Học có giám sát ( supervised learning): 
      • Classification : Multiclass (phân loại nó vào 1 lớp), Multilabel(phân nó vào nhiều lớp - gán nhiều nhãn)
      • Regression : khác với classification là đây đầu ra liên tục.
    • Unsupervised learning (không có y, dữ liệu không có nhãn)
      • Phân cụm
      • Phát hiện xu hướng
    • Học bán giám sát :  Semi-Supervised Learning
    • Học tăng cường : Reinforcement Learning
  • Vấn đề: 
    • Giải thuật học ( chủ yếu là lặp để tối ưu) không hội tụ : No-free-lunch. không có thuận toán luôn hiệu quả trên mọi ứng dụng. mỗi bài toán cần thử nghiệm nhiều thuật toán xem cái nào tốt nhất.
    • Lựa chọn dữ liệu : nhiễu, lỗi
    • Khả năng học: khả năng khái quát hóa ( generalization) tập học để có thể  phân loại tốt trên tập thực tế(tập dữ liệu mới, tập dữ liệu tương lại  ), tránh vấn đề overfitting.
    • Overfitting (xảy ra khi khái quát hóa tốt khi học nhưng với tập dữ liệu tương lai, cái cần thì lại rất tệ ) : mô hình quá phức tạp, dữ liệu lỗi, quá bé.
    • Mong muốn tổng quát hóa cao , tương đương với việc không dính overfitting
    • Giải quyết : 1 trong số đó là kĩ thuật Regularization

Hồi quy

  • Học hàm, đầu ra liên tục
  • Linear model
    De thi nhập môn học máy và khai phá dữ liệu
  • x là đầu vào(các x i là các thuộc tính của 1 dữ liệu đầu vào / trong tập dữ liệu đầu vào ), w là trọng số, là cái cần đi học, tương đương với việc xác định đầu vào x đóng góp bao nhiêu phần vào việc quyết định đầu ra cho mô hình 
  • Cách học :
    • Hàm lỗi(lost, cost function) : với tập w hiện tại , ta sẽ tính được đầu ra, đầu ra đó là đầu ra của model (linear model ), nó hoàn toàn có thể khác với thực tế. đại loại lấy sai khác 2 cái này (đầu ra dự đoán của model với thực tế) 
    • Mong muốn lỗi này trên tất cả dữ đầu vào mà mình sở hữu trung bình thấp nhất
    • Thuật toán học : 
      • Cực tiểu hóa lỗi ordinary least squares: dùng gradient descent(từ từ cập nhật trọng số cho phù hợp )  có thể giải bằng toán học : chuyển vị gì đấy …(cho đạo hàm bằng 0 tìm luôn w cho nhanh ), vấn đề không có ma trận chuyển vị ?
      • phương pháp trên quá tập trung vào dữ liệu,không có bất cứ gì để điều chỉnh  khả năng tổng quát hóa cho tương lai =>sinh ra Ridge regression  bằng cách thêm lamda nhân bộ w(một đại lượng hiệu chỉnh mà mình đã nhắc trong bài 1 -Regularization ), hiểu là sau khi cho vào thì bạn sẽ cố gắng ép bọn w vê càng 0 càng tốt => kéo theo mỗi thuộc tính sẽ đóng góp rất ít vào việc quyết định đầu ra, tổng quát hơn (đoán thế :D). Nói chung turning lamda sẽ điều chỉnh đc độ overfitting. lamda càng lớn w càng nhỏ, lỗi tập train tăng, độ tổng quát tăng. (đánh đổi). lamda > 0 thì ma trận luôn khả nghịch
      • Lasso : cái lamda nhân bộ w ở trên cụ thể là nhân với L2 bộ w. ở đây thay L2 bằng L1. điểm hay của L1 là giảm miền tìm kiếm, lựa chọn thuộc tính(sẽ có 1 số thuộc tính không tác dụng cho w của nó = 0 ). dùng cho các bài toán nghiệm thưa . mất tính chất luôn  khả nghịch.

Mong nhận được bình luận cảm nhận, góp ý từ các bạn :(