Chuyển đến nội dung chính

Hướng dẫn Khai phá Luật Kết hợp trong Python

Khám phá các mẫu ẩn trong Python với khai phá luật kết hợp
· 14 phút đọc

Khám phá cùng AI

Khai phá luật kết hợp là một kỹ thuật dùng để khám phá các mối quan hệ ẩn giữa các biến trong những tập dữ liệu lớn. Đây là một phương pháp phổ biến trong khai phá dữ liệu và học máy, có phạm vi ứng dụng rộng rãi trong nhiều lĩnh vực như phân tích giỏ hàng, phân khúc khách hàng và phát hiện gian lận.

Trong bài viết này, chúng ta sẽ khám phá khai phá luật kết hợp trong Python, bao gồm các trường hợp sử dụng, thuật toán và cách triển khai. Trước hết, chúng ta sẽ điểm qua tổng quan về khai phá luật kết hợp và các ứng dụng của nó, sau đó đi sâu vào chi tiết các thuật toán và cách triển khai chúng trong Python. Cuối cùng, chúng ta sẽ tổng kết những điểm chính được đề cập trong bài.

Khai phá Luật Kết hợp là gì?

Khai phá luật kết hợp là một kỹ thuật dùng để xác định các mẫu trong tập dữ liệu lớn. Kỹ thuật này bao gồm việc tìm ra các mối quan hệ giữa các biến trong dữ liệu và sử dụng các mối quan hệ đó để đưa ra dự đoán hoặc quyết định. Mục tiêu của khai phá luật kết hợp là khám phá các luật mô tả mối quan hệ giữa các mục (item) khác nhau trong tập dữ liệu.

Ví dụ, hãy xem xét một tập dữ liệu về giao dịch tại siêu thị. Khai phá luật kết hợp có thể được sử dụng để xác định mối quan hệ giữa các mặt hàng thường được mua cùng nhau. Chẳng hạn, luật "Nếu khách mua bánh mì, họ cũng có khả năng mua sữa" là một luật kết hợp có thể được khai phá từ tập dữ liệu này. Chúng ta có thể dùng các luật như vậy để đưa ra quyết định về bố trí cửa hàng, sắp xếp sản phẩm và hoạt động tiếp thị.

Khai phá luật kết hợp thường liên quan đến việc sử dụng các thuật toán để phân tích dữ liệu và nhận diện các mối quan hệ. Các thuật toán này có thể dựa trên phương pháp thống kê hoặc kỹ thuật học máy. Các luật thu được thường được biểu diễn dưới dạng câu "nếu–thì", trong đó phần "nếu" là tiền đề (điều kiện được kiểm tra) và phần "thì" là hệ quả (kết quả xảy ra nếu điều kiện được đáp ứng).

Khai phá luật kết hợp là một kỹ thuật quan trọng trong phân tích dữ liệu vì nó cho phép người dùng khám phá các mẫu hoặc mối quan hệ trong dữ liệu mà có thể không dễ nhận thấy ngay. Bằng cách xác định các liên kết giữa các biến, khai phá luật kết hợp giúp người dùng hiểu cách các biến khác nhau có thể liên quan với nhau. 

Điều này hữu ích cho nhiều mục đích, như xác định xu hướng thị trường, phát hiện hoạt động gian lận hoặc hiểu hành vi khách hàng. Khai phá luật kết hợp cũng có thể là bước đệm cho các loại phân tích dữ liệu khác, như dự đoán kết quả hoặc xác định các yếu tố chính thúc đẩy một hiện tượng nhất định. Nhìn chung, khai phá luật kết hợp là công cụ giá trị để rút trích insight và hiểu cấu trúc nền tảng của dữ liệu.

Các Trường hợp Sử dụng của Khai phá Luật Kết hợp:

Khai phá luật kết hợp thường được sử dụng trong nhiều ứng dụng, một số trường hợp phổ biến gồm:

Phân tích giỏ hàng

Một trong những ứng dụng nổi tiếng nhất của khai phá luật kết hợp là trong phân tích giỏ hàng. Điều này bao gồm việc phân tích các mặt hàng khách hàng mua cùng nhau để hiểu thói quen và sở thích mua sắm của họ. 

Ví dụ, một nhà bán lẻ có thể dùng khai phá luật kết hợp để phát hiện khách hàng mua tã thường cũng mua sữa công thức. Thông tin này có thể được dùng để tối ưu vị trí trưng bày sản phẩm và các chương trình khuyến mãi nhằm tăng doanh số. 

Để tìm hiểu thêm về Phân tích Giỏ hàng, hãy xem hướng dẫn Phân tích Giỏ hàng bằng R của chúng tôi.

Phân khúc khách hàng

Khai phá luật kết hợp cũng có thể được sử dụng để phân khúc khách hàng dựa trên thói quen mua sắm của họ. 

Chẳng hạn, một công ty có thể dùng khai phá luật kết hợp để phát hiện rằng khách hàng mua một số loại sản phẩm nhất định có xu hướng trẻ hơn. Tương tự, họ có thể biết rằng khách hàng mua một số tổ hợp sản phẩm cụ thể có khả năng tập trung ở những khu vực địa lý nhất định. 

Thông tin này có thể dùng để điều chỉnh các chiến dịch tiếp thị và gợi ý cá nhân hóa cho từng phân khúc khách hàng. Khám phá thêm về chủ đề này trong hướng dẫn nhập môn phân khúc khách hàng bằng Python. 

Phát hiện gian lận

Bạn cũng có thể dùng khai phá luật kết hợp để phát hiện hoạt động gian lận. Ví dụ, một công ty thẻ tín dụng có thể dùng kỹ thuật này để nhận diện các mẫu giao dịch gian lận, như nhiều giao dịch từ cùng một nhà bán lẻ trong thời gian ngắn. 

Sau đó, chúng ta có thể dùng thông tin này để gắn cờ hoạt động có khả năng gian lận và thực hiện biện pháp phòng ngừa nhằm bảo vệ khách hàng. Trong blog Khoa học Dữ liệu trong Ngân hàng: Phát hiện Gian lận, bạn có thể tìm hiểu thêm về cách quy trình hoạt động. 

Phân tích mạng xã hội

Nhiều công ty sử dụng khai phá luật kết hợp để xác định các mẫu trong dữ liệu mạng xã hội nhằm phục vụ phân tích mạng lưới. 

Ví dụ, phân tích dữ liệu Twitter có thể cho thấy những người dùng tweet về một chủ đề cụ thể cũng có khả năng tweet về các chủ đề liên quan khác, từ đó hỗ trợ nhận diện các nhóm hoặc cộng đồng trong mạng.

Hệ thống gợi ý

Khai phá luật kết hợp có thể được dùng để gợi ý các mục mà khách hàng có thể quan tâm dựa trên lịch sử mua hàng hoặc lịch sử duyệt web của họ. Ví dụ, một dịch vụ phát nhạc trực tuyến có thể dùng kỹ thuật này để đề xuất nghệ sĩ hoặc album mới dựa trên lịch sử nghe của người dùng.

Với hướng dẫn hệ thống gợi ý trong Python, bạn có thể tìm hiểu thêm cách xây dựng nhiều mô hình thực hiện chức năng này. 

Các Thuật toán Khai phá Luật Kết hợp

Có một số thuật toán dùng cho khai phá luật kết hợp. Một vài thuật toán phổ biến là:

Thuật toán Apriori

Thuật toán Apriori là một trong những thuật toán được sử dụng rộng rãi nhất cho khai phá luật kết hợp. Nó hoạt động bằng cách trước tiên xác định các tập mục thường xuyên trong tập dữ liệu (các tập mục xuất hiện trong một số lượng giao dịch nhất định). Sau đó, nó sử dụng các tập mục thường xuyên này để tạo ra các luật kết hợp, là các mệnh đề dạng "nếu mua mục A thì cũng có khả năng mua mục B". Thuật toán Apriori sử dụng cách tiếp cận từ dưới lên, bắt đầu với từng mục riêng lẻ rồi dần xây dựng lên các tập mục phức tạp hơn.

Thuật toán FP-Growth

Thuật toán FP-Growth (Frequent Pattern Growth) là một thuật toán phổ biến khác cho khai phá luật kết hợp. Nó hoạt động bằng cách xây dựng một cấu trúc dạng cây gọi là FP-tree, mã hóa các tập mục thường xuyên trong tập dữ liệu. Sau đó, FP-tree được dùng để sinh ra các luật kết hợp tương tự như Apriori. Thuật toán FP-Growth thường nhanh hơn Apriori, đặc biệt với các tập dữ liệu lớn.

Thuật toán ECLAT

Thuật toán ECLAT (Equivalence Class Clustering and bottom-up Lattice Traversal) là một biến thể của Apriori nhưng dùng cách tiếp cận từ trên xuống thay vì từ dưới lên. Nó chia các mục thành các lớp tương đương dựa trên độ hỗ trợ (số giao dịch mà chúng xuất hiện). Sau đó, các luật kết hợp được tạo bằng cách kết hợp các lớp tương đương này trong một cấu trúc dạng lưới. Đây là phiên bản hiệu quả và có khả năng mở rộng tốt hơn của Apriori.

Thuật toán Apriori

Thuật toán apriori đã trở thành một trong những thuật toán được sử dụng rộng rãi nhất để khai thác tập mục thường xuyên và học luật kết hợp. Nó đã được áp dụng cho nhiều ứng dụng như phân tích giỏ hàng, hệ thống gợi ý và phát hiện gian lận, đồng thời truyền cảm hứng cho sự phát triển của nhiều thuật toán khác cho các nhiệm vụ tương tự.

Chi tiết Thuật toán

Thuật toán apriori bắt đầu bằng cách thiết lập ngưỡng hỗ trợ tối thiểu. Đây là số lần xuất hiện tối thiểu của một mục trong cơ sở dữ liệu để được coi là tập mục thường xuyên. Sau đó, thuật toán loại bỏ mọi tập mục ứng viên không đạt ngưỡng hỗ trợ tối thiểu. 

Tiếp theo, thuật toán tạo danh sách tất cả các tổ hợp có thể của các tập mục thường xuyên và đếm số lần mỗi tổ hợp xuất hiện trong cơ sở dữ liệu. Sau đó, thuật toán tạo danh sách các luật kết hợp dựa trên các tổ hợp tập mục thường xuyên. 

Một luật kết hợp là mệnh đề dạng "nếu mục A xuất hiện trong một giao dịch, thì mục B cũng có khả năng xuất hiện". Độ mạnh của mối liên kết được đo bằng độ tin cậy (confidence) của luật, tức là xác suất mục B xuất hiện khi biết mục A xuất hiện.

Thuật toán sau đó loại bỏ mọi luật kết hợp không đạt ngưỡng tin cậy tối thiểu. Những luật này được gọi là luật kết hợp mạnh. Cuối cùng, thuật toán trả về danh sách các luật kết hợp mạnh làm đầu ra.

Apriori sử dụng cách tiếp cận "từ dưới lên", bắt đầu với các mục riêng lẻ và dần kết hợp chúng thành các tập mục lớn hơn trong quá trình tìm kiếm các mẫu thường xuyên. Nó cũng dùng chiến lược "xóa–đổi nhãn" để cắt tỉa không gian tìm kiếm hiệu quả bằng cách loại bỏ các tập mục không thường xuyên khỏi cân nhắc.

Ưu điểm:

  • Apriori tương đối đơn giản và dễ hiểu.
  • Hiệu quả trong việc nhận diện các mẫu thường xuyên và luật kết hợp trong các tập dữ liệu lớn.
  • Hiệu quả trong việc cắt tỉa không gian tìm kiếm bằng cách loại bỏ các tập mục không thường xuyên, giúp giảm độ phức tạp tính toán.
  • Đã được sử dụng và kiểm chứng rộng rãi trong nhiều ứng dụng, nên là thuật toán vững chắc và đáng tin cậy.

Nhược điểm:

  • Apriori không phù hợp với các tập dữ liệu quá lớn, vì độ phức tạp tính toán tăng theo hàm mũ với kích thước dữ liệu.
  • Có thể kém hiệu quả trong việc nhận diện mẫu trên tập dữ liệu có nhiều mục hiếm hoặc giao dịch thưa.
  • Nhạy cảm với các ngưỡng hỗ trợ tối thiểu và tin cậy tối thiểu, có thể ảnh hưởng đến chất lượng kết quả.
  • Có xu hướng tạo ra số lượng lớn luật kết hợp, khiến việc diễn giải kết quả trở nên khó khăn.

Để tìm hiểu sâu hơn về thuật toán Apriori, hãy xem hướng dẫn Phân tích Giỏ hàng tuyệt vời trên DataCamp. 

Thước đo Đánh giá Luật Kết hợp

Trong khai phá luật kết hợp, có một số thước đo thường được dùng để đánh giá chất lượng và mức độ quan trọng của các luật tìm được. 

Các thước đo này có thể được dùng để đánh giá chất lượng và tầm quan trọng của luật, từ đó chọn ra những luật phù hợp nhất cho một ứng dụng cụ thể. Lưu ý rằng việc lựa chọn thước đo phù hợp phụ thuộc vào mục tiêu và yêu cầu của ứng dụng.

Diễn giải kết quả của các thước đo trong khai phá luật kết hợp đòi hỏi hiểu ý nghĩa và hàm ý của từng thước đo, cũng như cách dùng chúng để đánh giá chất lượng và mức độ quan trọng của các luật tìm được. Dưới đây là một số hướng dẫn để diễn giải các thước đo chính:

Support

Support (độ hỗ trợ) đo mức độ thường xuyên xuất hiện của một mục hoặc tập mục trong tập dữ liệu. Nó được tính bằng số lượng giao dịch chứa mục (các mục) đó chia cho tổng số giao dịch trong tập dữ liệu. Support cao cho thấy một mục hoặc tập mục là phổ biến trong dữ liệu, trong khi support thấp cho thấy nó hiếm.

Công thức Support

Confidence

Confidence (độ tin cậy) đo độ mạnh của mối liên kết giữa hai mục. Nó được tính bằng số giao dịch chứa cả hai mục chia cho số giao dịch chứa mục thứ nhất. Confidence cao cho thấy sự xuất hiện của mục thứ nhất là một chỉ báo mạnh cho sự xuất hiện của mục thứ hai.

Công thức Confidence

Lift

Lift đo độ mạnh của mối liên kết giữa hai mục, có tính đến tần suất xuất hiện của cả hai mục trong tập dữ liệu. Nó được tính bằng confidence của mối liên kết chia cho support của mục thứ hai. Lift được dùng để so sánh độ mạnh của mối liên kết giữa hai mục với độ mạnh kỳ vọng nếu các mục là độc lập. 

Giá trị lift lớn hơn 1 cho thấy mối liên kết giữa hai mục mạnh hơn mức kỳ vọng dựa trên tần suất riêng lẻ của chúng. Điều này gợi ý rằng mối liên kết có thể có ý nghĩa và đáng để nghiên cứu thêm. Giá trị lift nhỏ hơn 1 cho thấy mối liên kết yếu hơn mức kỳ vọng và có thể kém tin cậy hoặc kém đáng kể.

Công thức Lift

Thư viện Python và R cho Khai phá Luật Kết hợp

Có một số thư viện trong R và Python có thể dùng cho khai phá luật kết hợp:

Thư viện R

  • arules: Gói dùng để khai thác luật kết hợp và tập mục thường xuyên trong R. Nó cung cấp các hàm để đọc và xử lý dữ liệu giao dịch, cũng như tạo luật kết hợp và đánh giá chất lượng của chúng.
  • arulesViz: Gói dùng để trực quan hóa luật kết hợp và tập mục thường xuyên trong R. Nó cung cấp các hàm tạo biểu đồ nhằm giúp hiểu và diễn giải kết quả khai phá luật kết hợp.
  • arulesSequences: Gói dùng để khai thác luật kết hợp từ dữ liệu tuần tự trong R. Nó cung cấp các hàm để đọc và xử lý dữ liệu tuần tự, cũng như tạo luật kết hợp và đánh giá chất lượng.

Thư viện Python

  • apyori: Thư viện triển khai thuật toán Apriori trong Python. Nó cung cấp các hàm để đọc và xử lý dữ liệu giao dịch, cũng như tạo luật kết hợp và đánh giá chất lượng.
  • mlxtend: Thư viện triển khai nhiều thuật toán và công cụ học máy trong Python, bao gồm khai phá luật kết hợp. Nó cung cấp các hàm để đọc và xử lý dữ liệu giao dịch, cũng như tạo luật kết hợp và đánh giá chất lượng.
  • PyCaret: PyCaret là thư viện học máy mã nguồn mở, low-code trong Python để tự động hóa quy trình học máy. Nó cung cấp một lớp bọc trên mlxtend để triển khai thuật toán Apriori một cách dễ dàng.

Triển khai Luật Kết hợp trong Python

Chúng ta sẽ dùng PyCaret để triển khai luật kết hợp trong Python. Hãy bắt đầu bằng cách cài đặt PyCaret rồi nhập bộ dữ liệu mẫu. 

Cài đặt PyCaret

Bạn có thể cài đặt pycaret bằng pip. 

```

# install pycaret

pip install pycaret

```

Bộ dữ liệu

Chúng ta sẽ bắt đầu bằng cách tải bộ dữ liệu mẫu từ kho của pycaret. Đây là tập dữ liệu giao dịch của một cửa hàng bán lẻ ở Pháp. Nó có số hóa đơn để nhận diện giao dịch và mô tả mặt hàng. Đây là hai thông tin duy nhất chúng ta quan tâm khi khai thác luật từ tập dữ liệu này.

```

# load sample data

from pycaret.datasets import get_data

data = get_data('france')

```

Dữ liệu Mẫu

Thiết lập

Bước đầu tiên là import mô-đun `arules` và khởi tạo hàm `setup` bằng cách xác định data, transaction_id và item_id.

```

# init setup

from pycaret.arules import *

s = setup(data = data, transaction_id = 'InvoiceNo', item_id = 'Description')

```

Hàm Setup

Kết quả trả về từ hàm setup

Tạo mô hình

```

The `create_model` function runs the algorithm and return the rules in pandas DataFrame based on the selection parameters defined in the `create_model`. In this example we have used selection metric `confidence` with threshold and support of 0.5.

# train model

arules = create_model(metric='confidence', threshold=0.5, min_support=0.05)

```

Tạo Mô hình

Kết quả trả về từ hàm create_model

Dựa trên ngưỡng được xác định trong hàm `create_model`, chúng ta đã tạo ra 45 luật. Kết quả ở trên chứa 10 luật đầu tiên được sắp xếp theo độ tin cậy (từ cao xuống thấp). 

Vẽ biểu đồ Luật

Trực quan hóa và phân tích các luật bằng hàm `plot_model` trong PyCaret.

```

# 2d plot
plot_model(arules, plot = '2d')

```

Vẽ Luật

```

# 3d plot

plot_model(arules, plot = '3d')

```

Xem Notebook đầy đủ để theo dõi.

Biểu đồ 3D

Kết luận

Khai phá luật kết hợp là một công cụ giá trị cho phân tích dữ liệu và là kỹ thuật mạnh mẽ để khám phá các mẫu và mối quan hệ trong dữ liệu. Trong Python và R, có nhiều thư viện sẵn có để triển khai khai phá luật kết hợp, cung cấp các triển khai sẵn cho nhiều thuật toán cũng như các tùy chọn để trực quan hóa kết quả. 

Bạn có thể dùng khai phá luật kết hợp trong nhiều bối cảnh để rút trích insight và hiểu cấu trúc nền tảng của dữ liệu. Tuy nhiên, điều quan trọng là chọn thuật toán phù hợp và thiết lập đúng tham số, như ngưỡng hỗ trợ tối thiểu và tin cậy tối thiểu, để thu được kết quả có ý nghĩa và chính xác. 

Nếu bạn muốn đào sâu chủ đề này và tìm hiểu thêm về khai phá luật kết hợp, bạn có thể tham khảo các khóa học sau:

Câu hỏi thường gặp về Khai phá Luật Kết hợp

Những thuật toán phổ biến nào dành cho khai phá luật kết hợp?

Một số thuật toán phổ biến cho khai phá luật kết hợp gồm thuật toán Apriori và thuật toán FP-Growth. Thuật toán Apriori dùng cách tiếp cận từ dưới lên để lặp lại việc sinh và kiểm định các luật ứng viên, trong khi FP-Growth dùng cách tiếp cận từ trên xuống hiệu quả hơn để sinh luật dựa trên các tập mục thường xuyên.

Tôi có thể dùng những thư viện Python nào để triển khai khai phá luật kết hợp trong Python?

Có một số thư viện Python có thể dùng để triển khai khai phá luật kết hợp trong Python, bao gồm thư viện apyori và mlxtend. Thư viện apyori cung cấp triển khai đơn giản của thuật toán Apriori, trong khi mlxtend cung cấp thêm nhiều thuật toán và tính năng vượt ra ngoài Apriori. Bạn cũng có thể dùng PyCaret, thư viện này cung cấp triển khai đơn giản của thuật toán apriori trên nền tảng mlxtend.

Những thước đo phổ biến nào được dùng để đánh giá chất lượng của các luật?

Một số thước đo phổ biến để đánh giá chất lượng của các luật kết hợp gồm support, confidence và lift.

Sự khác nhau giữa support và confidence là gì?

Trong khai phá luật kết hợp, support là tỷ lệ phần trăm giao dịch trong tập dữ liệu có chứa một mục hoặc tập mục cụ thể, trong khi confidence là tỷ lệ phần trăm giao dịch có chứa một mục hoặc tập mục nhất định, với điều kiện một mục hoặc tập mục khác cũng xuất hiện. Support được dùng như thước đo tầm quan trọng hay mức độ liên quan của một mục hoặc tập mục, còn confidence được dùng như thước đo độ mạnh hay độ tin cậy của một luật cụ thể.

Khai phá luật kết hợp là có giám sát hay không giám sát?

Khai phá luật kết hợp là một kỹ thuật học máy không giám sát vì nó không cần dữ liệu huấn luyện có nhãn. Trong khai phá luật kết hợp, mục tiêu là khám phá các mẫu hoặc mối quan hệ trong dữ liệu, thay vì dự đoán một kết quả cụ thể dựa trên các ví dụ đã gắn nhãn.

Một số nhược điểm của thuật toán Apriori là gì?

Một trong những hạn chế chính của thuật toán Apriori là có thể tốn kém về tính toán, đặc biệt với các tập dữ liệu lớn. Thuật toán sinh và kiểm định một số lượng lớn luật ứng viên, có thể tốn thời gian. Ngoài ra, Apriori nhạy cảm với ngưỡng hỗ trợ tối thiểu; chọn ngưỡng không phù hợp có thể dẫn đến hiệu năng kém. Thuật toán cũng cần nhiều bộ nhớ để lưu trữ các tập mục, có thể là vấn đề với tập dữ liệu rất lớn.

Khai phá luật kết hợp có thể dùng với biến liên tục hay chỉ với biến phân loại?

Khai phá luật kết hợp thường được sử dụng với các biến phân loại, tức là các biến chỉ nhận một số lượng giá trị hữu hạn. Tuy nhiên, vẫn có thể dùng kỹ thuật này với các biến liên tục bằng cách rời rạc hóa các biến liên tục thành các nhóm hoặc khoảng phân loại.

Chủ đề

Liên quan