Principal component analysis là gì

     

Hello anh em, từ bây giờ chúng ta vẫn cùng mày mò và code thử món Principal Component Analysis (PCA) – giỏi chiêu giảm chiều dữ liệu nhé!

Khi học triết lý thì anh em sẽ thấy những bài toán tất cả vài đặc thù (features) cùng vector input thường chỉ có độ nhiều năm 1,2 phần tử. Tuy nhiên khi làm việc thực tế thì họ sẽ thường xuyên phải khuyễn mãi giảm giá với những input tất cả số đặc thù lớn, lâu năm dằng dặc và chúng ta chả biết bỏ cái nào, dùng chiếc nào mang đến vừa hiệu quả vừa đỡ được ngân sách tính toán.

Bạn đang xem: Principal component analysis là gì

Đó là lúc bọn họ nghĩ mang đến PCA để bớt chiều tài liệu mà vẫn gìn giữ được các đặc trưng xuất sắc để giao hàng cho bài toán của bọn chúng ta!

Trước khi bước đầu mình xin phép được vứt qua toàn cục phần toán phức tạp, chỉ phân tích và lý giải ở cấp độ cơ bạn dạng để họ – những người dân newbie thích nạp năng lượng mì – hoàn toàn có thể hiểu và tiến hành được thôi nhé!

Let’s go!

Phần 1 – Vậy PCA là gì?

PCA là viết tắt của Principal Component Analysis. Ta dịch thô sang tiếng Việt là “Phân tích thành phần chính”, trợ thời hiểu theo phong cách “nông dân” của mình là ta đang phân tích tài liệu và tiếp đến tìm ra những thành phần thiết yếu của dữ liệu để giữ lại lại các thành phần đó. Ví dụ tài liệu của bao gồm ta tất cả N features thì sau thời điểm áp dụng PCA đã còn K features chính mà thôi (KGiảm chiều tài liệu mà vẫn giữ lại được đặc trưng chính, chỉ thiếu tính “chút ít” sệt trưng.Tiết kiệm thời gian, túi tiền tính toánDễ dàng visualize dữ liệu hơn để giúp đỡ ta có cái quan sát trực quan hơn.

Okie. Và tất yếu K features này tất yếu không được chọn ngẫu nhiên, chúng ta đi tiếp nhé!

Các components tại đây ta nói thực chất là những vectors chủ quyền tuyến tính được chọn làm sao cho khi chiếu những điểm tài liệu lên vector đó thì những điểm tài liệu có sự variance lớn nhất ( biến động nhiều nhất, phương sai lớn nhất).

Xem thêm: Code Refactoring Là Gì ? Định Nghĩa Và Giải Thích Ý Nghĩa Code Refactoring Là Gì


*

Ví dụ như hình trên, chúng ta chọn 2 vector component theo thứ tự: 1st Comp sẽ sở hữu được mức độ variance phệ nhất, ta chọn trước, kế tiếp đến 2nd Comp…. Và cứ thế. Khi làm thực tế họ sẽ cần xác minh hoặc thử không nên xem sẽ chọn từng nào components là phù hợp và có lại hiệu quả tốt nhất.

Xét một ý kiến khác thì PCA cũng là 1 bài toán đưa hệ tọa độ như hình dưới:


*

Okie, bây chừ chắc các bạn sẽ thắc mắc lý do phải lựa chọn comp với khoảng độ dữ liệu biến thiên variance phệ nhất làm những gì nhỉ? chọn bừa chiếc nào chả được :D. Haha.

Lý vì chưng đây! lấy ví dụ xét việc phân nhiều loại classification, ví dụ như : Ung thư/ không ung thư, Spam/Normal…. Hiện giờ nếu họ chọn 1 comp nhưng mà chiếu lên đó các điểm tài liệu không high variance, nó đè lên trên nhau cùng co nhiều lại một khu vực thì làm thế nào mà phân nhiều loại nổi. Có thể nói rằng là làm cho sao tìm kiếm được đường tốt mặt phẳng chia tách các tài liệu đó thành 2 phần khác nhau cho 2 class khác nhau. Bởi vì đó, ta buộc phải chọn comp thế nào cho khi chiếu data lên comp kia thì nó high variance.

Okie rồi, lâm thời hiểu vì thế nhé những bạn. Bây giờ chúng ta đang thử thực thi với Python xem PCA nó mần răng.

Xem thêm: Ánh Sáng Truyền Đi Trong Không Khí Với Vận Tốc Gần Bằng, Bao Nhiêu

Phần 2 – triển khai Principal Component Analysis cùng với Python

Để kiểm tra cách họ triển khai PCA cùng với Python, mình sẽ dùng một bộ dữ liệu khá phổ biến và tích vừa lòng sẵn trong Sklearn chính là Breast_Cancer – Ung thư vú. Tài liệu này có không ít features khác biệt và khá nhùng nhằng (do mình không có kiến thức y khoa haha) và sử dụng nó để minh họa PCA là chuẩn bài rồi.

Đầu tiên là cứ nên import khá đầy đủ các thư viện cái đã. Phần này là thói quen của bản thân khi thao tác với data, bản thân cứ import hết dự phòng thiếu


import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline
Code language: JavaScript (javascript)Okie, dứt rồi! bây giờ ta đã load tài liệu in ra coi data của họ như nào:


from sklearn.datasets import load_breast_cancer# Đọc dữ liệu từ sklearncancer_set = load_breast_cancer()# đưa thành DataFramecancer_data = pd.DataFrame(data=cancer_set <"data">, columns=cancer_set<"feature_names">)cancer_data.head()
Code language: PHP (php)Và ta thấy dữ liệu có cả mớ cột