Học không giám sát - vòng đời, khoảng cách, phân khúc

Tổng quan học không giám sát: vòng đời khai phá sáu giai đoạn, ba khoảng cách Euclid Manhattan cosine và phân khúc marketing.
Trung bìnhThuật toán ~60 phút

Giới thiệu

Bài này học cách máy tự tìm nhóm khách. Bạn đo khoảng cách rồi phân khúc thị trường.

Kiến thức cần nhớ

Học không giám sát là gì

  • Tự tìm cấu trúc ẩn trong dữ liệu không nhãn.
  • Việc chính: gom cụm, giảm chiều, tìm luật chung.
  • Không có thầy chấm đúng sai từng ví dụ.
  • Ví dụ đời thường: tự xếp sách theo màu không ai bảo.

Vòng đời 6 giai đoạn

  • Hiểu bài toán kinh doanh cần gì.
  • Hiểu dữ liệu đang có gì.
  • Làm sạch và chuẩn hóa dữ liệu.
  • Chọn mô hình gom cụm.
  • Ví dụ đời thường: nấu ăn từ đi chợ tới dọn mâm.

Ba khoảng cách

  • Euclid là đường chim bay, hợp số liên tục.
  • Manhattan là đi theo lưới phố, đỡ sợ ngoại lệ.
  • Cosine đo hướng, hợp văn bản dài ngắn khác nhau.
  • Ví dụ đời thường: bay thẳng, đi taxi, so chủ đề.
Khoảng cáchHợp dữ liệu nào
EuclidSố liên tục đã chuẩn hóa
ManhattanRời rạc, nhiều ngoại lệ
CosineVăn bản, chỉ cần hướng

Ví dụ

  • Input: 2 vector giống hệt nhau. Output: cả 3 khoảng cách bằng 0.
  • Giải thích: giống nhau thì khoảng cách bằng không.

💻 Bài tập

Ngôn ngữ: Python 3 với NumPy. Không dùng scipy.spatial.distance hay sklearn cho Bài 1-2. Nộp vào day-022/.

Bài 1: Ba hàm khoảng cách

HàmCông thứcGhi chú
euclidean(a, b)∑(ai−bi)2\sqrt{\sum (a_i - b_i)^2}
manhattan(a, b)∑∣ai−bi∣\sum \lvert a_i - b_i \rvert
cosine_distance(a, b)1−a⋅b∥a∥∥b∥1 - \frac{a \cdot b}{\lVert a \rVert \lVert b \rVert}Vector 0 thì ném ValueError

Mọi hàm kiểm tra 2 vector cùng độ dài.

a=[1,2,3], b=[1,2,3]      -> 0, 0, 0
a=[0,0],   b=[3,4]        -> euclid 5, manhattan 7, cosine ValueError
a=[1,0],   b=[0,1]        -> euclid 1.414, manhattan 2, cosine 1
a=[1,1],   b=[10,10]      -> euclid 12.73, cosine 0 (cùng hướng)

Bài 2: Chuẩn hóa và ma trận khoảng cách

  1. minmax_scale(X): mỗi cột về [0, 1]. Cột hằng số thì giữ 0.
  2. zscore(X): mỗi cột trung bình 0, độ lệch chuẩn 1.
  3. pairwise(X, metric): trả ma trận n×nn \times n.

Dữ liệu khách hàng (tuổi, thu nhập triệu/tháng, số lần mua/tháng):

An   [25,  12, 8]
Bình [26, 120, 1]
Chi  [55,  14, 7]
Dũng [24,  13, 9]

In khách gần An nhất khi chưa chuẩn hóa và sau z-score. Giải thích vì sao đáp án đổi.

Bài 3: Văn bản và cosine (nâng cao)

  1. Biến 5 câu thành vector đếm từ (bag of words tự cài, tách theo khoảng trắng, chữ thường).
  2. Câu thứ 5 là câu thứ 1 lặp lại 3 lần. Chứng minh cosine distance giữa 1 và 5 bằng 0, còn Euclid thì lớn.
  3. Tìm cặp câu gần nhau nhất theo cosine.

✅ Tiêu chí hoàn thành

  • Test mẫu pass với sai số 1e-3 (math.isclose).
  • Bài 2 có giải thích bằng số tại sao thu nhập lấn át khi chưa chuẩn hóa.
  • Bài 3 chứng minh được cosine bỏ qua độ dài văn bản.
  • Viết được 6 giai đoạn vòng đời bằng lời của mình, gắn với bài toán phân khúc khách hàng.

❓ Câu hỏi ôn tập

  • Học không giám sát khác có giám sát ở đâu?
  • Vòng đời gồm những giai đoạn nào?
  • Ba khoảng cách dùng khi nào?
  • Phân khúc khách để làm gì?

🌕 Bạn đã hoàn thành ngày 22. Làm hết bài tập phía trên rồi sang ngày tiếp theo.

Bớt paste mù, hiểu sâu từng dòng mình viết.

180 Days Challenge. 180 ngày cai nghiện vibe code.