9/12/2021

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


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.

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

  • 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 :(

0 Bình luận:

Post a Comment