1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phát hiện các mẫu ích trong cơ sở dữ liệu giao dịch

63 22 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 63
Dung lượng 1,85 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phát hiện các mẫu ích trong cơ sở dữ liệu giao dịch Phát hiện các mẫu ích trong cơ sở dữ liệu giao dịch Phát hiện các mẫu ích trong cơ sở dữ liệu giao dịch luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp

Trang 1

PHÁT HIỆN CÁC MẪU HỮU ÍCH TRONG

CƠ SỞ DỮ LIỆU GIAO DỊCH

LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN

Trang 2

PHÁT HIỆN CÁC MẪU HỮU ÍCH TRONG

CƠ SỞ DỮ LIỆU GIAO DỊCH

CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

Trang 3

3

MỤC LỤC

Trang

2.1 Một số định nghĩa cở sở trong khai phá mẫu chuỗi 14

2.2 Một số thuật toán khai phá mẫu chuỗi 19

2.2.1 Giới thiệu thuật toán khai phá mẫu chuỗi 19

3.2.4 Xây dựng cấu trúc dữ liệu thuật tiện cho việc khai phá 42

3.2.5 Lựa chọn giá trị minsup để thử nghiệm 44

Trang 4

4

LỜI CAM ĐOAN

Tôi xin cam đoan đề tài “Phát hiện các mẫu hữu ích trong Cơ sở dữ liệu giao dịch” là một công trình độc lập không có sự sao chép của người khác Đề tài là một

sản phẩm mà tôi đã nỗ lực nghiên cứu trong quá trình học tập tại trường cũng như làm việc tại Công ty Cổ phần Olbius Việt Nam Trong quá trình viết bài, tôi có tham khảo một số tài liệu, bài báo có nguồn gốc rõ ràng và đã liệt kê đầy đủ trong tài liệu tham khảo, dưới sự hướng dẫn của PGS TS Nguyễn Thị Kim Anh

Tôi xin cam đoan nếu có bất cứ vấn đề gì liên quan tới nội dung trong luận văn, tôi xin chịu hoàn toàn trách nhiệm

Hà Nội, ngày 15 tháng 04 năm 2019

Tác giả luận văn

Trang 5

5

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

SBD Cơ sở dữ liệu chuỗi (Sequence database)

Minsup Ngưỡng độ hỗ trợ tối thiểu

Bitvector Vector thành phần là các bit

CMAP Cấu trúc ánh xạ đồng xuất hiện (Co-occurrence Map)

Trang 6

6

DANH MỤC CÁC BẢNG

Bảng 1: Một cơ sở dữ liệu chuỗi 15

Bảng 2: Biểu diễn bitvector cho CSDL dọc 27

Bảng 3: CMAPi và CMAPs cho CSDL trong Bảng 1 và minsup=2 29

Bảng 4: CSDL chiếu của mẫu chuỗi <{a}> 33

Bảng 5: Kết quả chạy các thuật toán với minsup lần lượt 3.0%, 1.0% 45 Bảng 6: Kết quả chạy các thuật toán với minsup lần lượt 0.9%, 0.8%, 0.7%, 0.6% 46 Bảng 7: Kết quả chạy các thuật toán với minsup lần lượt 0.5%, 0.4%, 0.3%, 0.2% 47

Trang 7

7

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

Hình 1: Biểu diễn dọc của một CSDL ngang 18

Hình 2: Cấu trúc bảng CSDL giao dịch thực tế 41

Hình 3: Cấu trúc bảng CSDL giao dịch thực tế sau khi lọc 43

Hình 4: So sánh hiệu năng 6 thuật toán theo thời gian với giá trị minsup giảm dần 47 Hình 5: So sánh lượng bộ nhớ sử dụng khi chạy 6 thuật toán với giá trị minsup giảm dần 49

Hình 6: Giao diện thực hiện chạy khai phá mẫu chuỗi và kết quả trả về 53

Hình 7: Giao diện chạy khai phá mẫu chuỗi 54

Hình 8: Giao diện kết quả khai phá mẫu chuỗi 54

Hình 9: Màn hình lưu file kết quả sau khi chạy khai phá mẫu chuỗi 55

Hình 10: Nội dung file kết quả khai phá mẫu chuỗi 56

Hình 11: Màn hình xem chi tiết các mẫu chuỗi kết quả tại một lượt chạy 56

Hình 12: Màn hình lưu file Excel chứa danh sách mẫu chuỗi kết quả 57

Hình 13: Màn hình nội dung file Excel chứa danh sách mẫu chuỗi kết quả 57

Trang 8

8

MỞ ĐẦU

Trong thời đại ngày nay, công nghệ thông tin đã là một phần không thể thiếu trong các lĩnh vực khác nhau của đời sống xã hội Khi mọi thứ đều được tin học hóa, lượng dữ liệu thu nhập được nhiều hơn, sẽ xuất hiện các cơ hội và thách thức khác nhau dựa trên nguồn dữ liệu đó để thu thập các thông tin hữu ích phục vụ con người Bằng cách phân tích dữ liệu thô đã thu thập được, có thể thu được rất nhiều thông tin hữu ích Khi này, một bài toán được đặt ra đó là cần lấy thông tin gì và xử

lý dữ liệu thô như thế nào Để giải bài toán như vậy, chủ đề khai phá dữ liệu đã được nghiên cứu rộng rãi và áp dụng tại nhiều nơi và trên nhiều lĩnh vực

Áp dụng vào thực tế, tôi đang làm việc tại Công ty cổ phần Olbius Việt Nam, chuyên cung cấp phần mềm ERP cho các doanh nghiệp phân phối, hiện tại đang cung cấp hệ thống bán hàng tại các cửa hàng tạp hóa bán lẻ Co.opSmile, với quy

mô vài trăm cửa hàng phân bố tập trung tại khu vực thành phố Hồ Chí Minh Lượng

dữ liệu thu được trong quá trình bán hàng tại cửa hàng cũng rất phong phú, tốc độ gia tăng dữ liệu nhanh Bản thân tự nhận thấy những cơ hội đối với lượng dữ liệu đó

nên đã liên hệ tới PGS TS Nguyễn Thị Kim Anh, cô đã giúp tôi định hướng được

đề tài mà tôi cần thực hiện đó là “Phát hiện các mẫu hữu ích trong Cơ sở dữ liệu giao dịch”

Nhiệm vụ chính của luận văn là phát hiện các mẫu hữu ích từ bộ CSDL giao dịch thực tế đang có để phân tích các chuỗi sản phẩm mà người dùng thường xuyên mua sắm tại các cửa hàng tạp hóa bán lẻ Để giải quyết bài toán cá nhân, luận văn cũng sẽ trình bày bài toán tổng quát và sử dụng phương pháp khai pháp khai phá cho bài toán tổng quát đó Phương pháp khai phá được sử dụng trong luận văn này

là khai phá mẫu chuỗi trong CSDL chuỗi Việc phát hiện các mẫu chuỗi cũng có nhiều ứng dụng khác trong cuộc sống như phân tích giỏ hàng, phân tích tính tương tác trên các trang web, phân tích chuỗi văn bản, … nhưng trong luận văn này sẽ trình bày ứng dụng phát hiện mẫu hữu ích để phân tích các chuỗi sản phẩm mà người dùng thường xuyên mua tại các cửa hàng tạp hóa bán lẻ

Để hoàn thành luận văn, tôi đã đi theo phương pháp nghiên cứu như sau:

Trang 9

- Áp dụng thuật toán đã chọn vào hệ thống đang có, triển khai cho khách hàng

sử dụng Thêm một số tiện ích để tăng tốc việc xử lý dữ liệu trong thực tế Nhận được định hướng, hướng dẫn của cô Nguyễn Thị Kim Anh và việc nghiên cứu của bản thân, tôi đã hoàn thành được các yêu cầu đề ra Nhưng do thời gian thực hiện luận văn có hạn và kiến thức của tôi còn hạn chế, nên việc thiếu sót

là không thể tránh khỏi, tôi nhất mong nhận được sự hướng dẫn góp ý của các thầy

cô và các bạn để có một sản phẩm hoàn thiện hơn trong thời gian tới

Để có được kết quả như ngày hôm nay, em xin chân thành cảm ơn cô Nguyễn Thị Kim Anh đã hướng dẫn em rất tận tình trong thời gian qua Và em cũng cảm

ơn Công ty Cổ phần Olbius Việt Nam đã tạo điều kiện cho em thực hiện luận văn này

Em xin chân thành cảm ơn!

Hà Nội, ngày 15 tháng 04 năm 2019

Tác giả luận văn Chu Thị Thịnh

Trang 10

10

Chương 1 - TỔNG QUAN

1.1 Giới thiệu bài toán thực tiễn

Hiện tại, tôi đang làm việc tại Công ty Cổ phần Olbius Việt Nam, chuyên cung cấp giải pháp ERP cho các doanh nghiệp phân phối, và đang cung cấp hệ thống bán hàng tại các cửa hàng tạp hóa bán lẻ Co.opSmile, với quy mô vài trăm cửa hàng phân bố tập trung tại khu vực thành phố Hồ Chí Minh

Ngày nay, với sự cạnh tranh không ngừng của ngành bán lẻ, việc đưa ra các thông tin phân tích thị trường, phân tích hành vi người dùng để nâng cao khả năng chăm sóc, đáp ứng đúng nhu cầu của khách hàng từ đó giữ khách hàng cũ và thu hút thêm khách hàng mới là bài toán cấp thiết cần đặt ra với các doanh nghiệp phân phối bán lẻ Và cũng là thách thức đối với các doanh nghiệp cung cấp hệ thống thông tin cho các doanh nghiệp phân phối này Bằng việc cung cấp hệ thống thông tin cho các đối tượng khách hàng trên, công ty tôi cần phải đưa ra những giải pháp mới, công cụ mới để hỗ trợ khách hàng tốt hơn Bản thân cá nhân nhận thấy vấn đề như trên, tôi đã suy nghĩ tới việc phân tích, khai phá sâu hơn về nguồn dữ liệu đang

có Thay vì chỉ cung cấp các công cụ tạo báo cáo, biểu đồ cho họ từ nguồn dữ liệu hoạt động hiện tại

Đặc điểm của nguồn dữ liệu khách hàng hiện tại của tôi như sau: số lượng khách hàng thân thiết khá lớn trên phạm vi chuỗi cửa hàng được triển khai Dữ liệu liên quan tới các chuỗi giao dịch mua hàng tiêu dùng hằng ngày của khách hàng Lượng dữ liệu gia tăng nhanh Với đặc điểm trên, tôi đã liên hệ tới cô Nguyễn Thị Kim Anh, cô đã giúp tôi xác định được hướng phân tích, khai phá nguồn dữ liệu trên để thu được kết quả mong muốn Với nguồn dữ liệu là các giao dịch bán hàng tại cửa hàng bán lẻ, có nhiều hướng khai phá dữ liệu như:

- Khai phá tập mục thường xuyên: là quá trình tìm các mục thường xuất hiện cùng nhau trong một CSDL giao dịch của khách hàng Từ các tập mục này, các doanh nghiệp có thể đưa ra các quyết định chiến lược khác nhau để tăng doanh thu như đồng quảng bá sản phẩm, đồng giảm giá và khuyến mại

Trang 11

11

Hướng khai thác này sẽ không quan tâm tới thứ tự các giao dịch Chính vì vậy, khi áp dụng trên các bộ dữ liệu có thời gian hoặc thông tin về thứ tự giao dịch thì thông tin thứ tự này sẽ bị loại bỏ Đối với nhiều lĩnh vực, thứ tự các sự kiện là quan trọng Ví dụ, đối với phân tích văn bản, thứ tự các từ trong câu là quan trọng; đối với phân tích thói quen khách hàng, thì thứ tự các giao dịch mua hàng là quan trọng

- Khai phá mẫu chuỗi thường xuyên: là quá trình phát hiện các chuỗi thú vị trong một tập hợp các chuỗi Nó có nhiều ứng dụng trong thực tế như phân tích tình trạng bệnh của bệnh nhân, phân tích văn bản, phân tích thói quen người tiêu dùng Khai phá mẫu chuỗi thường xuyên đã khắc phục được nhược điểm bỏ qua thông tin liên quan tới thứ tự sự kiện xuất hiện trong khai phá tập mục thường xuyên Từ đó có thể phát hiện ra các mẫu chuỗi hữu ích hơn cho người dùng

Qua quá trình phân tích với nguồn dữ liệu thực tế, để có thể tận dụng nhiều thông tin hơn, tôi đã chọn hướng khai phá mẫu chuỗi thường xuyên và nhận đề tài

luận văn là “Phát hiện các mẫu hữu ích trong Cơ sở dữ liệu giao dịch” Với đề

tài này, bài toán đặt ra đã rõ ràng hơn như sau: từ nguồn dữ liệu đang có, tôi sẽ cần phát hiện được các mẫu chuỗi được coi là hữu ích Việc đánh giá hữu ích có nhiều lựa chọn như độ dài chuỗi, tần suất xuất hiện Trong đó tôi lựa chọn đánh giá mức

độ hữu ích qua tần suất xuất hiện, chính bằng số lần xuất hiện của mẫu trong các chuỗi mua sắm của khách hàng khác nhau Khi đó có thể hiểu, mẫu nào được thực hiện bởi nhiều khách hàng thì mẫu đó được coi là hữu ích Sẽ có một ngưỡng làm căn cứ cho phép xác định các mẫu cần xuất hiện trong bao nhiêu chuỗi mới được gọi là hữu ích

Để giải quyết bài toán này, tôi đã đi theo phương pháp nghiên cứu như sau:

- Phân tích CSDL giao dịch hiện tại đang có để tìm ra mục tiêu thông tin cần khai thác Phát biểu bài toán tổng quát từ bài toán cá nhân đang có

- Nghiên cứu các thuật toán phổ biến hiện nay để giải quyết bài toán tổng quát Chọn một số thuật toán phổ biến, tiến hành thử nghiệm trên bộ dữ liệu thực

Trang 12

12

tế Từ đó, phân tích chọn ra một thuật toán phù hợp nhất để áp dụng vào hệ thống thực tế

- Áp dụng thuật toán đã chọn vào hệ thống đang có, triển khai cho khách hàng

sử dụng Thêm một số tiện ích để tăng tốc việc xử lý dữ liệu trong thực tế

Đi theo phương pháp nghiên cứu phía trên, tôi đã xây dựng cấu trúc luận văn gồm các phần như sau:

- Chương 1: Giới thiệu bài toán thực tế cần giải quyết Trình bày một số

hướng nghiên cứu với bộ dữ liệu thực tế, và lựa chọn hướng nghiên cứu cụ thể để giải quyết bài toán đặt ra Từ đó phát biểu bài toán tổng quát để có thể

áp dụng các phương pháp phổ biến hiện nay đã được chứng minh để giải bài toán ban đầu

- Chương 2: Nêu những khái niệm cơ sở để giải quyết bài toán Trình bày một

số thuật toán khai phá mẫu chuỗi phổ biến hiện nay Phân tích ưu điểm và nhược điểm của các thuật toán, từ đó đánh giá hiệu năng của các thuật toán

- Chương 3: Giới thiệu bộ dữ liệu thực tế Tiến hành thử nghiệm các thuật toán

đã tìm hiểu trên bộ dữ liệu đó Phân tích và đánh giá kết quả, lựa chọn ra một thuật toán phù hợp nhất áp dụng vào hệ thống triển khai cho khách hàng sử dụng

- Chương 4: Trình bày và phân tích những kết quả đạt được sau quá trình thử nghiệm trên bộ dữ liệu thực Nêu ra hướng nghiên cứu phát triển trong tương lai

1.2 Phát biểu bài toán tổng quát

CSDL giao dịch trong các cửa hàng tạp hóa bán lẻ là CSDL chứa thông tin liên quan tới các lần mua hàng khác nhau của khách hàng tại cửa hàng đó Một lần mua hàng của khách hàng được gọi là một giao dịch, CSDL giao dịch chứa tập các giao dịch Một giao dịch chứa các sản phẩm được mua cùng nhau tại một thời điểm, được thực hiện bởi một khách hàng tại một cửa hàng Như vậy, sẽ có tập các giao dịch được thực hiện bởi một khách hàng, tập các giao dịch này là có thứ tự, các sản

Trang 13

13

phẩm trong một giao dịch là không có thứ tự Tổng quát, gọi tập giao dịch đó là một

“chuỗi” được thực hiện bởi một khách hàng

Như vậy, CSDL giao dịch có thể được chuyển đổi thành một CSDL tương ứng gọi là CSDL chuỗi, bao gồm các chuỗi được thực hiện bởi các khách hàng khác nhau Mỗi giao dịch được gọi là một tập mục, các tập mục trong chuỗi là có thứ tự (theo thời gian mua hàng của khách hàng) Mỗi tập mục chứa các mục tương ứng với từng sản phẩm trong 1 giao dịch, giữa các mục không phân biệt thứ tự (do các sản phẩm trong một giỏ hàng sẽ không tính tới thứ tự, thứ tự của các sản phẩm này

là không có quy luật xác định, ví dụ như còn phụ thuộc vào thứ tự lấy hàng, thứ tự nhân viên tính tiền cho khách, thứ tự sắp xếp hàng hóa trong cửa hàng)

Bài toán đặt ra cần tìm các mẫu chuỗi hữu ích Trong đó, một mẫu chuỗi được xác định là hữu ích có thể dựa vào một số yếu tố như độ dài của mẫu chuỗi, số lần chuỗi được thực hiện bởi các khách hàng khác nhau Trong bài toán này, tôi coi một mẫu chuỗi là hữu ích khi nó có số lần xuất hiện bởi các khách hàng khác nhau thỏa mãn ngưỡng nào đó do người dùng đặt ra (tần suất xuất hiện của mẫu chuỗi trong các chuỗi giao dịch khách hàng)

Vậy bài toán khai thác mẫu hữu ích trong CSDL giao dịch có thể quy về bài toán tổng quát đó là khai phá mẫu chuỗi thường xuyên trong CSDL chuỗi

Nhiệm vụ của khai phá mẫu chuỗi thường xuyên trong CSDL chuỗi là tìm tất cả các mẫu chuỗi thỏa mãn điều kiện xuất hiện tại nhiều hơn hoặc bằng một số lượng chuỗi giao dịch của khách hàng nào đó Giới hạn nhỏ nhất do người dùng quyết định, khi đó các chuỗi thỏa mãn điều kiện được gọi là hữu ích đối với người dùng Vấn đề khai phá mẫu chuỗi là một bài toán liệt kê tổ hợp, nhằm mục đích liệt

kê ra được tất cả các mẫu có lần xuất hiện (gọi là độ hỗ trợ) không nhỏ hơn ngưỡng (độ hỗ trợ tối thiểu) mà người dùng đã thiết lập Cách đơn thuần nhất là tính toán độ

hỗ trợ của tất cả các chuỗi con có thể trong CSDL chuỗi, sau đó sẽ trả về các chuỗi con thỏa mãn điều kiện ngưỡng độ hỗ trợ Cách này không hiệu quả, vì số lượng các chuỗi con có thể rất lớn khi chuỗi cha là dài Giả sử, một chuỗi có q mục, như vậy có thể có ( ) chuỗi con khác nhau Giải thích:

Trang 14

Chương 2 - KỸ THUẬT SỬ DỤNG

2.1 Một số định nghĩa cở sở trong khai phá mẫu chuỗi

2.1.1 Cơ sở dữ liệu chuỗi

Cho là một danh sách các mục, tương ứng với danh sách các sản phẩm mà cửa hàng tạp hóa kinh doanh

Một tập mục (trong đó ) là một tập các mục khác nhau không phân biệt thứ tự Tương ứng với tập các sản phẩm khác nhau trong một giao dịch mua hàng Không mất tính tổng quát, giả sử rằng tất cả các mục trong tập mục được sắp xếp theo thứ tự từ điển, ký hiệu Ngoài ra, có được gọi

là độ dài của tập mục , khi tập mục chứa mục, ký hiệu | |

Một chuỗi (trong đó ) là một danh sách

có thứ tự các tập mục (tương ứng với danh sách các giao dịch có thứ tự của một

Trang 15

15

khách hàng) Chuỗi s được gọi là có độ dài hoặc -sequence khi chuỗi chứa mục Nói cách khác, | | | | | |, chính bằng tổng độ dài của các tập mục trong chuỗi s

Một cơ sở dữ liệu chuỗi (SDB – Sequence database) là một danh sách các

chuỗi Tương ứng với danh sách giao dịch của các khách hàng khác nhau Ký hiệu:

có định danh chuỗi (SIDs) là 1, 2, , p

Ví dụ, Bảng 1 biểu diễn một CSDL chuỗi

có SID bằng 1 có 5 tập mục lần lượt là {a,b}, {c}, {f,g}, {g} và {e} được sắp xếp theo thứ tự thời gian thực hiện giao dịch Tại tập mục đầu tiên {a,b} có 2 mục được sắp xếp theo thứ tự từ điển là b a

2.1.2 Độ hỗ trợ của chuỗi

Một chuỗi được gọi là được chứa trong một chuỗi khi và chỉ khi tồn tại các số nguyên sao cho , ký hiệu Nếu chuỗi được chứa trong chuỗi , thì chuỗi được gọi là chuỗi con của chuỗi

Ví dụ: chuỗi <{b}, {f,g}> được chứa trong chuỗi <{a,b}, {c}, {f,g}, {g}, {e}>, khi đó chuỗi <{b}, {f,g}> là chuỗi con của chuỗi <{a,b}, {c}, {f,g}, {g}, {e}>

Trang 16

16

Độ hỗ trợ (support) của chuỗi trong một CSDL chuỗi SDB được định nghĩa

là số chuỗi chứa chuỗi , được ký hiệu là Độ hỗ trợ này được gọi là độ hỗ trợ tuyệt đối (absolute support) Tổng quát hóa:

Ví dụ: trong CSDL chuỗi tại Bảng 1, xét chuỗi s = <{b}, {f,g}> có:

- Độ hỗ trợ của chuỗi s bằng 2: sup(s) = 2, hay có thể nói độ hỗ trợ tuyệt đối của s bằng 2, do có hai chuỗi là chuỗi 1 và chuỗi 4 chứa chuỗi s

- Độ hỗ trợ tương đối của chuỗi s bằng 0.5: relsup(s) = sup(s)/|SDB| = 2/4 = 0.5

2.1.3 Phép toán mở rộng chuỗi

Dựa vào định nghĩa tập mục, ta có các mục trong tập mục không phân biệt thứ

tự, nên không mất tính tổng quát, ta coi các mục được sắp xếp theo 1 thứ tự từ điển (ký hiệu ) Như vậy, cũng có thể coi thứ tự này là thứ tự xử lý các mục trong một CSDL chuỗi để tìm các mẫu chuỗi kết quả

Các thuật toán khai phá mẫu chuỗi đều tìm kiếm trên không gian dữ liệu bằng

2 phép toán cơ bản được gọi là s-extension (sequence-extension) và i-extension (itemset-extension) Cả hai phép toán này đều có mục đích tạo ra 1 chuỗi có độ dài (k+1) từ 1 chuỗi có độ dài (k)

Tiền tố: chuỗi được gọi là tiền tố của chuỗi với mọi n < m khi và chỉ khi và chuỗi bằng | | mục đầu tiên của chuỗi theo thứ tự từ điển

Phép s-extension: chuỗi được gọi là một chuỗi mở rộng s-extension của chuỗi với một mục , khi và chỉ khi chuỗi là tiền tố của

Trang 17

2.1.4 Khai phá mẫu chuỗi

Cho một CSDL chuỗi SDB, và một ngưỡng độ hỗ trợ tối thiểu (minsupport – gọi tắt là minsup) được thiết lập bởi người dùng Chuỗi s được gọi là mẫu chuỗi thường xuyên khi và chỉ khi độ hỗ trợ của chuỗi s không nhỏ hơn giá trị minsup đã cho (sup(s)  minsup)

Mục tiêu của khai phá mẫu chuỗi là tìm ra tất cả các mẫu chuỗi thường xuyên

2.1.5 Cơ sở dữ liệu ngang

Một CSDL chuỗi có định dạng dữ liệu ngang là một CSDL mà mỗi bản ghi là

một chuỗi Ví dụ Bảng 1 là một biểu diễn của CSDL ngang

2.1.6 Cơ sở dữ liệu dọc

Một CSDL chuỗi có định dạng dữ liệu dọc là một CSDL mà mỗi bảng đại

diện cho thông tin của một 1 mục, mỗi bản ghi là 1 cặp gồm mã chuỗi có chứa mục

đó và danh sác vị trí của các tập mục trong chuỗi nơi mà nó xuất hiện Hình 1 là một biểu diễn dọc của CSDL trong Bảng 1

Trang 18

18

Hình 1: Biểu diễn dọc của một CSDL ngang Với mỗi mục trong CSDL dọc, thông tin trong bảng đại diện cho mục đó được gọi là IDList của mục Biểu diễn dọc của một CSDL ngang là tập tất cả các IDList của tất cả các mục đơn có trong CSDL đó Có thể tạo các IDList của tất cả các mẫu chỉ với một lần quét CSDL ngang 1 lần (và có thể chuyển từ CSDL dọc về CSDL ngang), bằng cách quét CSDL ngang 1 lần để tạo IDList của các mẫu chứa 1 mục đơn, IDList của các mẫu lớn hơn sẽ được tính bằng phép kết nối giữa IDList của các mẫu nhỏ đã có sẵn Tổng quát IDList, cho một mẫu được chứa trong chuỗi ( ) Vị trí mục của trong

ký hiệu là , là tập hợp các cặp có dạng , trong đó là một số nguyên thỏa mãn mà IDList của mẫu trong CSDL chuỗi SDB chính là tập hợp các vị trí mục của trong tất cả các chuỗi mà nó xuất hiện Tổng quát:

CSDL dọc có 2 tính chất hữu ích cho khai phá mẫu chuỗi:

- Tính chất 1: có thể tính toán trực tiếp độ hỗ trợ của mẫu dựa vào IDList của mẫu đó Độ hỗ trợ chính bằng số lượng các chuỗi khác nhau trong IDList của mẫu

- Tính chất 2: cho mẫu được tạo từ mẫu và một phép mở rộng

s-extension hoặc i-s-extension với 1 mục i, có thể tạo IDList của một mẫu mà

Trang 19

19

không cần quét CSDL gốc bằng cách kết nối IDList của mẫu và IDList của mục i

2.2 Một số thuật toán khai phá mẫu chuỗi

2.2.1 Giới thiệu thuật toán khai phá mẫu chuỗi

Dựa theo thứ tự tìm kiếm có thể phân loại các thuật toán khai phá mẫu chuỗi thành 2 loại:

- Thuật toán tìm kiếm theo chiều rộng, cách thức xử lý như sau:

o Đầu tiên, quét CSDL gốc để tìm các chuỗi có độ dài 1 (chuỗi

1-sequence) và là chuỗi thường xuyên

o Sau đó, tạo chuỗi có độ dài 2 (chuỗi 2-sequence) bằng cách thực hiện các phép mở rộng s-extension hoặc i-extenson từ chuỗi 1-sequence

o Tiếp theo, tạo các chuỗi 3-sequence từ chuỗi 2-sequence, … cho tới khi không còn chuỗi nào có thể được tạo nữa

- Thuật toán tìm kiếm theo chiều sâu, cách thức thực hiện như sau:

o Đầu tiên, tìm các chuỗi 1-sequence

o Sau đó, thực hiện đệ quy các phép i-extension và s-extension với chuỗi ban đầu để tạo các chuỗi lớn hơn

o Tiếp theo, khi một chuỗi không thể dài thêm được nữa, thuật toán sẽ quay lui để tạo các mẫu khác từ các chuỗi khác

Nhận xét 2 loại thuật toán:

- Thuật toán tìm kiếm theo chiều rộng: các thuật toán tìm kiếm theo chiều rộng

có thể sẽ phải tìm kiếm trên không gian tìm kiếm rất lớn, do các chuỗi được duyệt theo thứ tự độ dài của chúng Giả sử, trong CSDL chuỗi có chứa mục, trong trường hợp tệ nhất, thuật toán sẽ phải duyệt lên tới chuỗi Và cần lưu trữ rất nhiều mẫu trong bộ nhớ

- Thuật toán tìm kiếm theo chiều sâu: không gian tìm kiếm cũng có thể lớn khi chuỗi trong CSDL chuỗi là dài

Trang 20

20

Không gian tìm kiếm của một CSDL chuỗi có thể rất lớn, do đó việc thiết kế một thuật toán hiệu quả để khai phá mẫu chuỗi là cần thiết Và đòi hỏi cần phải tích hợp các kỹ thuật loại bỏ việc quét tất cả không gian tìm kiếm Tính chất cơ bản được sử dụng để cắt tỉa không gian tìm kiếm được gọi là tính chất “Apriori”

Tính chất Apriori: cho bất kỳ 2 chuỗi và , nếu là chuỗi con của chuỗi ( ), thì phải có độ hỗ trợ nhỏ hơn hoặc bằng độ hỗ trợ của Như vậy,

độ hỗ trợ có tính chất đơn điệu Hoặc có thể phát biểu như sau về tính chất Apriori: trong các chuỗi k-sequence thường xuyên, một chuỗi k-sequence là thường xuyên chỉ khi tất cả các chuỗi con của nó là thường xuyên

Dựa vào tính chất Apriori, việc cắt trong không gian tìm kiếm được thực hiện như sau: nếu một chuỗi là không thường xuyên, thì tất cả các chuỗi mở rộng của nó cũng không thường xuyên Như vậy, các chuỗi đó không phải là mẫu chuỗi cần tìm,

và không cần duyệt đến Áp dụng tính chất Apriori, có thể giảm đáng kể không gian tìm kiếm so với ban đầu

Các thuật toán khai phá mẫu chuỗi sẽ khác nhau về:

- Phương pháp tìm kiếm chuỗi: theo chiều rộng hay chiều sâu;

- Loại CSDL biểu diễn: CSDL ngang, CSDL dọc;

- Cách sinh và xác định mẫu duyệt kế tiếp trong CSDL;

- Cách tính độ hỗ trợ của các mẫu

Tiếp theo đây, sẽ giới thiệu một số thuật toán nổi tiếng trong khai phá mẫu chuỗi gồm: thuật toán GSP [8], SPADE [3], SPAM [2], CM-SPADE [4], CM-SPAM [4], PrefixSpan [1]

2.2.2 Thuật toán GSP

Thuật toán GSP [8] (Generalized Sequential Pattern Mining) là phiên bản

nâng cấp hơn so với thuật toán AprioriAll [7] bởi cùng nhóm tác giả Thuật toán AprioriAll [7] là một thuật toán khai phá mẫu chuỗi được đề xuất sớm nhất Các thuật toán AprioriAll [7] và GSP [8] đều lấy cảm hứng từ thuật toán Apriori (thuật toán Apriori là thuật toán khai phá tập mục thường xuyên) GSP [8] có cách làm

Trang 21

21

việc giống với AprioriAll [7], nhưng GSP [8] không yêu cầu tìm tất cả các tập mục thường xuyên trong lần đầu chạy Thuật toán GSP [8] được thiết kế để khai phá các mẫu chuỗi tổng quát Ngoài ra, GSP [8] còn cho phép: đặt giới hạn về sự phân tách thời gian giữa các tập mục liền kề trong một mẫu, đặt cửa sổ thời gian cho phép các mục trong một tập mục mở rộng giao dịch, định nghĩa phân loại cho phép khám phá mẫu ở các cấp độ khác nhau Với bài toán đưa ra trong luận văn này, sẽ không sử dụng 3 tham số riêng biệt có trong GSP [8] Như vậy sẽ không xem xét tới nó và có thể bỏ qua phần mở rộng trên

Trong trường hợp mẫu chuỗi tổng quát, thuật toán GSP [8] sử dụng một CSDL chuỗi chuẩn (giống Bảng 1), được gọi là CSDL ngang Thuật toán GSP [8] thực hiện tìm kiếm theo chiều rộng để phát hiện các mẫu chuỗi thường xuyên

Mã giả của thuật toán GSP:

10 Tăng biến đếm của tất cả các chuỗi ứng viên trong Ck chứa c

11 Fk+1 = tập các ứng viên trong Ck+1 thỏa mãn minsup

12 End If

13 k=k+1;

14 End While

15 Trả về tập các chuỗi trong tập ⋃ ;

APRIORI-GENERATE(Lk-1) //hàm sinh ứng viên mới từ tập Lk-1

1 Kết nối Lk-1 (chứa các chuỗi pi) với Lk-1 (chứa các chuỗi qj) theo quy tắc sau:

Thêm tập mục ở vị trí (k-1) của chuỗi q nối vào chuỗi p, được chuỗi k-sequence

Ck = tập các chuỗi kết quả

2 Xóa tất cả các chuỗi c  Ck mà tồn tại chuỗi con (k-1)-sequence của c  Lk-1

Trang 22

22

Phân tích:

- Đầu tiên, GSP [8] quét CSDL để tính toán độ hỗ trợ của tất cả các chuỗi sequence Sau đó, nó giữ lại tất cả các chuỗi 1-sequence trong bộ nhớ

1 Sau khi tạo các ứng viên, nó sẽ tính toán độ hỗ trợ của mỗi ứng viên để chọn

ra các ứng viên có độ hỗ trợ không nhỏ hơn minsup và trả về kết quả

Thuật toán GSP [8] kết thúc chỉ với 2 bước:

- Đầu tiên, với một mẫu ứng viên , thuật toán GSP [8] sẽ kiểm tra tất cả các chuỗi con có độ dài k-1 của có phải là thường xuyên hay không Nếu

có một chuỗi con không thường xuyên, thì cũng không thể thường xuyên (theo tính chất Apriori)

- Ngược lại, GSP [8] sẽ tiếp tục quét trong CSDL để tính toán hỗ trợ của , nếu là thường xuyên, nó sẽ trả về kết quả đầu ra

Thuật toán GSP [8] được coi là thuật toán tốt nhất trong những thuật toán khai phá mẫu chuỗi đầu tiên Trong những năm gần đây, nhiều thuật toán đã được giới thiệu

có hiệu năng tốt hơn GSP [8] Do GSP [8] có một số hạn chế như:

- Quét nhiều lần CSDL: một trong những vấn đề của GSP [8] là số lần quét lặp lại trong CSDL để tính toán độ hỗ trợ của các mẫu ứng viên Nó có thể rất tốn kém trong CSDL lớn Một số tối ưu hóa có thể giảm chi phí như các chuỗi được sắp xếp trước theo kích thước để loại bỏ việc so sánh các mẫu dài với các mẫu ngắn

- Ứng cử viên không tồn tại: một vấn đề khác của GSP [8] là có thể các mẫu tạo ra không tồn tại trong CSDL Lý do GSP [8] tạo ra các ứng viên này là

do kết hợp các mẫu nhỏ hơn mà không quan tâm tới CSDL Như vậy, GSP [8] có thể lãng phí nhiều thời gian để xem xét các mẫu không tồn tại trong CSDL

- Giữ các ứng viên trong bộ nhớ: một vấn đề khác của GSP [8] là thuật toán tìm kiếm theo chiều rộng, ở bất kỳ thời điểm nào trong quá trình chạy, nó cũng phải giữ toàn bộ chuỗi thường xuyên có độ dài k trong bộ nhớ, để có thể sinh các mẫu có độ dài k+1 Như vậy sẽ tốn kém lượng lớn bộ nhớ

Trang 23

23

2.2.3 Thuật toán SPADE và SPAM

a Thuật toán SPADE (Sequential Pattern Discovery using Equivalence classes)

Mã giả của thuật toán SPADE:

ENUMERATE (một lớp tương đương F, minsup)

1 For each mẫu

2 Trả về ;

3 := ;

4 For each mẫu , với j  i

5 = MergePatterns( , )

6 For each mẫu

7 If sup( )  minsup then := ;

- Sau đó, SPADE [3] gọi hàm ENUMERATE với lớp tương đương có kích thước bằng 0 Một lớp tương đương có kích thước k được định nghĩa là tập tất cả các mẫu thường xuyên chứa k mục có tiền tố giống nhau là (k-1) mục Chỉ có duy nhất một lớp tương đương có kích thước bằng 0 là lớp tương đương Hàm ENUMERATE có 2 tham số là lớp tương đương F và

ngưỡng hỗ trợ tối thiểu minsup

o Mỗi mẫu chuỗi là thành viên của lớp tương đương đầu vào được trả ra là mẫu chuỗi thường xuyên

Trang 24

o Khi tất cả các vòng lặp kết thúc, tất cả các mẫu chuỗi thường xuyên được trả ra

Nhận xét thuật toán SPADE:

Thuật toán SPADE [3] là một thuật toán sử dụng tìm kiếm theo chiều sâu, và loại bỏ một vài nhược điểm của thuật toán GSP [8] Thuật toán SPADE [3] lấy cảm hứng từ thuật toán Eclat (thuật toán khai phá tập mục thường xuyên) Nó sử dụng một CSDL dọc Sử dụng các tính chất của CSDL dọc, thuật toán SPADE [3] đã thăm dò được toàn bộ không gian tìm kiếm của các mẫu bằng cách đọc CSDL duy nhất 1 lần để tạo IDList của các mục đơn Sau đó, tìm các mẫu lớn hơn bằng cách kết nối các IDList của các mẫu nhỏ đơn đã có sẵn, và tính toán độ hỗ trợ của mẫu Như vậy, tất cả các mẫu thường xuyên được duyệt hết mà không cần lặp lại việc quét CSDL, và không cần lưu trữ quá nhiều mẫu trong bộ nhớ máy tính

Trang 25

25

b Thuật toán SPAM (Sequential Pattern Mining)

Mã giả của thuật toán SPAM:

- Tiếp theo, duyệt từng mục thường xuyên , SPAM [2] gọi hàm

SEARCH với 3 tham số lần lượt là mẫu <{ }>, tập các mục đơn thường xuyên , tập con các mục thuộc có thứ tự từ điển xếp sau mục

| , và ngưỡng hỗ trợ tối thiểu minsup Hàm SEARCH trả về mẫu

<{ }> và tiếp tục khám phá đệ quy các mẫu ứng viên bắt đầu bằng tiền tố

Trang 26

26

<{ }>, tổng quát, hàm SEARCH có 3 tham số như sau: mẫu chuỗi “pat”, hai tập mở rộng từ mẫu “pat” để sinh ứng viên là tập đại diện cho tập các mục được gắn tới mẫu chuỗi “pat” bằng phép “s-extension”, và tập đại diện cho tập các mục được gắn tới mẫu chuỗi “pat” bằng phép “i-extension”

- Với mỗi ứng viên được sinh ra từ phép mở rộng “pat”, SPAM [2] tính toán

độ hỗ trợ của nó và xác định nó có thường xuyên hay không (tính dựa vào tính chất của CSDL dọc, bằng phép kết nối và đếm số chuỗi khác nhau chứa mẫu) Trong SPAM [2], IDList được lưu trữ dựa trên các bitvector để các phép toán nhanh hơn (sẽ mô tả kỹ hơn phía dưới) Nếu mẫu mở rộng từ “pat”

là thường xuyên, nó sẽ được gọi đệ quy hàm SEARCH để tạo ra các ứng cử viên khác bắt đầu bằng tiền tố “pat” Chú ý rằng, trong lời gọi đệ quy, chỉ có tập các mục tạo ra các chuỗi thường xuyên từ “pat” bằng phép mở rộng mới được xem xét để mở rộng mẫu chuỗi “pat”

Biểu diễn IDList trong SPAM:

Thuật toán SPAM [2] đã nhận thấy IDList của các mẫu có thể rất lớn khi các mẫu xuất hiện trong nhiều chuỗi, đặc biệt là trong các CSDL dày hoặc các CSDL chứa chuỗi dài Việc áp dụng phép toán kết nối giữa các IDList là tốn kém do đòi hỏi phải so sánh các mục của 2 IDList Giải pháp được SPAM [2] đưa ra là biểu diễn IDList như vector các bit

Biểu diễn bitvector của một IDList được định nghĩa như sau: cho CSDL chuỗi SDB có chứa k mục và m chuỗi, trong đó size(i) là số lượng các tập mục trong chuỗi thứ i Xét một mẫu có IDList( ), khi đó biểu diễn bitvector của mẫu này

ký hiệu là Blist( ) là một bitvector có (∑ ) bit, trong đó: bit thứ đại diện cho tập mục thứ của chuỗi thứ , giá trị của bit được gán bằng 1 khi mẫu xuất hiện trong tập mục của chuỗi (có nghĩa là ), ngược lại bit

sẽ được gán bằng 0.Ví dụ các bảng trong Hình 1, chuyển sang dạng bitvector được kết quả như Bảng 2 Tổng số tập mục trong CSDL chuỗi là 15, như vậy, mỗi mục sẽ được biểu diễn bằng 1 bitvector có 15 bit

Trang 27

Bảng 2: Biểu diễn bitvector cho CSDL dọc

Sử dụng cách biểu diễn bitvector cho các IDList có thể giảm đáng kể lượng không gian bộ nhớ cần dùng để khai phá mẫu chuỗi với một CSDL dọc Điều này đặc biệt đúng với CSDL dày do khi đó các bit được gán bằng 1 nhiều Còn đối với

bộ dữ liệu thưa, nhiều bit sẽ được gán bằng 0, như vậy lượng bộ nhớ lưu trữ sẽ nhỏ (do có thể áp dụng nhiều kỹ thuật nén bitvector khác)

c Nhận xét chung 2 thuật toán

Ưu điểm: hai thuật toán SPADE [3] và SPAM [2] rất hiệu quả cho tập dữ liệu dày hoặc các chuỗi dài, có hiệu suất tổng thể tốt khi thực hiện phép kết nối để tính toán độ hỗ trợ của các ứng viên mà không cần quét CSDL gốc giống như các thuật toán sử dụng định dạng ngang (như GSP [8]) Do thăm dò được toàn bộ không gian tìm kiếm của các mẫu chỉ cần thực hiện duyệt CSDL gốc 1 lần để tạo IDList của các mục đơn

Nhược điểm: nút thắt hiệu năng của các thuật toán khai phá theo biểu diễn CSDL dọc đó là chúng sử dụng một cách tiếp cận sinh ứng viên và tính độ hỗ trợ, gửi rất nhiều lần các mẫu ứng viên mà nó không xuất hiện trong CSDL gốc, hoặc các mẫu đó là không thường xuyên

2.2.4 Thuật toán CM-SPAM và CM-SPADE

Gần đây, các thuật toán SPAM [2] và SPADE [3] đã được nâng cấp và thu được các thuật toán CM-SPAM [4] và CM-SPADE [4] Các thuật toán này dựa trên

Trang 28

28

các quan sát cách SPAM [2] và SPADE [3] sinh ra các mẫu ứng viên và thực hiện phép toán kết nối để tạo các IDList cho mỗi ứng viên, thao tác này là tốn kém Để giảm phép kết nối, các thuật toán CM-SPAM [4] và CM-SPADE [4] đã giới thiệu

khái niệm cắt đồng thời (co-occurrence pruning) Nó bao gồm việc khởi động quét

CSDL để tạo một cấu trúc được gọi là Co-occurrence Map (CMAP) để lưu trữ tất cả các chuỗi 2-sequence Sau đó, mỗi mẫu sẽ được xem xét bởi hàm tìm kiếm nếu 2 mục cuối cùng của không phải là chuỗi 2-sequence thường xuyên, khi đó, có thể loại bỏ mẫu mà không cần xây dựng IDList của nó (như vậy sẽ tiết kiệm được chi phí cho phép toán kết hợp) Dẫn đến, thuật toán CM-SPAM [4] và CM-SPADE [4] có hiệu năng tốt hơn các thuật toán GSP [8], SPAM [2], SPADE [3] CM-

SPADE [4] được đánh giá là thuật toán nhanh nhất ở thời điểm hiện tại [6]

a Mục kế tiếp

- Một mục được gọi là mục kế tiếp bởi phép mở rộng i-extension từ một mục trong chuỗi khi và chỉ khi 2 mục và đều thuộc tập mục (số nguyên x thỏa mãn: 1 ≤ x ≤ n) và mục đứng sau mục ( )

- Một mục được gọi là mục kế tiếp bởi phép mở rộng s-extension từ một mục trong chuỗi khi và chỉ khi có mục và

với 2 số nguyên v và w thỏa mãn: 1 ≤ v < w ≤ n

b Cấu trúc Co-occurrence MAP (CMAP)

Cấu trúc CMAP là một cấu trúc ánh xạ mỗi mục tới tập các mục mở

rộng kế tiếp từ Có 2 loại CMAP được gọi là CMAPi và CMAPs CMAPi ánh xạ từng mục k vào một tập cmi(k), tập cmi(k) này chứa tất cả các mục mà là kế tiếp bằng phép i-extension trong các chuỗi thường xuyên trong SDB CMAPs ánh

xạ từng mục k vào một tập cms(k), tập cms(k) này chứa tất cả các mục mà là

kế tiếp bằng phép s-extension trong các chuỗi thường xuyên trong SDB Ví dụ, cho CSDL chuỗi trong Bảng 1 và minsup bằng 2, với mục f, ta có, với CMAPi có

cmi(f) = {g} do f liên kết với 1 mục g; với CMAPs có cms(f) = {e, g} do f liên kết với 2 mục e và g Điều này chỉ ra rằng e và g là mục kế tiếp từ f bởi phép s-

Trang 29

29

extension và mục g kế tiếp từ f bởi phép i-extension Tất cả các chuỗi này đều thỏa mãn minsup Bảng 5 là liệt kê tập mục kế tiếp theo phép i-extension (bên trái) và s-extension (bên phải) của các mục trong Bảng 1

Bảng 3: CMAPi và CMAPs cho CSDL trong Bảng 1 và minsup=2

c Cắt tỉa dựa trên sự đồng xuất hiện

Cấu trúc CMAP có thể được sử dụng để cắt tỉa các ứng viên được khởi tạo bằng các thuật toán khai phá mẫu chuỗi dựa trên biểu diễn CSDL dọc dựa trên tính chất dưới đây:

- Tính chất 1: cắt một i-extension Cho một mẫu chuỗi thường xuyên A và một mục k Nếu tồn tại mục j trong tập mục cuối cùng của A mà k không thuộc

cmi(j), thì phép i-extension của A với k là không thường xuyên

- Tính chất 2: cắt một s-extension Cho một mẫu chuỗi thường xuyên A và một mục k Nếu tồn tại một mục j trong tập mục cuối cùng của A mà k không thuộc cms(j), thì phép s-extension của A với k là không thường xuyên

- Tính chất 3: cắt một tiền tố Hai tính chất trên có thể tổng quát hóa để cắt tất

cả các mẫu có cùng tiền tố Cho một mẫu chuỗi thường xuyên A và một mục

k Nếu tồn tại một mục j  A (mục j thuộc tập mục cuối cùng của A) mà k 

cms(j) (tương tự với cmi(j)) thì tất cả các chuỗi cha B có A là tiền tố và k kế tiếp j bằng phép s-extension (tương tự với i-extension) trong A là không thường xuyên

d Tích hợp trong SPADE

Với mã giả của thuật toán SPADE [3], việc tích hợp cấu trúc CMAP vào SPADE [3] để tạo thành thuật toán CM-SPADE [4] sẽ được diễn ra tại 2 bước:

Trang 30

và Nếu là một mở rộng i-extension của với , thuật toán sẽ sử dụng CMAPi, ngược lại nếu là một mở rộng s-extension của với , thuật toán

sẽ sử dụng CMAPs để cắt tỉa mẫu không thường xuyên như sau: nếu mục

là mục cuối cùng của mẫu ( vừa được thêm vào theo phép i-extension hoặc s-extension, trước đó mục cuối cùng trong là ), và không có mục nào thuộc tập (tương tự ) thì mẫu là không thường xuyên

và có thể loại bỏ mà không cần tính toán độ hỗ trợ của Chiến lược cắt này thực hiện được dựa vào Tính chất 1, 2, 3 phía trên về sự đồng xuất hiện

Mã giả của thuật toán CM-SPADE:

ENUMERATE(một lớp tương đương F, minsup)

1 For each mẫu

2 Trả về ;

3 := ;

4 For each mẫu , với j  i

5 = MergePatterns( , ) //tích hợp kiểm tra CMAP tại hàm này

6 For each mẫu

7 If sup( )  minsup then := ;

8 ENUMERATE( , minsup);

e Tích hợp trong SPAM

Trang 31

31

Với mã giả của thuật toán SPAM [2], việc tích hợp cấu trúc CMAP vào SPAM [2] để tạo thành thuật toán CM-SPAM [4] được thực hiện trong hàm SEARCH như sau:

- Cho một mẫu chuỗi “pat” (tham số thứ nhất trong SEARCH) được mở rộng theo phép s-extension ( ) hoặc i-extension ( ) với một mục Nếu mục là mục cuối cùng trong mẫu “pat”, và không có mục nào thỏa mãn (tương tự ) thì mẫu mở rộng từ mẫu “pat” với mục

sẽ không thường xuyên và do đó không cần thực hiện phép kết nối của mục với mẫu “pat” để tính độ hỗ trợ của mẫu kết quả (theo Tính chất 1, 2

về sự đồng xuất hiện) Hơn nữa, mục sẽ không được xem xét để tạo ra bất

kỳ mẫu nào được tạo bởi phép mở rộng s-extension hoặc i-extension từ mẫu

“pat” (theo Tính chất 3) Như vậy, sẽ không được thêm vào biến hoặc trước khi gọi đệ quy hàm SEARCH tiếp theo

Mã giả của thuật toán CM-SPAM:

4 If ((mục là mục cuối cùng trong pat) && ) then //tích hợp thêm

5 If (mở rộng s-extension của mẫu pat với mục là thường xuyên)

9 If ((mục là mục cuối cùng trong pat) && ) then //tích hợp thêm

10 If (mở rộng i-extension của mẫu pat với mục là thường xuyên)

Ngày đăng: 12/02/2021, 21:36

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. J. Pei, J. Han, B. Mortazavi-Asl, J. Wang, H. Pinto, Q. Chen, U. Dayal, and M. C. Hsu (2004), “Mining sequential patterns by pattern-growth: The prefixspan approach”, IEEE Transactions on knowledge and data engineering, 16(11), pp. 1424-1440 Sách, tạp chí
Tiêu đề: Mining sequential patterns by pattern-growth: The prefixspan approach”, "IEEE Transactions on knowledge and data engineering
Tác giả: J. Pei, J. Han, B. Mortazavi-Asl, J. Wang, H. Pinto, Q. Chen, U. Dayal, and M. C. Hsu
Năm: 2004
2. J. Ayres, J. Gehrke, T. Yiu, J. Flannick (2002), “Sequential pattern mining using a bitmap representation”, ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 429-435 Sách, tạp chí
Tiêu đề: Sequential pattern mining using a bitmap representation”, "ACM SIGKDD International Conference on Knowledge Discovery and Data Mining
Tác giả: J. Ayres, J. Gehrke, T. Yiu, J. Flannick
Năm: 2002
3. M. J. Zaki (2001), “SPADE: An effcient algorithm for mining frequent sequences”, Machine learning, 42(1-2), pp. 31-60 Sách, tạp chí
Tiêu đề: SPADE: An effcient algorithm for mining frequent sequences”, "Machine learning
Tác giả: M. J. Zaki
Năm: 2001
4. P. Fournier-Viger, A. Gomariz, M. Campos, R. Thomas (2014), “Fast Vertical Mining of Sequential Patterns Using Co-occurrence Information”, The Pacific-Asia Conference on Knowledge Discovery and Data Mining , pp.40-52 Sách, tạp chí
Tiêu đề: Fast Vertical Mining of Sequential Patterns Using Co-occurrence Information”, "The Pacific-Asia Conference on Knowledge Discovery and Data Mining
Tác giả: P. Fournier-Viger, A. Gomariz, M. Campos, R. Thomas
Năm: 2014
5. Philippe Fournier-Viger, Jerry Chun-Wei Lin, Bay Vo, Tin Truong Chi, Ji Zhang, Hoai Bac Le (2017), “A Survey of Itemset Mining”, WIREs Interdisciplinary reviews, Data Mining and Knowledge Discovery Sách, tạp chí
Tiêu đề: A Survey of Itemset Mining
Tác giả: Philippe Fournier-Viger, Jerry Chun-Wei Lin, Bay Vo, Tin Truong Chi, Ji Zhang, Hoai Bac Le
Năm: 2017
6. Philippe Fournier-Viger, Jerry Chun-Wei Lin, Rage Uday Kiran, Yun Sing Koh, Rincy Thomas (2017), “A Survey of Sequential Pattern Mining”, Data Science and Pattern Recognition, 1(1), pp. 54-77 Sách, tạp chí
Tiêu đề: A Survey of Sequential Pattern Mining”, "Data Science and Pattern Recognition
Tác giả: Philippe Fournier-Viger, Jerry Chun-Wei Lin, Rage Uday Kiran, Yun Sing Koh, Rincy Thomas
Năm: 2017
7. R. Agrawal and R. Srikant (1995), “Mining Sequential Patterns”, Proc. of the 11th Int'l Conference on Data Engineering Sách, tạp chí
Tiêu đề: Mining Sequential Patterns”
Tác giả: R. Agrawal and R. Srikant
Năm: 1995
8. R. Srikant, R. Agrawal (1996), “Mining sequential patterns: Generalizations and performance improve-ments”, The International Conference on Extending Database Technology, pp. 1-17 Sách, tạp chí
Tiêu đề: Mining sequential patterns: Generalizations and performance improve-ments”, "The International Conference on Extending Database Technology
Tác giả: R. Srikant, R. Agrawal
Năm: 1996

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w