Trong bài thu hoạch này, em sẽ trình bày ý tưởng xây dựng một hệ thống tìm ra các luật logic cho các bảng khảo sát thị trường dựa trên cây định danh và chương trình demo cho ý tưởng này.
Trang 1BÁO CÁO THU HOẠCH MÔN HỌC
CÔNG NGHỆ TRI THỨC
Đề tài: Hệ thống xây dựng quy luật cho bảng khảo sát thị trường dựa trên
cây định danh
Giáo viên hướng dẫn: GS.TSKH Hoàng Kiếm Sinh viên thực hiện: Du Chí Hào
Mã số sinh viên: CH1101083
Tp HCM 2012
Trang 2Từ khi trí tuệ nhân tạo ra đời cho đến nay, người ta không ngừng thực hiện các công trình nghiên cứu để đưa tư tưởng nghiên cứu cùng với máy tính để ứng dụng vào việc giải quyết các công việc trong thực tiễn đời sống
Một trong những nguyên nhân làm cho trí tuệ nhân tạo trở thành một trong những lĩnh vực mũi nhọn trong thời đại hiện nay là việc làm cho máy tính trở nên thông minh hơn, nói cụ thể hơn là người ta tìm cách tạo ra các chương trình thông minh hơn có khả năng giải quyết các vấn đề thực tế như cách giải quyết của con người
Trong bài thu hoạch này, em sẽ trình bày ý tưởng xây dựng một hệ thống tìm ra các luật logic cho các bảng khảo sát thị trường dựa trên cây định danh và chương trình demo cho ý tưởng này Một công ty có thể sản xuất ra rất nhiều sản phẩm và có rất nhiều bảng khảo sát cho một sản phẩm Do đó, số lượng câu hỏi khảo sát cho các sản phẩm đó có thể không cố định số lượng thuộc tính tùy từng bảng khảo sát
Ví dụ:
Bảng khảo sát về dầu gội thì có các thuộc tính như sau:
Tóc có giá trị vàng, nâu, đỏ
Tuổi có giá trị thanh niên, thiếu niên
Bảng khảo sát về kem dưỡng da thì có các thuộc tính như sau:
Da có giá trị đen, vàng, trắng
Sở thích có giá trị dùng kem, dùng sữa tắm
Vấn đề đặt ra là làm sao để có thể tìm ra các quy luật trong từng bảng khảo sát chính xác với những dữ liệu thuộc tính không cố định đó
Em xin chân thành cám ơn thầy GS.TSKH Hoàng Kiếm đã truyền đạt những kiến thức quý báu cho em về bộ môn “Công nghệ tri thức” để em có thể hoàn thành bài thu hoạch này
Trang 3Mục lục
PHẦN I : CÂY ĐỊNH DANH 3
I Phương pháp học bằng cây định danh 3
II Phân tích bài toán 3
III Phương pháp phân hoạch theo thuật toán Quinlan 5
IV Phương pháp đo độ hỗn loạn 7
V Phát sinh tập luật: 8
VI Tối ưu hóa tập luật 8
PHẦN II : Ý TƯỞNG PHÂN TÍCH & THIẾT KẾ CHƯƠNG TRÌNH 9
I Phân tích ý tưởng: 9
II Thiết kế chương trình 10
1 Thiết kế CSDL: 10
2 Giao diện chương trình 11
3 Cấu trúc chương trình 13
PHẦN III : KẾT LUẬN 18
PHẦN IV : TÀI LIỆU THAM KHẢO 19
Trang 4PHẦN I : CÂY ĐỊNH DANH
I Phương pháp học bằng cây định danh
Cây đinh danh là cây được xây dựng từ một tập dữ liệu cho sẵn với các đường đi từ gốc đến lá là một kết quả hay một quy luật
Trong một cây định danh có thể có nhiều quy luật
Ví dụ: Bảng khảo sát cho việc mua một ngành hàng A:
STT Kích cỡ Màu sắc Hình dáng Quyết định
Như vậy, cây định danh cho bảng khảo sát này được xác định:
Thuộc tính mục tiêu: là thuộc tính cần quan tâm Theo ví dụ trên thì thuộc tính mục tiêu là “Mua” hay “Không mua”
Thuộc tính dẫn xuất: các thuộc tính như Kích cỡ, Màu sắc, Hình dáng
là các thuộc tính dẫn xuất
II Phân tích bài toán
Trong phần này, em sẽ trình bày phương pháp xây dựng cây định danh dựa trên dữ liệu nhập sẵn trên bảng khảo sát để tìm ra các quy luật cho bảng khảo sát đó
Ý tưởng ban đầu của việc học bằng cây định danh là tìm cách phân hoạch một tập dữ liệu P trong bản khảo sát thành các tập Pi sao cho tất cả các phần tử trong tất cả các tập Pi có chung thuộc tính mục tiêu
Ví dụ, ta có bảng dữ liệu:
Trang 5Tên Màu tóc Chiều cao Cân nặng Dùng kem? Kết quả
Để xây dựng cây định danh, ta chọn ngẫu nhiên một thuộc tính để phân hoạch là tóc
Pvàng = {Sarah, Dana, Annie, Kartie}
Pnâu = {Alex, Peter, John }
Pđỏ = {Emmile}
Người được gạch dưới và in đậm là bị cháy nắng, ta có sơ đồ sau để mô
tả các bước phân hoạch:
Tập phân hoạch Pvàng vẫn còn lẫn lộn thuộc tính cháy nắng và không cháy nắng Tiếp tục, chúng ta sẽ quan sát thuộc tính chiều cao Ta có:
Pvàng, thấp = {Annie, Kartie}
Pvàng, trung bình = {Sarah}
Pvàng, cao = {Dana}
Như vậy, bảng phân hoạch sẽ có kết quả như sau:
Màu tóc
Emmile
Đỏ Nâu
Alex Peter John
Vàng g
Dana
Kartie
Sarah
Annie
Trang 6Quá trình phân hoạch sẽ tiếp tục diễn ra đến khi tất cả nút là không còn lẫn lộn giữa cháy nắng và không cháy nắng Cây phân hoạch sẽ ngày càng phình ra Quá trình này được gọi là đâm chồi
Như vậy, nếu cứ chọn ngẫu nhiên các thuộc tính để phân hoạch thì sẽ làm cho quy luật sau mỗi lần xuất kết quả sẽ khác nhau, việc này ảnh hưởng đến
sự nhất quán và độ tin cậy của hệ thống Chúng ta có 2 phương pháp hỗ trợ cho việc phân hoạch dữ liệu:
Phương pháp dựa trên thuật toán Quinlan
Phương pháp đo độ hỗn loạn
III Phương pháp phân hoạch theo thuật toán Quinlan
Thuật toán Quinlan quyết định thuộc tính phân hoạch bằng cách xây dựng các vector đặc trưng cho mỗi giá trị của từng thuộc tính dẫn xuất và thuộc tính mục tiêu
Một vector V(Aj) được gọi là vector đơn vị nếu nó có duy nhất một thành phần có giá trị 1 và những thành phần khác có giá trị 0
Thuộc tính được chọn để phân hoạch là thuộc tính có nhiều vector đơn vị nhất
Ví dụ:
Xét ví dụ trên mục II, thuộc tính màu tóc có 3 giá trị khác nhau là vàng,
đỏ, nâu nên sẽ có 3 vectơ đặc trưng tương ứng là:
Xét giá trị Tóc vàng:
Vtóc(vàng) = {T(vàng, cháy nắng), T(vàng, không cháy nắng)}
Số người tóc vàng là: 4
Số người tóc vàng và cháy nắng là: 2
Số người tóc vàng và không cháy nắng là: 2 Như vậy: Vtóc(vàng) = (2/4, 2/4) = (0.5, 0.5)
Tương tự xét giá trị tóc nâu:
Số người tóc nâu là: 3
Màu tóc
Emmile
Đỏ Nâu
Alex Peter John
Vàng
Chiều cao
Dana
Cao Trung bình
Sarah
Thấp Kartie
Annie
Trang 7Số người tóc nâu và cháy nắng là: 0
Số người tóc nâu và không cháy nắng là: 3 Như vậy: Vtóc(nâu) = (0/3, 3/3) = (0, 1) à vector đơn vị
Xét giá trị tóc đỏ:
Vtóc(đỏ) = (1/1, 0/1) = (1, 0) à Vector đơn vị
Tổng số vector đơn vị của thuộc tính Màu Tóc là 2
Xét các thuộc tính khác tương tự, kết quả như sau:
Vchiều.cao(cao) = (0/2, 2/2) = (0, 1)
Vchiều.cao(trung bình) = (2/3, 1/3)
Vchiều.cao(thấp) = (1/3, 2/3)
Vcân.nặng(nhẹ) = (1/2, 1/2)
Vcân.nặng(trung bình) = (1/3, 2/3)
Vcân.nặng(nặng) = (1/3, 2/3)
Vdùng.kem(có) = (3/3, 0/3) = (1, 0)
Vdùng.kem(không) = (3/5, 2/5)
Như vậy, thuộc tính màu tóc có số vector đơn vị nhiều nhất nên sẽ được chọn để phân hoạch Sau khi phân hoạch theo tóc vàng ta có tập phân hoạch:
Tên Chiều cao Cân nặng Dùng kem Kết quả
Sau khi phân hoạch theo màu tóc, trong bảng phân hoạch mới vẫn còn người cháy nắng và không cháy nắng nên phân hoạch tiếp:
Vchiều.cao(cao) = (0/1, 1/1) = (0, 1)
Vchiều.cao(trung bình) = (1/1, 0/1) = (1, 0)
Vchiều.cao(thấp) = (1/2, 1/2)
Trang 8Vcân.nặng(nhẹ) = (1/2, 1/2)
Vcân.nặng(trung bình) = (1/2, 1/2)
Vdùng.kem(có) = (0/2, 2/2) = (0, 1)
Vdùng.kem(không) = (2/2, 0/2) = (1, 0)
Vì hai thuộc tính dùng kem và chiều cao đều có cùng 2 vectơ đơn vị, tuy nhiên số phân hoạch của thuộc tính dùng kem là ít hơn nên ta chọn phân hoạch theo thuộc tính dùng kem Những tập phân hoạch trong bước này không còn lẫn lộn người cháy nắng và không cháy nắng nên dưới đây là cây định danh cuối cùng:
IV Phương pháp đo độ hỗn loạn
Thay vì phải xây dựng vectơ đặc trưng như phương pháp Quinlan Ứng với mỗi thuộc tính dẫn xuất ta chỉ cần tính ra độ đo hỗn loạn và lựa chọn thuộc tính nào có độ đo hỗn loạn là thấp nhất Người ta tính được công thức như sau:
Gọi TA là độ đo hỗn loạn của một thuộc tính A, ta có:
Trong đó:
bt là tổng số phần tử có trong phân hoạch
bj là số phần tử có thuộc tính dẫn xuất A có giá trị j
Màu tóc
Đỏ Nâu
Alex Peter John
Vàng
Không Có
Sarah Annie
Dana Kartie
Trang 9 bri là tổng số phần tử có thuộc tính dẫn xuất A có giá trị j và thuộc tính mục tiêu có giá trị i
Ví dụ cho cách tính công thức trên, xét ví dụ trong mục II:
Xét thuộc tính màu tóc:
Tập tóc Vàng có 2 người cháy nắng và 2 người không cháy nắng
Tập tóc Đỏ chỉ có 1 người cháy nắng
Tập tóc Nâu cả 3 người không cháy nắng
Nhưng vậy, theo công thức trên, ta có:
EVàng = 4/8 x (- 2/4 x log22/4 - 2/4 x log22/4)
EĐỏ = 1/8 x (-1/1 x log21/1)
ENâu = 3/8 x (-3/3 x log23/3)
TA = EVàng +EĐỏ +ENâu
V Phát sinh tập luật:
Dựa vào cây định danh được xây dựng như trong hình số 5 mục 2, các quyết định được phát sinh như sau: Người ta theo các nhánh của cây từ gốc đến
lá lấy các thử nghiệm là giả thiết và lấy nút lá làm kết luận, có các luật sau:
1 (Màu tóc vàng) và (có dùng kem) à không cháy nắng
2 (Màu tóc vàng) và (không dùng kem) à cháy nắng
3 (Màu tóc nâu) à không cháy nắng
4 (Màu tóc đỏ) à cháy nắng
VI Tối ưu hóa tập luật
Sau khi phát sinh tập luật, chúng ta phải tối ưu hóa tập luật bằng cách loại bỏ các mệnh đề thừa Phương pháp loại bỏ mệnh đề thừa ở đây dựa vào dữ liệu Ví dụ trong luật:
(Màu tóc vàng) và (có dùng kem) à không cháy nắng
Lập bảng Contigency để thống kê những người dùng kem tương ứng với tóc màu vàng và bị cháy nắng hay không Trong dữ liệu, có ba người không dùng kem
Màu tóc Người không cháy
nắng Người bị cháy nắng Tóc vàng
Tóc màu khác
2 1
0 0
Theo bảng thống kê trên thì rõ ràng thuộc tính tóc vàng không có liên quan gì đến việc cháy nắng hay không nên ta có thể loại bỏ thuộc tính tóc vàng
ra khỏi tập luật
Sau khi loại bỏ mệnh đề thừa, tập luật ví dụ trên sẽ là:
Trang 102 (Màu tóc vàng) và (không dùng kem) à cháy nắng
3 (Màu tóc nâu) à không cháy nắng
4 (Màu tóc đỏ) à cháy nắng
PHẦN II : Ý TƯỞNG PHÂN TÍCH & THIẾT KẾ CHƯƠNG
TRÌNH
I Phân tích ý tưởng:
Trong các doanh nghiệp hiện nay, việc khảo sát và phân tích thị trường
để đưa ra quyết định và chiếc lược kinh doanh cho một sảm phẩm là rất quan trọng Các mẫu khảo sát như khảo sát hành vi, sở thích v.v của khách hàng thì vẫn chưa đủ, đó chỉ là một mặt của việc thu thập ý kiến, thông tin dữ liệu từ phía khách hàng Với số dữ liệu khảo sát được, các nhà doanh nghiệp phải tìm cách để khai thác những dữ liệu đó để tìm ra được các quy luật và hướng phát triển trong đó Để thực hiện được việc này thì không đơn giản với những dữ liệu lớn Do đó, việc áp dụng máy học để khai thác những dữ liệu này và tìm ra được những quy luật bên trong nó là rất hữu ích Nó giúp doanh nghiệp có thể tiết kiệm được về chi phí thời gian và công sức
Trong phần này, em sẽ nêu ra ý tưởng và demo chương trình cho việc phân tích, xây dựng các tập luật trên các bảng khảo sát đã có dựa trên cây định danh và phương pháp đo độ hỗn loạn để phân hoạch
Trong cây định danh, các dữ liệu được sắp xếp theo thuộc tính, ví dụ: thuộc tính màu tóc thì có Vàng, Đỏ, Nâu Các thuộc tính này được xếp theo cột, theo ví dụ Phần I mục II thì có 6 cột Vấn đề đặt ra là làm thế nào để lưu tất cả các cột này vào trong Cơ sở dữ liệu (CSDL) sao cho các cột này có thể tùy biến (có thể có nhiều cột hay ít cột hơn) để phù hợp với tất cả các bảng khảo sát thị trường của doanh nghiệp Và dựa trên những dữ liệu được lưu trong CSDL, chương trình sẽ tự động xây dựng các tập luật và tối ưu hóa tập luật đó
Để thực hiện ý tưởng này, em sẽ sữ dụng Visual Studio 2010 dotNet 4.0
để xử lý giao diện và SQL Server 2005 để cài đặt CSDL
II Thiết kế chương trình
1. Thiết kế CSDL:
Do phải thiết kế các thuộc tính có thể ít hơn hay nhiều hơn tùy theo các mẫu khảo sát nên cấu trúc các bảng trong CSDL sẽ bao gồm 3 bảng chính:
Mẫu Khảo Sát: dùng để chứa tên của các mẫu khảo sát Mục đích là
dùng để phân biệt thuộc tính giữa các mẫu khao sát với nhau
Trang 11Câu Hỏi Khảo Sát: Dùng để chứa thông tin câu hỏi cho mẫu khảo sát.
Cột “TenThuocTinh” dùng để quy đổi cột “TenCauHoi” thành dạng rút gọn để thuật tiện hiển thị trên cột Ví dụ như: Trong một bảng khảo sát có câu hỏi: “Bạn nặng bao nhiêu kg?” thì “TenThuocTinh” sẽ có giá trị là “Cân nặng”
Cột “ThuocTinhMucTieu” dùng để giúp nhận biết câu hỏi đó có phải là câu hỏi mục tiêu hay không Dữ liệu được lưu trữ như sau:
Bảng Khảo Sát: Dùng để lưu trữ thông tin trả lời của khách hàng ứng
với từng câu hỏi khảo sát
Cột “STT” chính là cột để nhận biết câu hỏi và câu trả lời là của cùng một khách hàng được khảo sát Ví dụ như:
Trang 12Với bảng khảo sát trên “STT” trong table “BangKhaoSat” chính là cột
“STT” như hình trên Vì vậy, dữ liệu của dòng 1 và 2 được lưu trong CSDL là:
Như vậy với thiết kế trên đã đáp ứng được nhu cầu lưu các cột thuộc tính động và cách thiết kế trên chỉ ở mức ý tưởng Khi triển khai, chúng ta cần phải thêm các khóa phụ, quan hệ và một số table khác như thay thế cột “STT” của table “BangKhaoSat” thành 1 khóa ngoại quan hệ với một table khác như
“ThongTinKhachHang” v.v…
2. Giao diện chương trình
Trên giao diện sẽ gồm có 3 giao diện Giao diện đầu tiên là giao diện kết nối với SQL Server Mục đích của việc tạo giao diện này là giúp kết nối với CSDL lần đầu tiên Sau đó, sẽ lưu lại thông tin kết nối trong file xml và không cần kết nối trong lần thứ hai trở đi
Giao diện thứ hai là giúp xem thông tin các dữ liệu theo dạng từng cột thuộc tính trực quan thay vì những dữ liệu phức tạp như lưu dưới CSDL
Trang 13Giao diện thứ ba hiển thị các luật đã phân tích và tối ưu hóa các luật.
3. Cấu trúc chương trình
Trong solution VS2010 của hệ thống, em chia thành 3 phần chính:
Trang 14Trong đó, Entity là chứa các class tương ứng với các table trong CSDL.
BangKhaoSat: dùng để chứa dữ liệu của table “BangKhaoSat”
CauHoi_DoHonLoan: dùng để chứa độ hỗn loạn của câu hỏi
MauKhaoSat: dùng để chứa dữ liệu của “MauKhaoSat”, chủ yếu được dùng hiển thị dữ liệu trên combobox
“DAL” dùng để chứa các hàm kết nối với CSDL và trả kết quả cho UI
“ucBangKhaoSat” là giao diện thứ ba dùng để phân tích các tập luật
“ucDSKhaoSat” là giao diện thứ hai để hiển thị dữ liệu
Trong giao diện thứ hai, để có thể hiển thị dữ liệu từ chiều dọc sang chiều ngang, em sử dụng PIVOT của SQL Server
Trang 15Đoạn code dùng để phân tích dữ liệu và xây dựng tập luật trong giao diện thứ ba Đầu tiên là method “PhanHoach” để phân hoạch và đưa ra tập luật Trong method này sẽ có 3 tham số:
Danh sách Bảng Khảo Sát: dùng để chứa tất cả dữ liệu lấy từ CSDL với Mã Mẫu Khảo Sát tương ứng với combobox “MauKhaoSat”
Danh sách Câu hỏi: chứa tất cả câu hỏi tương ứng với Mã Mẫu Khảo Sát để đo độ hỗn loạn
PhanHoachCha: dùng để chứa chuỗi ký tự, mục đích là giữ lại phân hoạch lớn cho từng phân hoạch con trong bước đệ quy để hiển thị trên chuỗi luật trên màn hình
Trong method này sẽ được chia làm 3 bước:
Bước 1: Tính độ hỗn loạn theo công thức cho các thuộc tính trên bảng khảo sát và lưu trữ độ hỗn loạn trên class “CauHoi_DoHonLoan”
Bước 2: Tìm độ hỗn loạn nhỏ nhất trong tất cả các thuộc tính cần xét
Bước 3: Phân hoạch theo câu hỏi có độ hỗn loạn nhỏ nhất của bước 2 Nếu như nhánh có hai giá trị mục tiêu phân biệt trở lên thì đệ quy để phân hoạch bảng định danh mới sau khi loại bỏ các nhánh khác
Ví dụ:
Ở ví dụ phần 1 mục II, màu tóc có độ hỗn loạn nhỏ nhất nên phân hoạch thuộc tính màu tóc Ta thấy trong nhánh màu vàng có hai giá trị mục tiêu phân biệt là cháy nắng và không cháy nắng Nên chúng ta sẽ phân hoạch nhánh này
Trang 16Sau khi trả ra được một chuỗi các luật, chương trình sẽ hiển thị ra giao diện Ví dụ:
Trang 17Để tối ưu hóa tập luật đã được xây dựng, em sẽ loại bỏ các tập thừa bằng cách lập bản Contigency
Trang 19PHẦN III : KẾT LUẬN
Em đã nêu ý tưởng và demo về chương trình xây dựng tập luật cho các bảng khảo sát Chương trình có thể hỗ trợ nhiều loại mẫu khảo sát thị trường vì
số thuộc tính có thể mở rộng linh động nên không cần phải thay đổi cấu trúc chương trình mỗi khi có sự thay đổi về các câu hỏi khảo sát
Qua bài thu hoạch này, em đã có điều kiện tìm hiểu sâu thêm về cây định danh và cách ứng dụng của nó vào trong thực tế Đặc biệt trong xã hội hiện nay, thời đại công nghệ thông tin len lỏi vào mọi lĩnh vực thì việc nghiên cứu phương pháp học này của chương trình máy tính đã góp phần mang tính chiến lược cho công nghệ tri thức hiện nay
Tuy nhiên do thời gian và kiến thức còn gói gọn trong môn học nên chuyên đề sẽ không tránh được những thiếu sót, em mong nhận được sự đóng góp xây dựng tích cực của thầy GS.TSKH Hoàng Kiếm cùng bạn đọc
Kính xin cám ơn giảng viên phụ trách môn học đã giảng dạy nhiệt tình cũng như chỉ bảo rất nhiều giúp bản thân em hoàn thành đề tài
Xin cám ơn các bạn đã theo dõi
Mong nhận được sự đánh giá và nhận xét của thầy và các bạn