AI 101
Giảm kích thước là gì?
Giảm kích thước là gì?
Giảm kích thước là một quy trình được sử dụng để giảm kích thước của tập dữ liệu, lấy nhiều tính năng và biểu thị chúng dưới dạng ít tính năng hơn. Ví dụ: giảm kích thước có thể được sử dụng để giảm tập dữ liệu gồm XNUMX tính năng xuống chỉ còn một vài tính năng. Giảm kích thước thường được sử dụng trong học tập không giám sát task để tự động tạo các lớp từ nhiều tính năng. Để hiểu rõ hơn tại sao và làm thế nào giảm kích thước được sử dụng, chúng ta sẽ xem xét các vấn đề liên quan đến dữ liệu nhiều chiều và các phương pháp phổ biến nhất để giảm số chiều.
Nhiều kích thước hơn dẫn đến trang bị quá nhiều
Thứ nguyên đề cập đến số lượng tính năng/cột trong tập dữ liệu.
Người ta thường cho rằng trong máy học, nhiều tính năng hơn sẽ tốt hơn vì nó tạo ra mô hình chính xác hơn. Tuy nhiên, nhiều tính năng hơn không nhất thiết sẽ dẫn đến một mẫu máy tốt hơn.
Các tính năng của tập dữ liệu có thể rất khác nhau về mức độ hữu ích của chúng đối với mô hình, với nhiều tính năng ít quan trọng. Ngoài ra, tập dữ liệu càng chứa nhiều tính năng thì càng cần nhiều mẫu để đảm bảo rằng các tổ hợp tính năng khác nhau được thể hiện tốt trong dữ liệu. Do đó, số lượng mẫu tăng tỷ lệ thuận với số lượng tính năng. Nhiều mẫu hơn và nhiều tính năng hơn có nghĩa là mô hình cần phải phức tạp hơn và khi các mô hình trở nên phức tạp hơn, chúng sẽ trở nên nhạy cảm hơn với việc trang bị thừa. Mô hình học các mẫu trong dữ liệu huấn luyện quá tốt và nó không thể khái quát hóa ra dữ liệu mẫu.
Việc giảm kích thước của tập dữ liệu có một số lợi ích. Như đã đề cập, các mô hình đơn giản hơn sẽ ít bị thừa hơn, vì mô hình phải đưa ra ít giả định hơn về cách các tính năng liên quan với nhau. Ngoài ra, ít kích thước hơn có nghĩa là cần ít năng lượng tính toán hơn để huấn luyện các thuật toán. Tương tự, cần ít dung lượng lưu trữ hơn cho tập dữ liệu có số chiều nhỏ hơn. Việc giảm kích thước của tập dữ liệu cũng có thể cho phép bạn sử dụng các thuật toán không phù hợp với tập dữ liệu có nhiều tính năng.
Các phương pháp giảm kích thước phổ biến
Giảm kích thước có thể bằng cách lựa chọn tính năng hoặc kỹ thuật tính năng. Lựa chọn tính năng là nơi kỹ sư xác định các tính năng phù hợp nhất của tập dữ liệu, trong khi kỹ thuật tính năng là quá trình tạo ra các tính năng mới bằng cách kết hợp hoặc biến đổi các tính năng khác.
Lựa chọn tính năng và kỹ thuật có thể được thực hiện theo chương trình hoặc thủ công. Khi lựa chọn và thiết kế các tính năng theo cách thủ công, việc trực quan hóa dữ liệu để khám phá mối tương quan giữa các tính năng và lớp là điều điển hình. Việc thực hiện giảm kích thước theo cách này có thể tốn khá nhiều thời gian và do đó, một số cách phổ biến nhất để giảm kích thước liên quan đến việc sử dụng các thuật toán có sẵn trong các thư viện như Scikit-learning cho Python. Các thuật toán giảm kích thước phổ biến này bao gồm: Phân tích thành phần chính (PCA), Phân tích giá trị đơn lẻ (SVD) và Phân tích phân biệt tuyến tính (LDA).
Các thuật toán được sử dụng để giảm kích thước cho các nhiệm vụ học tập không giám sát thường là PCA và SVD, trong khi các thuật toán được sử dụng để giảm kích thước học tập có giám sát thường là LDA và PCA. Trong trường hợp mô hình học có giám sát, các tính năng mới được tạo sẽ được đưa vào bộ phân loại học máy. Xin lưu ý rằng các cách sử dụng được mô tả ở đây chỉ là các trường hợp sử dụng chung chứ không phải là điều kiện duy nhất mà các kỹ thuật này có thể được sử dụng. Các thuật toán giảm kích thước được mô tả ở trên chỉ đơn giản là các phương pháp thống kê và chúng được sử dụng bên ngoài các mô hình học máy.
Phân tích thành phần chính

Ảnh: Ma trận với các thành phần chính được xác định
Phân tích thành phần chính (PCA) là một phương pháp thống kê phân tích các đặc điểm/tính năng của tập dữ liệu và tóm tắt các tính năng có ảnh hưởng nhất. Các tính năng của tập dữ liệu được kết hợp với nhau thành các biểu diễn duy trì hầu hết các đặc điểm của dữ liệu nhưng trải rộng trên ít thứ nguyên hơn. Bạn có thể coi điều này giống như việc "ép" dữ liệu xuống từ biểu diễn thứ nguyên cao hơn thành thứ nguyên chỉ có một vài thứ nguyên.
Như một ví dụ về tình huống mà PCA có thể hữu ích, hãy nghĩ về những cách khác nhau mà người ta có thể mô tả rượu vang. Mặc dù có thể mô tả rượu vang bằng cách sử dụng nhiều đặc điểm cụ thể cao như mức CO2, mức sục khí, v.v., nhưng những đặc điểm cụ thể đó có thể tương đối vô dụng khi cố gắng xác định một loại rượu cụ thể. Thay vào đó, sẽ khôn ngoan hơn nếu xác định loại dựa trên các đặc điểm chung hơn như mùi vị, màu sắc và độ tuổi. PCA có thể được sử dụng để kết hợp các tính năng cụ thể hơn và tạo ra các tính năng tổng quát hơn, hữu ích hơn và ít có khả năng gây ra hiện tượng thừa.
PCA được thực hiện bằng cách xác định xem các tính năng đầu vào thay đổi như thế nào so với giá trị trung bình đối với nhau, xác định xem có tồn tại mối quan hệ nào giữa các tính năng hay không. Để làm điều này, một ma trận hiệp phương sai được tạo, thiết lập một ma trận bao gồm các hiệp phương sai đối với các cặp tính năng có thể có của tập dữ liệu. Điều này được sử dụng để xác định mối tương quan giữa các biến, với hiệp phương sai âm biểu thị mối tương quan nghịch và tương quan dương biểu thị mối tương quan thuận.
Các thành phần chính (có ảnh hưởng nhất) của tập dữ liệu được tạo bằng cách tạo các kết hợp tuyến tính của các biến ban đầu, được thực hiện với sự hỗ trợ của các khái niệm đại số tuyến tính được gọi là Vectơ riêng. Các kết hợp được tạo ra sao cho các thành phần chính không tương quan với nhau. Hầu hết thông tin chứa trong các biến ban đầu được nén vào một số thành phần chính đầu tiên, nghĩa là các tính năng mới (các thành phần chính) đã được tạo có chứa thông tin từ tập dữ liệu gốc trong một không gian chiều nhỏ hơn.
Phân rã giá trị đơn lẻ

Ảnh: Tác giả Cmglee – Công việc riêng, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297
Phân rã giá trị số ít (SVD) is được sử dụng để đơn giản hóa các giá trị trong một ma trận, rút gọn ma trận xuống các phần cấu thành của nó và thực hiện các phép tính với ma trận đó dễ dàng hơn. SVD có thể được sử dụng cho cả ma trận giá trị thực và ma trận phức tạp, nhưng với mục đích giải thích này, sẽ kiểm tra cách phân tách ma trận giá trị thực.
Giả sử rằng chúng ta có một ma trận bao gồm dữ liệu giá trị thực và mục tiêu của chúng ta là giảm số lượng cột/tính năng trong ma trận, tương tự như mục tiêu của PCA. Giống như PCA, SVD sẽ nén kích thước của ma trận trong khi vẫn bảo toàn khả năng biến thiên của ma trận càng nhiều càng tốt. Nếu muốn tính toán trên ma trận A, chúng ta có thể biểu diễn ma trận A dưới dạng ba ma trận khác gọi là U, D, & V. Ma trận A bao gồm các phần tử x * y ban đầu trong khi ma trận U bao gồm các phần tử X * X (nó là một ma trận trực giao). Ma trận V là một ma trận trực giao khác chứa các phần tử y * y. Ma trận D chứa các phần tử x * y và nó là ma trận đường chéo.
Để phân tách các giá trị cho ma trận A, chúng ta cần chuyển đổi các giá trị ma trận số ít ban đầu thành các giá trị đường chéo được tìm thấy trong một ma trận mới. Khi làm việc với ma trận trực giao, tính chất của chúng không thay đổi nếu nhân chúng với các số khác. Do đó, chúng ta có thể tính gần đúng ma trận A bằng cách tận dụng tính chất này. Khi chúng ta nhân các ma trận trực giao cùng với một phép hoán vị của Ma trận V, kết quả là một ma trận tương đương với ma trận A ban đầu của chúng ta.
Khi Ma trận a được phân tách thành các ma trận U, D và V, chúng chứa dữ liệu được tìm thấy trong Ma trận A. Tuy nhiên, các cột ngoài cùng bên trái của ma trận sẽ chứa phần lớn dữ liệu. Chúng ta chỉ có thể lấy một vài cột đầu tiên này và có một biểu diễn của Ma trận A có ít thứ nguyên hơn nhiều và hầu hết dữ liệu trong A.
Phân tích phân biệt tuyến tính

Trái: Ma trận trước LDA, Phải: Trục sau LDA, hiện có thể tách rời
Phân tích phân biệt tuyến tính (LDA) là một quá trình lấy dữ liệu từ một biểu đồ đa chiều và chiếu lại nó vào một biểu đồ tuyến tính. Bạn có thể hình dung điều này bằng cách nghĩ về một biểu đồ hai chiều chứa đầy các điểm dữ liệu thuộc hai lớp khác nhau. Giả sử rằng các điểm nằm rải rác xung quanh để không có đường nào có thể được vẽ để phân tách hai lớp khác nhau một cách gọn gàng. Để xử lý tình huống này, các điểm được tìm thấy trong biểu đồ 2D có thể được giảm xuống biểu đồ 1D (một đường). Dòng này sẽ có tất cả các điểm dữ liệu được phân phối trên nó và hy vọng nó có thể được chia thành hai phần thể hiện sự phân tách dữ liệu tốt nhất có thể.
Khi thực hiện LDA có hai mục tiêu chính. Mục tiêu đầu tiên là giảm thiểu phương sai cho các lớp, trong khi mục tiêu thứ hai là tối đa hóa khoảng cách giữa các phương tiện của hai lớp. Những mục tiêu này được hoàn thành bằng cách tạo một trục mới sẽ tồn tại trong biểu đồ 2D. Trục mới được tạo hoạt động để phân tách hai lớp dựa trên các mục tiêu được mô tả trước đó. Sau khi trục đã được tạo, các điểm được tìm thấy trong biểu đồ 2D được đặt dọc theo trục.
Có ba bước cần thiết để di chuyển các điểm ban đầu đến vị trí mới dọc theo trục mới. Trong bước đầu tiên, khoảng cách giữa các lớp riêng lẻ có nghĩa là (phương sai giữa các lớp) được sử dụng để tính khả năng phân tách của các lớp. Trong bước thứ hai, phương sai trong các lớp khác nhau được tính toán, được thực hiện bằng cách xác định khoảng cách giữa mẫu và giá trị trung bình của lớp được đề cập. Ở bước cuối cùng, không gian có chiều thấp hơn giúp tối đa hóa phương sai giữa các lớp được tạo ra.
Kỹ thuật LDA đạt được kết quả tốt nhất khi phương tiện cho các lớp mục tiêu cách xa nhau. LDA không thể phân tách các lớp một cách hiệu quả bằng một trục tuyến tính nếu phương tiện cho các bản phân phối chồng lên nhau.