Hệ khuyến nghị 4 — Content-based & Hybrid

13 thg 7, 2026 2 lượt xem
#ai
#recommender-systems
#content-based
#cold-start
#hybrid

Từ CF đến content: hai góc nhìn bổ sung nhau

Hệ khuyến nghị 2 — Collaborative FilteringHệ khuyến nghị 3 — Matrix Factorization, ta dựa hoàn toàn vào hành vi tập thể: hệ thống không cần biết sản phẩm là gì, chỉ nhìn ai đã tương tác với cái gì. Sức mạnh đó đi kèm một tử huyệt: khi có item mới hoặc user mới chưa có lịch sử, CF câm lặng — không hàng xóm, không vector latent, không dự đoán được. Đó chính là bài toán cold start kinh điển.

Bài này đi vào nhóm phương pháp bổ sung: content-based filtering (gợi ý dựa trên đặc trưng nội dung của item và hồ sơ sở thích của user), knowledge-based (dựa trên nhu cầu và ràng buộc, hợp với sản phẩm tài chính giá trị cao), và cuối cùng là hybrid — kết hợp tất cả để bù nhược điểm của nhau. Đây là hình hài của gần như mọi hệ khuyến nghị công nghiệp thực tế: không ai chỉ dùng một họ thuật toán.

Bối cảnh xuyên suốt vẫn là NCB muốn gợi ý sản phẩm/dịch vụ tiếp theo cho khách hàng cá nhân: thẻ tín dụng, gói tiết kiệm, vay tiêu dùng, bảo hiểm liên kết, ví điện tử. Điểm khác biệt so với thương mại điện tử: sản phẩm ngân hàng ít, thưa, giá trị cao, ràng buộc pháp lý — một người có thể cả năm không mở thêm sản phẩm nào. Bối cảnh này định hình lựa chọn thuật toán rất rõ.

Content-based filtering: gợi ý theo đặc trưng

Ý tưởng cốt lõi khác hẳn CF: "Bạn đã thích những item có đặc trưng X, Y, Z — vậy tôi gợi ý item khác cũng có X, Y, Z." Hệ thống không cần biết người khác thích gì; nó chỉ cần (1) mô tả được item bằng đặc trưng, và (2) suy ra hồ sơ sở thích của user từ những item họ đã tương tác.

Quy trình gồm ba bước.

Bước 1 — Biểu diễn item bằng feature

Mỗi item được mô tả bằng một vector đặc trưng. Nguồn đặc trưng:

  • Thuộc tính có cấu trúc: loại sản phẩm (thẻ/tiết kiệm/vay), kỳ hạn, lãi suất, hạn mức, mức phí, phân khúc mục tiêu, độ rủi ro. Đây là dữ liệu ngân hàng vốn có sẵn trong hệ thống core.
  • Mô tả văn bản (tên gọi, điều khoản sản phẩm, nội dung marketing): xử lý bằng TF-IDF (Term Frequency – Inverse Document Frequency, trọng số từ theo mức đặc trưng của nó trong tài liệu) hoặc embedding (vector ngữ nghĩa từ mô hình ngôn ngữ — xem Vector embeddings & tìm kiếm ngữ nghĩa).

Ví dụ minh hoạ vector cho ba sản phẩm (chuẩn hoá về 0–1, đây là số minh hoạ):

Sản phẩmloại=thẻloại=tiết kiệmrủi ro caokỳ hạn dàiphí thấp
Thẻ tín dụng hoàn tiền1.00.00.60.00.8
Gói tiết kiệm 12 tháng0.01.00.00.91.0
Vay tiêu dùng tín chấp0.00.00.90.40.2

Bước 2 — Xây user profile

Hồ sơ sở thích của user là tổng hợp (thường là trung bình có trọng số) vector của các item họ đã tương tác. Trọng số có thể là mức độ hài lòng, số tiền giao dịch, hoặc độ mới (item gần đây quan trọng hơn):

# minh hoạ — KHÔNG phải SQL chạy được
profile[u] = Σ_i ( w[u][i] * feature_vector[i] ) / Σ_i w[u][i]

Nếu một khách hàng chủ yếu dùng thẻ tín dụng và vay tiêu dùng, profile của họ sẽ nghiêng về "rủi ro cao, thích tín dụng" — và hệ thống sẽ ưu tiên gợi ý các sản phẩm có đặc trưng tương tự.

Bước 3 — Tính tương đồng và xếp hạng

Với mỗi item user chưa có, tính độ tương đồng giữa profile[u]feature_vector[i], thường bằng cosine similarity (góc giữa hai vector), rồi xếp hạng và gợi ý top-N. Đây chính là chỗ ta có thể tái dùng hạ tầng vector search nếu đã có.

# minh hoạ — pseudocode
for item i not in history[u]:
    score[i] = cosine(profile[u], feature_vector[i])
recommend top_N by score

Ưu và nhược của content-based

Khía cạnhContent-based
Cold start item mới✅ Giải quyết tốt — chỉ cần item có feature là gợi ý được ngay, không chờ ai tương tác
Độc lập dữ liệu người khác✅ Chỉ cần lịch sử của chính user đó → chạy được cả khi tập user nhỏ
Giải thích được✅ "Gợi ý vì bạn thích sản phẩm có đặc trưng X" — rất quan trọng với ngân hàng
Over-specialization❌ Chỉ gợi cái giống cái đã thích → echo chamber, thiếu đa dạng, không phát hiện sở thích mới
Phụ thuộc chất lượng feature❌ Feature nghèo/sai → gợi ý kém; cần công sức feature engineering
Cold start user mới❌ Vẫn khó — user chưa có lịch sử thì không dựng được profile

Điểm mấu chốt: content-based giải quyết cold start item (điều CF không làm được) nhưng không giải quyết cold start user. Hai họ thuật toán bổ sung nhau về đúng chỗ mỗi bên yếu — đó là lý do hybrid ra đời.

Knowledge-based / rule-based: khi mua thưa và giá trị cao

Content-based và CF đều giả định có lượng tương tác đủ lớn để học pattern. Nhưng nhiều sản phẩm ngân hàng vi phạm giả định đó: vay mua nhà, đầu tư, bảo hiểm nhân thọ — khách hàng mua rất thưa (có khi cả đời vài lần), giá trị cao, và quyết định phụ thuộc nhu cầu và ràng buộc cụ thể tại thời điểm đó hơn là "người giống bạn thích gì".

Với lớp sản phẩm này, knowledge-based recommender (dựa trên tri thức nghiệp vụ) phù hợp hơn. Nó không học từ lịch sử mà suy luận theo luật khai báo bởi chuyên gia nghiệp vụ:

  • Constraint-based: khách nêu ràng buộc (thu nhập, kỳ hạn mong muốn, khẩu vị rủi ro) → hệ thống lọc ra sản phẩm thỏa mãn.
  • Rule-based theo vòng đời & điều kiện: gợi ý theo giai đoạn cuộc đời và tình trạng tài chính. Ví dụ luật minh hoạ:
Điều kiện (nghiệp vụ)Sản phẩm gợi ý
Khách 25–35 tuổi, thu nhập ổn định, chưa có nhàVay mua nhà ưu đãi, tiết kiệm tích luỹ
Số dư tiết kiệm > 500 triệu, kỳ hạn dàiSản phẩm đầu tư, trái phiếu
Vừa mở thẻ tín dụng < 3 thángBảo hiểm liên kết thẻ, hạn mức nâng cấp
Có khoản vay sắp tất toánTái cấp vốn, gói vay mới

Ưu điểm: không cần lịch sử, kiểm soát được (tuân thủ pháp lý, không gợi ý sản phẩm khách không đủ điều kiện), giải thích rõ ràng. Nhược điểm: luật phải do người viết và bảo trì, không tự học, không cá nhân hoá tinh vi. Trong ngân hàng đây thường là tầng an toàn đặt trước mọi gợi ý học máy — thứ gì vi phạm điều kiện thì loại bỏ dù model chấm điểm cao.

Hybrid: kết hợp để bù nhược điểm

Không họ nào tự nó đủ. Hybrid recommender kết hợp CF + content + knowledge để mỗi phương pháp bù đúng chỗ phương pháp khác yếu: CF bắt được pattern tập thể tinh vi nhưng chết vì cold start; content cứu cold start item và giải thích được nhưng echo chamber; knowledge đảm bảo tuân thủ và xử lý sản phẩm thưa. Các kiểu kết hợp phổ biến:

Kiểu hybridCách hoạt độngKhi nào dùng
WeightedĐiểm cuối = tổ hợp có trọng số điểm của từng model: α·CF + β·content + γ·knowledgeCả hai model đều cho điểm số so sánh được
SwitchingChọn model theo tình huống: user mới → content/popularity; user có lịch sử → CFCold start rõ ràng, muốn logic đơn giản
CascadeModel 1 lọc/xếp hạng thô, model 2 tinh chỉnh (VD: knowledge lọc điều kiện → CF xếp hạng → content phá thế hòa)Cần tầng an toàn trước + cá nhân hoá sau
Feature combinationTrộn đặc trưng content vào chính model CF (đưa feature item vào matrix factorization)Muốn một model duy nhất học cả hai loại tín hiệu
MixedHiển thị song song gợi ý từ nhiều nguồn trên cùng một màn hìnhUI có nhiều slot ("gợi ý cho bạn" + "sản phẩm mới")

Trong sơ đồ trên (kiểu cascade + weighted): knowledge chạy trước như cổng lọc loại bỏ sản phẩm khách không đủ điều kiện; CF và content chạy song song trên tập còn lại rồi tổ hợp điểm; kết quả cuối kèm lý do. Đây là kiến trúc rất điển hình cho next-best-action trong ngân hàng — chi tiết ở Hệ khuyến nghị 8 — Banking NBA.

Xử lý cold start tổng hợp

Cold start là lý do lớn nhất để dùng hybrid. Có ba loại, mỗi loại một chiến lược:

  • User mới (không lịch sử): CF và content đều bó tay. Dùng popularity (gợi sản phẩm phổ biến nhất — luôn là baseline an toàn), demographic (suy từ tuổi/thu nhập/khu vực — người cùng nhóm nhân khẩu thường có nhu cầu tương tự), hoặc onboarding (hỏi thẳng sở thích/mục tiêu tài chính khi mở tài khoản để dựng profile ban đầu).
  • Item mới (sản phẩm vừa ra mắt): đây là chỗ content-based toả sáng — chỉ cần item có feature là gợi được ngay cho những user có profile phù hợp, không chờ tương tác đầu tiên.
  • Hệ mới (chưa có dữ liệu gì): dựa gần như hoàn toàn vào knowledge/rule và popularity cho tới khi tích luỹ đủ hành vi.

Chiến lược thực dụng: switching hybrid — dùng knowledge + popularity cho user/item mới, chuyển dần sang CF/MF khi dữ liệu tích luỹ đủ ngưỡng (VD: user có ≥ 5 tương tác).

Giải thích khuyến nghị (explainability)

Trong ngân hàng, giải thích được là yêu cầu bắt buộc, không phải tính năng phụ: cần minh bạch với khách, cần đối soát với bộ phận tuân thủ, cần tránh gợi ý sai gây rủi ro pháp lý/uy tín. Mỗi họ thuật toán cho một kiểu lý do khác nhau — và đây là lợi thế lớn của content/knowledge so với CF thuần latent:

Nguồn gợi ýKiểu giải thích
Content-based"Vì bạn đang dùng sản phẩm có đặc trưng tương tự (thẻ tín dụng phí thấp)"
Collaborative"Khách hàng có hành vi giống bạn cũng quan tâm sản phẩm này"
Knowledge/rule"Phù hợp với giai đoạn tài chính hiện tại của bạn (số dư > 500 triệu)"

Trong hybrid, thường giữ lại nguồn có điểm đóng góp cao nhất để sinh câu giải thích cho khách, đồng thời log toàn bộ điểm thành phần để phục vụ audit.

Use case thực tế

Bối cảnh: NCB ra mắt gói tiết kiệm online kỳ hạn 6 tháng, lãi suất ưu đãi — sản phẩm hoàn toàn mới, chưa một khách nào tương tác. Marketing muốn gợi ý sản phẩm này cho đúng tệp trong ứng dụng mobile banking, với 2 triệu khách hàng cá nhân.

Vấn đề: CF và matrix factorization hoàn toàn vô dụng ở đây — item mới, không có cột nào trong ma trận user–item, không có vector latent. Nếu chỉ có CF, sản phẩm mới sẽ không bao giờ được gợi ý cho tới khi tự nhiên có người mua đủ nhiều (vòng luẩn quẩn).

Giải pháp hybrid — cascade + content, các bước:

  1. Content-based cho item mới: mô tả gói bằng feature (loại = tiết kiệm, kỳ hạn = 6 tháng, phí thấp, rủi ro = 0). Chấm cosine giữa feature này và profile của cả 2 triệu khách → chọn tệp có profile nghiêng "thích tiết kiệm, ưa an toàn, kỳ hạn ngắn".
  2. Knowledge lọc điều kiện: loại khách không đủ điều kiện (VD dưới 18 tuổi, tài khoản bị hạn chế) — tầng tuân thủ.
  3. Weighted với popularity/demographic: với khách profile chưa rõ, bổ sung tín hiệu nhân khẩu (nhóm 30–45 tuổi có xu hướng gửi tiết kiệm cao hơn).
  4. Kết quả: chọn ra khoảng 180.000 khách (top ~9%) thay vì bắn đại trà 2 triệu. Kèm lý do "phù hợp thói quen tiết kiệm của bạn" hiển thị trong app.

Đo lường (so với gửi đại trà — dùng A/B test, xem A/B testing): nhóm hybrid có tỉ lệ mở gói cao hơn nhiều lần trên mỗi lượt hiển thị, đồng thời giảm quấy rối khách không liên quan → giảm tỉ lệ tắt thông báo. Sau 4 tuần, khi gói đã có vài nghìn lượt mở, hệ thống switching dần sang CF/MF để tinh chỉnh — cold start được vượt qua đúng như thiết kế.

Ghi nhớ

  • Content-based gợi ý theo đặc trưng item + hồ sơ sở thích user (từ item đã thích), khác hẳn CF vốn dựa hành vi tập thể.
  • Biểu diễn item bằng feature có cấu trúc + TF-IDF/embedding cho văn bản; user profile = trung bình có trọng số vector item đã thích; xếp hạng bằng cosine similarity.
  • Ưu điểm content-based: giải quyết cold start item mới, độc lập dữ liệu người khác, giải thích được. Nhược: over-specialization/echo chamber, phụ thuộc chất lượng feature, không cứu được cold start user.
  • Knowledge/rule-based hợp với sản phẩm mua thưa, giá trị cao (vay, đầu tư, bảo hiểm): dựa nhu cầu/ràng buộc/vòng đời, đóng vai tầng tuân thủ an toàn.
  • Hybrid kết hợp CF + content + knowledge để bù nhược điểm nhau: kiểu weighted, switching, cascade, feature combination, mixed.
  • Cold start: user mới → popularity/demographic/onboarding; item mới → content-based; hệ mới → knowledge + popularity, rồi switching sang CF khi đủ dữ liệu.
  • Explainability là bắt buộc trong ngân hàng — content/knowledge cho lý do rõ ràng hơn CF latent; giữ nguồn đóng góp cao nhất để giải thích, log toàn bộ để audit.

Bài viết liên quan

Phân biệt AI/ML/DL, các kiểu học máy, quy trình ML end-to-end và thuật ngữ nền tảng.

13 thg 7, 2026 15

Chất lượng dữ liệu, xử lý thiếu/ngoại lai, mã hoá, chuẩn hoá, tạo đặc trưng và tránh data leakage.

13 thg 7, 2026 13

Mô hình ngôn ngữ lớn hoạt động ra sao, token, context window, tham số sinh, và kỹ thuật viết prompt.

13 thg 7, 2026 13

Retrieval-Augmented Generation, vector database, tool calling, agent và MCP để xây ứng dụng LLM thực tế.

13 thg 7, 2026 11