LUẬT KẾT HỢP VÀ LỌC CỘNG TÁC Trong phần này, chúng tôi mô tả các phương pháp học tập không giám sát của luật kết hợp (Association Rules) và lọc cộng tác (Collaborative Filtering). Cả hai phương pháp đều phổ biến trong tiếp thị cho các sản phẩm bán chéo liên quan đến một mặt hàng mà người tiêu dùng đang xem xét. Trong luật kết hợp, mục tiêu là xác định các cụm mặt hàng trong cơ sở dữ liệu loại giao dịch. Phát hiện quy luật kết hợp trong tiếp thị được gọi là “phân tích giỏ hàng mua sắm” và nhằm mục đích khám phá những nhóm sản phẩm nào có xu hướng được mua cùng nhau. Các mặt hàng này sau đó có thể được hiển thị cùng nhau, được cung cấp trong phiếu giảm giá sau giao dịch hoặc được đề xuất trong mua sắm trực tuyến. Chúng tôi mô tả quá trình tạo luật kết hợp qua hai giai đoạn và sau đó đánh giá sức mạnh của luật kết hợp để chọn một tập hợp con. Chúng tôi xem xét thuật toán Apriori tạo quy tắc phổ biến và sau đó là tiêu chí để đánh giá sức mạnh của luật kết hợp. Trong lọc cộng tác, mục tiêu là cung cấp các đề xuất được cá nhân hóa để tận dụng thông tin ở cấp độ người dùng. Có hai loại là lọc cộng tác dựa trên người dùng (UserBased Collaborative Filtering) và lọc cộng tác dựa trên mặt hàng (Item-Based Collaborative Filtering).Lọc cộng tác dựa trên người dùng bắt đầu với người dùng, sau đó tìm thấy người dùng đã mua một bộ vật phẩm tương tự hoặc vật phẩm được xếp hạng theo cách tương tự và đưa ra khuyến nghị cho người dùng ban đầu dựa trên những gì người dùng tương tự đã mua hoặc thích. Lọc cộng tác dựa trên vật phẩm bắt đầu bằng một mặt hàng được người dùng xem xét, sau đó định vị các mặt hàng khác có xu hướng được mua cùng với mặt hàng đầu tiên đó. Chúng tôi giải thích các kỹ thuật và các yêu cầu để áp dụng nó trong thực tế. Mã Python Trong chương này, chúng tôi sẽ sử dụng thư viện pandas để xử lý dữ liệu. Gói mlxtend được sử dụng cho luật kết hợp và gói surprise cho lọc cộng tác. Sử dụng các câu lệnh import sau đây cho mã chương trình trong chương này. 1 1. LUẬT KẾT HỢP Nói một cách đơn giản, các luật kết hợp, hoặc phân tích mối quan hệ, tạo thành một nghiên cứu về những gì đi với những gì. Phương pháp này còn được gọi là phân tích giỏ hàng mua sắm vì nó bắt nguồn từ nghiên cứu cơ sở dữ liệu giao dịch của khách hàng để xác định sự phụ thuộc giữa các giao dịch mua các mặt hàng khác nhau. Luật kết hợp được sử dụng nhiều trong bán lẻ để tìm hiểu về các mặt hàng được mua cùng nhau, nhưng chúng cũng hữu ích trong các lĩnh vực khác. Ví dụ, một nhà nghiên cứu y học có thể muốn tìm hiểu những gì các triệu chứng xuất hiện cùng nhau. Theo luật pháp, các từ kết hợp xuất hiện quá thường xuyên có thể chỉ ra đạo văn. Tìm các luật kết hợp trong cơ sở dữ liệu giao dịch Sự sẵn có của thông tin chi tiết về các giao dịch của khách hàng đã dẫn đến sự phát triển của các kỹ thuật tự động tìm kiếm sự liên kết giữa các mặt hàng được lưu trữ trong cơ sở dữ liệu. Một ví dụ là dữ liệu được thu thập bằng cách sử dụng máy quét mã vạch trong siêu thị. Cơ sở dữ liệu giỏ hàng tiêu dùng như vậy bao gồm một số lượng lớn các hồ sơ giao dịch. Mỗi bản ghi liệt kê tất cả các mặt hàng được mua bởi một khách hàng trong một giao dịch mua hàng. Các nhà quản lý quan tâm để biết nếu một số nhóm mặt hàng nhất định được mua liên tục với nhau. Họ có thể sử dụng thông tin đó để đưa ra quyết định về bố cục cửa hàng và vị trí mặt hàng, để bán chéo, cho các chương trình khuyến mãi, cho thiết kế danh mục và để xác định phân khúc khách hàng dựa trên mẫu mua. Các quy tắc kết hợp cung cấp thông tin thuộc loại này dưới dạng các câu lệnh của “if-then”. Các quy tắc này được tính toán từ dữ liệu; Không giống như quy tắc “if-then” của logic, quy tắc kết hợp có tính xác suất. Các luật kết hợp thường gặp trong các hệ thống mua sắm trực tuyến (recommender systems) trong đó khách hàng tìm kiếm một mặt hàng hoặc mặt hàng có khả năng được mua có thể được hiển thị cùng với (các) mặt hàng khác. Màn hình hiển thị từ hệ thống mua sắm trực tuyến Amazon.com, minh họa cho việc áp dụng các quy tắc như thế này theo các mặt hàng thường xuyên được mua cùng nhau. Trong ví dụ hiển thị trong Hình 2 1, người dùng duyệt điện thoại di động Samsung Galaxy S5 được hiển thị vỏ và kính cường lực thường được mua cùng với điện thoại này. 3 Hình 1: Khuyến nghị theo những mặt hàng thường xuyên mua cùng nhau dựa trên luật kết hợp 4 Chúng tôi giới thiệu một ví dụ đơn giản và sử dụng nó trong suốt chương để trình bày các khái niệm, tính toán và các bước của luật kết hợp. Chúng tôi kết thúc bằng cách áp dụng luật kết hợp cho một ví dụ thực tế hơn về việc mua sách. Ví dụ 1: Dữ liệu tổng hợp về các giao dịch mua điện thoại Một cửa hàng bán phụ kiện cho điện thoại di động chạy một chương trình khuyến mãi cho ốp lưng điện thoại. Khách hàng mua ốp lưng điện thoại từ sáu màu khác nhau được giảm giá. Các nhà quản lý cửa hàng, những người muốn biết màu sắc nào của khách hàng có khả năng mua cùng nhau, đã thu thập cơ sở dữ liệu giao dịch như trong Bảng số 1 Tạo luật kết hợp ứng viên Ý tưởng đằng sau các luật kết hợp là kiểm tra tất cả các luật có thể có giữa các mặt hàng (item) theo định dạng if-then và sau đó chỉ chọn những luật có khả năng cao. Chúng tôi sử dụng thuật ngữ tập tiền đề (antecedent) để mô tả phần IF và tập hệ quả (consequent) để mô tả phần THEN. Trong phân tích luật kết hợp,tập tiền đề và tập hệ quả là các bộ mặt hàng (được gọi là tập mục (itemsets)) rời rạc (không có bất kỳ mặt hàng nào trùng nhau). Lưu ý rằng tập mục không phải là hồ sơ về những gì mọi người mua; chúng chỉ đơn giản là sự kết hợp có thể của các mặt hàng. Bảng 1: Dữ liệu giao dịch mua ốp lưng điện thoại Quay trở lại ví dụ mua ốp lưng điện thoại, một ví dụ về luật có thể là “if red, then white,” có nghĩa là nếu một ốp lưng màu đỏ được mua thì một cái màu trắng cũng vậy. Ở đây tiền đề là “red” và hệ quả là “white”. Tiền đề và hệ quả chỉ chứa một mặt hàng duy nhất trong trường hợp này. Một luật khác có thể là “if red and white, then green.” Ở đây, tiền đề bao gồm các mặt hàng {red, white} và hệ quả là {green}. Bước đầu tiên trong luật kết hợp là tạo ra tất cả các luật sẽ là ứng cử viên để chỉ ra mối liên hệ giữa các mặt hàng. Lý tưởng nhất, chúng ta có thể muốn xem xét tất cả các kết 5 hợp có thể có của các mặt hàng trong cơ sở dữ liệu với p các mặt hàng riêng biệt (trong ví dụ về ốp lưng điện thoại, p = 6). Điều này có nghĩa là tìm tất cả các kết hợp của các mặt hàng đơn lẻ, các cặp mặt hàng, bộ ba, v.v., trong cơ sở dữ liệu giao dịch. Tuy nhiên, việc tạo ra tất cả các kết hợp này đòi hỏi thời gian tính toán dài tăng theo cấp số nhân theo p. Một giải pháp thực tế là chỉ xem xét các kết hợp xảy ra với tần suất cao hơn trong cơ sở dữ liệu. Chúng được gọi là các tập mục thường xuyên (frequent itemset). Xác định những gì đủ điều kiện là một tập mục thường xuyên có liên quan đến khái niệm độ hỗ trợ. Độ hỗ trợ (support) của một luật chỉ đơn giản là số lượng giao dịch chứa cả tập tiền đề và tập hệ quả. Nó được gọi là độ hỗ trợ bởi vì nó đo lường mức độ mà dữ liệu liên quan đến luật đó. Độ hỗ trợ đôi khi được biểu thị bằng tỷ lệ phần trăm trong cơ sở dữ liệu. Ví dụ: độ hỗ trợ cho tập mục {red, white} trong ví dụ về bảng mặt điện thoại là 4 (hoặc 40% = 4 / 10 x 100%). Do đó, cái gì tạo thành một tập mục thường xuyên được định nghĩa là một tập mặt hàng có độ hỗ trợ vượt quá độ hỗ trợ tối thiểu được chọn (độ hỗ trợ tối thiểu được xác định bởi người dùng). Thuật toán Apriori Một số thuật toán đã được đề xuất để tạo các tập mục thường xuyên, nhưng thuật toán phổ biến nhất là thuật toán Apriori của Agrawal et al (1993). Ý tưởng chính của thuật toán là bắt đầu bằng cách tạo các tập mục thường xuyên chỉ với một mặt hàng (tậpmột-mục (one-itemsets)) và tạo đệ quy các mục thường xuyên với hai mặt hàng (tậphai-mục (two-itemsets)), sau đó với ba mặt hàng, v.v., cho đến khi chúng tôi tạo ra các tập mục thường xuyên ở mọi kích cỡ. Nó rất dễ dàng để tạo ra tập-một-mục thường xuyên. Tất cả những gì chúng ta cần làm là tính, cho mỗi mặt hàng, có bao nhiêu giao dịch trong cơ sở dữ liệu chứa mặt hàng đó. Số lượng giao dịch này là độ hỗ trợ cho các tập-một-mục. Chúng tôi bỏ các tập-một-mục có độ hỗ trợ nhỏ hơn độ hỗ trợ tối thiểu mong muốn để tạo danh sách các tập-một-mục thường xuyên. Để tạo tập-hai-mục thường xuyên, chúng tôi sử dụng các tập-một-mục thường xuyên. Lý do là nếu một tập-một-mục nhất định không vượt quá độ hỗ trợ tối thiểu, thì bất kỳ tập hợp kích thước lớn hơn chứa nó sẽ không vượt quá độ hỗ trợ tối thiểu. Nói chung, việc tạo các tập-k-mục sử dụng các tập-(k - 1)-mục đã được tạo trong bước trước. Mỗi bước yêu cầu một lần chạy qua cơ sở dữ liệu và do đó thuật toán Apriori rất nhanh ngay cả đối với một số lượng lớn các mặt hàng trong cơ sở dữ liệu. 6 Chọn luật mạnh Từ sự phong phú của các luật được tạo ra, mục tiêu là chỉ tìm ra các luật cho thấy sự liên kết mạnh mẽ giữa các tập tiền đề và các tập hệ quả. Để đo lường sức mạnh của sự liên kết trong luật, chúng tôi sử dụng các đại lượng là độ tin cậy và tỷ lệ nâng, như được mô tả dưới đây. Độ hỗ trợ và Độ tin cậy Ngoài độ hỗ trợ, mà chúng tôi đã mô tả trước đó, có một đại lượng khác thể hiện mức độ chắc chắn về luật if-then. Đại lượng này được gọi là độ tin cậy (Confidence) của luật. Biện pháp này so sánh sự xuất hiện của các tập mà chứa cả tập tiền đề và hệ quả trong cơ sở dữ liệu với sự xuất hiện của các tập tiền đề. Độ tin cậy được định nghĩa là tỷ lệ của số lượng giao dịch của tập chứa tất cả các mặt hàng tiền đề và hệ quả so với số lượng giao dịch của tập mục tiền đề: Ví dụ: giả sử cơ sở dữ liệu siêu thị có 100.000 giao dịch. Trong số các giao dịch này, 2000 giao dịch chứa nước cam và thuốc trị cảm cúm và 800 trong số này chứa cả bim bim. Luật kết hợp “IF nước cam và thuốc cảm cúm THEN bim bim” có: độ hỗ trợ support = 800 giao dịch (hoặc 0,8% = 800 / 100.000) độ tin cậy confidence = 40% = 800/2000. Để xem mối quan hệ giữa độ hỗ trợ và độ tin cậy, chúng ta hãy suy nghĩ về những gì mỗi thứ đang đo lường (ước tính). Một cách để nghĩ về độ hỗ trợ là xác suất (ước tính) rằng một giao dịch được chọn ngẫu nhiên từ cơ sở dữ liệu sẽ chứa tất cả các mặt hàng trong tập tiền đề và tập hệ quả: So sánh, độ tin cậy là xác suất có điều kiện rằng một giao dịch chứa tập hệ quả nếu giao dịch được đưa ra chứa các tập tiền đề: 7 Giá trị cao của độ tin cậy cho thấy một luật kết hợp mạnh mẽ. Tuy nhiên, điều này có thể là không đúng nữa bởi vì nếu tập tiền đề và/hoặc tập hệ quả có độ hỗ trợ cao, chúng ta có thể có giá trị cao cho độ tin cậy ngay cả khi tập tiền đề và tập hệ quả là độc lập! Ví dụ: nếu gần như tất cả khách hàng mua chuối và gần như tất cả khách hàng mua kem, thì độ tin cậy của luật như “IF chuối THEN kem” sẽ cao bất kể có liên quan giữa các mặt hàng hay không. Tỷ lệ nâng Một cách tốt hơn để đánh giá sức mạnh của luật kết hợp là so sánh độ tin cậy của luật với giá trị chuẩn, trong đó giá trị chuẩn là khi giả định rằng sự xuất hiện của các tập hệ quả trong giao dịch là độc lập với sự xuất hiện của tập tiền đề. Nói cách khác, nếu các tập tiền đề và tập hệ quả là độc lập, chúng ta sẽ thấy những giá trị độ tin cậy chuẩn. Dưới sự độc lập, độ hỗ trợ sẽ là và độ tin cậy điểm chuẩn sẽ là Giá trị chuẩn này từ cơ sở dữ liệu, được gọi là giá trị độ tin cậy điểm chuẩn cho một luật, được tính bằng: Chúng tôi so sánh độ tin cậy với độ tin cậy chuẩn bằng cách xem xét tỷ lệ của chúng: đây được gọi là tỷ lệ nâng của luật. Tỷ lệ nâng là độ tin cậy của quy tắc chia cho độ tin cậy, giả sử tính độc lập của hệ quả và tiền đề: lift ratio = confidence confidence benchmark Tỷ lệ nâng lớn hơn 1.0 cho thấy rằng luật có hữu ích. Nói cách khác, mức độ liên kết giữa các tập hợp tiền đề và hệ quả là cao hơn mong đợi nếu chúng độc lập. Tỷ lệ nâng càng lớn, sức mạnh của sự kết hợp càng lớn. 8 Để minh họa tính toán của độ hỗ trợ, độ tin cậy và tỷ lệ nâng cho ví dụ về mặt trên điện thoại di động, chúng tôi giới thiệu một bản trình bày thay thế của dữ liệu phù hợp hơn với mục đích này. Các đại lượng khác Định dạng dữ liệu Dữ liệu giao dịch thường được hiển thị theo một trong hai định dạng: cơ sở dữ liệu giao dịch (với mỗi hàng đại diện cho danh sách các mặt hàng được mua trong một giao dịch) hoặc ma trận nhị phân trong đó các cột là các mặt hàng, các hàng lại đại diện cho các giao dịch và mỗi ô có 1 hoặc 0, cho biết sự hiện diện hay vắng mặt của một mặt hàng trong giao dịch. Ví dụ, Bảng 1 hiển thị dữ liệu cho các giao dịch mua ốp lưng di động trong cơ sở dữ liệu giao dịch. Chúng tôi chuyển đổi chúng thành định dạng ma trận nhị phân trong Bảng 2. Bảng 2: Số liệu giao dịch trong định dạng ma trận Bây giờ, giả sử rằng chúng tôi muốn các luật kết hợp giữa các mục cho cơ sở dữ liệu này có độ hỗ trợ ít nhất là 2 (tương đương với tỷ lệ phần trăm là 2/10 = 20%): Nói cách khác, các luật dựa trên các mục được mua cùng nhau tại ít nhất 20% giao dịch. Bằng cách liệt kê, chúng ta có thể thấy rằng chỉ các mục được liệt kê trong Bảng 3 có số lượng giao dịch ít nhất là 2 9 Bảng 3: Tập mục có độ hộ trợ lớn hơn 2 Mục đầu tiên {red} có độ hỗ trợ 6, vì sáu giao dịch trong số các giao dịch bao chứa một ốp lưng màu đỏ. Tương tự, các mục cuối cùng {red, white, blue} có độ hỗ trợ là 2, vì chỉ có hai giao dịch chứa các ốp lưng màu đỏ, trắng và xanh lục. Trong Python, chúng tôi sẽ sử dụng triển khai apriori trong thư viện mlxtend. Nó chấp nhận các giao dịch dưới dạng pandas DataFrame hoặc pandas SpzzyDataFrame. Và nó cũng hiệu quả hơn cho một số lượng lớn các hạng mục có thể. Gói tạo ra các luật với một hoặc nhiều hạng mục là tiền đề và hệ quả. Quy trình lựa chọn các luật Quá trình lựa chọn các luật mạnh dựa trên việc tạo ra tất cả các luật kết hợp đáp ứng các yêu cầu về độ hỗ trợ và độ tin cậy theo quy định. Điều này được thực hiện trong hai giai đoạn: Giai đoạn đầu tiên, được mô tả trước đó, bao gồm việc tìm kiếm tất cả các bộ dữ liệu thường xuyên của người dùng, những bộ có độ hỗ trợ tối thiểu. Giai đoạn thứ hai, chúng tôi tạo ra, từ các mục thường xuyên, quy tắc kết hợp đáp ứng yêu cầu về độ tin cậy. 10 o Bước đầu tiên là nhằm loại bỏ các kết hợp hạng mục hiếm gặp trong cơ sở dữ liệu. o Sau đó lọc các luật còn lại và chỉ chọn những luật có độ tin cậy cao. Đối với hầu hết các dữ liệu phân tích liên kết, thách thức tính toán là giai đoạn đầu tiên, như được mô tả trong cuộc thảo luận về thuật toán Apriori. Tính toán của độ tin cậy trong giai đoạn thứ hai là đơn giản. Vì bất kỳ tập hợp con nào (ví dụ: {red} trong ví dụ về bảng mặt điện thoại) phải xuất hiện ít nhất thường xuyên như tập hợp mà nó thuộc về (ví dụ: {red, white}), mỗi tập hợp con cũng sẽ nằm trong danh sách. Sau đó, thật đơn giản để tính toán độ tin cậy (tỷ lệ của độ hỗ trợ của tập mục đó với độ hỗ trợ của mỗi tập hợp con). Chúng tôi chỉ giữ lại luật kết hợp tương ứng nếu nó vượt quá giá trị ngưỡng mong muốn. Ví dụ: từ các mục {red, white, blue} trong giao dịch mua ốp lưng điện thoại, chúng tôi nhận được các luật kết hợp đơn lẻ, giá trị độ tin cậy và giá trị tỷ lệ nâng. Chúng ta có thể tạo các quy tắc kết hợp trong Python từ khung dữ liệu pandas được định dạng dưới dạng ma trận nhị phân như trong Bảng 2 hoặc trong khung dữ liệu pandas thưa thớt dữ liệu ở định dạng tương tự Bảng 1. Chúng tôi chỉ định độ hỗ trợ tối thiểu (20%) và tỷ lệ phần trăm mức độ tin cậy tối thiểu (50%). Bảng kết quả (hình bên dưới) cho thấy đầu ra. Đầu ra bao gồm thông tin về từng luật kết hợp và độ hỗ trợ, độ tin cậy, tỷ lệ nâng… của nó. (Lưu ý rằng ở đây chúng tôi xem xét tất cả các mục có thể, không chỉ {red, white, blue} như trên.) 11 Bảng 4: Ma trận nhị phân, Cơ sở dữ liệu giao dịch, và luật kết hợp cho ví dụ về ốp lưng điện thoại Giải thích kết quả Chúng ta có thể hiểu từng quy tắc từ bảng kết quả bên trên thành một câu dễ hiểu cung cấp thông tin. Ví dụ: chúng ta có thể đọc quy tắc {orange}{white} như sau: Nếu “orange” được mua, thì “white” cũng sẽ được mua với độ tin cậy 100%. Quy tắc này có tỷ lệ nâng là 1,43. Trong việc giải thích kết quả, rất hữu ích khi xem xét các đại lượng khác nhau. Độ hỗ trợ cho luật kết hợp cho thấy tác động của nó về quy mô tổng thể: Có bao nhiêu giao dịch bị ảnh hưởng? Nếu chỉ một số lượng nhỏ giao dịch bị ảnh hưởng, luật kết hợp có thể ít được sử dụng (trừ khi hệ quả là rất có giá trị và / hoặc quy tắc rất hiệu quả trong việc tìm kiếm nó). 12 Tỷ lệ nâng cho biết mức độ hiệu quả của luật kết hợp trong việc tìm kiếm các hệ quả, so với lựa chọn ngẫu nhiên. Một quy tắc rất hiệu quả được ưu tiên hơn một quy tắc không hiệu quả, nhưng chúng ta vẫn phải xem xét độ hỗ trợ: Một quy tắc rất hiệu quả có hỗ trợ rất thấp có thể không được mong muốn như một quy tắc kém hiệu quả hơn với độ hỗ trợ lớn hơn nhiều. Độ tin cậy cho chúng ta biết mức độ hệ quả sẽ được tìm thấy và rất hữu ích trong việc xác định mức độ hữu ích của hoạt động kinh doanh: Một luật kết hợp có độ tin cậy thấp sẽ tìm thấy hệ quả ở mức quá thấp để xứng đáng với chi phí thúc đẩy hệ quả trong tất cả các giao dịch liên quan đến tiền đề. 13 2. LỌC CỘNG TÁC Hệ thống khuyến nghị là một phần cực kỳ quan trọng của các trang web cung cấp nhiều loại sản phẩm hoặc dịch vụ. Ví dụ Amazon.com nơi cung cấp hàng triệu sản phẩm khác nhau; Netflix có hàng ngàn bộ phim cho thuê; Google tìm kiếm trên một số lượng lớn các trang web; Các trang web nghe nhạc như Spotify và Pandora chứa rất nhiều album nhạc của nhiều nghệ sĩ khác nhau; trang web du lịch cung cấp nhiều điểm đến và khách sạn; trang web mạng xã hội có nhiều nhóm. Công cụ đề xuất cung cấp các đề xuất được cá nhân hóa cho người dùng dựa trên thông tin của người dùng cũng như thông tin về người dùng tương tự. Thông tin có nghĩa là các hành vi biểu thị sở thích, chẳng hạn như mua, xếp hạng và nhấp chuột. Những thứ mà các hệ thống khuyến nghị giới thiệu cho người dùng giúp các công ty trực tuyến chuyển đổi người sử dụng trình duyệt thành người mua, tăng bán chéo và xây dựng lòng trung thành. Lọc cộng tác (Collaborative filtering) là một kỹ thuật phổ biến được sử dụng bởi các hệ thống khuyến nghị như vậy. Thuật ngữ lọc cộng tác dựa trên các khái niệm xác định các mục có liên quan cho một người dùng cụ thể từ tập hợp các mục rất lớn (thuật ngữ “lọc”) bằng cách xem xét sở thích của nhiều người dùng (thuật ngữ “cộng tác”). Bài viết trên Fortune.com “Amazon’s Recommendation Secret” (30 tháng 6 năm 2012) mô tả công ty sử dụng bộ lọc cộng tác không chỉ để cung cấp các đề xuất sản phẩm được cá nhân hóa mà còn để tùy chỉnh toàn bộ giao diện trang web cho mỗi người dùng: Về cơ bản, hệ thống khuyến nghị của gã khổng lồ bán lẻ dựa trên một số yếu tố đơn giản: những gì người dùng đã mua trong quá khứ, những mặt hàng họ có trong giỏ hàng ảo của họ, các mặt hàng họ đã đánh giá và thích và những gì khách hàng khác đã xem và mua. Amazon gọi đây là bộ lọc cộng tác item-to-item mà hãng tự phát triển, và nó đã sử dụng thuật toán này để tùy chỉnh rất nhiều trải nghiệm duyệt web cho khách hàng. Kiểu dữ liệu và định dạng Lọc cộng tác đòi hỏi phải có sẵn tất cả thông tin user-item. Cụ thể, đối với mỗi kết hợp user-item, chúng ta nên có một số thước đo về sở thích của user đối với item đó. Sở thích có thể hành vi mua hàng (hành vi nhị phân: 1 tương ứng với mua hàng, 0 tương ứng với không mua hàng), hoặc sở thích cũng có thể là xếp hạng đơn hàng, click chuột hoặc “like”. Đối với n user (u1, u2, …, un) và p item (i1, i2, …, ip), chúng ta có thể coi dữ liệu là ma trận n × p của n hàng (user) theo p cột (item). Mỗi ô chứa xếp hạng hoặc sự kiện nhị 14 phân tương ứng với tùy chọn của user với item đó (xem sơ đồ trong Bảng 9). Thông thường, không phải mọi user đều mua hoặc đánh giá mọi item, và do đó, một ma trận mua hàng sẽ có nhiều số không và một ma trận xếp hạng sẽ có nhiều giá trị để trống. Các giá trị trống như vậy đôi khi truyền đạt là user không quan tâm (trái ngược với các giá trị không trống truyền đạt sự quan tâm). BẢNG 9: SƠ ĐỒ ĐỊNH DẠNG MA TRẬN VỚI DỮ LIỆU XẾP HẠNG Ví dụ: Cuộc thi giải thưởng Netflix Năm 2006, Netflix, dịch vụ cho thuê phim lớn nhất ở Bắc Mỹ, đã công bố một cuộc thi trị giá 1 triệu đô la Mỹ (www.netflixprize.com) với mục đích cải thiện hệ thống khuyến nghị của mình có tên Cinematch. Những người tham gia được cung cấp một số bộ dữ liệu (một bộ dữ liệu cho mỗi bộ phim). Mỗi tập dữ liệu bao gồm tất cả các xếp hạng của khách hàng cho bộ phim đó (và thời gian tương ứng). Chúng ta có thể nghĩ về một tập dữ liệu kết hợp lớn của mẫu [mã khách hàng, mã số phim, xếp hạng, ngày] trong đó mỗi bản ghi bao gồm xếp hạng được đưa ra bởi một khách hàng nhất định cho một bộ phim nhất định vào một ngày nhất định. Xếp hạng theo thang điểm 1-5 sao. Các thí sinh được yêu cầu phát triển một thuật toán đề xuất sẽ cải thiện hệ thống Netflix hiện tại. Bảng 10 cho thấy một mẫu nhỏ từ dữ liệu cuộc thi,bảng được tổ chức theo định dạng ma trận. Hàng cho biết khách hàng và cột là những bộ phim khác nhau. BẢNG 10: MẪU HỒ SƠ TỪ CUỘC THI GIẢI THƯỞNG NETFLIX, CHO MỘT TẬP HỢP CON GỒM 10 KHÁCH HÀNG VÀ 9 PHIM 15 Thật thú vị khi lưu ý rằng đội chiến thắng đã có thể cải thiện hệ thống của họ bằng cách xem xét không chỉ xếp hạng cho một bộ phim, mà là liệu một bộ phim có được đánh giá bởi một khách hàng cụ thể hay không. Nói cách khác, thông tin về những bộ phim mà khách hàng quyết định xếp hạng hóa ra là thông tin quan trọng của khách hàng về sở thích của người khác, không chỉ đơn giản là xem xét thông tin xếp hạng 1-5: Phương pháp lọc cộng tác giải quyết tập hợp giá trị xếp hạng thưa thớt. Tuy nhiên, độ chính xác cao có được bằng cách xem xét các tính năng khác của dữ liệu. Đầu tiên là thông tin về những bộ phim mà mỗi người dùng đã chọn để xếp hạng, bất kể giá trị xếp hạng cụ thể (“the binary view”). Điều này đóng vai trò quyết định trong giải pháp của chúng tôi và phản ánh thực tế rằng các bộ phim được xếp hạng thì người dùng lựa chọn có chủ ý và không phải là một bộ phim mẫu ngẫu nhiên. Đây là một ví dụ trong đó việc chuyển đổi thông tin xếp hạng thành ma trận nhị phân (1 tương ứng với được xếp hạng, 0 tương ứng với không được xếp hạng). Lọc cộng tác dựa trên user: (“People Like You”) Một cách tiếp cận để tạo các đề xuất được cá nhân hóa cho user bằng cách sử dụng bộ lọc cộng tác dựa trên việc tìm kiếm user có sở thích tương tự và đề xuất các mục mà user thích nhưng chưa mua. Thuật toán có hai bước: 1. Tìm user giống với user mà ta quan tâm (hàng xóm). Điều này được thực hiện bằng cách so sánh sở thích của user này với sở thích của user khác. 2. Chỉ xem xét các item mà user chưa mua, hãy đề xuất những item được người hàng xóm ưa thích nhất. Đây là cách tiếp cận của Amazon “những khách hàng đã mua sản phẩm này cũng đã mua” (xem hình 1). Nó cũng được sử dụng trong công cụ tìm kiếm Google để tạo liên kết đến Các trang tương tự được hiển thị gần mỗi kết quả tìm kiếm. 16 Bước 1 yêu cầu chọn cách tính khoảng cách (hoặc độ gần) để đo khoảng cách giữa user của chúng ta và user khác. Khi khoảng cách được tính toán, chúng ta có thể sử dụng ngưỡng về khoảng cách hoặc số lượng hàng xóm cần thiết để xác định hàng xóm gần nhất sẽ được sử dụng trong Bước 2. Cách tiếp cận này được gọi là “user-based top-N recommendation”. Một cách tiếp cận hàng xóm gần nhất đo khoảng cách giữa user của chúng ta với từng user khác trong cơ sở dữ liệu, tương tự như thuật toán KNN. Thước đo khoảng cách Euclide trong thuật toán đó không thực hiện tốt cho lọc cộng tác như một số biện pháp khác. Một thước đo khoảng cách phổ biến giữa hai user là mối tương quan Pearson giữa xếp hạng của họ. Chúng tôi biểu thị xếp hạng của các item 𝐼1 , 𝐼2 , …, 𝐼𝑝 của user 𝑈1 là 𝑟1,1 , 𝑟1,2 , … , 𝑟1,𝑝 và trung bình của các xếp hạng đó là 𝑟̅1 . Tương tự, xếp hạng theo user 𝑈2 là 𝑟2,1 , 𝑟2,2 , …, 𝑟2,𝑝 với giá trị trung bình 𝑟̅2 . Khoảng cách tương quan (correlation proximity) giữa hai người dùng được xác định bởi: 𝐶𝑜𝑟𝑟(𝑈1 , 𝑈2 ) = ∑(𝑟1,𝑖 − 𝑟̅1 )(𝑟2,𝑖 − 𝑟̅2 ) (1) √∑(𝑟1,𝑖 − 𝑟̅1 )2 √∑(𝑟2,𝑖 − 𝑟̅2 )2 trong đó các giá trị r chỉ liên quan đến các item được cả hai user xếp hạng. Để minh họa điều này, chúng ta hãy tính toán mối tương quan giữa khách hàng 30878 và khách hàng 823519 trong Bảng 14.10. Chúng ta sẽ giả định rằng dữ liệu hiển thị trong bảng là toàn bộ thông tin. Đầu tiên, chúng ta tính toán xếp hạng trung bình của từng user này: 𝑟̅30878 = 4+1+3+ 3+ 4+5 = 3.333 6 𝑟̅823519 = 3+1+ 4+ 4+5 = 3.4 5 Lưu ý rằng giá trị trung bình được tính trên một số lượng phim khác nhau cho mỗi khách hàng này, vì mỗi người đánh giá một số bộ phim khác nhau. Trung bình cho một khách hàng được tính trên tất cả các bộ phim mà khách hàng đánh giá. Nhưng các tính toán cho mối tương quan chỉ sử dụng các item mà họ cùng xếp hạng. Trong trường hợp này, mã số phim được đều được xếp hạng là 1, 28 và 30: 17 𝐶𝑜𝑟𝑟 (𝑈30878 , 823519) (4 − 3.333)(3 − 3,4) + (3 − 3.333)(4 − 3,4) + (4 − 3.333)(5 − 3.4) = √(4 − 3.333)2 + (3 − 3.333)2 + (4 − 3.333)2 √(3 − 3,4)2 + (4 − 3,4)2 + (5 − 3.4)2 0.6 = = 0.34 1.75 Cách tiếp cận tương tự có thể được sử dụng khi dữ liệu ở dạng ma trận nhị phân (mua hoặc không mua). Một biện pháp phổ biến khác là một biến thể của mối tương quan Pearson được gọi là độ tương đồng cosine (cosine similarity). Nó khác với công thức tương quan bằng cách không trừ giá trị trung bình. Trừ đi giá trị trung bình trong công thức tương quan sẽ điều chỉnh cho người dùng thay đổi cách tiếp cận tổng thể khác nhau để đánh giá xếp hạng, ví dụ, một khách hàng luôn đánh giá cao so với người có xu hướng luôn xếp hạng thấp. Ví dụ: Độ tương đồng cosin giữa hai khách hàng Netflix là: 𝐶𝑜𝑠 𝑆𝑖𝑚(𝑈30878 , 𝑈823519 ) = 4×3+3×4+4×5 √42 + 32 + 42 √33 + 42 + 52 = 44 = 0.972 45.277 Lưu ý rằng khi dữ liệu ở dạng ma trận nhị phân (khi mua hoặc không mua), độ tương tự cosine phải được tính trên tất cả các item mà user đã mua; không thể chỉ giới hạn ở những item được mua chung. Lọc cộng tác cam chịu một điều được gọi là “cold start”: không thể sử dụng nó để tạo đề xuất cho người dùng mới hoặc các mặt hàng mới. Đối với user đã xếp hạng một item duy nhất, hệ số tương quan giữa user này và user khác sẽ có mẫu số bằng 0 và độ tương đồng cosin sẽ là 1 bất kể xếp hạng. Theo cách tương tự, user chỉ có một item và các item chỉ có một user, không đủ điều kiện làm ứng cử viên cho hàng xóm lân cận. Đối với người dùng mà ta quan tâm, chúng ta tính toán sự tương đồng của người đó với từng user trong cơ sở dữ liệu của chúng ta bằng cách sử dụng mối tương quan, độ tương đồng cosine hoặc một biện pháp khác. Sau đó, ở Bước 2, chúng ta chỉ xem xét k user gần nhất và trong số tất cả các item khác mà họ đã xếp hạng hoặc mua, chúng ta chọn item tốt nhất và giới thiệu nó cho user của chúng ta. Item tốt nhất là gì? Đối với dữ liệu mua nhị phân, nó là item được mua nhiều nhất. Đối với dữ liệu xếp hạng, nó có thể được xếp hạng cao nhất, được đánh giá cao nhất hoặc tổng có trọng số của cả hai. 18 Cách tiếp cận hàng xóm gần nhất có thể tốn kém về mặt tính toán khi chúng ta có một cơ sở dữ liệu lớn về user. Một giải pháp là sử dụng các phương pháp phân cụm để nhóm user thành các cụm đồng nhất theo sở thích của họ và sau đó để đo khoảng cách giữa user của chúng ta với từng cụm. Cách tiếp cận này đặt tải tính toán vào bước phân cụm có thể diễn ra sớm hơn; sau đó tiết kiệm (và nhanh hơn) để so sánh user của chúng ta với từng cụm trong thời gian thực. Tuy nhiên biện pháp phân cụm này có nhược điểm là các khuyến nghị ít chính xác hơn, bởi vì không phải tất cả các thành viên của cụm gần nhất đều giống với user của chúng ta nhất. Lọc cộng tác dựa trên item Khi số lượng user lớn hơn nhiều so với số lượng item, sẽ tiết kiệm hơn về mặt tính toán (và nhanh hơn) để tìm các item tương tự thay vì tìm user tương tự. Cụ thể, khi user thể hiện sự quan tâm đến một item cụ thể, thuật toán lọc cộng tác dựa trên item có hai bước: 1. Tìm các item được đồng xếp hạng hoặc đồng mua, (bởi bất kỳ người dùng nào) với item mà ta đang quan tâm. 2. Đề xuất (các) item phổ biến nhất hoặc tương quan trong số các item tương tự. Sự tương đồng bây giờ được tính toán giữa các item, thay vì user. Ví dụ: trong mẫu Netflix nhỏ của chúng tôi (Bảng 10), mối tương quan giữa phim 1 (với trung bình 𝑟̅1 = 3.7) và phim 5 (với trung bình 𝑟̅5 = 3) là: 𝐶𝑜𝑟𝑟 (𝐼1 , 𝐼5 ) = (4 − 3.7)(1 − 3) + (4 − 3,7)(5 − 3) √(4 − 3.7)2 + (1 − 3)2 √(1 − 3)2 + (5 − 3)2 =0 Sự tương quan bằng không là do hai xếp hạng ngược nhau của phim 5 bởi những user. Một người dùng đánh giá nó 5 sao và người kia cho nó 1 sao. Theo cách tương tự, chúng ta có thể tính toán sự giống nhau giữa tất cả các bộ phim. Điều này có thể được thực hiện ngoại tuyến. Trong thời gian thực, đối với user đánh giá cao một bộ phim nhất định, chúng ta có thể tra cứu bảng tương quan phim và đề xuất phim có tương quan tích cực cao nhất với phim mới được xếp hạng của user. Theo một báo cáo công nghiệp của các nhà nghiên cứu đã phát triển hệ thống khuyến nghị từng item trên Amazon: “Thuật toán [dựa trên vật phẩm] tạo ra các đề xuất trong thời gian thực, chia tỷ lệ thành các tập dữ liệu lớn và tạo các đề xuất chất lượng cao.” Nhược điểm của các đề xuất dựa trên item là có ít sự đa dạng hơn giữa các item (so với khẩu vị của người dùng), và do đó, các khuyến nghị thường rõ ràng. 19 Bảng 11 và 12 hiển thị mã Python để lọc cộng tác trên dữ liệu mô phỏng tương tự dữ liệu Netflix bằng gói Surprise. Bảng 5: Lọc cộng tác trong Python 20 Bảng 6: Lọc cộng tác trong Pyhton Ưu điểm và nhược điểm của lọc cộng tác Lọc cộng tác phụ thuộc vào sự sẵn có của thông tin chủ quan liên quan đến sở thích của user. Nó cung cấp các đề xuất hữu ích, nếu cơ sở dữ liệu của chúng ta chứa đủ user tương tự (không nhất thiết là nhiều, nhưng ít nhất là một vài user), để mỗi user có thể 21 tìm thấy người user có cùng sở thích. Tương tự, dữ liệu phải chứa đủ xếp hạng cho mỗi item hoặc mua. Do đó, một hạn chế của lọc cộng tác là nó không thể tạo đề xuất cho user mới cũng như cho các item mới. Có nhiều cách tiếp cận khác nhau để giải quyết thách thức này. Lọc cộng tác dựa trên user tìm kiếm sự tương đồng về các mặt hàng được đánh giá cao hoặc ưa thích. Tuy nhiên, nó là mù với dữ liệu về các mục thấp hoặc không mong muốn. Do đó, chúng tôi không thể mong đợi sử dụng nó để để phát hiện các mặt hàng không mong muốn. Lọc cộng tác dựa trên user giúp tận dụng sự tương đồng giữa sở thích của mọi người để cung cấp các đề xuất được cá nhân hóa. Tuy nhiên, khi số lượng user trở nên rất lớn, việc lọc cộng tác trở nên khó khăn về mặt tính toán. Các giải pháp bao gồm các thuật toán dựa trên item, phân nhóm người dùng và giảm kích thước. Phương pháp giảm kích thước phổ biến nhất được sử dụng trong các trường hợp như vậy là phân rã giá trị số ít (singular value decomposition (SVD)), một hình thức phân tích thành phần chính vượt trội về mặt tính toán. Mặc dù thuật ngữ “dự đoán” thường được sử dụng để mô tả đầu ra của bộ lọc cộng tác, nhưng phương pháp này không được giám sát bởi bản chất. Nó có thể được sử dụng để tạo xếp hạng dự đoán hoặc chỉ dẫn mua hàng cho người dùng, nhưng thông thường chúng tôi không có giá trị kết quả trong thực tế. Một cách quan trọng để cải thiện các đề xuất được tạo bởi bộ lọc cộng tác là nhận phản hồi của người dùng. Sau khi đề xuất được tạo, người dùng có thể cho biết liệu đề xuất đó có đầy đủ hay không. Vì lý do này, nhiều hệ thống đề xuất người dùng cung cấp phản hồi về các khuyến nghị. Lọc Cộng Tác và Luật Kết Hợp Mặc dù luật kết hợp và lọc cộng tác đều là các phương thức không giám sát được sử dụng để tạo đề xuất, chúng khác nhau theo nhiều cách: Các mục thường xuyên so với các đề xuất được cá nhân hóa: Luật kết hợp tìm kiếm các kết hợp mục thường xuyên và sẽ chỉ cung cấp các đề xuất cho các mục đó. Ngược lại, lọc cộng tác cung cấp các đề xuất được cá nhân hóa cho mọi mục, từ đó phục vụ cho người dùng có sở thích khác thường. Theo nghĩa này, lọc cộng tác rất hữu ích để nắm bắt phần “long tail” của sở thích người dùng, trong khi các quy tắc kết hợp tìm kiếm phần “head”. Sự khác biệt này có ý nghĩa đối với dữ liệu cần thiết: luật kết hợp yêu cầu dữ liệu trên một số lượng rất lớn (giao dịch) để tìm đủ số lượng tập có chứa các kết hợp nhất định của các hạng mục. Ngược lại, lọc cộng tác không yêu cầu nhiều, nhưng yêu cầu dữ liệu về càng nhiều mặt hàng càng tốt cho nhiều người dùng. Ngoài ra, quy tắc kết hợp hoạt động ở cấp độ 22 giao dịch (cơ sở dữ liệu của chúng ta có thể bao gồm nhiều giao dịch cho mỗi người dùng), trong khi lọc cộng tác hoạt động ở cấp độ người dùng. Bởi vì luật kết hợp tạo ra sự chung đồng giữa các mặt hàng, các luật cá nhân (các đề xuất dựa trên liên kết của Amazon “Frequently Bought Together” hiển thị các đề xuất tương tự cho tất cả người dùng đang tìm kiếm một mặt hàng cụ thể), chúng có thể được sử dụng để đặt các chiến lược chung như đặt sản phẩm trong cửa hàng hoặc giải trình tự các xét nghiệm chẩn đoán trong bệnh viện. Ngược lại, lọc cộng tác tạo ra các đề xuất dành riêng cho người dùng (ví dụ: hệ thống của Amazon “Customers Who Bought This Item Also Bought…”) và do đó nó là một công cụ được thiết kế để cá nhân hóa. Dữ liệu giao dịch so với dữ liệu người dùng: Các luật kết hợp cung cấp các đề xuất về các mặt hàng dựa trên việc họ mua cùng với các mặt hàng khác trong nhiều giao dịch. Ngược lại, lọc cộng tác cung cấp các đề xuất về các mặt hàng dựa trên việc mua hoặc cùng xếp hạng của chúng bởi một số lượng nhỏ người dùng khác. Việc xem xét các giao dịch riêng biệt rất hữu ích khi các mặt hàng tương tự được mua đi mua lại (ví dụ: trong mua sắm tạp hóa). Việc xem xét người dùng riêng biệt rất hữu ích khi mỗi mặt hàng thường được mua / xếp hạng một lần (ví dụ: mua sách, nhạc và phim). Dữ liệu nhị phân và dữ liệu xếp hạng: Luật kết hợp coi các mục là dữ liệu nhị phân (1 = mua, 0 = không mua), trong khi lọc cộng tác có thể hoạt động trên dữ liệu nhị phân hoặc xếp hạng số. Hai hoặc nhiều mục: Trong luật kết hợp, tiền đề và hệ quả có thể bao gồm một hoặc nhiều mục (ví dụ: “IF sữa THEN cookie và bánh bột ngô”). Do đó, một đề xuất có thể là một gói các mặt hàng được quan tâm với nhiều mặt hàng (Mua sữa, bánh quy, và bánh ngô và nhận 10% giảm giá đối với nhau). Ngược lại, trong lọc cộng tác, độ tương tự được đo giữa các cặp mục hoặc cặp người dùng. Do đó, một đề xuất sẽ dành cho một mặt hàng (mặt hàng phổ biến nhất được mua bởi những người như bạn, mà bạn chưa mua) hoặc cho nhiều mặt hàng không nhất thiết liên quan đến nhau (hai mặt hàng phổ biến nhất được mua bởi những người như bạn, mà bạn chưa mua). Những khác biệt này là sắc nét hơn trong mua hàng và đề xuất các mặt hàng không phổ biến, đặc biệt là khi so sánh luật kết hợp với lọc cộng tác dựa trên người dùng. Khi xem xét những gì nên giới thiệu cho người dùng đã mua một mặt hàng phổ biến, sau đó luật kết hợp và lọc cộng tác dựa trên mặt hàng có thể mang lại cùng một đề xuất cho một mặt hàng. Nhưng một khuyến nghị dựa trên người dùng sẽ có khả năng khác nhau. Hãy 23 xem xét một khách hàng mua sữa mỗi tuần cũng như các sản phẩm không chứa gluten (hiếm khi được mua bởi các khách hàng khác). Giả sử sử dụng luật kết hợp trên cơ sở dữ liệu giao dịch, chúng tôi xác định luật “IF sữa THEN bánh quy”. Sau đó, lần sau khi khách hàng của chúng tôi mua sữa, họ sẽ nhận được đề xuất (ví dụ: phiếu giảm giá) để mua bánh quy, cho dù người đó có mua bánh quy hay không, và không phân biệt được sản phẩm định mua (sản phẩm không có gluten). Trong lọc cộng tác dựa trên vật phẩm, chúng tôi sẽ xem xét tất cả các mặt hàng được mua cùng với sữa trên tất cả người dùng và đề xuất mặt hàng phổ biến nhất trong số đó (không được khách hàng của chúng tôi mua). Điều này cũng có thể dẫn đến một đề xuất về bánh quy, bởi vì mặt hàng này không được khách hàng của chúng tôi mua. Bây giờ hãy xem xét việc lọc cộng tác dựa trên người dùng. Tìm kiếm lọc cộng tác dựa trên người dùng cho các khách hàng tương tự, những người đã mua cùng một bộ vật phẩm, sau đó giới thiệu mặt hàng được mua bởi những người hàng xóm mà khách hàng của chúng tôi không mua. Do đó, đề xuất dựa trên người dùng không thể đề xuất bánh quy và nhiều khả năng đề xuất các mặt hàng không chứa gluten phổ biến mà khách hàng chưa mua. 3. Tóm lược Luật kết hợp (còn được gọi là phân tích giỏ hàng) và lọc cộng tác là các phương pháp không được giám sát để suy ra mối liên hệ giữa các mặt hàng đã mua từ cơ sở dữ liệu của các giao dịch. Luật kết hợp tìm kiếm các luật chung về các mặt hàng được mua cùng nhau. Ưu điểm chính của phương pháp này là nó tạo ra các quy tắc đơn giản, rõ ràng của mẫu “IF X được mua, THEN Y cũng có khả năng được mua”. Phương pháp này rất minh bạch và dễ hiểu. Quá trình tạo luật kết hợp là hai giai đoạn. Đầu tiên, một tập hợp các luật kết hợp ứng cử viên dựa trên các mục thường xuyên được tạo ra (thuật toán Apriori là thuật toán tạo luật kết hợp phổ biến nhất). Sau đó, từ các luật kết hợp ứng cử viên này, các luật có mối liên kết mạnh nhất giữa các mục được chọn. Chúng ta sử dụng các đại lượng độ hỗ trợ và độ tin cậy để đánh giá sự chắc chắn trong một luật kết hợp. Người dùng cũng chỉ định các giá trị độ tin cậy và độ hỗ trợ tối thiểu sẽ được sử dụng trong quá trình lựa chọn và tạo quy tắc. Một biện pháp thứ ba, tỷ lệ nâng, so sánh hiệu quả của quy tắc để phát hiện mối liên hệ thực sự so với sự kết hợp ngẫu nhiên. Một thiếu sót của các luật kết hợp là sự đa dạng các luật được tạo ra. Do đó, cần có những cách để giảm điều này thành một tập hợp nhỏ các luật hữu ích và mạnh mẽ. Một phương pháp không tự động quan trọng để cô đọng thông tin liên quan đến việc kiểm tra các luật cho các luật không chính xác và tầm thường cũng như các luật có chung sự hỗ trợ. Một vấn đề khác cần được ghi nhớ là các kết hợp hiếm có xu hướng bị bỏ qua, vì chúng không đáp ứng yêu cầu hỗ trợ tối thiểu. Vì lý do này, tốt hơn là có các tập mục 24 gần như thường xuyên trong dữ liệu. Điều này có thể đạt được bằng cách sử dụng hệ thống phân cấp cao hơn làm các mục. Một ví dụ là sử dụng các loại sách thay vì tên sách riêng lẻ để lấy quy tắc kết hợp từ cơ sở dữ liệu của các giao dịch tại cửa hàng sách Lọc cộng tác là một kỹ thuật phổ biến được sử dụng trong các hệ thống đề xuất trực tuyến. Nó dựa trên mối quan hệ giữa các mặt hàng được hình thành bởi những người dùng có hành động tương tự trên một mặt hàng, chẳng hạn như mua hoặc xếp hạng một mặt hàng cao. Lọc cộng tác dựa trên người dùng hoạt động dựa trên dữ liệu trên các kết hợp user-item, tính toán sự tương đồng giữa người dùng và cung cấp các đề xuất được cá nhân hóa cho người dùng. Một thành phần quan trọng cho sự thành công của lọc cộng tác là người dùng cung cấp phản hồi về các đề xuất được cung cấp và có đủ thông tin về từng mục. Một nhược điểm của phương pháp lọc cộng tác là chúng không thể tạo đề xuất cho người dùng mới hoặc các mục mới. Ngoài ra, với số lượng người dùng khổng lồ, việc lọc cộng tác dựa trên người dùng trở nên khó khăn về mặt tính toán và các phương án như phương pháp dựa trên vật phẩm hoặc giảm kích thước được sử dụng phổ biến. 25