Giao diện
Bài tập ôn luyện: Giải thuật nền tảng của Khoa học dữ liệu
Tài liệu tuyển chọn hệ thống bài tập cho môn Giải thuật nền tảng của Khoa học dữ liệu. Các bài toán được phân loại theo cấu trúc các phần học thuật của môn, bao gồm câu hỏi lý thuyết định tính, bài toán tính toán giải tích và bài toán phân tích giải thuật.
Phần 1. Dòng dữ liệu lớn và thuật toán phác họa (Data Streams & Sketches)
Bài 1.1: Phân tích xác suất dương tính giả của Bloom Filter
Một bộ lọc Bloom (Bloom Filter) sử dụng mảng bit có kích thước
- Tính xác suất một bit cụ thể vẫn giữ giá trị
sau khi đã chèn toàn bộ phần tử. - Tính xác suất xảy ra lỗi dương tính giả (false positive rate
) khi truy vấn một phần tử chưa từng xuất hiện trong tập hợp. - Cho trước số lượng phần tử cần lưu trữ
và kích thước mảng , chứng minh rằng số lượng hàm băm tối ưu nhằm cực tiểu hóa xác suất dương tính giả là:
Lời giải gợi ý
Sau khi chèn
phần tử với hàm băm, tổng số lần chọn bit ngẫu nhiên là . Xác suất một bit cụ thể không bị gán giá trị ở một lượt băm là . Do các hàm băm độc lập: Thay số với
: Một truy vấn phần tử mới nhận kết quả dương tính giả khi tất cả
vị trí băm của nó đều có giá trị : Xét hàm mục tiêu
. Đặt , ta có . Đạo hàm theo và giải , dẫn đến .
Bài 1.2: Ước lượng số phần tử phân biệt bằng thuật toán Flajolet–Martin (HyperLogLog Intuition)
Cho một dòng dữ liệu chứa các định danh số nguyên. Ta sử dụng hàm băm
- Tại sao giá trị
lại xuất hiện với xác suất xấp xỉ ? - Giả sử sau khi duyệt qua toàn bộ dòng dữ liệu, giá trị lớn nhất ghi nhận được là
. Ước lượng số lượng phần tử phân biệt theo công thức Flajolet–Martin cơ sở (với hệ số hiệu chỉnh ). - Nêu nguyên nhân khiến phương sai của ước lượng đơn lẻ rất lớn và cách thức kỹ thuật Stochastic Averaging (chia bucket) khắc phục nhược điểm này.
Lời giải gợi ý
- Với hàm băm lý tưởng phân phối đều ngẫu nhiên, mỗi bit có xác suất nhận giá trị
hoặc độc lập bằng . Do đó, xác suất chuỗi bit kết thúc bằng chữ số và tiếp theo là chữ số là . - Ước lượng số phần tử phân biệt:
- Ước lượng đơn lẻ có phương sai lớn vì
là một số nguyên rời rạc, làm cho ước lượng biến thiên theo lũy thừa của 2. Kỹ thuật chia bucket (như trong HyperLogLog) dùng bit đầu tiên của hàm băm để chia dòng dữ liệu thành bucket độc lập, sau đó lấy trung bình điều hòa (harmonic mean) của các ước lượng trong từng bucket để triệt tiêu ảnh hưởng của các giá trị ngoại lai cực đoan.
Phần 2. Tìm kiếm tương đồng trong không gian nhiều chiều (MinHash & LSH)
Bài 2.1: Ma trận đặc trưng và tính toán MinHash Signature
Xét tập hợp các văn bản
| Từ | ||||
|---|---|---|---|---|
| 1 | 0 | 0 | 1 | |
| 0 | 0 | 1 | 0 | |
| 1 | 1 | 0 | 1 | |
| 1 | 0 | 1 | 1 | |
| 0 | 1 | 0 | 0 |
- Tính độ tương đồng Jaccard thực tế giữa cặp
và cặp . - Áp dụng hai hàm hoán vị ngẫu nhiên
và (trong đó giá trị biểu thị chỉ số hàng mới sau khi hoán vị). Lập ma trận chữ ký MinHash (MinHash Signature Matrix). - Kiểm tra tính chất:
qua ví dụ trên.
Lời giải gợi ý
Tính độ tương đồng Jaccard
: - Đối với
: , . Do đó và . - Đối với
: , . Giao là , hợp là .
- Đối với
Xét thứ tự duyệt của từng hoán vị:
- Với
: Thứ tự hàng gốc tương ứng là . : Hàng đầu tiên có số 1 là (hoặc chỉ số hàng hoán vị nhỏ nhất là 1). : có số 1 . : đều là 0, hàng đầu tiên có 1 là . : có số 1 .
- Với
: Thứ tự duyệt tương ứng với hoán vị . Ta xác định chỉ số hàng xuất hiện bit 1 đầu tiên cho mỗi cột để xây dựng vector chữ ký có kích thước .
- Với
Bài 2.2: Phân tích đường cong S-curve trong Locality-Sensitive Hashing (LSH)
Một hệ thống LSH chia ma trận chữ ký MinHash gồm
- Thiết lập công thức tính xác suất
để hai tài liệu có độ tương đồng Jaccard được xem là một cặp ứng viên (candidate pair). - Tính xác suất để một cặp văn bản có
được phát hiện. - Tính xác suất một cặp văn bản có
bị nhận nhầm thành cặp ứng viên (false positive). - Xác định ngưỡng tương đồng
(điểm uốn của đường cong S-curve) tại đó .
Lời giải gợi ý
Hai tài liệu đồng nhất trong toàn bộ
hàng của một dải cụ thể với xác suất . Xác suất chúng không đồng nhất trong dải đó là . Xác suất chúng không đồng nhất trong cả dải độc lập là . Vậy xác suất trở thành cặp ứng viên (ít nhất một dải đồng nhất hoàn toàn) là: Với
:
s^r &= (0.8)^5 = 0.32768 \ P(0.8) &= 1 - (1 - 0.32768)^{20} \ &= 1 - (0.67232)^{20} \approx 1 - 0.00035 = 0.99965 \quad (99.965%). \end
\begin{aligned} s^r &= (0.2)^5 = 0.00032 \ P(0.2) &= 1 - (1 - 0.00032)^{20} \ &\approx 1 - (1 - 20 \times 0.00032) = 20 \times 0.00032 = 0.00638 \quad (0.64%). \end
Phần 3. Phân tích đồ thị liên kết (PageRank & Random Walk)
Bài 3.1: Tính toán lặp ma trận PageRank với hệ số suy giảm (Damping Factor)
Xét đồ thị web gồm 3 trang
- Viết ma trận chuyển đổi ngẫu nhiên
của đồ thị. - Với hệ số suy giảm
, viết công thức cập nhật PageRank dạng ma trận: - Khởi tạo
. Thực hiện 2 bước lặp lũy thừa (Power Iteration) để tìm và . - Giải hệ phương trình trạng thái dừng
cùng điều kiện chuẩn hóa để tìm phân phối PageRank chính xác.
Điều kiện chuẩn hóa viết đầy đủ là
Lời giải gợi ý
Ma trận chuyển vị
(trong đó phần tử là xác suất nhảy từ trang sang trang ): - Từ
: Chia đều cho và cột 1 là . - Từ
: Trỏ đến cột 2 là . - Từ
: Trỏ đến cột 3 là .
- Từ
Với
: Khởi tạo
: Tiếp tục thay
vào để tính .
Phần 4. Giảm chiều dữ liệu & Phân tích ma trận (SVD & Low-Rank Approximation)
Bài 4.1: Phân tích giá trị suy biến (SVD) và xấp xỉ hạng thấp
Cho ma trận dữ liệu
- Tính ma trận đối xứng
và xác định các giá trị riêng cùng vector riêng trực chuẩn tương ứng. - Xác định các giá trị suy biến
của . - Tìm phân tích SVD đầy đủ:
. - Xác định ma trận xấp xỉ hạng 1 tốt nhất
theo định lý Eckart–Young–Mirsky và tính sai số Frobenius .
Lời giải gợi ý
- Tính
: Phương trình đặc trưng:
\det(A^T A - \lambda I) &= (13 - \lambda)^2 - 12^2 \ &= (13 - \lambda - 12)(13 - \lambda + 12) \ &= (1 - \lambda)(25 - \lambda) = 0. \end
Ma trận
- Ma trận
. Vector cột của :
u_1 &= \frac{1}{\sigma_1} A v_1 = \frac{1}{5} \begin{bmatrix} 3 & 2 \ 2 & 3 \end{bmatrix} \begin{bmatrix} 1/\sqrt{2} \ 1/\sqrt{2} \end{bmatrix} = \frac{1}{5} \begin{bmatrix} 5/\sqrt{2} \ 5/\sqrt{2} \end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 \ 1 \end{bmatrix}, \ u_2 &= \frac{1}{\sigma_2} A v_2 = \frac{1}{1} \begin{bmatrix} 3 & 2 \ 2 & 3 \end{bmatrix} \begin{bmatrix} -1/\sqrt{2} \ 1/\sqrt{2} \end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} -1 \ 1 \end{bmatrix}. \end
Sai số Frobenius chính bằng giá trị suy biến bị loại bỏ: