pca la gi

Hello bằng hữu, thời điểm hôm nay tất cả chúng ta tiếp tục nằm trong dò thám hiểu và code demo khoản Principal Component Analysis (PCA) – tuyệt chiêu hạn chế chiều tài liệu nhé!

Khi học tập lý thuyết thì bằng hữu tiếp tục thấy những vấn đề với vài ba đặc thù (features) và vector input thông thường chỉ mất phỏng lâu năm 1,2 thành phần. Nhưng Lúc thao tác thực tiễn thì tất cả chúng ta tiếp tục thông thường xuyên nên giảm giá với những input với số đặc thù rộng lớn, lâu năm dằng dặc và tất cả chúng ta chưa biết quăng quật hình mẫu này, sử dụng hình mẫu này mang lại một vừa hai phải hiệu suất cao một vừa hai phải nâng được ngân sách đo lường và tính toán.

Bạn đang xem: pca la gi

Đó là khi tất cả chúng ta suy nghĩ cho tới PCA nhằm hạn chế chiều tài liệu nhưng mà vẫn hội tụ lại được những đặc thù chất lượng tốt nhằm đáp ứng mang lại vấn đề của bọn chúng ta!

Trước Lúc chính thức bản thân van nài phép tắc được bỏ lỡ toàn cỗ phần toán phức tạp, chỉ lý giải ở level cơ phiên bản nhằm tất cả chúng ta – những người dân newbie mến ăn mì – hoàn toàn có thể hiểu và lên kế hoạch được thôi nhé!

Let’s go!

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

PCA là ghi chép tắt của Principal Component Analysis. Ta dịch thô lịch sự giờ Việt là “Phân tích bộ phận chính”, tạm thời hiểu Theo phong cách “nông dân” của tôi là tớ tiếp tục phân tách tài liệu và tiếp sau đó dò thám đi ra những bộ phận chủ yếu của tài liệu để lưu lại lại những bộ phận bại liệt. Ví dụ tài liệu của chủ yếu tớ với N features thì sau thời điểm vận dụng PCA sẽ vẫn K features chủ yếu nhưng mà thôi (K<N).

Việc thực hiện như bên trên sẽ hỗ trợ mang lại bọn chúng ta:

  • Giảm chiều tài liệu nhưng mà vẫn tạo được đặc thù chủ yếu, chỉ mất mặt lên đường “chút ít” đặc thù.
  • Tiết kiệm thời hạn, ngân sách tính toán
  • Dễ dàng visualize tài liệu rộng lớn để giúp đỡ tớ với tầm nhìn trực quan liêu rộng lớn.

Okie. Và tất yếu K features này tất yếu ko được lựa chọn tình cờ, tất cả chúng ta lên đường tiếp nhé!

Các components ở trên đây tớ rằng thực ra là những vectors song lập tuyến tính được lựa chọn sao mang lại Lúc chiếu những điểm tài liệu lên vector bại liệt thì những điểm tài liệu với sự variance lớn số 1 ( dịch chuyển tối đa, phương sai rộng lớn nhất).

PCA

Ví dụ như hình bên trên, tất cả chúng ta lựa chọn 2 vector component theo gót loại tự: 1st Comp sẽ có được cường độ variance lớn số 1, tớ lựa chọn trước, tiếp sau đó cho tới 2nd Comp…. và cứ thế. Khi thực hiện thực tiễn tất cả chúng ta tiếp tục cần thiết xác lập hoặc demo sai coi tiếp tục lựa chọn từng nào components là phải chăng và mang đến thành phẩm tốt nhất có thể.

Xét một quan điểm không giống thì PCA cũng là một trong những vấn đề trả hệ tọa phỏng như hình dưới:

Principal Component Analysis

Okie, lúc này Chắn chắn những các bạn sẽ vướng mắc tại vì sao nên lựa chọn comp với cường độ tài liệu đổi thay thiên variance lớn số 1 làm những gì nhỉ? Chọn bừa hình mẫu này chả được :D. Haha.

Lý vì thế đây! Ví dụ xét vấn đề phân loại classification, ví dụ : Ung thư/ Không ung thư, Spam/Normal…. Bây giờ nếu như tất cả chúng ta lựa chọn 1 comp nhưng mà chiếu lên bại liệt những điểm tài liệu ko high variance, nó đè lên trên nhau và teo cụm lại một điểm thì làm thế nào nhưng mà phân loại nổi. Nói cách thứ hai là làm thế nào tìm ra lối hoặc mặt mày bằng phân tách tách những tài liệu bại liệt trở nên 2 phần không giống nhau mang lại 2 class không giống nhau. Do bại liệt, tớ nên lựa chọn comp sao mang lại Lúc chiếu data lên comp bại liệt thì nó high variance.

Okie rồi, tạm thời hiểu như thế nhé chúng ta. Bây giờ tất cả chúng ta tiếp tục demo lên kế hoạch với Python coi PCA nó mần răng.

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

Để tổng quát cơ hội tất cả chúng ta lên kế hoạch PCA với Python, bản thân tiếp tục sử dụng một cỗ tài liệu khá phổ cập và tích ăn ý sẵn vô Sklearn này là Breast_Cancer – Ung thư vú. Dữ liệu này còn có thật nhiều features không giống nhau và khá lẳng nhẳng (do bản thân không tồn tại kiến thức và kỹ năng nó khoa haha) và sử dụng nó nhằm minh họa PCA là chuẩn chỉnh bài xích rồi.

Đầu tiên là cứ nên import không thiếu những tủ sách hình mẫu vẫn. Phần này là thói quen thuộc của tôi Lúc thao tác với data, bản thân cứ import không còn dự phòng thiếu

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inlineCode language: JavaScript (javascript)

Okie, xong xuôi rồi! Bây giờ tớ tiếp tục load tài liệu in đi ra coi data của tất cả chúng ta như nào:

from sklearn.datasets import load_breast_cancer
# Đọc tài liệu kể từ sklearn
cancer_set = load_breast_cancer()

# Chuyển trở nên DataFrame
cancer_data = pd.DataFrame(data=cancer_set ['data'], columns=cancer_set['feature_names'])

cancer_data.head()Code language: PHP (php)

Và tớ thấy tài liệu đối với tất cả mớ cột 😀

Xem thêm: Bí quyết xem trực tiếp bóng đá miễn phí, chất lượng hiện nay

PCA
Principal Component Analysis

Nhìn qua quýt tài liệu tất cả chúng ta thấy range của từng cột khá chếch nhau, tớ vận dụng chuẩn chỉnh hóa nào:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()

# Fit vô dữ liệu
scaler.fit(cancer_data)

# Thực hiện nay transform scale
scale_cancer_data = scaler.transform(cancer_data)Code language: PHP (php)

Sau đoạn này tớ tiếp tục thao tác với scale_cancer_data nhé!

Rồi lúc này triển khai PCA:

from sklearn.decomposition import PCA

# Khởi tạo nên đối tượng người sử dụng PCA với số comp = 2
my_pca = PCA (n_components = 2 )

# Fit vô data
my_pca.fit(scale_cancer_data)

# Thực hiện nay transform 
pca_scale_cancer_data = my_pca.transform(scale_cancer_data)
Code language: PHP (php)

Bây giờ tất cả chúng ta tiếp tục đánh giá coi với thực sự tài liệu của tất cả chúng ta vẫn hạn chế chiều ko bằng phương pháp in đi ra 2 khoản này:

print("Dữ liệu gốc: ", scale_cancer_data.shape)
# Dữ liệu gốc:  (569, 30)

print("Dữ liệu sau PCA:" , pca_scale_cancer_data.shape)
# Dữ liệu sau PCA: (569, 2)Code language: PHP (php)

Ngon rồi nhé, vẫn chỉ với 2 chiều.

Bây giờ bản thân tiếp tục show mang lại chúng ta thấy rằng Lúc lựa chọn 2 chiều với variance lớn số 1 thì tất cả chúng ta tiếp tục dễ dàng và đơn giản triển khai phân tích những phần bên trong vấn đề classification như này nha.

Chúng tá tiếp tục plot lô này lên đồ dùng thị:

plt.figure(figsize = (10,6))
# Thành phần comp số 1
pca_1 = pca_scale_cancer_data[:, 0]
# Thành phần comp số 2
pca_2 = pca_scale_cancer_data[:, 1]

# Vẽ đồ dùng thị
plt.scatter(x=pca_1, nó = pca_2)Code language: PHP (php)
Principal Component Analysis

Để ý rằng vô tài liệu nguồn vào của tất cả chúng ta với phần target – là nhãn của tài liệu (1 là ung thư và 0 là ngược lại). Ta in đi ra demo xem:

Rồi, lúc này tớ sửa lại code plot tý chút, tăng hình mẫu mầu sắc của từng điểm tài liệu theo gót class của chính nó coi sao:

plt.figure(figsize = (10,6))
# Thành phần comp số 1
pca_1 = pca_scale_cancer_data[:, 0]
# Thành phần comp số 2
pca_2 = pca_scale_cancer_data[:, 1]

# Vẽ đồ dùng thị
plt.scatter(x=pca_1, nó = pca_2, c = cancer_set['target'])Code language: PHP (php)

Awsome, những điểm tài liệu thân ái ung thư và ko ung thư và được phân biệt khá rõ nét, tất cả chúng ta thấy hoàn toàn có thể dễ dàng và đơn giản vẽ được một đường thẳng liền mạch (hoặc siêu phẳng) phân loại 2 class này như vô hình dưới:

PCA

Chúng tớ tiếp tục lên đường nốt phần cuối, vậy thì sau thời điểm hạn chế chiều kể từ rộng lớn 30 về 2 thì thực sự hình mẫu pca_scale_cancer_data là gì? In đi ra vạc nào:

my_pca.components_

array([[ 0.21890244,  0.10372458,  0.22753729,  0.22099499,  0.14258969,
         0.23928535,  0.25840048,  0.26085376,  0.13816696,  0.06436335,
         0.20597878,  0.01742803,  0.21132592,  0.20286964,  0.01453145,
         0.17039345,  0.15358979,  0.1834174 ,  0.04249842,  0.10256832,
         0.22799663,  0.10446933,  0.23663968,  0.22487053,  0.12795256,
         0.21009588,  0.22876753,  0.25088597,  0.12290456,  0.13178394],
       [-0.23385713, -0.05970609, -0.21518136, -0.23107671,  0.18611302,
         0.15189161,  0.06016536, -0.0347675 ,  0.19034877,  0.36657547,
        -0.10555215,  0.08997968, -0.08945723, -0.15229263,  0.20443045,
         0.2327159 ,  0.19720728,  0.13032156,  0.183848  ,  0.28009203,
        -0.21986638, -0.0454673 , -0.19987843, -0.21935186,  0.17230435,
         0.14359317,  0.09796411, -0.00825724,  0.14188335,  0.27533947]])Code language: PHP (php)

Để ý các bạn sẽ thấy nó với số loại = số component và số cột = số features gốc. Để thực hiện rõ rệt rộng lớn tớ trả nó trở nên dataframe:

pca_comp = pd.DataFrame(data=my_pca.components_, columns=cancer_data.columns)
pca_comp.head() 

Và tớ để ý một chút ít tiếp tục thấy 2 ông comp, từng ông 1 loại và côn trùng đối sánh với những features gốc của tài liệu (phép chiếu mà):

All right! Vậy là xong xuôi chúng ta. Mình van nài tạm ngưng nội dung bài viết ở trên đây nhé và toàn cỗ source những chúng ta có thể lấy tại: https://github.com/thangnch/MIAI_PCA_Demo nha.

Xem thêm: khe hở hạnh phúc

Chúc chúng ta trở nên công!

#MìAI

Fanpage: http://facebook.com/miaiblog
Group trao thay đổi, phân tách sẻ: https://www.facebook.com/groups/miaigroup
Website: https://ceds.edu.vn
Youtube: http://bit.ly/miaiyoutube