Dựa trên việc khảo sát hoạt động kinh doanh và dữ liệu của một nhà hàng để đưa ra các vấn đề hỗ trợ quá trình kinh doanh và hỗ trợ nhà quản lý ra quyết định, từ đó nghiên cứu và ứng dụ
TỔNG QUAN VỀ ĐỀ TÀI
Hình thành vấn đề
1.1.1 Thực trạng nghiên cứu ứng dụng kỹ thuật phát hiện tri thức và khai phá dữ liệu (KDD – Knowledge Discovery and Data Mining)
Kỹ thuật phát hiện tri thức và khai phá dữ liệu (hay gọi ngắn gọn là Data mining) đã và đang được nghiên cứu, ứng dụng trong nhiều lĩnh vực khác nhau như ngân hàng, bảo hiểm, quản trị doanh nghiệp,…ở khắp các nước trên thế giới Đã có rất nhiều các công trình nghiên cứu được xây dựng dựa trên các kỹ thuật cơ bản dùng để khai phá và phát hiện tri thức như khai phá luật kết hợp, gom cụm (Clustering), phân lớp (Classification)
KDD là một lĩnh vực nghiên cứu không mới trên thế giới, có lịch sử phát triển gần như cùng với sự phát triển của các thuật toán trí tuệ nhân tạo trong công nghệ thông tin từ những năm 1960 Tuy nhiên, do nhiều yếu tố khách quan về công nghệ, cơ sở hạ tầng và quy mô trong cơ cấu tổ chức, mà KDD chỉ mới thực sự bắt đầu được các doanh nghiệp, các nhà khoa học Việt Nam quan tâm trong những năm gần đây
1.1.2 Tình hình quản trị doanh nghiệp
Cùng với sự phát triển vượt bậc của công nghệ phần cứng máy tính cũng như cơ sở hạ tầng viễn thông trên toàn thế giới, ngày càng có nhiều doanh nghiệp triển khai áp dụng hệ thống thông tin vào trong công tác quản lý ở mọi cấp độ từ các bộ phận tác nghiệp đến trung tâm điều hành cao nhất, mà ta tạm gọi các hệ thống này là Hệ thống thông tin quản lý Điển hình nhất là hệ thống ERP (Enterprise Resource Planning), một hệ thống mà các doanh nghiệp Việt Nam hiện nay đang có nhu cầu triển khai rất lớn Bao quát thị trường ERP tại Việt Nam trong hai, ba năm trở lại đây, ông Srinivas Rao Adimulam, Tổng giám đốc SAP Việt Nam, cho biết: “ERP là nền tảng để ứng dụng các giải pháp khác Trước đây là làn sóng thứ nhất, các doanh nghiệp (DN) triển khai ERP ở những lĩnh vực như tài chính, bán hàng, nhân sự, quản lý kho Hiện nay, Việt Nam đang bước vào làn sóng đầu tư thứ hai sau khi đã có các nền tảng từ làn sóng đầu tư thứ nhất Trên nền tảng đó họ xây dựng các ứng dụng tích hợp mới như Business Intelligence (BI); lên kế hoạch, ngân sách; quản lý rủi ro; vấn đề tuân thủ pháp luật ” [1]
BI (Business Intelligence) là qui trình và công nghệ mà các doanh nghiệp dùng để kiểm soát khối lượng dữ liệu khổng lồ, khai phá tri thức giúp cho các doanh nghiệp có thể đưa các các quyết định hiệu quả hơn trong hoạt động kinh doanh của mình Mục đích của BI là hỗ trợ cho doanh nghiệp ra quyết định tốt hơn
Vì vậy một hệ thống BI (BI system) có thể xem là hệ thống hỗ trợ quyết định (Decision Support System - DSS) cho lĩnh vực kinh doanh [2]
BI có mối liên hệ rất chặt chẽ với kho dữ liệu (Data warehouse) và khai phá dữ liệu (Data mining) Hệ thống BI đơn giản có thể được xem là sự kết hợp của 3 thành phần chính như sau [2] :
Hình 1.1 Các thành phần của một hệ thống BI đơn giản
Theo khảo sát của Gartner từ năm 2006 đến 2009, công nghệ BI luôn đứng đầu trong bảng xếp hạng ưu tiên đầu tư về công nghệ của các CIO trên thế giới Năm 2010 và 2011 thì BI xếp hạng 5
Enterprise applications (ERP, CRM and others) 2 2 2 **
Networking, voice and data communications 6 7 6 2
Service-oriented applications and architecture 9 10 7 6
Bảng 1.1 Thứ tự ưu tiên về nhu cầu công nghệ của CIO trên thế giới
Nguồn: http://www.gartner.com
1.1.3 Lý do chọn đề tài
Xuất phát từ nhu cầu triển khai BI trong các doanh nghiệp mà nền tảng của
BI là khai phá dữ liệu, bên cạnh đó các thuật toán kinh điển trong khai phá dữ liệu không phải ứng dụng vào bất cứ dữ liệu hay lĩnh vực kinh doanh nào cũng mang lại hiệu quả tối ưu và cũng giải quyết được các bài toán Do đó, việc nghiên cứu và ứng dụng các mô hình lý thuyết cho từng bài toán cụ thể của doanh nghiệp là một vấn đề cần thiết Trong quá trình khảo sát, tác giả nhận thấy chưa có nhiều nghiên cứu và ứng dụng data mining vào lĩnh vực nhà hàng trong việc khai phá các món ăn để tìm ra các combo (sự kết hợp giữa hai món ăn hoặc là một món ăn với thức uống) hoặc set menu có cơ sở
Bên cạnh đó, trước đây khoa học về thống kê dự báo được khai thác trên các tập dữ liệu rời rạc, không có mối liên hệ, sau này phát triển ở mức cao hơn là tập hợp dữ liệu theo một cấu trúc nào đó (được gọi là cơ sở dữ liệu), điển hình là theo cấu trúc quan hệ dựa trên nền tảng lý thuyết tập hợp mà ta gọi là mô hình cơ sở dữ liệu quan hệ Cấu trúc của cơ sở dữ liệu (CSDL) có ưu điểm là chặt chẽ do phải thoả mãn các dạng chuẩn (các ràng buộc) và ưu điểm này có lợi khi quản trị dữ liệu nhưng đối với khai thác dữ liệu thì đó là nhược điểm vì do quá chặt chẽ nên làm chậm quá trình khai thác, rút trích dữ liệu và càng khó khăn hơn trên khối lượng dữ liệu rất lớn là đặc trưng trong khai phá dữ liệu (data mining) Vì vậy kho dữ liệu (Data warehouse) ra đời nhằm giúp hỗ trợ tối đa cho quá trình khai phá dữ liệu Do đó, việc chuyển chuyển CSDL thu thập được về dạng kho dữ liệu, cụ thể hơn là các data mart (sẽ được trình bày trong chương 2) để phục vụ quá trình data mining cũng là điều cấp thiết
Nhận biết được xu thế và nhu cầu cấp thiết trên tác giả thực hiện đề tài
“NGHIÊN CỨU VÀ TRIỂN KHAI ỨNG DỤNG CÁC MÔ HÌNH LÝ THUYẾT TRONG DATA MINING VÀO LĨNH VỰC NHÀ HÀNG” với mong muốn được đóng góp vào lĩnh vực KDD và sự thành công của việc triển khai ứng dụng các kết quả nghiên cứu khoa học vào hỗ trợ ra quyết định trong lĩnh vực nhà hàng tại Việt Nam.
Phạm vi nghiên cứu
- Các công cụ lý thuyết trong khai phá dữ liệu
- Các phương pháp thu thập, lưu trữ và xử lý dữ liệu
- Mô hình của bài toán khai phá dữ liệu lĩnh vực thống kế dự báo nói chung và khai phá dữ liệu nói riêng
1.2.2 Không gian và thời gian thực hiện
- Không gian: đề tài thực hiện trong phạm vi nước Việt Nam
- Thời gian thực hiện nghiên cứu trong 5 tháng (từ tháng 7/2012 đến tháng 11/2012).
Quy trình và phương pháp nghiên cứu
- Xây dựng kho dữ liệu, song song đó tìm hiểu các thuật toán cơ bản và các mô hình lý thuyết
- Từ việc khảo sát dữ liệu, nhận biết và đưa ra các bài toán hữu ích trong hoạt động kinh doanh nhà hàng
- Trích các data mart phù hợp với mỗi bài toán
- Nhận dạng bài toán, nghiên cứu mô hình lý thuyết phù hợp với mỗi bài toán
- Kiểm định và đánh giá kết quả
- Phương pháp nghiên cứu định tính: Sử dụng nghiên cứu mô tả, khám phá các khái niệm, thuật ngữ, giải thích mối quan hệ tương tác giữa các yếu tố, nhằm cung cấp một cái nhìn toàn diện về bài toán nghiên cứu
- Phương pháp nghiên cứu định lượng: Dựa trên nghiên cứu định tính, nghiên cứu định lượng sẽ lượng hóa được thông tin dựa trên các biến quan sát
- Phương pháp nghiên cứu dữ liệu thứ cấp: Được sử dụng trong giai đoạn hình thành mô hình
Với các phương pháp trên ta sẽ đi vào phần chính của đề tài là phân tích cơ sở dữ liệu, đưa ra các vấn đề trong hoạt động kinh doanh lĩnh vực nhà hàng, nghiên cứu và ứng dụng các mô hình lý thuyết trong data mining, thử nghiệm và đánh giá các mô hình đã xây dựng.
Mục tiêu nghiên cứu
- Xây dựng mô hình kho dữ liệu từ CSDL thu thập được để phục vụ việc khai phá dữ liệu cho các bài toán
- Dựa trên việc khảo sát hoạt động kinh doanh và dữ liệu của một nhà hàng để đưa ra các vấn đề hỗ trợ quá trình kinh doanh và hỗ trợ nhà quản lý ra quyết định, từ đó nghiên cứu và ứng dụng các mô hình lý thuyết trong khai phá dữ liệu để áp dụng phù hợp vào các bài toán đã đưa ra
- Triển khai các ứng dụng cài đặt các mô hình đã nghiên cứu, đồng thời cũng là một công cụ giúp nhà quản lý dễ dàng thao tác để thống kê, phân tích dữ liệu và hỗ trợ ra quyết định phục vụ cho các hoạt động kinh doanh cụ thể.
Ý nghĩa đề tài
- Cách xây dựng mô hình kho dữ liệu nói chung và cụ thể là các data mart theo chủ đề nói riêng từ CSDL thu thập được làm nguồn tham khảo cho các đối tượng làm thống kê dự báo
- Nghiên cứu các mô hình lý thuyết trong kỹ thuật khai phá dữ liệu áp dụng cho từng vấn đề đặt ra của doanh nghiệp để hỗ trợ nhà quản lý ra quyết định là nền tảng của hệ thống BI Đồng thời là nguồn tham khảo cho nghiên cứu về ứng dụng các mô hình trong KDD ở lĩnh vực nhà hàng
- Xây dựng chương trình cài đặt các mô hình đã nghiên cứu giúp người quản trị doanh nghiệp là những người không chuyên trong lĩnh vực máy tính, đặc biệt là trong lĩnh vực phân tích, xử lý và khai phá dữ liệu vẫn có thể sử dụng để hỗ trợ ra quyết định.
Cấu trúc đề tài
Luận văn bao gồm 5 chương, với nội dung sau:
Chương 1: giới thiệu tổng quan về nghiên cứu, lý do hình thành đề tài, phạm vi nghiên cứu, phương pháp nghiên cứu, mục tiêu nghiên cứu cũng như ý nghĩa và đóng góp của nghiên cứu
Chương 2: trình bày cơ sở lý thuyết liên quan đến các vấn đề sẽ nghiên cứu trong luận văn
Chương 3: đặt vấn đề, nghiên cứu và ứng dụng các mô hình lý thuyết trong data mining để giải quyết các vấn đề đặt ra; triển khai, thử nghiệm và đánh giá các ứng dụng đã cài đặt các mô hình đã nghiên cứu
Chương 4: tổng kết lại các vấn đề đã nghiên cứu, những vấn đề chưa hoàn thiện và đề xuất hướng nghiên cứu trong tương lai.
CƠ SỞ LÝ THUYẾT
Kỹ thuật phát hiện tri thức và khai phá dữ liệu (KDD)
2.1.1 Khái niệm và phương pháp KDD
KDD là một ngành khoa học hướng vào việc tìm ra các tri thức thông qua việc phân tích, tính toán, thống kê trên dữ liệu
Hiểu theo quan điểm của nhà quản lý, dữ liệu là toàn bộ mọi số liệu, dữ kiện phát sinh trong quá trình hoạt động của doanh nghiệp Các dữ liệu phát sinh được thu thập, chọn lọc, phân loại,… để mang một ý nghĩa nào đó, khi đó ta gọi dữ liệu là thông tin Và từ quá trình phân tích, thành lập giả thiết, kiểm định, … trên thông tin, chuyên viên phân tích có thể tìm ra được các quy luật phụ thuộc, mà ta gọi là tri thức, và các quy luật này được tổng quát hóa thành các mô hình dự báo, ứng dụng vào việc hỗ trợ ra quyết định cho cấp lãnh đạo trong hệ thống thông tin doanh nghiệp
Các phương pháp KDD được xây dựng trên cơ sở của khoa học thống kê và khoa học máy tính Trong đó, khoa học máy tính cung cấp các nền tảng lý thuyết cũng như phương tiện để thu thập, tổ chức lưu trữ và khai thác trên khối lượng dữ liệu lớn hoặc cực lớn Bên cạnh đó, các phương pháp KDD còn sử dụng sức mạnh tính toán của máy tính để xây dựng các thuật toán, chương trình thống kê trên quần thể dữ liệu rất lớn, từ đó, mong đợi rằng kết quả thống kê sẽ mang tính chính xác hơn Một số thuật toán khai phá tri thức nổi tiếng của KDD, lệ thuộc rất nhiều vào tốc độ tính toán của máy tính, có thể kể ra như thuật toán Apriori, kỹ thuật xây dựng mạng nơ-ron, giải thuật di truyền,… [3]
2.1.2 Mô hình bài toán KDD
Cũng tương tự như bài toán lập mô hình dự báo trong lý thuyết thống kê, một bài toán KDD thường trải qua các giai đoạn:
Hình thành và định nghĩa bài toán
Thu thập và tiền xử lý dữ liệu
Lựa chọn và sử dụng phương pháp KDD để tìm ra các qui luật trên dữ liệu
Phân tích và kiểm định kết quả
Vận dụng các qui luật vào thực tế [3]
Hình 2.1 Mô hình bài toán KDD
Kho dữ liệu (Data Warehouse)
Như chương 1 đã trình bày, cấu trúc của CSDL có ưu điểm là chặt chẽ do phải thoả mãn các dạng chuẩn (các ràng buộc) và ưu điểm này có lợi khi quản trị dữ liệu nhưng đối với khai phá dữ liệu thì đó là nhược điểm vì do quá chặt chẽ nên làm chậm quá trình khai phá, rút trích dữ liệu và càng khó khăn hơn trên khối lượng dữ liệu rất lớn là đặc trưng trong khai phá dữ liệu (data mining) Vì vậy kho dữ liệu (Data warehouse) ra đời nhằm giúp hỗ trợ tối đa cho quá trình khai phá dữ liệu
Thông thường, một kho dữ liệu được xem như một CSDL mà được duy trì tách biệt từ những CSDL tác nghiệp (operational database) của tổ chức Nó thường được tích hợp với một hệ thống ứng dụng đa dạng để hỗ trợ xử lý thông tin và phân tích dữ liệu bằng cách cung cấp một nền tảng đồng nhất cho việc hợp nhất, lịch sử hoá dữ liệu Theo W.H.Inmon, một nhà kiến trúc hàng đầu của việc xây dựng data warehouse, thì Data warehouse được định nghĩa như một “tập hợp dữ liệu hướng đối tượng, tích hợp, có tính ổn định, thay đổi theo thời gian hỗ trợ cho việc ra quyết định” [4]
2.2.2 Cấu trúc của kho dữ liệu
Cấu trúc kho dữ liệu được xây dựng dựa trên các hệ quản trị CSDL quan hệ, có chức năng giống như một kho lưu trữ thông tin trung tâm Trong đó, dữ liệu tác nghiệp và phần xử lý được tách riêng khỏi quá trình xử lý kho dữ liệu Kho lưu trữ trung tâm được bao quanh bởi các thành phần được thiết kế để làm cho kho dữ liệu có thể hoạt động, quản lý và truy nhập được từ người dùng đầu cuối cũng như từ các nguồn dữ liệu
Hình 2.2 Cấu trúc kho dữ liệu
Hình 2.2 cho ta thấy kho dữ liệu bao gồm bảy phần:
1 Dữ liệu nguồn (là các ứng dụng tác nghiệp hoặc các CSDL tác nghiệp) và các công cụ chiết xuất, làm sạch và chuyển đổi dữ liệu
2 Kho dữ liệu trung tâm (Metadata)
3 Kho dữ liệu trong DBMS bao gồm các kỹ thuật xây kho dữ liệu
4 Data mart (kho dữ liệu theo chủ đề)
5 Các công cụ truy vấn (query), báo cáo (reporting), phân tích trực tuyến (OLAP) và khai phá dữ liệu (data mining) Đây chính là các cách khai phá kho dữ liệu để đem lại những tri thức
6 Quản trị kho dữ liệu
7 Hệ thống phân phối thông tin
Thành phần thứ 4 (kho dữ liệu theo chủ đề (Data mart)) là thành phần mà đề tài quan tâm và sẽ xây dựng để giải quyết các vấn đề, là nơi các dữ liệu được khoanh vùng theo chủ đề tới một giới hạn nào đó và có thể được thay đổi cho phù hợp với nhu cầu của từng bộ phận người dùng Một kho dữ liệu có thể được phân tích thành nhiều kho dữ liệu chủ đề và ngược lại một tập hợp các kho dữ liệu theo chủ đề có thể tạo thành một kho dữ liệu [4]
Data mart được lưu trữ ở nhiều dạng như: bảng tính chẳng hạn như excel, hay ở dạng view được truy vấn từ CSDL trong hệ quản trị CSDL hoặc dựa trên hệ thống OLAP (đây là mô hình đề tài sử dụng)
Hình 2.3 Sơ đồ data mart trên cơ sở hệ thống OLAP [5]
Lược đồ data mart phổ biến là dạng hình sao (Star Schema) với mô hình là một bảng chi phối lớn ở giữa, được gọi là bảng sự kiện (fact table) và nhiều kết nối đến các bảng còn lại (xem hình 2.4) Các bảng còn lại, được gọi là các bảng chiều (dimension table), mỗi bảng chỉ có một liên kết đến bảng sự kiện Mỗi dòng trong bảng sự kiện bao gồm nhiều ô (con trỏ), một ô trỏ đến một bảng chiều để cung cấp toạ độ đa chiều của nó, và lưu trữ các độ đo cho các toạ độ này Mỗi bảng chiều bao gồm các cột tương đương với các thuộc tính của chiều Các bảng chiều mô tả và bổ sung thông tin cho bảng sự kiện [4]
Hình 2.4 Lược đồ data mart dạng hình sao [5]
Hệ thống Business Intelligence (BI)
BI có thể được định nghĩa là một tập các mô hình toán học và các phương pháp phân tích nhằm khai phá dữ liệu có sẵn để tạo ra thông tin và tri thức hữu ích cho quá trình ra quyết định [6]
Kiến trúc của BI (hình 2.5) bao gồm 3 thành phần chính [6] :
Các nguồn dữ liệu (Data sources: operational systems, external data, ): là nơi tích hợp và thu thập các dữ liệu được lưu trữ trong các nguồn dữ liệu cấp thấp khác nhau, không đồng nhất về nguồn gốc và loại Các nguồn dữ liệu đa phần được thu thập từ các hệ thống tác nghiệp nhưng cũng có thể bao gồm các tài liệu phi cấu trúc như email và các dữ liệu nhận được từ các nhà cung cấp bên ngoài
Do đó, vấn đề quan trọng là làm sao để thống nhất và tích hợp các nguồn dữ liệu khác nhau này
Kho dữ liệu và kho dữ liệu theo chủ đề (Data warehouse và data marts như logistics, marketing,…): sử dụng các công cụ khai phá và chuyển đổi như ETL (Extract – Transform – Load) để lưu trữ các nguồn dữ liệu khác nhau vào một
CSDL chung nhằm hỗ trợ phân tích kinh doanh Các CSDL đó thường được gọi là data warehouse và data marts
Các phương pháp BI: dữ liệu được trích xuất, xử lý lần cuối sau đó dùng để phục vụ cho các mô hình toán học và các phương pháp phân tích nhằm hỗ trợ việc ra quyết định Trong một hệ thống BI, một số ứng dụng hỗ trợ ra quyết định có thể được thực hiện như: o Phân tích các khối đa chiều (Multidimensional cubes) o Phân tích chuỗi thời gian (Time series) o Khai phá dữ liệu (Data mining) o Mô hình tối ưu hóa (Optimization models)
Hình 2.5 Kiến trúc của BI
Phương pháp khai phá luật kết hợp dựa trên thuật toán Apriori
Cho bảng số liệu A gồm n dòng với N thuộc tính X , X , , X 1 2 N , X, Y là hai tập con của X , X , , X 1 2 N Gọi E X và E Y lần lượt là các biểu thức điều kiện trên X và Y
Tỷ lệ giữa số dòng trong bảng A thoả E X trên tổng số dòng n được gọi là độ phổ biến của E X , ký hiệu Support E X Độ phổ biến Support E X còn được hiểu là xác suất E X được thoả trong bảng A, ký hiệu P E X
The logical implication EX → EY (read as "if EX is satisfied, then EY is satisfied") is known as an association rule in the table A The prevalence of the association rule EX → EY, denoted by Support EX → EY, is determined by Support EX → EY = Support EX ∧ EY The confidence, or probability, of the rule EX → EY, denoted by Confidence EX → EY, is calculated as Confidence EX → EY = Support EX → EY / Support EX.
Conf E X E Y , được xác định bởi xác suất E Y xảy ra với điều kiện
Nhận xét : với luật d E X E Y , khi Conf d và Support d lớn, ta nói rằng luật d rất đúng, nghĩa là nếu xét một dòng t bất kỳ trong bảng A, nếu t thoả
E X thì ta sẽ có cơ may để t thoả E Y là rất lớn, và bởi vì Support d cũng lớn, nên ta có thể dùng luật này như một mô hình dự báo cho các dòng t ở những thể hiện khác của bảng A [3]
2.4.2 Thuật toán tổng quát xác định luật kết hợp
Cho bảng dữ liệu A gồm N thuộc tính: X , X , , X 1 2 N ;
Gọi V 1 x 11 x 12 x 1m 1 là tập các giá trị rời rạc của X 1 ;
V x x x là tập các giá trị rời rạc của X 2 ;
V x x x là tập các giá trị rời rạc của X N
Thuật toán tổng quát để xác định tất cả các luật kết hợp trên A có dạng:
- Các ngưỡng minsupp, minconf: độ phổ biến và độ tin cậy tối thiểu
- Các luật kết hợp có dạng E X E Y , với X, Y là các tập con của
Với mọi X, Y là các tập con của X , X , , N 1 2 N :
Tính Conf E X E Y , Support E X E Y , với E X và E Y là các biểu thức điều kiện có dạng
E Y : " X t , X t , , X t " , trong đó t , t , , t 1 2 p V k 1 V k 2 V k p , t , t , , t 1 2 p V k 1 V k 2 V k p (Chú ý: ký hiệu A B là tập hợp tích của hai tập hợp A và B, nghĩa là tập hợp các bộ thứ tự a, b với a A và b B )
- Nếu Conf E X E Y minconf và Support E X E Y minsupp thì chọn luật này
Nhận xét: Khi A có N thuộc tính thì số tập con có thể có là 2 N , do đó, số cặp tập con X, Y cần phải xét là 2 2 N 2 N 1
Input và Output: giống như của thuật toán tổng quát ở 2.4.2
Giai đoạn 1: Xác định L là tập các điều kiện phổ biến
Bước 2: Xác định Cp là tập hợp các tập con của I có p phần tử,
C p X I, X p Nếu C p thì kết thúc giai đoạn 1 của thuật toán và trả về
Bước 4: Với mỗi XC p , X có dạng X , X , , Xk 1 k 2 k p :
Với mỗi bộ thứ tự t , t , , t 1 2 p V k 1 V k 2 V k p:
- Thành lập biểu thức điều kiện
- Tính độ phổ biến của E X
Định nghĩa tập Large 1: Nếu tập hợp các giao dịch chứa mặt hàng E và tập X có hỗ trợ E X lớn hơn hoặc bằng ngưỡng hỗ trợ minsupp thì thêm tập hợp E X vào tập Large 1 Tiếp theo, xác định lại tập I là tập hợp các thuộc tính có trong tập Large 1 Đối với mỗi thuộc tính X i thuộc tập I, xác định lại tập V i là tập hợp các giá trị rời rạc của thuộc tính X i có mặt trong tập Large 1.
Bước 7: Tăng p lên 1 và quay về B2
Giai đoạn 2: Xác định các luật kết hợp thoả minsupp và minconf từ L
Bước 8: Với mỗi điều kiện E P trong L:
Với mỗi điều kiện E X trong L:
- Do mỗi điều kiện trong L có dạng " X k 1 t , X 1 k 2 t , , X 2 k p t " p , gọi
T E P và T E X lần lượt là tập các mệnh đề con có dạng
" Xk 1 t "," X1 k 2 t ", ," X2 k p t "p của các điều kiện E P và E X
- Nếu tỷ số Support E P Support E X lớn hơn hay bằng minconf thì:
- Gọi T E Y T E P \ T E X , thành lập điều kiện
E Y tương ứng, thêm luật E X E Y vào R
Bước 9: Kết thúc thuật toán và trả về kết quả là tập R
Ví d ụ minh họa : Cho bảng dữ liệu
Món ăn A Món ăn B Món ăn C Món ăn D Món ăn E
Bảng 2.1 Số liệu minh họa cho thuật toán Apriori
Trong đó, mỗi dòng của bảng cho biết hóa đơn tại dòng đó có gọi các món ăn
A, B, C, D, hoặc E không Thực hiện xác định các luật kết hợp với các ngưỡng minsupp = 0.5, minconf = 0.9
Bước 1: I = {A, B, C, D, E} với các giá trị rời rạc của A, B, C, D, E, đều là 0, 1 (nghĩa là V A V B V C V D V E 0,1 )
Khởi đầu thuật toán với p1 và L
Bước 2: Các tập con có p1 phần tử của I chính là A , B , C , D , E C p khác rỗng nên tiếp tục làm B3
Bước 4: Tính độ phổ biến của mọi điều kiện có thể có trong C p Nếu điều kiện lớn hơn hay bằng minsupp = 0.5 thì chọn vào L p
Món ăn A Support Chọn nếu L p 0.5
Món ăn B Support Chọn nếu L p 0.5
Món ăn C Support Chọn nếu L p 0.5
Món ăn D Support Chọn nếu L p 0.5
Món ăn E Support Chọn nếu L p 0.5
Bảng 2.2 Tính độ phổ biến trong tập Cp với p=1
=> L p = {"Món ăn A=1" , "Món ăn B=1" , "Món ăn C=1" , "Món ăn D=1" , "Món ăn D=0" , "Món ăn E=0"}
Bước 5: Đặt lại I là tập các thuộc tính có xuất hiện trong L p , và xác định lại các tập giá trị rời rạc
Bước 6: Đưa L p vào L (L đang là rỗng), khi đó L = {"Món ăn A=1" , "Món ăn B=1" , "Món ăn C=1" , "Món ăn D=1" , "Món ăn D=0" , "Món ăn E=0"}
Bước 7: Tăng p lên 1, p = 2, quay về B2
Bước 2: Các tập con có p2 phần tử của I là
C p khác rỗng nên tiếp tục làm B3
Bước 4: Tính độ phổ biến của mọi điều kiện có thể có trong C p Nếu điều kiện lớn hơn hay bằng minsupp = 0.5 thì chọn vào L p
Món ăn A Món ăn B Support
Món ăn B Món ăn C Support
Món ăn B Món ăn D Support
Món ăn B Món ăn E Support
Món ăn A Món ăn C Support
Món ăn A Món ăn D Support
Món ăn A Món ăn E Support
Món ăn C Món ăn D Support
Món ăn D Món ăn E Support
Món ăn A Món ăn B Support
Món ăn C Món ăn E Support
Bảng 2.3 Tính độ phổ biến trong tập C p với p=2
=> L p = {"Món ăn A=1,Món ăn B=1" , "Món ăn B=1,Món ăn C=1" , "Món ăn B=1,Món ăn D=0" , "Món ăn B=1,Món ăn E=0" , "Món ăn A=1,Món ăn E=0" ,
Bước 5: Đặt lại I là tập các thuộc tính có xuất hiện trong L p , và xác định lại các tập giá trị rời rạc
Bước 6: Đưa L p vào L, khi đó L = {"Món ăn A=1" , "Món ăn B=1" , "Món ăn C=1" , "Món ăn D=1" , "Món ăn D=0" , "Món ăn E=0", "Món ăn A=1, Món ăn B=1" , "Món ăn B=1, Món ăn C=1" , "Món ăn B=1,Món ăn D=0" , "Món ăn B=1, Món ăn E=0" , "Món ăn A=1, Món ăn E=0" , "Món ăn C=1, Món ăn E=0"}
Bước 7: Tăng p lên 1, p = 3, quay về Bước 2
Bước 2: Các tập con có p 3 phần tử của I là
C p khác rỗng nên tiếp tục làm B3
Bước 4: Tính độ phổ biến của mọi điều kiện có thể có trong C p Nếu điều kiện lớn hơn hay bằng minsupp = 0.5 thì chọn vào L p
Món ăn A Món ăn B Món ăn C Support
Món ăn B Món ăn C Món ăn D Support
Món ăn B Món ăn C Món ăn E Support
Món ăn A Món ăn C Món ăn D Support
Món ăn A Món ăn C Món ăn E Support
Món ăn A Món ăn B Món ăn D Support
Món ăn A Món ăn B Món ăn E Support
Món ăn C Món ăn D Món ăn E Support
Món ăn A Món ăn D Món ăn E Support
Món ăn B Món ăn D Món ăn E Support
Bảng 2.4 Tính độ phổ biến trong tập C p với p=3
=> L p = {"Món ăn B=1,Món ăn C=1,Món ăn E=0" , "Món ăn A=1,Món ăn B=1,Món ăn E=0"}
Bước 5: Đặt lại I là tập các thuộc tính có xuất hiện trong L p , và xác định lại các tập giá trị rời rạc
Bước 6: Đưa L p vào L, khi đó L = {"Món ăn A=1" , "Món ăn B=1" , "Món ăn C=1" , "Món ăn D=1" , "Món ăn D=0" , "Món ăn E=0", "Món ăn A=1,Món ăn B=1" , "Món ăn B=1,Món ăn C=1" , "Món ăn B=1,Món ăn D=0" , "Món ăn B=1,Món ăn E=0" , "Món ăn A=1,Món ăn E=0" , "Món ăn C=1,Món ăn E=0",
"Món ăn B=1,Món ăn C=1,Món ăn E=0" , "Món ăn A=1,Món ăn B=1,Món ăn E=0"}
Bước 7: Tăng p lên 1, p = 4, quay về Bước 2
Bước 2: Các tập con có p4 phần tử của I là
C p khác rỗng nên tiếp tục làm B3
Bước 4: Tính độ phổ biến của mọi điều kiện có thể có trong C p Nếu điều kiện lớn hơn hay bằng minsupp = 0.5 thì chọn vào L p
Món ăn B Món ăn C Món ăn E Món ăn A Support
Bảng 2.5 Tính độ phổ biến trong tập C p với p=4
Bước 7: Tăng p lên 1, p = 5, quay về Bước 2
Bước 2: Do I bằng rỗng nên C p cũng bằng rỗng > Kết thúc giai đoạn 1 của thuật toán
Giai đoạn 2: Xác định các luật kết hợp thoả minsupp và minconf từ L
Khởi đầu với R là rỗng
L = {"Món ăn A=1" , "Món ăn B=1" , "Món ăn C=1" , "Món ăn D=1" , "Món ăn D=0" , "Món ăn E=0", "Món ăn A=1,Món ăn B=1" , "Món ăn B=1,Món ăn C=1" ,
"Món ăn B=1,Món ăn D=0" , "Món ăn B=1,Món ăn E=0" , "Món ăn A=1,Món ăn
E=0" , "Món ăn C=1,Món ăn E=0", "Món ăn B=1,Món ăn C=1,Món ăn E=0" ,
"Món ăn A=1,Món ăn B=1,Món ăn E=0"}
Do khi E P chỉ có một thuộc tính thì không thể có E X nào để cho
T E X T E P , nên ta chỉ xét các trường hợp E P có từ hai thuộc tính trở lên
Với E P = "Món ăn A=1,Món ăn B=1", Support E P 0.5, ta chọn được trong L hai trường hợp E X thoả là "Món ăn A=1" và "Món ăn B=1"
Với E P = "Món ăn B=1,Món ăn C=1", Support E P 0.6, ta chọn được trong L hai trường hợp E X thoả là "Món ăn B=1" và "Món ăn C=1"
Tiếp tục xét các E P theo cách như vậy, ta sẽ chọn được các cặp E P , E X có
Support E P Support E X lớn hơn hay bằng minconf, khi đó, thành lập điều kiện E Y từ T E Y T E P \ T E X , ta có E X E Y là một luật tìm được (thêm luật này vào R), và độ tin cậy của luật này chính là
=> Thêm luật “NẾU Món ăn D=0 THÌ Món ăn B=1” vào R
=> Thêm luật “NẾU Món ăn E=0 THÌ Món ăn B=1” vào R
E(P) = "Món ăn B=1,Món ăn C=1,Món ăn E=0"
=> Thêm luật “NẾU Món ăn C=1 và Món ăn E=0 THÌ Món ăn B=1” vào R
E(P) = "Món ăn A=1,Món ăn B=1,Món ăn E=0"
=> Thêm luật “NẾU Món ăn A=1 và Món ăn B=1 THÌ Món ăn E=0” vào R
E(P) = "Món ăn A=1,Món ăn B=1,Món ăn E=0"
=> Thêm luật “NẾU Món ăn A=1 và Món ăn E=0 THÌ Món ăn B=1” vào R Bước 9: Kết thúc thuật toán và trả về kết quả là tập R
Nhận xét: Thuật toán trên giúp ta xác định được các luật kết hợp hữu ích mà từ ban đầu người khảo sát trên bảng dữ liệu không (hoặc không thể) nhận ra.
Những công trình liên quan
Wen-Yu Chiang (2010) [7] đã đề xuất một quy trình mới và một mô hình cải tiến khai phá luật kết hợp về giá trị khách hàng Thị trường của ngành công nghiệp mua sắm trực tuyến ở Đài Loan là khu vực nghiên cứu Sử dụng mô hình nghiên cứu Ward để phân thị trường mua sắm trực tuyến thành 3 thị trường Giá trị khách hàng được xây dựng lại từ mô hình cải tiến RFMDR (dựa trên mô hình RFM/RFMD) Thuật toán Apriori được thực hiện với giá trị khách hàng để tạo ra luật kết hợp Những luật có ý nghĩa được đề nghị để ứng dụng vào chức năng tiếp thị của hệ thống CRM để nâng cao giá trị khách hàng của doanh nghiệp
Xiaobing Liu và các đồng sự (2012) [8] phát triển thuật toán tập phổ biến lớn nhất (maximal frequent itemsets) Thuật toán truyền thống khi làm việc phải quét nhiều lần CSDL Những nghiên cứu gần đây tập trung vào việc giảm số lần quét, sau đó giảm số lần kết nối các nguồn dữ liệu vào/ra để cải thiện hiệu quả khai phá toàn diện tập luật phổ biến lớn nhất của luật kết hợp Kết quả là chỉ quét CSDL một lần, cải thiện hiệu quả lưu trữ cấu trúc dữ liệu và cải thiện thời gian của thuật toán khai phá
Hanhoon Kang và các đồng sự (2011) [9] cải tiến thuật tốn Nạve Bayes để phân tích những ý kiến đánh giá nhà hàng Kết quả của thí nghiệm cho thấy rằng khi thuật toán này được sử dụng khoảng cách giữa độ chính xác tích cực (positive accuracy) và chính xác tiêu cực (negative accuracy) đã thu hẹp tới 3,6% so với khi sử dụng Bayes cơ bản ban đầu
Sau khi đã tìm hiểu các cơ sở lý luận để chuẩn bị cho các mục đích nghiên cứu, chương tiếp theo sẽ đề cập đến các phương pháp nghiên cứu trong đề tài.
PHÂN TÍCH, TRIỂN KHAI VÀ ĐÁNH GIÁ
Mô tả cơ sở dữ liệu (CSDL)
Đề tài ứng dụng trên dữ liệu kinh doanh trong lĩnh vực nhà hàng, CSDL hiện nay đang được quản trị bởi hệ quản trị SQL Server Do số lượng bảng nhiều, đề tài không thể trình bày tất cả cấu trúc của từng bảng và mối liên hệ giữa các bảng nên chỉ chọn lọc để tìm hiểu cấu trúc và ý nghĩa của những bảng có sử dụng trong các vấn đề nghiên cứu
Hình 3.1 Thiết kế luận lý của CSDL nguồn
Oid WS_RECEIPT Employee OptimisticLockField GCRecord
Oid CODE PAYMENT_DATE ISSUE_DATE WAREHOUSE [USER]
Customer DELIVERY _ADDRESS Payment_Term
Oid WS_RECEIPT PRODUCT GIFTVOUCHER Discount_Percent Discount_Amount Quantity Price Amount IsFree OptimisticLockField GCRecord AlreadyPrint comment Employee
Oid Code Address Name Email Tel Department Position Status OptimisticLockField GCRecord
Oid Code Name IDCard Address Sex DayOfB irth Tel HandPhone Email Marriage MarriageDate NumberOfChild Income
Oid Code Name Active Price VAT cat_id ishaschoice
Oid Code Name Active OptimisticLockField GCRecord ShowInMenu
Oid RECEIVE_PAYMENT AMOUNT USD MemberShipCard GiftVoucher Input_Date OptimisticLockField
Oid CODE ISSUE_DATE REASON IN_OUT_COME SUPPLIER CUSTOMER EMPLOYEE NOTE
BY _RECEIPT SOURCE_NO [USER]
PAID_B Y AMOUNT OptimisticLockField GCRecord RECEIVE_SHOP
Ws_ReceiptDetail oid ticket_id food_id Quantity Special gcrecord
Oid PRODUCT WAREHOUSE QUANTITY OptimisticLockField GCRecord
Oid WAREHOUSE_CODE WAREHOUSE_NAME ACTIVE SHOP
Oid Code Name OptimisticLockField GCRecord
Oid WS_RECEIPT TableID OptimisticLockField GCRecord
Oid CardNo IssueDate MembershipType IsAllowChangeToCash IsAllowTopup ProfitCenter ValidFrom ValidTo Active Customer IssueReason OptimisticLockField GCRecord
Oid Code Name OptimisticLockField GCRecord ACTIVE ALLOW_CHANGE_TO_CASH
Oid Code Name isActive Payment_Type Display_order card_fee_percent DISCOUNT_POLICY
Oid DIS_POLICY_CODE DIS_POLICY_NAME VALID_FROM
Oid MEMBERSHIPTYPE DIS_POINT_POLICY OptimisticLockField GCRecord
Oid Shop Warehouse OptimisticLockField GCRecord
Oid Code Name ProvinceCity OptimisticLockField GCRecord
Oid Photo Address1 Address2 OptimisticLockField GCRecord
Oid FirstName LastName MiddleName Birthday Email
Oid Charge WS_Receipt [Percent]
Oid Code Name ACTIVE OptimisticLockField GCRecord Menu
OidCodeNameOptimisticLockFieldGCRecord
WS_RECEIPT: bảng có 15442 dòng, cho biết thông tin về các hóa đơn, bao gồm các thuộc tính: Oid (khóa chính), mã hóa đơn (code), ngày bán (Issue_date), ngày khách hàng thanh toán (Payment_date), kho (Warehouse), mã khách hàng (Customer), nhân viên (Sale_man), tổng số tiền chiết khấu (Total_Discount_Amount), tổng giá trị phiếu bán hàng (Total_Amount), …
Column Data Type Allow Nulls
Bảng 3.1 Các thuộc tính và kiểu dữ liệu của bảng WS_Receipt
WS_RECEIPTDETAILNORMAL: là mối kết hợp giữa bảng Food và bảng WS_Receipt có 104648 dòng, thể hiện chi tiết mỗi hóa đơn trong bảng WS_Receipt Do có liên hệ một nhiều (phụ thuộc vào) với hai đối tượng WS_Receipt và Food, nên trong bảng WS_ReceiptDetailNormal có hai thuộc tính là WS_Receipt (là khóa chính của WS_Receipt) và Product (là khóa chính của Bảng Food) Ngoài hai thuộc tính khóa ngoại, bảng này còn có thêm một số thuộc tính khác như: phần trăm chiết khấu món ăn (Discount_Percent), số tiền chiết khấu món ăn (Discount_Amount),…
Column Data Type Allow Nulls
Bảng 3.2 Các thuộc tính và kiểu dữ liệu của bảng WS_ReceiptDetailNormal
FOOD: cho biết thông tin về món ăn có 1008 dòng, bao gồm các thuộc tính:
Oid (khóa chính của bảng), mã món ăn (CODE), tên món ăn (NAME), mục hàng (Cat_id), giá bán (PRICE), thuế giá trị gia tăng của món ăn (VAT),…
EMPLOYEE: cung cấp thông tin về nhân viên bán hàng có 91 dòng, gồm các thuộc tính như: khóa chính (Oid), mã nhân viên (code), tên nhân viên (Name), số điện thoại (Tel), địa chỉ nhà (Address), email (Email), vị trí làm việc (position),…
CUSTOMER: cung cấp thông tin về khách hàng của nhà hàng có 1033 dòng, gồm các thuộc tính như: khóa chính (Oid), mã khách hàng (code), tên khách hàng (name), địa chỉ (Address), số điện thoại (Tel), thành phố (City), Giới tính
(Sex), tình trạng hôn nhân (Marriage), quận huyện (District), nhân viên bán hàng và giao hàng ( Employee),
FOOD_CATEGORY: cho biết thông tin loại món ăn, các món ăn được phân thành 122 loại, bảng gồm các loại như: khóa chính (Oid), mã loại (Code), tên loại (Name), …
Quy trình xử lý dữ liệu và tạo data mart
Đứng trên góc độ nhà quản lý, toàn bộ doanh nghiệp có thể phân thành 3 hệ thống: hệ tác nghiệp, hệ thông tin và hệ (hỗ trợ) ra quyết định Trong đó, hệ tác nghiệp bao gồm các bộ phận, phòng ban, đơn vị trực thuộc tham gia trực tiếp vào các hoạt động nghiệp vụ diễn ra hàng ngày của doanh nghiệp; hệ ra quyết định bao gồm các cấp lãnh đạo (CEO – Chief Executive Officer), đóng vai trò tổ chức, lãnh đạo, đưa ra các quyết định quan trọng trong việc điều khiển các hoạt động mang tính chiến lược; hệ thông tin đóng vai trò tổ chức, quản lý và phục vụ truyền tải, khai phá thông tin cho các hệ còn lại Như đã trình bày ở phần đầu, đề tài nghiên cứu các vấn đề liên quan đến hệ thống BI – là một dạng của hệ hỗ trợ ra quyết định, tức là liên quan đến cấp chiến lược Vì vậy, các vấn đề đặt ra để ứng dụng các mô hình lý thuyết trong lĩnh vực KDD phải hỗ trợ cho cấp chiến lược, giúp cho nhà quản lý ra quyết định dựa trên kết quả của việc khai phá Dựa trên việc khảo sát dữ liệu của nhà hàng cùng với kiến thức trong lĩnh vực KDD và sử dụng phương pháp quan sát, tác giả đặt ra các vấn đề sau để nghiên cứu trong đề tài:
- Khảo sát mối liên hệ giữa các món ăn để hiểu rõ hơn về dữ liệu, còn đứng trên góc độ của nhà quản lý thì nắm được đặc trưng của nhà hàng thông qua các quy luật gọi món của khách hàng từ đó có thể tạo combo các món ăn
- Khai phá dữ liệu tìm ra các món ăn có xu hướng tăng hoặc giảm theo thời gian để tìm ra nguyên do của xu hướng đó đồng thời có chiến lược phù hợp ví dụ như cân đối nguyên vật liệu; đưa ra các chính sách khuyến mãi, hậu mãi nếu muốn cải thiện tần suất gọi của món ăn có xu hướng giảm (giả sử món đó là đặc trưng hoặc gắn liền với thương hiệu của nhà hàng) hoặc loại bỏ món này khỏi thực đơn của nhà hàng;…
- Ứng dụng các mô hình để tìm ra các set menu phổ biến, phù hợp nhất với hoạt động kinh doanh của nhà hàng
Do dữ liệu thu thập được là CSDL phục vụ cho công tác xử lý các nghiệp vụ hằng ngày và quản lý hoạt động của doanh nghiệp như đặt món, lập hóa đơn, thanh toán tiền, quản lý món ăn,… dữ liệu được cập nhật thường xuyên nên không phù hợp cho việc khảo sát và khai phá dữ liệu Việc khai phá dữ liệu phải được thực hiện trên tập dữ liệu ổn định và phải trải qua quá trình xử lý dữ liệu thô do đó đề tài phải sử dụng mô hình data warehouse, cụ thể hơn là data mart (các khái niệm được trình bày cụ thể trong chương 2 – cơ sở lý thuyết, mục 2.2) Vì vậy từ các vấn đề đặt ra, đề tài xây dựng data mart tương ứng cho mỗi vấn đề nhưng qua quá trình khảo nghiệm nhận thấy các vấn đề đặt ra ở trên đều xoay quanh các sự kiện là 1 hóa đơn gọi các món ăn nào và các chiều của sự kiện là món ăn, nguyên vật liệu, cách chế biến,…do đó đề tài sẽ xử lý dữ liệu và tạo một data mart sử dụng chung cho các vấn đề
Qua quá trình xử lý dữ liệu, mô hình data mart đầu tiên được tạo ra có dạng:
Hình 3.2 Thiết kế luận lý data mart ban đầu
Bảng DetailReceipt là bảng sự kiện cho biết chi tiết mỗi hóa đơn gọi những món ăn nào, mỗi dòng trong bảng này cho biết mã hóa đơn, món ăn được gọi, số lượng bao nhiêu,…Hai bảng chiều của bảng sự kiện là Food và Receipt cho biết chi tiết thông tin về món ăn và hóa đơn trong bảng sự kiện Trong một bối cảnh khác, bảng Food lại là một sự kiện cho biết mỗi món ăn bao gồm nguyên vật liệu nào và cách chế biến ra sao nên có các chiều là 3 bảng Material (nguyên vật liệu), CCB (cách chế biến), SCCB (cách chế biến cụ thể)
Quá trình phân tích và xử lý dữ liệu để tạo data mart sẽ được trình bày trong mục tiếp theo
Do các bảng trong dữ liệu nguồn có khóa chính là dạng thuộc tính uniqueidentifier (một kiểu khóa chính tự động phát sinh khi có thêm dòng dữ liệu mới), ví dụ với dạng chuỗi “10961D8F-1F36-4DB9-88C9-00187293C213” Với dạng khóa chính dài làm cho việc truy xuất dữ liệu chậm nên đề tài thay đổi khóa chính với dạng số tự động phát sinh đơn giản hơn Song song với việc thay đổi trên, đề tài tạo CSDL mới từ CSDL nguồn để lượt bớt các bảng và thuộc tính dư thừa, các bước làm như sau:
Hình 3.3 Thiết kế luận lý của CSDL rút gọn
- Xây dựng mô hình ý niệm ERD (mô hình mối kết hợp và thực thể)
- Thiết kế vật lý như mô hình luận lý ở hình 3.3 (tạo các bảng với các thuộc tính như trên có khóa chính là số phát sinh tự động nhưng tạo thêm cột để giữ các khóa chính cũ)
- Đổ dữ liệu từ bảng cũ vào bảng mới, giữ nguyên các khóa chính và khóa ngoại cũ
- Tạo 3 view cho 3 bảng Receipt, DetailReceipt, Food để thay các khóa ngoại cũ thành khóa ngoại mới
- Tạo 3 table mới với các khóa chính và khóa ngoại đã được thay đổi bởi dãy số đơn giản hơn từ 3 view trên
Qua quá trình khảo sát dữ liệu nhận thấy trong bảng Receipt có một số hóa đơn không có dòng chi tiết hóa đơn nào trong bảng DetailReceipt (tức là không có mua món ăn nào), điều này sẽ làm kết quả khai phá được không tốt nên khi đổ dữ liệu vào bảng mới đề tài sẽ lọc bỏ các dòng hóa đơn trên, bảng Receipt từ 15442 còn 15155 dòng
Các món ăn trong dữ liệu nguồn được phân thành 122 loại, các loại không được chia theo một nguyên tắc rõ ràng, một số loại chia theo nguyên vật liệu như cá, bò, gà, heo,…một số loại chia theo phân loại thực đơn như món khai vị, món tráng miệng,…hoặc có những loại lại phân theo kiểu cách chế biến như “lẩu”,
“cháo”,…và có một số món ăn cùng tên nhưng thuộc nhiều loại ví dụ “gân bò hầm tiêu xanh” thuộc loại “bò” và cũng thuộc loại “các món gọi thêm” nên có cùng tên nhưng lại có mã số khác nhau …Do đó, đề tài sẽ phân chia lại các món ăn theo nguyên tắc rõ ràng để phục vụ cho việc khai phá các vấn đề dễ dàng hơn
Hình 3.4 Phân loại món ăn của
Các món ăn sẽ được phân loại theo 2 tiêu chí: nguyên vật liệu và cách chế biến Trong bảng Food, mỗi dòng là một món ăn, mỗi món ăn sẽ được phân thuộc loại nguyên vật liệu nào và có cách chế biến gì Do mỗi món ăn có thể có nhiều hơn một nguyên vật liệu nhưng do thời gian thực hiện đề tài có giới hạn nên đề tài chỉ giới hạn mỗi món ăn có 2 nguyên vật liệu: nguyên vật liệu chính và nguyên vật liệu phụ Ngoài ra, mỗi cách chế biến có nhiều loại gia vị khác nhau nên đề tài đưa thêm một thuộc tính là gia vị của cách chế biến Vì vậy, bảng Food sẽ chèn thêm vào 4 thuộc tính: nguyên vật liệu 1 (NVL1), nguyên vật liệu 2 (NVL2), cách chế biến (CCB), cách chế biến với loại gia vị - cách chế biến cụ thể (SCCB) Trong quá trình phân loại, đề tài cũng loại bỏ các thức uống như (vì không thuộc phạm vi quan tâm của đề tài): bia, rượu, nước ngọt, nước ép,…và các món trùng nhau nên danh sách món ăn từ 1008 món sau khi phân loại lại còn 719 món Trong quá trình xóa các món ăn trùng tên phải xem xét số lần được gọi của các món trùng tên, trong các cặp đó xóa mã số nào có số lần được gọi nhỏ hơn và trong bảng DetailReceipt phải cập nhật mã món ăn đã bị xóa bằng mã còn lại Ngoài ra, ta đã xóa các mã thức uống nên trong bảng DetailReceipt cũng phải xóa các dòng chi tiết hóa đơn nào có liên quan đến mã thức uống đã xóa Do đó, bảng DetailReceipt ban đầu có 104648 dòng sau khi lọc dữ liệu còn 48022 dòng
Hình 3.5 Danh sách món ăn sau khi được phân loại lại (bảng Food)
Bốn thuộc tính chèn thêm trong bảng Food có giá trị là số, đó chính là mã số hay là khóa chính bảng chiều của bảng Food Do đó đề tài phải tạo thêm các bảng cho biết tên của từng mã Vì vậy đề tài tạo thêm 3 bảng: bảng hiển thị danh sách nguyên vật liệu (Material) có 146 loại, bảng cách chế biến (CCB) và bảng cách chế biến cụ thể hơn (SCCB)
Hình 3.6 Danh sách các nguyên vật liệu (bảng Material)
Hình 3.7 Danh sách các cách chế biến (bảng CCB)
Hình 3.8 Danh sách các cách chế biến cụ thể
Sau khi đã phân loại và tạo xong các bảng, đề tài sẽ tạo data mart Ở đây, nhận thấy ba vấn đề đặt ra đều xoay quanh các món ăn nên data mart có một chiều là bảng món ăn, sự kiện đang quan tâm trong các vấn đề này là mỗi hóa đơn như vậy sẽ gọi các món ăn nào, thông tin đó được cho biết trong bảng DetailReceipt, đó chính là bảng sự kiện trong data mart Ngoài ra, cần biết hóa đơn đó được tạo ngày nào và khách hàng nào mua Do đó ta có thêm một chiều nữa là bảng Receipt Bên cạnh đó, chiều món ăn phải gắn với các thông tin về nguyên vật liệu và cách chế biến nên đối với bảng Food có ba chiều thông tin bên cạnh, vì vậy ta mới có mô hình data mart như hình 3.2
Từ mô hình data mart như trên mỗi khi truy cập đến một dòng chi tiết hóa đơn trong bảng DetailReceipt nếu muốn biết thông tin về tên nguyên vật liệu và cách chế biến của món ăn đó phải truy cập thông qua bảng Food Điều này làm cho việc tạo các câu truy vấn và khai phá dữ liệu không được ở tốc độ nhanh nhất Vì vậy, đề tài sẽ gắn trực tiếp ba chiều của bảng Food vào bảng DetailReceipt, điều này sẽ giúp cho việc tạo các data cube nhanh chóng hơn mặc dù bảng DetailReceipt sẽ phức tạp hơn nhưng ở đây ta đang làm chức năng khai phá dữ liệu, vấn đề truy cập nhanh chóng là ưu tiên hàng đầu, nếu thực hiện chức năng quản lý thì ta mới cần sự chặt chẽ trong dữ liệu, chính vì điều này ta mới cần khái niệm data warehouse và data mart Do đó mô hình data mart ban đầu sẽ được thay đổi như sau:
Hình 3.9 Mô hình data mart hoàn chỉnh
Sau khi đã phân tích CSDL một cách chi tiết và tạo data mart, đề tài sẽ đi vào phần chính là nêu các vấn đề trong hoạt động kinh doanh nhà hàng và giải quyết, xây dựng các ứng dụng dựa trên các mô hình đã nghiên cứu.
Giải quy ết vấn đề đặt ra
Giả sử nhà quản lý muốn biết được rằng có mối liên hệ nào giữa các món ăn hay không, có nghĩa là nếu khách hàng gọi món X thì có khả năng gọi món Y hay không? Nếu có được các luật như vậy giúp nhà quản lý nắm bắt được thị hiếu của khách hàng, từ đó nhân viên nhà hàng có thể gợi ý món ăn cho khách hàng, khi họ chọn món X thì nhân viên có thể gợi ý món Y Hoặc nhà quản lý có thể tạo các chương trình khuyến mãi combo 2 món
3.3.1.2 Giải quyết vấn đề: Ở đây, ta muốn đi tìm sự phụ thuộc giữa các món ăn có nghĩa là ta đang muốn biết nếu như một khách hàng mua món ăn X thì có mua món ăn Y hay không? Vì vậy ta phải phân tích dữ liệu trên tập các hóa đơn của nhà hàng Do đó, ta phải thống kê trong mỗi hóa đơn có các món ăn nào được mua và vì dữ liệu về hóa đơn trong CSDL là không lớn (chỉ 15155 hóa đơn), trong khi số món ăn lại nhiều (719 món ăn), nên rất khó để tìm được 3 món ăn chẳng hạn là X, Y, Z… đủ tốt để thử nghiệm (có rất ít hóa đơn cùng mua đồng thời 3 món ăn X, Y, Z…) nên ta sẽ xét trên loại món ăn Loại món ăn ở đây được phân nhóm theo tiêu chí nguyên vật liệu, đề tài đã chia nhóm nguyên vật liệu trong bảng Material (trình bày ở mục 4.2.2) Các bước để giải quyết vấn đề:
- Bước 1: chọn n loại món ăn để khảo sát Giả sử, ta chọn 15 loại món ăn có số lần được gọi nhiều nhất Cột 1 là mã loại món ăn, cột 2 là số lần được gọi, cột 3 là tên loại món ăn
Hình 3.10 Danh sách 15 loại món ăn được mua nhiều nhất
- Bước 2: Lập bảng thống kê số lượng được gọi của các loại món ăn này trên từng hóa đơn Bảng thống kê gồm n+1 cột, trong đó, mỗi dòng trong bảng mô tả về một hóa đơn, giá trị tại các ô trong dòng cho biết số lượng được gọi của loại món ăn tương ứng trong hóa đơn này nhưng ở đây ta chỉ quan tâm là loại món ăn đó có được mua trong hóa đơn này hay không nên đề tài sẽ số hóa giá trị trong các ô thành 2 giá trị: giá trị 1 là có mua và giá trị 0 là không mua
Hình 3.11 Bảng thống kê 15 loại món ăn được mua hay không trong mỗi hóa đơn
- Bước 3: áp dụng phương pháp khai phá luật kết hợp dựa trên thuật toán Apriori được trình bày ở chương 2 bằng công cụ SQL Server Business Intelligence Development Studio (gọi tắt là công cụ BI) để tìm ra các tập luật
Các bước khai phá dữ liệu (tìm các luật) bằng công cụ BI:
Bước 3.1 Chọn công cụ BI trong chương trình Microsoft SQL Server Sau đó, chọn File New Project, cửa sổ New Project hiện ra:
Hình 3.12 Cửa sổ New Project của công cụ BI
Bước 3.2 Chọn Business Intelligence trong phần Project Type chọn Analysis Services Project trong phần Templates, đặt tên trong mục Name Cửa sổ của project vừa tạo sẽ hiện ra, sau đó ta bắt đầu tạo mô hình Mining Trong phần view Solution Explorer, click phải vào mục Data Sources chọn New Data Sources, cửa sổ Data Source Wizard sẽ hiện ra:
Hình 3.13 Cửa sổ Data Source Wizard trong Project
Bước 3.3 Click Next chọn Database trong phần Data connections click Next
Hình 3.14 Chọn Database cho mô hình Mining
Tiếp tục click Next chọn Default trong cửa sổ tiếp theo click finish để hoàn thành việc tạo Data Sources
Bước 3.4 Sau đó, tạo Data Sources Views Click phải vào Data Sources Views trong Solution Explorer chọn New Data Sources Views, cửa sổ Data Source View Wizard hiện ra, click Next chọn Data Soure trong phần Relational Data Sources của cửa sổ kế tiếp, click Next, cửa sổ Select Tables and Views sẽ hiện ra, chọn bảng bên ô Available objects, nhấp mũi tên để chuyển qua ô Include objects, click Next click Finish là đã hoàn thành phần tạo Data Sources Views Ở đây đề tài chọn bảng đã thống kê ở hình 3.11 được lưu với tên “Bảng thống kê”
Hình 3.15 Cửa sổ “Select Tables and Views” trong phần tạo Data Sources Views
Bước 3.5 Cuối cùng là tạo phần cấu trúc Mining cho mô hình Click phải vào Mining Structures trong Solution Explorer, chọn New Mining Structure click Next tiếp tục Next khi cửa sổ kế tiếp hiện ra, sau đó cửa sổ Select the Data Mining Technique xuất hiện, lúc này chọn luật để khai phá, có các luật phổ biến như: phương pháp khai phá luật kết hợp (chọn Microsoft Association Rules), phương pháp gom nhóm (chọn Microsoft Clustering) và phương pháp cây quyết định (chọn Microsoft Decision Trees) Do số lượng trang luận văn có hạn nên sẽ không trình bày chi tiết các phương pháp này, mà chỉ nói sơ lược về phương pháp mà luận văn sẽ sử dụng đó là: phương pháp luật kết hợp Vậy ta chọn Microsoft Association Rules, sau đó click Next tiếp tục Next Next tiếp, ở cửa sổ Specify the Training Data, chọn các yếu tố cho phương pháp này:
Hình 3.16 Cửa sổ “Specify the Training Data”
Yếu tố Key là khóa chính nên sẽ chọn thuộc tính khóa chính trong bảng dữ liệu đưa vào, chỉ được chọn một thuộc tính cho yếu tố này, ở đây đề tài chọn thuộc tính ReceiptID
Phương pháp này là khai phá từ bảng dữ liệu ban đầu đưa vào để đưa ra các luật có dạng
XY nên phải có các thuộc tính đầu vào và thuộc tính đầu ra Do đó, ở trong cửa sổ này ta sẽ chọn các thuộc tính cho yếu tố Input và
Output, sau đó click Next, tiếp tục Next rồi
Finish Ở đây, đề tài tìm sự phụ thuộc giữa các loại món ăn nên 15 loại món ăn này là Hình 3.17 Cửa sổ chạy mô hình input và cũng chính là output Muốn chạy mô hình, click chuột phải vào bài toán chọn Process, cửa sổ “Process Mining Structure” sẽ hiện ra:
Hình 3.18 Cửa sổ “Process Mining Structure”
Chọn Run, sau khi mô hình chạy xong đóng cửa sổ, trong project chọn thẻ Mining Model Viewer sẽ có kết quả như sau:
Hình 3.19 Cửa sổ kết quả sau khi Mining (thẻ Rules)
Hình 3.20 Cửa sổ kết quả sau khi Mining (thẻ Itemsets)
Tại thẻ Itemsets, có các cột Support, Size, Itemset Ý nghĩa của các cột như sau: Cột Itemset liệt kê các trường hợp trong 15 loại món ăn với các thông số đặt ở trên: minimum support, minimum itemset size và maximum rows; cột support cho biết số hóa đơn tương ứng với mỗi trường hợp và cột size cho biết số món ăn của trường hợp này
Tại thẻ Rules, cột Probability (ký hiệu là C) cho biết độ tin cậy của mỗi luật Ví dụ như luật MA33=1, MA36=1 MA99=0 có độ tin cậy là 0,982, nghĩa là trong 1000 hóa đơn có gọi món 33 và 36 sẽ có khoảng 982 hóa đơn không gọi món 99 Chỉ số này được tính bằng tỷ lệ giữa giá trị support của dòng MA33=1, MA36=1, MA99=0 và giá trị support của dòng MA33=1, MA36=1.
98 hóa đơn không gọi món 99, điều đó có nghĩa là với số lượng này thì độ tin cậy của luật này cũng là 98.2% Từ đó, ta thấy rằng cùng độ tin cậy nhưng những luật này hoàn toàn có số hóa đơn thoả khác nhau Do đó, chỉ dựa vào chỉ số này mà kết luận nếu một luật có độ tin cậy cao là tốt thì chưa chính xác Độ tin cậy cao nhưng số hóa đơn thoả luật đó là rất ít trong tập các hóa đơn thì cũng không có ý nghĩa Chính vì điều đó nên ta có thêm một chỉ số để giúp đánh giá các luật tốt hơn, đó là độ phổ biến hay còn gọi là độ tác động, ký hiệu là S Độ phổ biến không được tính sẵn trong kết quả của mô hình nhưng ta cần phải tính để làm tiêu chí đánh giá luật Độ phổ biến được tính bằng tỷ lệ giữa giá trị support của dòng MA33=1, MA36=1, MA99=0 với tổng số dòng trong bảng thống kê hay là tổng số hóa đơn Nếu độ tin cậy của một luật lớn, bên cạnh đó độ phổ biến cũng lớn thì ta có thể bước đầu đánh giá là luật này tốt Giả sử, sau khi kiểm chứng, ta thấy luật này cả hai tiêu chí đều tốt, nhưng nếu như có một luật khác là 33=0, 36=099=0 cũng thoả các tiêu chí trên thì lúc này, ta thấy dù một hóa đơn có mua hay không mua hai món ăn 60 và 58 thì cũng sẽ không gọi món 99 Mà nếu như vậy thì đồng nghĩa với việc món ăn 99 không có sự phụ thuộc nào với cả hai món ăn kia Do đó, ta cần phải biết là luật bù (là luật như dẫn chứng) với luật cần đánh giá có độ tin cậy như thế nào? Chính vì vậy, trong mô hình Mining sẽ có một tiêu chí nữa để đánh giá, đó là cột Importance trong thẻ Rules, kế cột Probability
Importance là chỉ số nói lên tỉ lệ phụ thuộc hai vế của một luật, có giá trị từ
−1 đến 1, ký hiệu là I Để đơn giản ta ví dụ một luật với X và Y là hai món ăn bất kỳ: X=1Y=1, nếu Importance gần bằng 0 thì ta nói rằng X và Y không có phụ thuộc chặt chẽ vào nhau, có nghĩa là nếu mua X thì sẽ mua Y nhưng nếu mua Y thì không chắc là sẽ mua X Nếu Importance bằng 1 thì X và Y phụ thuộc tỷ lệ thuận với nhau, có nghĩa là nếu mua X thì sẽ mua Y và nếu mua Y thì sẽ mua X Còn nếu Importance bằng -1 thì X và Y phụ thuộc tỉ lệ nghịch với nhau, có nghĩa là nếu mua