Các tập dữ liệu đa chiều (high-dimensionality datasets) hiện tại là tài nguyên quý giúp tổ chức nghiên cứu giải quyết và xử lý những vấn đề tinh vi trong nhân loại thực như dự đoán cấu tạo protein tương quan đến COVID-19; phân tích năng lượng điện não đồ,…. Mặc dù nhiên, mặt khác, những bộ tài liệu lớn song khi có thể chứa một số trong những cột dữ liệu unique kém, có tác dụng giảm công suất của mô hình. Vị đó, cần thiết sử dụng những kỹ thuật sút chiều dữ liệu nhằm làm tăng hiệu quả của quy mô AI.
Bạn đang xem: Sử dụng thuật toán Principal Component Analysis để giảm chiều dữ liệu
Lợi ích của bớt chiều dữ liệu
Cải thiện độ đúng mực của tế bào hình
Đẩy nhanh tốc độ đào tạo thành mô hình
Mô hình trở nên đơn giản và dễ dàng hơnCác kỹ thuật sút chiều dữ liệu
Trích lọc đặc trưng
Giai đoạn thứ nhất trong quy trình giảm chiều tài liệu là trích chọn và đào thải các đặc trưng để thực hiện cho quy mô AI. Một số kĩ thuật trích lọc phổ biến rất có thể kể đến:
Đại số đường tính
Đại số tuyến tính cũng là nhóm cách thức nổi giờ đồng hồ nhất, bao hàm các kỹ thuật:
Principal component analysis (PCA): Đây là thuật toán học lắp thêm không giám sát, làm giảm size của tập dữ liệu trong những khi vẫn cất giữ nhiều thông tin nhất bao gồm thể. Để làm cho điều này, thuật toán chế tạo ra một tập hợp các tính năng được cải thiện từ tập hợp những tính năng hiện nay có. Lưu lại ý: để đảm bảo an toàn tất cả những biến phải bao gồm cùng thang đo, chúng ta có thể sử dụng hàm ‘StandardScaler’ (tham khảo thêm Python’s scikit-learning).Linear Discriminatory Analysis (LDA): LDA là kỹ thuật học tập máy gồm giám sát, tìm cách giữ lại khả năng phân biệt cho các biến phụ thuộc. Để làm cho điều này, đầu tiên, thuật toán LDA giám sát khả năng phân bóc tách giữa các lớp. Lắp thêm hai, nó đo lường và thống kê khoảng biện pháp giữa chủng loại của từng lớp và quý hiếm trung bình. Cuối cùng, LDA tạo nên tập dữ liệu trong không khí có size thấp hơn.Singular Value Composition (SVD): SVD trích xuất các tính năng đặc biệt quan trọng nhất trường đoản cú tập dữ liệu. Phương pháp này đặc biệt quan trọng phổ vươn lên là vì nó dựa trên các quy mô đại số tuyến đường tính 1-1 giản, dễ dàng hiểu.
Đa tạp
Nói một cách đối kháng giản, học đa tạp (manifold) áp dụng các tính chất hình học, chiếu những điểm vào một không khí có chiều phải chăng hơn trong khi vẫn bảo toàn cấu tạo của nó. Một trong những kỹ thuật đa tạp thịnh hành bao gồm:
Isomap embedding: kỹ thuật này duy trì các mối quan hệ trong tập dữ liệu bằng cách tạo ra một tập dữ liệu nhúng. Để đã đạt được điều này, isomaps ban đầu với việc tạo ra mạng lấn cận. Tiếp theo, nó ước tính khoảng cách trắc địa, đường đi ngắn độc nhất giữa nhì điểm trên mặt phẳng cong, giữa tất cả các cặp điểm. Cuối cùng, bằng cách sử dụng phân rã eigenvalue của ma trận khoảng cách trắc địa, Isomap xác định việc nhúng chiều phải chăng của tập dữ liệu.Locally linear embedding (LLE): hệt như isomap, LLE tạo thành một tập dữ liệu nhúng. Để làm cho điều này, đầu tiên, LLE tìm kiếm k-nearest neighbours (kNN) của các điểm. Vật dụng hai, nó ước tính từng vectơ dữ liệu dưới dạng phối hợp của k
NN. Cuối cùng, nó tạo nên các vectơ chiều thấp nhằm tái tạo những trọng số này. Bao gồm hai tác dụng của thuật toán LLE, gồm những: LLE có thể phát hiện thêm những tính năng mà phương pháp đại số đường tính với lại; với LLE kết quả hơn so với các thuật toán khác.t-Distributed Stochastic Neighbour: t-SNE đặc trưng nhạy với các cấu tạo cục bộ. Nó cũng là trong những cách tiếp cận tốt nhất có thể đối với vấn đề trực quan hóa với giúp hiểu những thuộc tính lý thuyết của tập dữ liệu. Tuy nhiên, lưu ý t-SNE hiện là một trong những phương thức tính toán tốn hèn nhất. Các kỹ thuật khác, chẳng hạn như missing values ratio, buộc phải được sử dụng trước lúc áp dụng t-SNE. Xung quanh ra, toàn bộ các nhân tài nên được thu bé dại trước khi vận dụng kỹ thuật này.
Kết lại, không có kỹ thuật sút chiều tài liệu nào là tuyệt vời nhất nếu nó được sử dụng độc lập. Chúng ta nên trải nghiệm nhiều kỹ thuật không giống nhau và sử dụng kết hợp chúng một bí quyết khéo léo, để làm thế nào để cho mô hình ngày càng tiệm cận tới tối ưu.
Hello anh em, bây giờ chúng ta vẫn cùng khám phá và code thử món Principal Component Analysis (PCA) – tuyệt chiêu giảm chiều dữ liệu nhé!
Khi học kim chỉ nan thì đồng đội sẽ thấy những bài toán có vài đặc trưng (features) và vector input thường chỉ gồm độ lâu năm 1,2 phần tử. Mà lại khi làm việc thực tế thì chúng ta sẽ liên tiếp phải khuyễn mãi giảm giá với những input bao gồm số đặc thù lớn, dài dằng dặc và bọn họ chả biết bỏ cái nào, dùng cái nào đến vừa tác dụng vừa đỡ được túi tiền tính toán.
Đó là lúc chúng ta nghĩ đến PCA để giảm chiều tài liệu mà vẫn cất giữ được những đặc trưng giỏi để ship hàng cho câu hỏi của bọn chúng ta!
Trước khi bước đầu mình xin phép được quăng quật qua tổng thể phần toán phức tạp, chỉ giải thích ở level cơ bản để họ – những người newbie thích ăn 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ố chính”, trợ thì hiểu theo phong cách “nông dân” của bản thân là ta sẽ phân tích tài liệu và tiếp nối tìm ra các thành phần chính của dữ liệu để duy trì lại các thành phần đó. Ví dụ dữ liệu của chính ta tất cả N features thì sau khi áp dụng PCA đang còn K features bao gồm mà thôi (KGiảm chiều tài liệu mà vẫn duy trì được đặc trưng chính, chỉ không đủ “chút ít” đặc trưng.Tiết kiệm thời gian, giá thành 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 hơn.
Okie. Và tất nhiên K features này tất yếu không được lựa chọn ngẫu nhiên, chúng ta đi tiếp nhé!
Các components tại chỗ nà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 dữ liệu lên vector kia thì những điểm dữ liệu có sự variance lớn nhất ( biến động nhiều nhất, phương sai mập nhất).

Ví dụ như hình trên, chúng ta chọn 2 vector component theo sản phẩm công nghệ tự: 1st Comp sẽ sở hữu mức độ variance béo nhất, ta chọn trước, tiếp đến đến 2nd Comp…. Với cứ thế. Khi có tác dụng thực tế họ sẽ cần xác định hoặc thử sai xem sẽ chọn từng nào components là phải chăng và mang 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à 1 trong bài toán chuyển hệ tọa độ như hình dưới:

Okie, hiện nay chắc các bạn sẽ thắc mắc nguyên nhân phải chọn comp với tầm độ dữ liệu biến thiên variance phệ nhất làm cái gi nhỉ? lựa chọn bừa mẫu nào chả được :D. Haha.
Lý vì đây! lấy ví dụ như xét việc phân một số loại classification, ví dụ như : Ung thư/ ko ung thư, Spam/Normal…. Bây chừ nếu họ chọn 1 comp mà lại 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 nhiều lại một khu vực thì làm sao mà phân một số loại nổi. Nói cách khác là làm sao kiếm được đường hay mặt phẳng chia tách các dữ liệu đó thành 2 phần không giống nhau cho 2 class không giống nhau. Do đó, ta cần chọn comp thế nào cho khi chiếu data lên comp đó thì nó high variance.
Okie rồi, trợ thời hiểu bởi vậy nhé những bạn. Hiện giờ chúng ta sẽ thử triển khai với Python xem PCA nó mần răng.
Xem thêm: Có nên đắp mặt nạ đất sét xong có nên đắp mặt nạ giấy và mặt nạ đất sét?
Phần 2 – triển khai Principal Component Analysis cùng với Python
Để demo cách họ triển khai PCA với Python, mình sẽ sử dụng một bộ dữ liệu khá thịnh hành và tích đúng theo sẵn vào Sklearn chính là Breast_Cancer – Ung thư vú. Tài liệu này có không ít features không giống nhau và khá nhùng nhằng (do mình không có kiến thức y tế haha) và sử dụng nó để minh họa PCA là chuẩn bài rồi.
Đầu tiên là cứ cần import tương đối đầy đủ các thư viện chiếc đã. Phần này là thói quen của chính 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, xong rồi! bây giờ ta sẽ load tài liệu in ra xem data của họ như nào:
from sklearn.datasets import load_breast_cancer# Đọc dữ liệu từ sklearncancer_set = load_breast_cancer()# chuyển 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