Không gian tự học dành cho sinh viên UET

Chào mừng đến với UETệ

Tìm bài giảng theo học phần, hiểu lại những kiến thức nền và ôn tập theo nhịp học của bạn.

Bài giảng
Đọc Notes, ôn nhanh với Slides và luyện tập qua các bài có lời giải.
Wiki kiến thức
Tra cứu thuật ngữ và bổ sung kiến thức nền ngay khi cần.
Góc học tập
Ôn bằng flashcard, lưu ghi chú và hẹn giờ tập trung.

Bạn có thể xem lại phần giới thiệu ở cuối trang.

Buy me a coffee

Website hoàn toàn miễn phí. Nếu thấy hữu ích, bạn có thể tặng tôi một cốc cà phê theo thông tin dưới đây nhé!

Mã QR chuyển khoản Momo
Ngân hàng
Momo
Tên người nhận
MOMO - TKTH DO MINH TRI
Số tài khoản
01MMTTT0060405229
Skip to content

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 m=64 bit và k=4 hàm băm độc lập có phân phối đều trên dải {0,1,…,m−1}. Giả sử ta lần lượt chèn n=8 phần tử vào bộ lọc.

  1. Tính xác suất một bit cụ thể vẫn giữ giá trị 0 sau khi đã chèn toàn bộ n phần tử.
  2. 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.
  3. Cho trước số lượng phần tử cần lưu trữ n và kích thước mảng m, chứng minh rằng số lượng hàm băm tối ưu k∗ nhằm cực tiểu hóa xác suất dương tính giả là:
    k∗=mnln⁡2

Lời giải gợi ý ​

  1. Sau khi chèn n phần tử với k hàm băm, tổng số lần chọn bit ngẫu nhiên là k⋅n. Xác suất một bit cụ thể không bị gán giá trị 1 ở một lượt băm là 1−1m. Do các hàm băm độc lập:

    P(bit=0)=(1−1m)kn≈e−knm

    Thay số với m=64,k=4,n=8:

    P(bit=0)≈(1−164)32=(6364)32≈e−0.5≈0.6050
  2. Một truy vấn phần tử mới nhận kết quả dương tính giả khi tất cả k vị trí băm của nó đều có giá trị 1:

    ϵ=(1−P(bit=0))k≈(1−0.6050)4=(0.3950)4≈0.0243(2.43%)
  3. Xét hàm mục tiêu f(k)=(1−e−kn/m)k. Đặt p=e−kn/m, ta có ln⁡f(k)=kln⁡(1−p)=−mnln⁡(p)ln⁡(1−p). Đạo hàm theo p và giải p=12, dẫn đến e−kn/m=12⟺k∗=mnln⁡2.


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 h(x) ánh xạ mỗi giá trị vào chuỗi nhị phân 32-bit. Gọi ρ(y) là số lượng số 0 liên tiếp tính từ bit cuối cùng (least significant bit) của y=h(x) trước khi gặp bit 1 đầu tiên (ví dụ: ρ(…10002)=3).

  1. Tại sao giá trị ρ(h(x))=r lại xuất hiện với xác suất xấp xỉ 2−(r+1)?
  2. 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à R=maxxρ(h(x))=5. Ước lượng số lượng phần tử phân biệt F0 theo công thức Flajolet–Martin cơ sở 2R/ϕ (với hệ số hiệu chỉnh ϕ≈0.7735).
  3. 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 ý ​

  1. 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ị 0 hoặc 1 độc lập bằng 12. Do đó, xác suất chuỗi bit kết thúc bằng r chữ số 0 và tiếp theo là chữ số 1 là (12)r×(12)=(12)r+1.
  2. Ước lượng số phần tử phân biệt:
    F^0=2Rϕ=250.7735≈320.7735≈41.37≈41
  3. Ước lượng đơn lẻ có phương sai lớn vì R là một số nguyên rời rạc, làm cho ước lượng 2R biến thiên theo lũy thừa của 2. Kỹ thuật chia bucket (như trong HyperLogLog) dùng b bit đầu tiên của hàm băm để chia dòng dữ liệu thành m=2b 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 {D1,D2,D3,D4} với tập từ vựng gồm 5 từ {w1,w2,w3,w4,w5}. Ma trận đặc trưng nhị phân (hàng là từ, cột là văn bản) được cho như sau:

TừD1D2D3D4
w11001
w20010
w31101
w41011
w50100
  1. Tính độ tương đồng Jaccard thực tế giữa cặp (D1,D4) và cặp (D1,D2).
  2. Áp dụng hai hàm hoán vị ngẫu nhiên π1=(2,4,1,5,3) và π2=(4,1,3,2,5) (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).
  3. Kiểm tra tính chất: P(h(Di)=h(Dj))=J(Di,Dj) qua ví dụ trên.

Lời giải gợi ý ​

  1. Tính độ tương đồng Jaccard J(A,B)=|A∩B||A∪B|:

    • Đối với (D1,D4): D1={w1,w3,w4}, D4={w1,w3,w4}. Do đó D1∩D4={w1,w3,w4} và D1∪D4={w1,w3,w4}.
      J(D1,D4)=33=1.0
    • Đối với (D1,D2): D1={w1,w3,w4}, D2={w3,w5}. Giao là {w3}, hợp là {w1,w3,w4,w5}.
      J(D1,D2)=14=0.25
  2. Xét thứ tự duyệt của từng hoán vị:

    • Với π1: Thứ tự hàng gốc tương ứng là w3→w1→w5→w2→w4.
      • D1: Hàng đầu tiên có số 1 là w3⟹sigπ1(D1)=3 (hoặc chỉ số hàng hoán vị nhỏ nhất là 1).
      • D2: w3 có số 1 ⟹sigπ1(D2)=3.
      • D3: w3,w1,w5 đều là 0, hàng đầu tiên có 1 là w2⟹sigπ1(D3)=2.
      • D4: w3 có số 1 ⟹sigπ1(D4)=3.
    • Với π2: Thứ tự duyệt tương ứng với hoán vị π2. 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 2×4.

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 n=100 hàng thành b=20 dải (bands), mỗi dải chứa r=5 hàng (n=b⋅r).

  1. Thiết lập công thức tính xác suất P(s) để hai tài liệu có độ tương đồng Jaccard s được xem là một cặp ứng viên (candidate pair).
  2. Tính xác suất để một cặp văn bản có s=0.8 được phát hiện.
  3. Tính xác suất một cặp văn bản có s=0.2 bị nhận nhầm thành cặp ứng viên (false positive).
  4. Xác định ngưỡng tương đồng s0 (điểm uốn của đường cong S-curve) tại đó P(s0)≈0.5.

Lời giải gợi ý ​

  1. Hai tài liệu đồng nhất trong toàn bộ r hàng của một dải cụ thể với xác suất sr. Xác suất chúng không đồng nhất trong dải đó là 1−sr. Xác suất chúng không đồng nhất trong cả b dải độc lập là (1−sr)b. 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à:

    P(s)=1−(1−sr)b
  2. Với s=0.8,b=20,r=5:

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

3.Với$s=0.2,b=20,r=5$:

\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

4.Điểmngưỡngxấpxỉ:$$s0≈(1b)1/r=(120)15=(0.05)0.2≈0.549

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 A,B,C với các liên kết có hướng:

  • A→B,A→C
  • B→C
  • C→A
  1. Viết ma trận chuyển đổi ngẫu nhiên M của đồ thị.
  2. Với hệ số suy giảm d=0.85, viết công thức cập nhật PageRank dạng ma trận:
    r(k+1)=dMr(k)+1−dN1
  3. Khởi tạo r(0)=[13,13,13]T. Thực hiện 2 bước lặp lũy thừa (Power Iteration) để tìm r(1) và r(2).
  4. Giải hệ phương trình trạng thái dừng r∗=dMr∗+1−dN1 cùng điều kiện chuẩn hóa ∑ri=1 để tìm phân phối PageRank chính xác.

Điều kiện chuẩn hóa viết đầy đủ là r1+⋯+rN=1, hay ∑i=1Nri=1. Chỉ số i chạy qua các trang. Tổng bằng 1 không có nghĩa mọi điểm đều bằng nhau.

Lời giải gợi ý ​

  1. Ma trận chuyển vị M (trong đó phần tử Mij là xác suất nhảy từ trang j sang trang i):

    • Từ A: Chia đều cho B và C⟹ cột 1 là [0,12,12]T.
    • Từ B: Trỏ đến C⟹ cột 2 là [0,0,1]T.
    • Từ C: Trỏ đến A⟹ cột 3 là [1,0,0]T.
    M=[00112001210]
  2. Với N=3,d=0.85⟹1−d3=0.153=0.05:

    r(k+1)=0.85[0010.5000.510]r(k)+[0.050.050.05]
  3. Khởi tạo r(0)=[0.3333,0.3333,0.3333]T:

    r(1)=0.85[0.33330.16670.5000]+[0.050.050.05]=[0.2833+0.050.1417+0.050.4250+0.05]=[0.33330.19170.4750].

    Tiếp tục thay r(1) vào để tính r(2).


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 A∈R2×2:

A=[3223]
  1. Tính ma trận đối xứng ATA và xác định các giá trị riêng λ1,λ2 cùng vector riêng trực chuẩn tương ứng.
  2. Xác định các giá trị suy biến σ1,σ2 của A.
  3. Tìm phân tích SVD đầy đủ: A=UΣVT.
  4. Xác định ma trận xấp xỉ hạng 1 tốt nhất A1 theo định lý Eckart–Young–Mirsky và tính sai số Frobenius ∥A−A1∥F.

Lời giải gợi ý ​

  1. Tính ATA:
    ATA=[3223][3223]=[13121213]
    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

Suyra$λ1=25,λ2=1$.Vectorriêngtrựcchuẩn:−Với$λ1=25$:$v1=12[1,1]T$.−Với$λ2=1$:$v2=12[−1,1]T$.2.Giátrịsuybiến:$$σ1=λ1=5,σ2=λ2=1

Ma trận Σ=[5001].

  1. Ma trận V=12[1−111]. Vector cột của U:

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

Vậy$A=UΣVT$.4.Matrậnhạng1xấpxỉtốtnhất:$$A1=σ1u1v1T=5(12[11])(12[11])=52[1111]=[2.52.52.52.5]

Sai số Frobenius chính bằng giá trị suy biến bị loại bỏ:

∥A−A1∥F=σ2=1
Ảnh & sơ đồ
100%
Ảnh tài liệu được phóng to