Tách dữ liệu thành các tập huấn luyện và kiểm tra

Một phần của tài liệu TIỂU LUẬN môn PHƯƠNG PHÁP TÍNH đề tài PHÂN TÍCH THÀNH PHẦN CHÍNH và ỨNG DỤNG (Trang 62 - 71)

III. Phân tích thành phần chính (PCA) trong Python

3.3 Phân tích thành phần chính (PCA) để tăng tốc thuật tốn Machine-Learning

3.3.2 Tách dữ liệu thành các tập huấn luyện và kiểm tra

Giả sử dụng dữ liệu gốc cho tập hợp thử nghiệm là 1/7 và 6/7 dữ liệu còn lại là được huấn luyện.

3.3.3 Chuẩn hóa dữ liệu

Tương tự như chuẩn hoá dữ liệu của PCA để trực quan hố dữ liệu, ta có thể chuyển đổi dữ liệu sang quy mơ đơn vị (giá trị trung bình=0 và phương sai=1). StandardScaler giúp chuẩn hố các tính năng của tập dữ liệu. Áp dụng biến đổi cho cả tập huấn luyện và tập kiểm tra.

3.3.4 Các bước sử dụng PCA mà để tăng tốc thuật toán Machine Learning (hồi quy Logistic).

Sử dụng thư viện Sklearn, áp dụng một thuật toán Machine Learning mà bạn chọn cho dữ liệu đã chuyển đổi. Tạo một phiên bản của mơ hình. Áp dụng biến đổi cho cả tập huấn luyện và tập kiểm tra.

Các bước sử dụng:

• Nhập mơ hình muốn sử dụng. Trong sklearn, tất cả các mơ hình machine learning được triển khai dưới dạng các lớp python

• Tạo một phiên bản của mơ hình.

• Huấn luyện mơ hình trên dữ liệu, lưu trữ thơng tin học được từ dữ liệu. Mơ hình này đang tìm hiểu mối quan hệ giữa chữ số (X) và nhãn (Y).

• Dự đoán nhãn của dữ liệu mới. Sử dụng thơng tin mà mơ hình đọc được trong q trình huấn luyện mơ hình. Đoạn code dưới đây dự đốn cho một lần quan sát.

3.3.5 Số thành phần, phương sai, bảng thời gian

pd.DataFrame(data = [[1.00, 784, 48.94, .9158], [.99, 541, 34.69, .9169], [.95, 330, 13.89, .92], [.90, 236, 10.56, .9168], [.85, 184, 8.85, .9156]], columns = ['Variance Retained',

'Number of Components', 'Time (seconds)',

IV. Ứng dụng:

- Giảm kích thước của dữ liệu.

-Nếu ta có thể giảm số chiều về 2 hoặc 3 chiều, ta có thể dùng các loại đồ thị để hiểu thêm về dữ liệu mà mình đang có, giúp ta nhìn dữ liệu trực quan hơn.

-Xử lý vấn đề tương quan giữa các biến trong dữ liệu ban đầu bằng cách sử dụng các biến mới trong khơng gian mà phương pháp PCA tìm được để mô tả dữ liệu.

4.1 Chúng ta sẽ bắt đầu bằng một ví dụ mang tính chất minh họa trực quan:

Chúng ta có 2 biến X1 và X2 có tương quan (tuyến tính), được biểu diễn bằng đồ thị sau:

Ta biết rằng khi thực hiện các phân tích đa biến mà trong đó các biến có tương quan với nhau là rất khó chịu!

Ta thấy rằng dữ liệu trên trục mới đã giảm sự tương quan đáng kể (biến Y1 và Y2

gần như không tương quan), và sự thay đổi của dữ liệu phụ thuộc phần lớn vào biến Y1, ta có thể chỉ dùng một biến Y1 để biểu diễn dữ liệu, điều này giúp ta giảm số chiều dữ liệu mà không làm giảm quá nhiều “phương sai” của dữ liệu. Đây cũng chính là tư tưởng của phương pháp PCA. Sau đây chúng ta sẽ làm rõ hơn về mặt lý thuyết của phương pháp này.

Giảm chiều dữ liệu hình ảnh.

Giả sử ta có một tập dữ liệu nhiều ảnh có kích thước rất lớn. Khả năng lưu trữ của server là có hạn. Trong tình huống này làm thể nào để giảm kích thước của bộ ảnh vừa với dung lượng server mà thông tin của các bức ảnh vẫn giữ được một lượng lớn. Câu trả lời sẽ có sau khi khi ta thực hành nén một bức ảnh bằng thuật toán truncated SVD.

* Nền tảng toán học cho phương pháp PCA:

Cho biến ngẫu nhiên X có p chiều, X=(x1,…,xp) mơ tả dữ liệu ban đầu và ta có ma trận hiệp phương sai là:

S= ( sij)1 ≤i ≤p, 1 ≤j≤ p

Ta tìm các biến ngẫu nhiên mới y có dạng là tổ hợp tuyến tính của các thành phần của X sao cho y có phương sai càng lớn càng tốt (chứa nhiều thơng tin), về mặt hình thức ta viết lại vấn đề trên: Tìm y có dạng y=∑pi=1aixi sao cho Var(y) lớn nhất có thể. Khơng mất tính tổng qt và để đơn giản tính tốn, ta giả sử kỳ vọng của các

thành phần trong X là 0 và phương sai bằng 1, lúc đó ta có: Var(y)=∑pi=1∑pj=1aiajsij=aTSa, với a=(a1,..,ap) và aTa=1

Như vậy, ta cần giải bài toán tối ưu với điều kiện biên: max aTSa với điều kiện biên aTa=1 bằng phương pháp nhân tử Largrange ta chuyển bài tốn này

thành:Max aTSa−λ(1−aTa) nên ta có a là nghiệm của Sa=λa, dễ thấy: a chính là vectơ riêng, cịn λ chính là trị riêng tương ứng của ma trận S.

Chú ý: S là ma trận đối xứng nửa xác định dương (symmetric positive semidefinite), và do đó có các trị riêng khơng âm và các vectơ riêng lập thành họ trực giao.

Giả sử S có p trị riêng (λi)1≤i≤p và p vecto riêng (a(i))1≤i≤p tương ứng,do điều kiện aTa=1 nên ta thấy (a(i))1≤i≤p là họ cơ sở trực chuẩn trong không gian mới.

Ta thấy phương sai của hình chiếu của dữ liệu ban đầu lên cơ sở thứ i (a(i)) chính là trị riêng thứ i (λi), như vậy ta xác định các thành phần chính dựa theo độ lớn của giá trị riệng. Ví dụ: thành phần quan trọng nhất, là hình chiếu của dữ liệu lên vecto riêng ứng với trị riêng lớn nhất.

Ngoài ra ta có: ∑pi=1λi=∑pi=1sii là tổng phương sai, người ta hay dùng λi∑pi=1λi để thể hiện mức độ phản ánh dữ liệu gốc theo thành phần thứ i, ví dụ: ta có tổng phương sai là 2 (∑pi=1λi), trị riêng của thành phần thứ 1 là 0.4, có thể hiểu là thành phần thứ 1 thể hiện được 0.4/2*100 phần trăm phương sai của dữ liệu, trị riêng của thành phần thứ 2 là 0.3, có thể hiểu là thành phần thứ 2 thể hiện được 0.3/2*100 phần trăm phương sai của dữ liệu, có thể nhận định thành phần thứ 1 quan trọng hơn thành phần thứ 2.

4.2 Ví dụ miêu tả cách tính tốn PCA bằng Matlab:

-Giả sử ta có dữ liệu gốc gồm có 3 biến (3 cột), ta khai báo dưới dạng ma trận trong Matlab như sau:

A = [269.8 38.9 50.5 272.4 39.5 50.0 270.0 38.95 0.5 272.0 39.35 0.2 269.8 38.9 50.5 269.8 38.9 50.5 268.2 38.6 50.2 268.2 38.6 50.8 267.0 38.2 51.1 267.8 38.4 51.0 273.6 39.6 50.0 271.2 39.1 50.4 269.8 38.9 50.5 270.0 38.9 50.5 270.0 38.9 50.5 ];

-Ta chú ý: lúc xây dựng lý thuyết ở trên ta đã giả sử trung bình của các biến trong dữ liệu ban đầu bằng 0 và phương sai bằng 1, nên việc đầu tiên ta phải làm là chuẩn hóa (standardization), ta có thể dùng hàm zscore trong Matlab:

B=zscore(A)

-Ta có thể tính ma trận hiệp phương sai bằng hàm cov trong Matlab, và tìm trị riêng cũng như các vecto riêng tương ứng bằng hàm eig

[VD] = eig(cov(B))

-Lúc này V là một ma trận với các cột là các vecto riêng, D là một ma trận chéo chứa các trị riêng tương ứng.Để đơn giản, Matlab có hàm princomp:

[COEFF SCORE LATENT] = princomp(B)

-COEFF tương tự như ma trận V với các cột là các vecto riêng, LATENT là vecto chứa các trị riêng, vàSCORE là ảnh của dữ liệu trong cơ sở mới. -Ta thấy

SCORE=B*COEFF

Sử dụng lệnh cumsum(LATENT) / sum(LATENT) ta được vectơ: 0.9375 0.9978 1.0000

Có thể hiểu rằng:thành phần thứ nhất (cơ sở mới) giải thích được khoảng 94% phương sai, thành phần thứ nhất và thứ 2 kết hợp sẽ giải thích được hơn 99% phương sai.

4.3 Các ví dụ khác:

Ví dụ 1: Nhận dạng chữ số viết tay:

Mục tiêu: Nhận biết các chữ số 0 ~ 9 dựa trên hình ảnh.

Dữ liệu thơ: Hình ảnh được chia tỷ lệ phân đoạn từ mã ZIP năm chữ số.

16 x 16 bản đồ thang độ xám tám bit

Cường độ pixel nằm trong khoảng từ 0 (đen) đến 255 (trắng).

Dữ liệu đầu vào: đại diện cho mỗi hình ảnh dưới dạng vectơ chiều cao x ԑ R256. PCA có thể giúp bạn chuyển đổi dữ liệu hình ảnh có kích thước cao thành các thành phần chính của kích thước thấp hơn.

Ví dụ 2: Nhận dạng khn mặt:

Hiệu ứng cộng dồn của chín thành phần chính, thêm một máy tính tại một thời điểm, cho "buồn". Chúng ta càng sử dụng nhiều thành phần chính thì độ phân giải càng tốt. Tuy nhiên, 4 hoặc 5 thành phần chính dẫn đến một đánh giá tốt về một

biểu hiện buồn. Đó là một sự giảm kích thước đáng kể khi xem xét số lượng biến ban đầu là số pixel cho một hình.

Tại sao giảm kích thước?

Computational: nén dữ liệu => hiệu quả thời gian / khơng gian. Thống kê: ít thứ ngun hơn => khái quát tốt hơn.

Trực quan: hiểu cấu trúc của dữ liệu.

Phát hiện bất thường: mô tả dữ liệu bình thường, phát hiện các điểm bất thường. Khi đối mặt với các tình huống liên quan đến dữ liệu chiều cao, điều tự nhiên là cân nhắc việc chiếu những dữ liệu đó lên khơng gian con có chiều thấp hơn mà khơng làm mất thơng tin quan trọng

Lựa chọn biến cịn được gọi là lựa chọn đối tượng. Shrinkage: hồi quy Ridge và Lasso.

Tạo một tập hợp giảm các biến đổi tuyến tính hoặc phi tuyến tính của các biến đầu vào, cịn được gọi là trích xuất đặc trưng, ví dụ PCA.

TÀI LIỆU THAM KHẢO:

[1] https://vi.wikipedia.org/wiki/Phép_phân_tích_thành_phần_chính

[2] https://online.stat.psu.edu/stat508/book/export/html/639?source=post_page----- 8489b46c2ae0----------------------

[3] https://tuanvanle.wordpress.com/2013/12/25/gioi-thieu-ve-phuong-phap- principal-component-analysis-pca-va-mot-so-ung-dung-trong-tai-chinh-phan-i/ [4]https://machinelearningcoban.com/2017/06/15/pca/

Một phần của tài liệu TIỂU LUẬN môn PHƯƠNG PHÁP TÍNH đề tài PHÂN TÍCH THÀNH PHẦN CHÍNH và ỨNG DỤNG (Trang 62 - 71)