Phép phân tích thành phần chính

Mở đầu.

Bạn đang xem: Phép phân tích thành phần chính

Đây là thuật toán hiện ra để giải quyết và xử lý vấn đề tài liệu có rất nhiều chiều dữ liệu, cần giảm sút chiều dữ liệu nhằm mục đích tăng tốc độ xử lí, tuy nhiên vẫn giữ lại tin tức nhiều nhất rất có thể (high variance).

Chúng ta đề nghị tìm ra chiều tài liệu có độ đặc biệt cao, nhằm giảm bớt việc tính toán, cũng giống như tăng vận tốc xử lí.
*
PCA chuyển tài liệu từ linear thành những thuộc tính mới không liên quan lẫn nhau.

Dữ liệu.

Chúng ta yêu cầu phân biệt 2 loại dữ liệu:

Dữ liệu tương quan (correlated):

*

Dữ liệu không tương quan (uncorrelated):

*

PCA tìm thấy mean và principal components.

*
*

Làm chũm nào nhằm implement PCA:

Biến đổi X về dạng đồng nhất.Tính toán covariance matrix ΣTìm eigenvectors của ΣLấy K dimensions có giá trị variance cao nhất

eigenvectors (vector màu đỏ)

là vector không biến hóa hướng khi apply linear transformation.

Xem thêm: “ ooc là gì trong role và tất tần tật ý nghĩa liên quan khác

*

eigenvalue đến PC1

*

eigenvalue đến PC2

*

eigenvector

*

Sự phân bổ độ quan trọng đặc biệt của chiều dữ liệu

*
*

Algorithm

from numpy import arrayfrom numpy import meanfrom numpy import covfrom numpy.linalg import eig# define a matrix
A = array(<<1, 2>, <3, 4>, <5, 6>>)print(A)# calculate the mean of each column
M = mean(A.T, axis=1)print(M)# center columns by subtracting column means
C = A - Mprint(C)# calculate covariance matrix of centered matrix
V = cov(C.T)print(V)# eigendecomposition of covariance matrixvalues, vectors = eig(V)print(vectors)print(values)# project data
P = vectors.T.dot(C.T)print(P.T)Output:

*
*
Reference:

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

Khi học kim chỉ nan thì bạn bè sẽ thấy các bài toán bao gồm vài đặc trưng (features) với vector input đầu vào thường chỉ tất cả độ dài 1,2 phần tử. Cơ mà khi làm việc thực tế thì bọn họ sẽ thường xuyên phải deal với những input gồm số đặc thù lớn, lâu năm dằng dặc và họ chả biết quăng quật cái nào, dùng dòng nào mang đến vừa hiệu quả vừa đỡ được giá cả tính toán.

Đó là lúc họ nghĩ đến PCA để bớt chiều dữ liệu mà vẫn lưu lại được các đặc trưng giỏi để giao hàng cho câu hỏi của chúng ta!

Trước khi bước đầu mình xin phép được vứt qua toàn thể phần toán phức tạp, chỉ lý giải ở cấp độ cơ phiên bản để chúng ta – những người dân newbie thích ăn uống mì – hoàn toàn có thể hiểu và triển khai đượ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”, lâm thời hiểu theo cách “nông dân” của bản thân là ta đã phân tích dữ liệu và tiếp nối tìm ra các thành phần thiết yếu của dữ liệu để giữ lại những thành phần đó. Ví dụ tài liệu của bao gồm ta bao gồm N features thì sau khi áp dụng PCA vẫn 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ỉ mất đi “chút ít” sệt trưng.Tiết kiệm thời gian, chi tiêu tính toán
Dễ dàng visualize tài liệu hơn sẽ giúp ta tất cả cái quan sát trực quan tiền 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 ở chỗ này ta nói thực ra là những vectors tự do tuyến tính được chọn làm thế nào để cho khi chiếu các đ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ự nhất).


*

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

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


*

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

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

Okie rồi, trợ thời hiểu vậy nên nhé những bạn. Hiện giờ chúng ta đang thử thực hiện với Python coi PCA nó mần răng.

Phần 2 – tiến hành 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 đó là Breast_Cancer – Ung thư vú. Dữ liệu này có tương đối nhiều features khác biệt và khá nhì nhằng (do mình không có kiến thức y khoa haha) và sử dụng nó nhằm minh họa PCA là chuẩn chỉnh bài rồi.

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


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


from sklearn.datasets import load_breast_cancer# Đọc dữ liệu từ sklearncancer_set = load_breast_cancer()# đưa thành Data
Framecancer_data = pd.Data
Frame(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

Leave a Reply

Your email address will not be published. Required fields are marked *