ÁP DỤNG THUẬT TOÁN

Một phần của tài liệu Ứng dụng thuật toán EFIM để khai phá tập mục hữu ích cao từ cơ sở dữ liệu bán hàng tại siêu thị co opmart quảng ngãi (Trang 44)

7. Bố cục luận văn

2.6.ÁP DỤNG THUẬT TOÁN

Dựa vào dữ liệu bảng 2.1 và bảng 2.2 với minutil = 30. Áp dụng thuật toán EFIM như sau:

* Các bước thực hiện thuật toán 1

1. Xét α = 

2. Giá trị lu(α, i) của các mục sử dụng mảng utility-bin, kết quả lu(α, i) bằng giá trị TWU trong bảng 2.6: lu(α, A) = 65, lu(α, B) = 61, lu(α, C) = 96, lu(α, D) = 58, lu(α, E) = 88, lu(α, F) = 30, lu(α, G) = 38

3. Secondary(α) = {A, B, C, D, E, F, G}

4. Sắp xếp TWU theo thứ tự tăng dần: F ≺ G ≺ D ≺ B ≺ A ≺ E ≺ C 5. Duyệt D, xóa những mục không có trong Secondary(α)

Bảng 2.6. CSDL sau khi sắp xếp các giao tác TID Transactions T3 (F,5)(D,2)(B,6)(A,1)(E,1)(C,1) T2 (G,5)(A,2)(C,6) (E,2) T4 (D,3)(B,4) (C,3) (E,1) T5 (G,2)(B,2) (C,2) (E,1) T1 (D,1)(A,1)(C,1)

7. Duyệt D tính giá trị hữu ích cây con của các tập mục đối với α: su(α, A) = 65, su(α, B) = 56, su(α, C) = 54, su(α, D) = 25, su(α, E) = 27, su(α, F) = 5, su(α, G) = 7

8. Primary(α) = {B, A, C}, tức là đào sâu 3 nhánh α  B, α  A, α  C và mỗi nhánh xét các nút con trong Secondary(α).

9. Áp dụng thuật toán 2 để tìm kiếm theo chiều sâu.

* Các bước thực hiện thuật toán 2

1. Kiểm tra các mục trong B, A, C trong Primary(α) 2. Xét β = A

3. Duyệt D để tính u(β) và tạo ra CSDL tham chiếu {A} – D, hợp nhất các giao tác giống nhau trong CSDL tham chiếu.

Bảng 2.7. Hợp nhất giao tác trong CSDL tham chiếu {A} – D

TID Transaction

T23 (E, 3)(C, 7) T1 (C, 1)

4. u(A) = 20 < minutil, mục A không là mục hữu ích cao, duyệt {A} – D tính ràng buộc lu, su của các mục trong trong E(α)

5. Primary(β) = {E} 6. Secondary(β) = {C, E}

7. Đào sâu nhánh β  {E} và xét nút {C, E}.

Thực hiện hàm tìm kiếm, kết quả của thuật toán xuất ra các tập mục hữu ích cao trong CSDL giáo tác D:

Bảng 2.8. Tập mục hữu ích cao Itemset Utility {B, D} 30 {A, C, E} 31 {B, C, D} 34 {B, C, E} 31 {B, D, E} 36 {B, C, D, E} 40 {A, B, C, D, E, F} 30 2.7. KẾT CHƯƠNG 2

Hiện nay có nhiềukỹ thuật và thuật toán ứng dụng trong khai phá tập mục hữu ích cao. Tuy nhiên, tốn kém về mặt chi phí kể cả tiêu thụ bộ nhớ và thời gian thực hiện nên có nhiều thuật toán cải tiến hiệu quả trong khai phá tập mục hữu ích cao về bộ nhớ và thời gian thực hiện. Nội dung trong chương 2 trình bày thuật toán EFIM và các định nghĩa liên quan như: Giá trị hữu ích cây con và giá trị hữu ích cục bộ để tỉa không gian tìm kiếm. Thuật toán còn dựa vào cách tiếp cận mảng utility-bin để tính toán nhanh các ràng buộc. Hơn nữa, để giảm chi phí quét CSDL, EFIM giới thiệu hai kỹ thuật CSDL tham chiếu và hợp nhất giao tác để thực hiện theo thời gian và không gian.

CHƯƠNG 3

CÀI ĐẶT THUẬT TOÁN EFIM VÀ ỨNG DỤNG KHAI PHÁ DỮ LIỆU BÁN HÀNG

3.1. GIỚI THIỆU HỆ THỐNG SIÊU THỊ

Năm 1996 hệ thống siêu thị Co.opMart ra đời, với sự giúp đỡ của các phong trào hợp tác xã quốc tế đến từ Nhật, Singapore và Thụy Điển. Từ đấy loại hình kinh doanh bán lẻ mới, văn minh phù hợp với xu hướng phát triển của Thành phố Hồ Chí Minh đánh dấu chặng đường mới của siêu thị [16]. Hiện nay Co.opMart đã mở rộng hệ thống siêu thị trên toàn quốc, có một vị thế khá vững mạnh trên thị trường bán lẻ Việt Nam nói chung và tại Quảng Ngãi nói riêng.

Siêu thị Co.opMart Quảng Ngãi hoạt động vào 09/07/2010, với diện tích trên 7.000 m2 gồm 1 hầm, 1 trệt và 1 lầu với tổng số vốn đầu tư hơn 60 tỷ đồng. Siêu thị kinh doanh trên 20.000 mặt hàng trong đó hơn 90% là hàng sản xuất tại Việt Nam thuộc các nhóm hàng công nghệ, thực phẩm tươi sống, chế biến nấu chín, đông lạnh, hóa mỹ phẩm, may mặc, đồ dùng, đồ chơi, hàng lưu niệm… Bên cạnh đó, Co.opMart Quảng Ngãi còn phục vụ những loại hình kinh doanh khác như khu ẩm thực Co.opMart, khu bán hàng thời trang cao cấp, sân chơi trẻ em,… Với nhiều quầy tính tiền đảm bảo phục vụ khách hàng nhanh chóng, kịp thời, Co.opMart Quảng Ngãi còn cung cấp các dịch vụ tiện ích như: Máy rút tiền tự đồng, gói quà miễn phí, đặt hàng qua điện thoại, giao hàng tận nơi,… Co.opMart Quảng Ngãi có hệ thống trang thiết bị hiện đại, kho đông, kho mát đúng tiêu chuẩn, hệ thống phòng cháy chữa cháy đảm bảo an toàn cho khách hàng đến tham quan mua sắm.

Với thiết kế văn minh, hiện đại kết hợp với các loại hình thương mại dịch vụ đa dạng. Sau nhiều năm hoạt động Co.opMart Quảng Ngãi đã xây dựng hình ảnh khá gần gũi quen thuộc với người tiêu dùng bằng các đội ngũ nhân viên, dịch vụ hỗ trợ và hệ thống cung ứng khá hoàn thiện đảm bảo số lượng, chất lượng và giá cả hàng hóa tốt nhất để đáp ứng các nhu cầu mua sắm, tham quan và giải trí của mọi người. Hiện nay Co.opMart Quảng Ngãi đang chú trọng triển khai các hoạt động bán hàng hiệu quả, nâng cao năng lực và trình độ chuyên môn cho nhân viên và

tăng cường thiết kế chương trình tiếp thị để nâng cao hiệu quả.

Tuy nhiên, qua khảo sát cho thấy có một số hạn chế ảnh hưởng đến hoạt động kinh doanh của siêu thị:

- Siêu thị đưa khá nhiều mặt hàng mới vào thị trường tuy nhiên do chưa tìm hiểu kỹ nhu cầu của người tiêu dùng nên một số sản phẩm ít người tiêu dùng lựa chọn, điều này dẫn đến một số hàng tồn kho tăng lên. (adsbygoogle = window.adsbygoogle || []).push({});

- Siêu thị chưa có chiến lược kinh doanh hiệu quả.

- Chưa xác định mặt hàng nào bán kèm với mặt hàng nào sẽ mang lợi nhuận cao, do đó chưa có chương trình khuyến mãi phù hợp.

3.2. GIẢI PHÁP KHAI PHÁ TẬP MỤC HỮU ÍCH CAO TỪ CƠ SỞ DỮ LIỆU BÁN HÀNG TẠI SIÊU THỊ LIỆU BÁN HÀNG TẠI SIÊU THỊ

Với lượng lớn các mặt hàng kinh doanh trong siêu thị trong những năm qua, siêu thị cần có một phương pháp phân tích các mặt hàng một cách chính xác để đánh giá lợi nhuận của từng mặt hàng.Trong thực tế thì khách hàng khi mua một sản phẩm A thì thường hay có xu hướng tiếp tục mua tiếp các sản phẩm B, C, D,… nên siêu thị cần phải xác định được những mặt hàng bán với số lượng nhiều nhưng lợi nhuận thấp, có những mặt hàng bán số lượng ít nhưng lợi nhuận cao và có những mặt hàng bán với số lượng nhiều mang lợi nhuận cao. Từ đó người quản lý sẽ vạch ra các giải pháp, định hướng trong kinh doanh nhằm doanh thu bán hàng.

Giải pháp sử dụng thuật toán EFIM trong khai phá tập mục hữu ích cao để khai phá các nhóm mặt hàng trong các giao dịch của siêu thị Co.opMart Quảng Ngãi tạo ra nhiều lợi nhuận nhất trong khoảng thời gian nhất định. Một CSDL chứa thông tin tiện ích như các mặt hàng có số lượng, lợi nhuận. Khai phá tập mục hữu ích cao có thể xử lý được lượng lớn dữ liệu với tốc độ xử lý nhanh và tính chính xác cao.

3.3. THU THẬP VÀ XỬ LÝ DỮ LIỆU

3.3.1. Một số vấn đề liên quan đến lợi nhuận cao

Yếu tố ảnh hưởng đến lợi nhuận cao hay thấp của từng mặt hàng là dựa vào số lượng và lợi nhuận của từng mặt hàng mà siêu thị quy định, nghĩa là bán với số lượng nhiều cộng với độ lợi nhuận càng cao thì thu về tiền lời càng lớn (lợi nhuận).

Ví dụ: Bán được 1 cái tủ lạnh lời 100 nghìn, bán 1 máy tính lời 200 nghìn,…

Giá trị hữu ích của mỗi mặt hàng trong hóa đơn bán hàng ký hiệu u(X, Td) là tích số lượng và lợi nhuận của từng mặt hàng do siêu thị quy định.

u(X, Td) = SL(X, Td) * P(X)

Với: + SL(X, Td) là số lượng bán của mặt hàng X trong hóa đơn Td + P(X) là lợi nhuận của mặt hàng X

Giá trị hữu ích của mặt hàng X trong toàn bộ CSDL bán hàng ký hiệu u(X) là tổng giá trị hữu ích của mặt hàng X trong hóa đơn bán hàng.

u(X) = ∑𝑋∈𝑇𝑑˄𝑇𝑑∈𝐷𝑢(𝑋, 𝑇𝑑)

Các mặt hàng bán kèm với nhau mang lại lợi nhuận cao nếu giá trị hữu ích của mặt hàng lớn hơn hoặc bằng giá trị hữu ích tối thiểu minutil cho trước.

u(X) ≥ minutil

3.3.2. Thu thập và xử lý dữ liệu

Dữ liệu lấy từ siêu thị Co.opMart Quảng Ngãi và dựa vào hóa đơn bán hàng. Một hóa đơn tương ứng với một giao dịch của khách hàng, mua với nhiều mặt hàng và số lượng khác nhau. Ví dụ giao dịch T1: Khách hàng mua bánh mì, sữa tươi vinamilk với số lượng lần lượt 10, 4. Trong siêu thị có 20000 mặt hàng, mỗi mặt hàng có nhiều loại hàng khác nhau nên dữ liệu thu thập và xử lý chỉ khảo sát vào năm 2016 với 25 loại mặt hàng và 1000 hóa đơn bán hàng tương ứng với 1000 bảng ghi. Danh sách 25 mặt hàng được thu thập và mô tả trong bảng 3.1:

Bảng 3.1. Danh sách các mặt hàng

Số TT Tên mặt hàng Mô tả

1 Duong Đường kính trắng nhà máy đường Quảng Ngãi 2 Vinamilk Sữa tươi Vinamilk 100%

3 G7 Cà phê Trung Nguyên G7 4 MiTomH Mì tôm Hảo Hảo

5 BimO Bim bim của Oishi

6 Coca Nước ngọt Coca

Số TT Tên mặt hàng Mô tả

8 RuouVK Rượu Vodka Hà Nội 9 NguCNL Sữa ngũ cốc của Nestle

10 YenMQK Bột yến mạch Quaker nhập khẩu từ Mỹ 11 Simply Dầu đậu nành Simply

12 Knorr Hạt nem Korr

13 BotNAJ Bột ngọt Aji-No-Moto 14 NuocTM Nước tương Maggi 15 ChaoBM Chao Bông Mai 16 NuocMN Nước mắm Nam ngư 17 BanCPS Bàn chải đánh răng P/S 18 KemPS Kem đánh răng P/S 19 Omo Bột giặt OMO Comfort 20 NuocRCS Nước rửa chén Sunlight 21 SuaTamL Sữa tắm Lifebuoy 22 XaVaiC Nước xả vải Comfort 23 DauGR Dầu gội Rejoice 24 NuocHCh Nước hoa Chanel 25 TaHG Tả quần em bé Huggies

Dữ liệu sau khi thu thập sẽ được làm sạch để loại bỏ những dữ liệu không cần thiết, dư thừa. Kết quả sau khi làm sạch và dữ liệu được chuyển đổi sang định dạng trong file CSV thể hiển trong hình 3.1. (adsbygoogle = window.adsbygoogle || []).push({});

Dữ liệu trong hình 3.1. được biểu diễn gồm nhiều dòng và nhiều cột mỗi qua thuộc tính tên hàng và số lượng bán ra. Mỗi cột tương ứng với tên mặt hàng, mỗi dòng tương ứng với một giao tác gồm số lượng (giá trị hữu ích nội) mua của khách hàng. Mặt hàng nào không mua sẽ được biểu diễn là 0.

41

Giá trị hữu ích của các tập mục được xác định thông qua giá trị hữu ích ngoại, chính là bảng lợi nhuận của từng mặt hàng do siêu thị quy định.

Bảng 3.2. Lợi nhuận của từng mặt hàng

Mặt hàng Lợi nhuận (nghìn) Duong 1 Vinamilk 2 G7 2 MiTomH 1 BimO 1 Coca 2 BanhMi 1.5 RuouVK 5 NguCNL 2 YenMQK 5 Simply 4 Knorr 2 BotNAJ 3 NuocTM 1.5 ChaoBM 1.5 NuocMN 4 BanCPS 1 KemPS 2 Omo 4 NuocRCS 2 SuaTamL 2 XaVai 2.5 DauGR 3 NuocHCh 30 TaHG 2.5

3.4. CÀI ĐẶT THUẬT TOÁN

cần có các lớp dữ liệu sau:

3.4.1. Lớp Item

Lớp Item được dùng để mô tả các mục, được lưu trữ dưới dạng tên các mặt hàng, mỗi mặt hàng được xem là một mục trong CSDL giao tác.

public class Item{ private int id;

private String itemName; public Item() { } ………}

3.4.2. Lớp Transaction

Lớp Transaction sẽ khởi tạo danh sách các giao tác trong CSDL, mỗi giao tác lưu trữ tên và số lượng của các mặt hàng.

public class Transaction{

private Map<Item,Integer> itemList; public Transaction() {

itemList = new HashMap<>(); }

public void addItem(Item item, int quantity){ itemList.put(item,quantity);

}

public Map<Item, Integer> getItemList() { return itemList;

}}

3.4.3. Lớp DataAssistant

Lớp DataAssistant lưu trữ giao tác trong CSDL giao tác. Lớp này có nhiệm vụ lấy dữ liệu đọc được từ file CSV đổ vào các đối tượng trong giao tác, từ đó xử lý thông qua đối tượng.

public class DataAssistant { private String profitPath;

private String transactionPath; ……….. }

3.4.4. Lớp EFIM

Lớp EFIM dùng để thực hiện thuật toán và trả về kết quả danh sách các tập mục hữu ích cao.

public class AlgoEFIM {

public Itemsets runAlgorithm(int minUtil, String inputPath, String outputPath, boolean activateTransactionMerging, int maximumTransactionCount, boolean activateSubtreeUtilityPruning) ;

……… }

3.5. THỬ NGHIỆM CHƯƠNG TRÌNH (adsbygoogle = window.adsbygoogle || []).push({});

Chương trình thử nghiệm được thực hiện trên máy tính Dell core i7, 64 bit, Ram 8GB.

➢ Giao diện đăng nhập hệ thống: Người dùng đăng nhập với tên đăng nhập và mật khẩu riêng để đăng nhập vào hệ thống.

➢ Giao diện chính: Có 2 chức năng đó là Dữ liệu đầu vào và Kết quả

Hình 3.3. Giao diện chính

➢ Dữ liệu đầu vào gồm:

- Đầu tiên chọn nút Chọn dữ liệu giao tác để nạp CSDL giao tác bán hàng (dữ liệu là file excel có đuôi mở rộng là *.xls hoặc CSV) như hình 3.3.

- Thứ hai chọn nút Chọn dữ liệu lợi ích để nạp giá trị hữu ích ngoại chính là bảng lợi nhuận của từng mặt hàng.

- Tiếp theo là nhập giá trị hữu ích vào min_util.

Phần chọn thuật toán gồm 2 thuật toán FHM và EFIM, sau khi khai phá hệ thống sẽ phát sinh ra các tập mục và xuất ra kết quả những mặt hàng đem lại lợi nhuận cao và lưu kết quả vào trong CSDL.

➢ Kết quả gồm: Tốc độ xử lý và kết quả thuật toán

- Phần tốc độ xử lý hiển thị số tập mục đã chạy, số tập mục hữu ích cao, thời gian xử lý và dung lượng bộ nhớ mà 2 thuật toán đã sử dụng.

- Phần kết quả thuật toán hiển thị tên các tập mục hữu ích cao.

Kết quả hình 3.3 cho thấy với độ hữu ích min_util = 30000 thì cả hai thuật toán FHM và EFIM hiển thị số tập mục hữu ích cao là 1455.

➢ Xuất file kết quả: Nhấn nút “Lưu kết quả” để lưu các mặt hàng bán kèm với nhau đem lại lợi nhuận cao, dữ liệu được lưu dưới dạng file CSV như hình 3.4.

Hình 3.4. Kết quả các mặt hàng có giá trị lợi nhuận cao

3.6. ĐÁNH GIÁ THUẬT TOÁN

Để đánh giá hiệu suất của thuật toán EFIM, tôi đã so sánh thuật toán EFIM với thuật toán khai phá tập mục hữu ích cao FHM trên cùng dữ liệu đầu vào và giá trị minutil lần lượt là 25000, 30000 và 35000, 37000 và so sánh 2 thuật toán qua 4 vấn đề sau: Kết quả đầu ra, thời gian thực thi, dung lượng bộ nhớ và số nút tìm kiếm.

3.6.1. Kết quả đầu ra

Sau khi thực hiện 2 thuật toán trên cùng bộ dữ liệu với giá trị min_util như nhau, kết quả đầu ra cho thấy số lượng tập mục hữu ích cao và các mặt hàng bán kèm với nhau của 2 thuật toán là giống nhau.

Bảng 3.3. Kết quả trả về của hai thuật toán

min_util= 25000 min_util = 30000 min_util = 35000 min_util = 37000

EFIM 26771 1455 40 5

FHM 26771 1455 40 5

3.6.2. Thời gian thực hiện

Sau khi chạy 2 thuật toán trên cùng bộ dữ liệu, cùng một giá trị min_util, kết quả cho thấy thời gian thực hiện của thuật toán EFIM nhanh hơn nhiều so với EHM

cụ thể như: FHM sử dụng gấp 15, 9.1, 7.6, 15.8 lần so với EFIM. Kết quả so sánh thời gian của 2 thuật toán được thể hiện trong hình 3.5.

Hình 3.5. Thời gian thực hiện của hai thuật toán

3.6.3. Sử dụng bộ nhớ

Thuật toán EFIM sử dụng bộ nhớ tốt hơn, ít tốn dung lượng hơn so với thuật toán FHM tương ứng với min_util cụ thể như sau: FHM sử dụng gấp 1.6, 2,4, 6.3, 3.6 lần so với EFIM. Kết quả so sánh bộ nhớ của 2 thuật toán thể hiện trong hình 3.6.

3.6.4. Tìm kiếm nút (adsbygoogle = window.adsbygoogle || []).push({});

Ngoài việc so sánh về kết quả, thời gian và bộ nhớ thì EFIM còn vượt trội về khả năng cắt tỉa. Khi chạy trên 4 giá trị min_util khác nhau cho thấy số nút tìm kiếm trên cây của thuật toán EFIM ít hơn FHM, điều này có nghĩa việc cắt tỉa trong không gian tìm kiếm của EFIM có hiệu quả hơn so với thuật toán FHM. Kết quả so sánh số nút tìm kiếm của 2 thuật toán trong hình 3.7.

Hình 3.7. Số nút tìm kiếm của 2 thuật toán

Một phần của tài liệu Ứng dụng thuật toán EFIM để khai phá tập mục hữu ích cao từ cơ sở dữ liệu bán hàng tại siêu thị co opmart quảng ngãi (Trang 44)