Chuyên mục

0. DỰ ÁN (17)1. ỨNG DỤNG TOÁN HỌC (403)2. TÀI CHÍNH & KINH TẾ (748)3. PHẦN MỀM TOÁN HỌC (62)4. GIÁO DỤC và NCKH (196)5. TÀI LIỆU (61)

Thẻ

Bài & Trang được đáng chú ý

Bài viết mới


Phương pháp so sánh thành phần bao gồm (Principal Component Analysis – PCA)

“Principal component analysis (PCA) is a statistical procedure that uses an orthogonal transformation lớn convert a phối of observations of possibly correlated variables into a set of values of linearly uncorrelated variables called principal components. The number of principal components is less than or equal khổng lồ the number of original variables.”

Phân tích yếu tố chính (Principal Component Analysis – PCA) là một trong trong những phương pháp phân tích tài liệu nhiều biến đơn giản và dễ dàng nhất. Phần 1 của bài này sẽ nói tới động lực và phát minh chính của PCA, tiếp đến trình bày mỗi bước trong thuật toán PCA. Như thường xuyên lệ, để hiểu thuật toán thì cài đặt là cách tốt nhất, cho nên một đoạn mã MATLAB minh họa từng bước trong PCA cũng được trình bày. Phần sau cùng là cụ thể các triển khai Toán học trong PCA. Do phương châm ứng dụng nên các phương trình rõ ràng được nhằm dành mang đến phần này, người đọc nếu như thật sự nhiệt tình nguyên lí của PCA, vì sao PCA lại áp dụng những công thức như thế v.v… thì có thể tham khảo phần này để hiểu thêm chi tiết.

Bạn đang xem: Phân tích pca là gì

1. Giới thiệu

Như vẫn nói trong bài trước, vào thống kê, thường thì cần đề nghị “nghiên cứu” dữ liệu trước lúc xây dựng các mô hình suy diễn dựa trên dữ liệu đó. Tuy nhiên thỉnh thoảng dữ liệu bao gồm số chiều lớn, ko thể visualize (không biết dịch là gì) trong không gian 2 giỏi 3 chiều, vì đó rất cần được tìm bí quyết đưa tài liệu về không gian có số chiều bé dại hơn.

PCA là 1 trong những phương thức như thế, nhưng lại hơn thế, PCA còn hệt như một Swiss knife với những đặc tính tốt:

Giúp bớt số chiều của dữ liệu,Các trục tọa độ trong không khí mới là tổ hợp tuyến tính của không gian cũ, cho nên vì thế về phương diện ngữ nghĩa, PCA gây ra feature new dựa trên các feature đang quan gần kề được. Điểm tốt là các feature này vẫn biểu diễn giỏi dữ liệu ban đầu.Trong không gian mới, các liên kết ẩn chứa của dữ liệu có thể được đi khám phá, mà nếu đặt trong không gian cũ thì cực nhọc phát hiện nay hơn, hoặc đông đảo liên kết như thế không miêu tả rõ.

Nói một bí quyết ngắn gọn, phương châm của PCA là kiếm tìm một không khí mới (với số chiều bé dại hơn không gian cũ). Các trục tọa độ trong không gian mới được xây dựng sao cho trên từng trục, độ trở nên thiên của dữ liệu trên kia là lớn số 1 có thể. Tiếng Việt thì lâu năm dòng, cơ mà tiếng Anh thì mục tiêu này gọi là maximize the variability. Bố chữ này gói gọn ý tưởng chính của PCA.

*

Minh họa PCA: phép chiếu lên các trục tọa độ không giống nhau hoàn toàn có thể cho cách nhìn rất khác biệt về cùng một dữ liệu.

Một ví dụ kinh khủng là hình hình ảnh về bé lạc đà. Cùng là 1 trong con lạc đà dẫu vậy nếu quan sát từ bên cạnh hông thì ta có được vừa đủ thông tin nhất, trong những lúc nhìn từ phía trước thì thật khó để nói nó là lạc đà.

Một ví dụ như thuyết phục hơn được minh họa trong hình sau

*

Minh họa PCA: tìm những trục tọa độ mới làm sao cho dữ liệu có độ phát triển thành thiên cao nhất

Giả sử tập dữ liệu ban đầu (tập điểm color xanh) được quan gần cạnh trong không gian 3 chiều (trục color đen) như hình bên trái. Cụ thể 3 trục này không biểu diễn được tốt nhất có thể mức độ trở thành thiên của dữ liệu. PCA do đó sẽ kiếm tìm hệ trục tọa độ mới (là hệ trục màu đỏ trong hình mặt trái). Sau thời điểm tìm được không gian mới, dữ liệu sẽ tiến hành chuyển sang không gian này để được màn biểu diễn như vào hình bên phải. Rõ ràng hình bên phải chỉ cần 2 trục tọa độ dẫu vậy biểu diễn giỏi hơn độ phát triển thành thiên của dữ liệu so cùng với hệ trục 3 chiều ban đầu.

Một điểm cực kỳ đẹp nữa của PCA là những trục tọa độ trong không khí mới luôn bảo đảm an toàn trực giao đôi một với nhau, tuy nhiên trong không khí ban đầu, các trục có thể không trực giao.

Dài dòng vậy nên là đủ, ta sẽ trình diễn từng cách thuật toán PCA vào phần tới. Cụ thể về ý tưởng phát minh và triển khai toán học tập được dành riêng lại để trình bày ở cuối bài.

2. Thuật toán PCA

Cho ma trận 

*
. Quá trình của PCA thứu tự như sau:

1. Chi phí xử lí

Dữ liệu ban sơ có thể có mức giá trị biến đổi bất thường. Ví dụ như trên feature 1 (cột 1 của

*
) giá bán trị biến hóa trong khoảng chừng (0, 1), trên feature 2 lại vươn lên là thiên trong khúc (-100, 100). Cụ thể cần phải bao gồm một cách tiền up date để chuẩn chỉnh hóa giá trị trên các cột của ma trận X. Có 2 cách tiền xử lí thường được sử dụng cho PCA là Centered PCA và Normed PCA.

Centered PCA mang tất cả các feature (các cột của X) về thuộc một nơi bắt đầu tọa độ:

*
,

*
, (1a)

*
.

Trong đó n là số cái của X

*
 là mean của cột thứ j của X, được xem như trên.

Xem thêm: Sự Kiện 11 Tháng 9 : Lời Nhắc Nhở Từ Ký Ức, Toàn Cảnh Vụ Khủng Bố Ngày 11

Normed PCA mang tất cả các feature về cùng một nơi bắt đầu tọa độ, đồng thời chuẩn chỉnh hóa về cùng một quãng standard-deviation bởi 1:

*
,

*
. (1b)

Trong đó 

*
 là độ lệch chuẩn (standard deviation) của cột trang bị j trong X.

Thông thường Normed PCA giỏi được dùng. Sau cách tiền xử lí, ma trận 

*
 sẽ là nguồn vào cho cách tiếp theo.

2. Xây dựng không gian mới

Tính ma trận hiệp phương không đúng (covariance) của những feature trong 

*
:

*
(2)

Do là tích của ma trận 

*
 với đưa vị của chính nó nên 
*
 là ma trận positive semidefinite kích thước 
*
. Rộng nữa 
*
có p trị riêng 
*
.

Tiếp theo, PCA tìm trị riêng với vector riêng tương ứng của 

*
, bố trí theo máy tự giảm dần của trị riêng. đưa sử p trị riêng biệt của V là

*
, (3)

và p vector riêng tương ứng là

*
. (4)

Khi đó các trục của không gian mới chính là các vector riêng 

*
 ở trên, dĩ nhiên các vector riêng hoàn toàn chủ quyền tuyến tính (nghĩa là trực giao song một).

Có thể nói vào PCA, trị riêng cùng vector riêng có vị trí rất đẹp, thỏa mãn toàn bộ các yêu ước của PCA. Phiên bản thân tôi khi đọc mang đến phần này cũng thấy bất thần vì giải thuật cho PCA ko gì khác thường hoàn toàn đầy đủ trong trị riêng và vector riêng. Tuy vậy tại thời điềm này, ta sẽ chấp nhận như vậy. Phần đại lý Toán học ở cuối bài sẽ giải thích tại sao trị riêng và vector riêng lại xuất hiện (có phần bất ngờ) vào PCA như vậy.

3. Chuyển tài liệu từ không gian ban sơ vào không gian mới

Thông thường không gian mới ko được xây dựng bởi tất cả p vector riêng biệt trong (4), mà thông thường chỉ từ k vector riêng biệt đầu tiên, với k here.

Hello anh em, hôm nay chúng ta vẫn cùng tìm hiểu và code thử món Principal Component Analysis (PCA) – hay chiêu sú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 gồm vài đặc thù (features) với vector đầu vào thường chỉ tất cả độ lâu năm 1,2 phần tử. Tuy vậy khi làm việc thực tế thì bọn họ sẽ liên tục phải giảm giá khuyến mãi với các input tất cả số đặc thù lớn, lâu năm dằng dặc và bọn họ chả biết bỏ cái nào, dùng mẫu nào mang đến vừa kết quả vừa đỡ được ngân sách chi tiêu tính toán.

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

Trước khi bắt đầu mình xin phép được vứt qua tổng thể phần toán phức tạp, chỉ lý giải ở màn chơi cơ bạn dạng để chúng ta – những người newbie thích nạp năng lượng mì – hoàn toàn 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ô lịch sự tiếng Việt là “Phân tích thành phần chính”, nhất thời hiểu theo cách “nông dân” của mình là ta đã phân tích dữ liệu và kế tiếp tìm ra những thành phần thiết yếu của tài liệu để giữ 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 khoản thời gian áp dụng PCA vẫn còn K features chủ yếu 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, giá cả tính toán
Dễ dàng visualize tài liệu hơn để giúp đỡ ta gồm cái nhìn trực quan lại hơn.

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

Các components ở đây ta nói thực tế là các vectors hòa bình tuyến tính được chọn làm sao cho khi chiếu các điểm tài liệu lên vector kia thì các điểm tài liệu có sự variance lớn nhất ( dịch chuyển nhiều nhất, phương sai mập nhất).


*

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

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


*

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

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

Okie rồi, tạm thời hiểu vậy nên nhé những bạn. Hiện giờ chúng ta đang thử tiến hành với Python xem 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 với Python, mình sẽ dùng một bộ dữ liệu khá phổ biến và tích thích hợp sẵn vào Sklearn đó là Breast_Cancer – Ung thư vú. Dữ liệu này có rất nhiều features không giống nhau và khá lằng nhằng (do mình không tồn tại kiến thức y khoa haha) và cần sử dụng nó nhằm minh họa PCA là chuẩn bài rồi.

Đầu tiên là cứ đề nghị 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 làm việc với data, bản thân 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: Java
Script (javascript)Okie, dứt rồi! hiện nay ta đã load tài liệu in ra xem data của chúng ta như nào:

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