CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN APRIORI ĐỂ PHÂN TÍCH GIỎ HÀNG CHO CỬA HÀNG TIỆN LỢI WINMART
3.3. CÁC BƯỚC THỰC HIỆN LUẬT KẾT HỢP APRIORI
3.3.4. Chạy dữ liệu trên weka
Weka (viết tắt của Waikato Environment for Knowledge Analysis) là một bộ phần mềm học máy được Đại học Waikato, New Zealand phát triển bằng Java. Weka là phần mềm tự do phát hành theo Giấy phép công cộng GNU
Hình 3.9. Giao diện weka
Theo KDNuggets (2005): Weka là sản phẩm khai thác dữ liệu được sử dụng nhiều nhất và hiệu quả nhất năm 2005.
Những tính năng nổi bật của Weka:
● Hỗ trợ nhiều thuật toán máy học và khai thác dữ liệu.
● Được tổ chức theo dạng mã nguồn mở.
● Độc lập với môi trường ( do sử dụng máy ảo java JVM).
● Dễ sử dụng, kiến trúc dạng thư viện dễ dàng trong việc xây dựng các ứng dụng thực nghiệm.
Các chức năng của Weka:
Các chức năng chính của Weka Explorer thể hiện trong các thẻ (tab) của màn hình chính, bao gồm:
● Preprocess: Cho phép mở, điều chỉnh, lưu một tập tin dữ liệu, thẻ này chứa các thuật toán áp dụng trong tiền xử lý dữ liệu.
● Classify: Cung cấp các mô hình phân loại dữ liệu hoặc hồi quy.
● Cluster: Cung cấp các mô hình gom cụm.
● Associate: Khai thác tập phổ biến và luật kết hợp.
45
● SelectAttribites: Lựa chọn các thuộc tính thích hợp nhất trong 1 tập dữ liệu.
● Visualize: Thể hiện dữ liệu dưới dạng biểu đồ.
Hình 3.10. Chức năng chính của Weka Sử dụng thẻ Preprocess
● Open file...: Mở một tập tin dữ liệu.
● Edit...: Hiển thị và chỉnh sửa dữ liệu bằng tay nếu cần thiết.
● Save...: Lưu dữ liệu hiện tại ra tập tin. Weka Explorer hỗ trợ một số định dạng trong đó có 2 định dạng chính cần quan tâm là *.arff và *.csv
● Filter: Các tác vụ tiền xử lý được gọi là các bộ lọc( thuật toán)
● Selected attribute: Thông tin về thuộc tính đang được chọn:
● Type: Kiểu dữ liệu của thuộc tính (Numeric: Dạng số, Nominal: Dạng rời rạc/phi số).
+ Missing: Số mẫu thiếu giá trị trên thuộc tính đang xét.
+ Distinct: Số giá trị phân biệt.
+ Unique: Số mẫu không có giá trị trùng với mẫu khác.
+ Bảng thống kê bao gồm:
■ Dạng phi số: Thể hiện các giá trị và tần suất của mỗi giá trị
■ Dạng số: Thể hiện một số đại lượng thống kê như giá trị nhỏ nhất, lớn nhất, giá trị trung bình và độ lệch chuẩn
3.3.4.2. Khai phá dữ liệu bằng thuật toán Apriori trong weka Import dữ liệu
Dữ liệu được đưa vào bài toán là tập dữ liệu giỏ hàng với 199 mẫu đã đề cập trước đó. Trước tiên mở Weka, chọn Explorer, chọn Open file, dữ liệu được đưa vào là file data_chuan_apriok.csv. Khi chọn được bộ dữ liệu, màn hình hiển thị như sau:
Hình 3.11. Import thành công file data_chuan_apriok.csv.
Chuẩn bị dữ liệu
Sau khi import được data vào, cần tiền xử lý dữ liệu. Ta cần loại bỏ các mặt hàng ít xuất hiện: Các mặt hàng chỉ xuất hiện trong một vài giỏ hàng có thể làm giảm độ chính xác của thuật toán Apriori. Có thể loại bỏ các mặt hàng xuất hiện trong ít hơn một ngưỡng nhất định, trong bài toán này nhóm tác giả loại bỏ những mặt hàng có số lần xuất hiện < 5% tổng số giỏ hàng.
47
Hình 3.12. File data đã được làm sạch Cấu hình thuật toán Apriori
Sau khi đã tiền xử lý dữ liệu, tiến hành xây dựng mô hình trên tập file. Để xây dựng mô hình Apriori, cần mở cửa sổ Associate và chọn mô hình thuật toán Apriori.
Hình 3.13. Thuật toán Apriori Sau đó, thiết lập thông số MinSupp, minMetric, numRules
Hình 3.14. Thiết lập tham số Sau khi đã thiết lập xong, chọn Ok để chạy bài toán
Với Minsupp = 2%, minconf = 50% ta nhận được 13 luật ( sắp xếp giảm dần theo confidence):
1. tropical fruit yogurt => whole milk <conf:(0.71)> ⋀
2. citrus fruit rolls/buns => whole milk <conf = 70%> ⋀ 3. root vegetables tropical fruit => whole milk <conf:(0.67)> ⋀
4. vegetables ⋀ soda => whole milk <conf:(0.64)>
5. root vegetables => whole milk=YES 22 <conf:(0.63)>
49
6.citrus fruit other vegetables => rolls/buns <conf:(0.57) ⋀ 7.root vegetables yogurt => whole milk <conf:(0.56)> ⋀
8. sausage => rolls/buns <conf:(0.55)>
9.rolls/buns ⋀ yogurt=> whole milk <conf:(0.55)>
10. vegetables root vegetables => whole milk ⋀ <conf:(0.53)>
11. tropical fruit => whole milk=YES 16 <conf:(0.52)>
12. sausage whole milk => rolls/buns ⋀ <conf:(0.5)>
13. sausage soda => rolls/buns ⋀ <conf:(0.5)>
Hình 3.15. Kết quả bài toán với Minsupp = 2%, minconf = 50%
Tương tự với Minsupp = 2%, minconf = 60% ta nhận được 5 luật như trong hình 3.16
Hình 3.16. Kết quả bài toán với Minsupp = 2%, minconf = 60%
Tương tự với Minsupp = 2%, minconf = 70% ta nhận được 1 luật như trong hình 3.17
Hình 3.17. Kết quả bài toán với Minsupp = 2%, minconf = 70%
Với Minsupp = 2%, minconf = 80% ta không thu được luật nào
Hình 3.18. Kết quả bài toán với Minsupp = 2%, minconf = 80%
Với việc đặt minsup = 2 và trong các trường hợp conf = 0,5, điều này sẽ tìm ra các tập phổ biến gồm hai sản phẩm có độ tin cậy cao. Là các sản phẩm thường được mua cùng nhau.
51
Tuy nhiên với bài toán phân tích giỏ hàng, các yêu cầu không chỉ dừng lại ở việc đưa ra các mặt hàng thường được mua cùng nhau mà còn có thể phân tích thêm để tìm ra các sản phẩm có liên quan đến nhau. Ta cũng có thể tìm ra các sản phẩm có nhu cầu cao. Cụ thể
● Để tìm các sản phẩm có liên quan đến nhau có thể đặt minsup = 1% và min conf = 20%. Điều này sẽ tìm ra các tập phổ biến gồm hai sản phẩm có độ tin cậy thấp hơn.
Hình 3.19. Kết quả bài toán với Minsupp = 1%, minconf = 20%
Giá trị của minsup và minconf phụ thuộc vào nhu cầu và mục đích của người dùng. Giá trị minsup càng cao thì số lượng tập phổ biển được tìm thấy sẽ càng ít, nhưng các tập phổ biến này sẽ có độ tin cậy cao hơn. Ngược lại, giá trị minsup càng thấp thì số lượng tập phổ biến được tìm thấy sẽ càng nhiều, nhưng các tập phổ biến này sẽ có độ tin cậy thấp hơn.