Principal Component Analysis Là Gì

     

Hello anh em, lúc này chúng ta đã cùng khám phá và code thử món Principal Component Analysis (PCA) – hay chiêu sút chiều tài liệu nhé!

Khi học kim chỉ nan thì anh em sẽ thấy những bài toán tất cả vài đặc thù (features) với vector input đầu vào thường chỉ tất cả độ nhiều năm 1,2 phần tử. Nhưng khi thao tác thực tế thì bọn họ sẽ liên tiếp phải deal với các input có số đặc thù lớn, lâu năm dằng dặc và bọn họ chả biết vứt cái nào, dùng mẫu nào cho vừa kết quả vừa đỡ được ngân sách chi tiêu tính toán.

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

Đó là lúc bọn họ nghĩ mang lại PCA để bớt chiều dữ liệu mà vẫn lưu lại được những đặc trưng tốt để phục vụ cho bài toán của chúng ta!

Trước khi ban đầu mình xin phép được vứt qua toàn bộ phần toán phức tạp, chỉ giải thích ở cấp độ cơ phiên bản để chúng ta – những người dân newbie thích ăn uống mì – rất có thể hiểu và thực thi đượ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ô quý phái tiếng Việt là “Phân tích yếu tắc chính”, tạm thời hiểu theo phong cách “nông dân” của bản thân mình là ta vẫn phân tích dữ liệu và tiếp đến tìm ra những thành phần bao gồm của tài liệu để giữ lại lại những thành phần đó. Ví dụ tài liệu của bao gồm ta gồm N features thì sau khoản thời gian áp dụng PCA sẽ còn K features chính mà thôi (KGiảm chiều dữ liệu mà vẫn giữ được đặc thù chính, chỉ thiếu tính “chút ít” đặc trưng.Tiết kiệm thời gian, giá thành tính toánDễ dàng visualize dữ liệu hơn để giúp ta tất cả cái chú ý trực quan liêu hơn.

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

Các components tại đây ta nói thực chất là những vectors tự do tuyến tính được chọn làm thế nào để cho khi chiếu những điểm tài liệu lên vector đó thì những điểm dữ liệu có sự variance lớn số 1 ( dịch chuyển nhiều nhất, phương sai béo nhất).

Xem thêm: Hướng Dẫn 2 Cách Xóa Bộ Nhớ Đệm Trên Facebook, Cách Xóa Bộ Nhớ Đệm Trên Facebook


*

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

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


*

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

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

Okie rồi, nhất thời hiểu do vậy nhé các bạn. Hiện thời chúng ta vẫn thử thực hiện với Python xem PCA nó mần răng.

Xem thêm: Cách Làm Mỳ Ý Sốt Cà Chua Thịt Bò Bằm Ngon Đúng Điệu, Cách Làm Mì Ý Sốt Bò Bằm Chuẩn Châu Âu

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

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

Đầu tiên là cứ phải import không thiếu thốn các thư viện cái đã. Phần này là thói quen của chính bản thân mình khi thao tác làm việc với data, mình cứ import hết ngừa thiếu


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


from sklearn.datasets import load_breast_cancer# Đọc tài liệu từ sklearncancer_set = load_breast_cancer()# gửi 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 tài liệu có cả mớ cột