Bài giảng Lý thuyết Cơ sở Toán trong Tin học PCA và LSA. Bài giảng Lý thuyết Cơ sở Toán trong Tin học PCA và LSA. Bài giảng Lý thuyết Cơ sở Toán trong Tin học PCA và LSA. Bài giảng Lý thuyết Cơ sở Toán trong Tin học PCA và LSA . Bài giảng Lý thuyết Cơ sở Toán trong Tin học PCA và LSA
Trang 1TOÁN CHO TIN H C Ọ
Phạm Nguyên Khang
BM Khoa học máy tính
pnkhang@cit.ctu.edu.vn
Trang 3NG D NG TOÁN TRONG H C MÁY
Trang 4ng d ng toán trong h c máy
• Hệ phương trình tuyến tính
• Bài toán bình phương nhỏ nhất
• Hồi quy tuyến tính
• Giảm chiều dữ liệu
Trang 5• A khả đảo, nghiệm duy nhất x = A-1b
• Làm thế nào nếu A không khả đảo (không tồn tại A-1 ) ví dụ: số phương trình nhiều hơn số biến ?
• Giải pháp: Tìm x sao cho Ax “gần” với b nhất.
• Tìm x sao cho ||Ax – b||2 nhỏ nhất
5
Trang 6Bài toán bình ph ng nh nh t ươ ỏ ấ
• Tìm x sao cho f(x) = ||Ax - b||2 min
• Bài toán không có ràng buộc
• Ta có:
• Tìm gradient của x
• Cho gradient = 0 và giải hệ phương trình tìm x
6
Trang 7Bài toán bình ph ng nh nh t ươ ỏ ấ
• Chú ý:
• Nếu các cột của A độc lập tuyến tính thì ATA khả đảo thì mới tồn tại nghiệm duy nhất:
(2)
• (2) là phương trình chuẩn của bài toán bình phương nhỏ nhất
• Điều gì sẽ xảy ra nếu các cột của A không độc lập tuyến tính ?
• Tìm x có norm nhỏ nhất sao cho nhỏ nhất
• x như thế luôn tồn tại dù cho các cột của A không độc lập tuyến tính.
7
Trang 8Bài toán bình ph ng nh nh t ươ ỏ ấ
• pseudo-inverse (giả nghịch đảo) hay còn gọi là nghịch đảo Moore-Pensore của ma trận A kích thước m x n,
ký hiệu A+ được định nghĩa như sau:
• Nếu A = VSUT (SVD của A)
• Thì A+ = VS+UT
• Trong đó S+ là ma trận nghịch đảo của S (lấy nghịch đảo các phần tử khác 0 của S ta được S+).
• Tính chất:
• Nếu m > n và A có hạng đầy đủ thì A+ = (ATA)-1AT
• Nếu m < n và A có hạng đầy đủ thì A+ = AT (AAT)-1
• Trong octave A+ được định nghĩa bằng hàm pinv(A)
• Áp dụng pseudo inverse để giải hệ phương trình tuyến tính
• X = A+b (trong octave: x = pinv(A)*b hay x = A\b)
8
Trang 9H i quy tuy n tính ồ ế
• Xét bài toán dự báo giá nhà dựa trên diện tích đất ở
9
Trang 10H i quy tuy n tính ồ ế
• Xét bài toán dự báo giá nhà dựa trên diện tích đất ở
?
10
Trang 14H i quy tuy n tính (th c hành) ồ ế ự
• Thực hành:
• Thêm cột chứa toàn giá trị 1 vào bên trái ma trân X (có thể sử dụng hàm ones(m, n) và phép tạo ma trận)
• Áp dụng mô hình hồi quy tuyến tính tìm θ1 và θ0 (có thể sử dụng pinv hoặc phép chia ma trận trong octave ‘A \
b’, so sánh kết quả của các phương pháp)
Trang 15H i quy tuy n tính (th c hành) ồ ế ự
• Vẽ đường thẳng hồi quy h(x) = θ1x + θ0 chồng lên tập dữ liệu
• Chú ý: lúc này ta đã thêm 1 cột vào X, nên khi vẽ ta lấy cột 2 mà vẽ.
plot(X(:,2), y, 'rx', 'MarkerSize', 10); %vẽ dữ liệu
Trang 16H i quy tuy n tính (th c hành) ồ ế ự
• Kết quả
16
Trang 17H i quy tuy n tính (đa bi n) ồ ế ế
• Trường hợp dữ liệu X có nhiều hơn một cột, ví dụ: dự báo giá nhà dựa trên diện tích và số phòng
17
Trang 18H i quy tuy n tính (đa bi n) ồ ế ế
• Tổng quát, tập dữ liệu X có m phần tử và n thuộc tính, mô hình hồi quy tuyến tính trong trường hợp này:
18
h(x) = θ0 + θ1x1 +θ2x2 + + θnxn
Trang 19H i quy tuy n tính (đa bi n) ồ ế ế
• Tổng quát, tập dữ liệu X có m phần tử và n thuộc tính, mô hình hồi quy tuyến tính trong trường hợp này:
• Tương tự trường hợp 1 biến
• Ma trận XTX có kích thước (n+1) x (n+1)
19
X Θ = y
Θ = ( XTX)−1XTy
Trang 20H i quy tuy n tính (đa bi n) ồ ế ế
• Thực hành
• Tìm tham số theta của mô hình hồi quy tuyến tính cho tập dữ liệu (file: ex1data2.txt)
20
Θ = ( XTX)−1XTy
Trang 21H i quy tuy n tính (đa bi n) ồ ế ế
• Khi n lớn, ma trận cần nghịch đảo XTX có kích thước lớn => nhiều thời gian hơn
• Giải pháp khi xử lý số liệu lớn: sử dụng phương pháp giảm gradient (gradient descent)
• Xem lại mô hình hồi quy tuyến tính:
Trang 22H i quy tuy n tính (đa bi n) ồ ế ế
• Giải thuật giảm gradient (gradient descent)
• Giải thuật lặp tìm x để f(x) nhỏ nhất
1. Khởi tạo x ngẫu nhiên
2. Dịch chuyển x theo hướng ngược lại với hướng gradient (hướng của gradient là hướng làm tăng giá trị của f(x) Đi
ngược hướng với gradient sẽ làm giảm giá trị của x)
3. Lặp bước 2 cho đến khi hội tụ
• Gradient của hàm lỗi:
22
Trang 23H i quy tuy n tính (đa bi n) ồ ế ế
• Giải thuật giảm gradient cho hồi quy tuyến tính
1. Khởi tạo ngẫu nhiên x=θ, f(x) =
2. for it = 1:max_it (f(x_moi)>f(x_cu): thoat)
3. end
4. return (θ)
23
) ( ,
), (
)()
) ( θ
J
Trang 24H i quy tuy n tính (th c hành gi m gradient) ồ ế ự ả
• Chương trình chính kiểm tra giải thuật gradient_descent (tên file lr_gd.m)
%% Initialization
clear; close all; clc
%% Part 1: Loading data =======================
%%Part 3: Gradient descent ===================
fprintf('Running Gradient Descent \n')
X = [ones(m, 1), data(:,1)];
n = size(X, 1); % number of columns
theta = zeros(n, 1); % init theta
iterations = 1500; eta = 0.01;
compute_cost(X, y, theta)
% run gradient descent
theta = gradient_descent(X, y, theta, eta, iterations);
% print theta to screen fprintf('Theta found by gradient descent: ');
fprintf('%f %f \n', theta(1), theta(2));
% Plot the linear fit plot(X(:,2), y, ’rx’);
hold on;
plot(X(:,2), X*theta, '-') legend('Training data', 'Linear regression');
hold off;
24
Trang 25H i quy tuy n tính (th c hành gi m gradient) ồ ế ự ả
• Viết hàm compute_cost (X, y, theta) trả về giá trị hàm lỗi tại vị trí theta (tên file
compute_cost.m)
• Nếu viết đúng khi chạy lr_gd ta sẽ thấy: ans = 32.073
function J = compute_cost(X, y, theta)
Trang 26H i quy tuy n tính (th c hành gi m gradient) ồ ế ự ả
• Viết giải thuật gradient_descent (X, y, theta) tìm theta (tên file gradient_descent.m)
function [theta, J_history] = gradient_descent(X, y, init_theta, eta, T)
Viết code cập nhật θ tại đây
%Lưu giá trị của J sau mỗi bước lặp J_history(iter) = compute_cost(X, y, theta);
Trang 27H i quy tuy n tính (th c hành gi m gradient) ồ ế ự ả
• Chương trình chính kiểm tra giải thuật gradient_descent (tên file lr_gd.m)
• Kết quả:
• Kiểm tra compute_cost:
• ans = 32.073
• Kiểm tra theta:
• Theta found by gradient descent: -3.630291 1.166362
• Kết quả hơi khác 1 ít với phương pháp phương trình normal
Trang 28H i quy tuy n tính (th c hành gi m gradient) ồ ế ự ả
• Đa biến:
• Áp dụng gradient descent tìm theta cho tập dữ liệu ex1data2.txt
• In giá trị hàm lỗi sau khi tìm được theta So sánh với phương pháp nghịch đảo ma trận.
28
Trang 29H i quy tuy n tính (normalization) ồ ế
• Chuẩn hoá dữ liệu trước khi thực hiện hồi quy
• Với mỗi cột (thuộc tính) của X,
• Tìm giá trị trung bình mj và độ lệch chuẩn sj của nó.
• Chuẩn hoá dữ liệu: thay xj = (xj-mj)/sj.
• Các hàm cần thiết trong octave: mean, var, repmat
• Yêu cầu: viết hàm normalize(X) chuẩn hoá các cột của X và trả về giá trị đã chuẩn hoá
function R = normalize(X)
end
29
Trang 30Gi m chi u d li u ả ề ữ ệ
• Tại sao giảm chiều ?
• Nén dữ liệu: giảm từ 2D sang 1D
30
Trang 31Gi m chi u d li u ả ề ữ ệ
• Tại sao giảm chiều ?
• Nén dữ liệu: giảm từ 2D sang 1D
31
Trang 32Gi m chi u d li u ả ề ữ ệ
• Tại sao giảm chiều ?
• Nén dữ liệu: giảm từ 3D sang 2D
32
Trang 33Gi m chi u d li u (Quiz) ả ề ữ ệ
• Giả sử ta áp dụng phép giảm chiều lên tập dữ liệu m phần tử X = {x(1), x(2), …, x(m)}, trong đó x(i) ∈Rn Ta
thu được kết quả là tập dữ liệu Z
Trang 34Gi m chi u d li u ả ề ữ ệ
• Hiển thị dữ liệu (visualization)
34
Trang 35Gi m chi u d li u ả ề ữ ệ
• Hiển thị dữ liệu (visualization)
35
Trang 36Gi m chi u d li u ả ề ữ ệ
• Hiển thị dữ liệu trên mặt phẳng 2D
36
Trang 37Gi m chi u d li u (Quiz) ả ề ữ ệ
• Giả sử ta có tập dữ liệu X = {x(1), x(2), …, x(m)}, trong đó x(i) ∈Rn Để hiển thị tập dữ liệu này, ta áp dụng
phép giảm chiều và thu được tập Z = {z(1), z(2), …, z(m)} trong đó z(i) ∈Rk Các câu nào sao đây là đúng ?
Trang 38Phân tích hành ph n chính (PCA) ầ
38
Trang 39Phân tích hành ph n chính (PCA) ầ
39
Trang 40Phân tích hành ph n chính (PCA) ầ
40
Trang 41Phân tích hành ph n chính (PCA) ầ
41
Trang 42Phân tích hành ph n chính (PCA) ầ
• PCA không phải hồi quy tuyến tính
42
Trang 44• Tìm véc-tơ u sao cho lỗi của chiếu nhỏ nhất
• Hình chiếu của phần tử x(i) lên véc-tơ u.
• Nếu u được chuẩn hoá:
Trang 46• Giải phương trình gradient = 0
• u là véc-tơ riêng (có norm = 1) của ma trận C
Trang 48• v cũng là một véc-tơ riêng của C
• Cứ tiếp tục như thế, ta thu được các thành phần chính của X chính là các véc-tơ riêng của C
• Sắp xếp các giá trị riêng (và véc-tơ riêng tương ứng) theo thứ tự giảm dần
48
λ 1 ≥ λ 2 ≥ … ≥ λ n
Trang 49• Giữ lại k cột của U => k thành phần chính
• Chiếu dữ liệu lên các thành phần chính
49
Z = XU reduce
z ( i) = U reduce T x ( i)
Trang 50xjc) zj = ( ) u(j) T
xkd) zj = ( ) u(j) T
x
Trang 51• Phục hồi dữ liệu gốc từ hình chiếu:
• Lỗi xấp xỉ trung bình Tổng phương sai của dữ liệu
Trang 52• Chọn k sao cho:
• 99% phương sai được giữ lại
• Nếu ma trận C được tính bằng:
• C: ma trận phương sai – hiệp phương sai
• Tổng variance = trace(C) = tổng các giá trị riêng của C
Trang 53PCA (Gi i thu t) ả ậ
• Giải thuật tính PCA
• Quy tâm các hàng của X
• Tính mean theo hàng, thay thế các hàng của X = nó trừ cho mean
• Tính ma trận phương sai – hiệp phương sai:
• Tìm các giá trị riêng và véc-tơ riêng của C => U và Λ
Trang 55PCA (Quiz)
• Giả sử ta chạy PCA và giữ lại k = n thành phần chính (không giảm chiều) Các câu nào bên dưới đúng ?
a) Ureduce có kích thước n x n
b) Với mọi x, xapprox = x.
c) Phần trăm phương sai được giữ lại là 100%
Trang 56PCA (Quiz)
• Khi nào nên sử dụng PCA, chọn tất cả các câu đúng ?
a) Nén dữ liệu để ít tốn bộ nhớ/không gian lưu trữ
b) Giảm chiều dữ liệu đầu vào để tăng tốc các giải thuật máy học
c) Thay vì sử dụng hồi quy, ta sử dụng PCA
d) Để hiển thị dữ liệu nhiều chiều (chọn k = 2 hoặc k = 3)
56
Trang 57Z = project_data(X, U, k); %chiếu dữ liệu
Z(1,:) %hiển thị phần tử đầu tiên
X_rec = recover_data(Z, U, k); %phục hồi dữ liệu
X_rec(1:, ) %hiển thị phần tử đầu tiên
57
Trang 58PCA (Th c hành) ự
• Bài 1: dữ liệu 2D
• Cài đặt giải thuật PCA (tên file: pca.m)
• function [U, L] = pca(X)
• %U: các véc-tơ riêng
Trang 60PCA (Th c hành) ự
• Bài 1: dữ liệu 2D
• Phục hồi dữ liệu gốc (tên file: recover_data.m)
• function X_rec = recover_data(Z, U, k)
• %U: các véc-tơ riêng: n x n
Trang 61Phân tích ng nghĩa ti m n ữ ề ẩ
• Latent semantic analysis (LSA)
• Kỹ thuật thống kê xử lý dữ liệu văn bản: trích thông tin về mối quan hệ (ngữ nghĩa) giữa các từ trong tập văn bản
• Văn bản được biểu diễn bằng ma trận Term x Document
• Mục tiêu: giảm chiều và chiếu dữ liệu sang không gian chủ đề, giải quyết vấn đề đồng nghĩa (dựa trên đồng xuất
hiện)
61
D Term/word
Document
Z Document
W Term/word
Topic
Trang 62Singular value decomposition
• Tách giá trị kỳ dị (SVD) của ma trận là một phép toán phân rã ma trận A thành tích 3 ma trận U.S.VT
• U, V là các ma trận trực giao: UTU = I, VTV
• S là ma trận đường chéo, các phần tử nằm trên đường chéo của S gọi là các giá trị kỳ dị (singular)
VT S
=
62
Trang 63Singular value decomposition
• Mối quan hệ của giá trị kỳ dị (singular values) và giá trị riêng (eigenvalues)
• Giá trị riêng của ATA = bình phương của giá trị kỳ dị của A
• Thành phần phải của A (V) là véc-tơ riêng của ATA
• Thành phần trái của A (U) là véc-tơ riêng của AAT
Trang 64Phân tích ng nghĩa ti m n ữ ề ẩ
• Độ tương tự (similarity) giữa các Terms
• Độ tương tự (similarity) giữa các Documents
Doc
Doc
Trang 66Phân tích ng nghĩa ti m n ữ ề ẩ
• Giải thuật LSA
• Độ tương tự giữa các terms:
• Độ tương tự giữa các documents
• Hình chiếu của terms
• Hình chiếu của documents
Trang 67Phân tích ng nghĩa ti m n ữ ề ẩ
• Giải thuật LSA
• Chiếu document mới lên không gian ngữ nghĩa :
• Ta có:
• Hình chiếu của document mới:
• Tương tự hình chiếu của term mới lên không gian ngữ nghĩa:
67
D = U * S*VT
⇒ UT * D = UT * U * S*VT = S*VT
⇔ V * S = DT * U
Znew = Dnew T * Ured
Wnew = Dnew* Vred