TỔNG QUAN1.1 Khái niệm về Hệ cơ sở tri thức - Hệ Cơ sở tri thức Hệ CSTT là chương trình máy tính được thiết kế để môhình hóa khả năng giải quyết vấn đề của chuyên gia.. - Hai yếu tố quan
Trang 1BỘ GIAO THÔNG VẬN TẢI BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM
BÙI CÔNG THÌN
BÁO CÁO THỰC TẬP TỐT NGHIỆP
XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA THUẬT
TOÁN QUINLAN
HẢI PHÒNG – 2016
Trang 2BỘ GIAO THÔNG VẬN TẢI BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM
BÙI CÔNG THÌN
BÁO CÁO THỰC TẬP TỐT NGHIỆP
XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA THUẬT
TOÁN QUINLAN
NGÀNH: CÔNG NGHỆ THÔNG TIN; MÃ SỐ: 114
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học: ThS Nguyễn Hạnh Phúc
Trang 3HẢI PHÒNG – 2016
MỤC LỤC
CHƯƠNG 1 TỔNG QUAN 4
1.1 Khái niệm về Hệ cơ sở tri thức 4
1.2 Cấu trúc của Hệ chuyên gia 5
CHƯƠNG 2 THUẬT TOÁN QUINLAN 7
2.1 Thuật toán Quinlan 7
2.2 Ví dụ về thuật toán Quinlan 7
CHƯƠNG 3 TỔNG QUAN VỀ CHƯƠNG TRÌNH MINH HỌA 11
3.1 Tổng quan về chương trình 11
3.2 Code của chương trình minh họa 12
3.3 Một số hình ảnh về giao diện chương trình 17
KẾT LUẬN VÀ KIẾN NGHỊ 20
1 Kết luận 20
2 Kiến nghị 20
TÀI LIỆU THAM KHẢO 21
Trang 4CHƯƠNG 1 TỔNG QUAN
1.1 Khái niệm về Hệ cơ sở tri thức
- Hệ Cơ sở tri thức (Hệ CSTT) là chương trình máy tính được thiết kế để môhình hóa khả năng giải quyết vấn đề của chuyên gia
- Hệ CSTT là hệ thống dựa trên tri thức, cho phép mô hình hóa các tri thứccủa chuyên gia, dùng tri thức này để giải quyết vấn đề phức tạp thuộc cùng lĩnhvực
- Hai yếu tố quan trọng trong Hệ CSTT là: Tri thức chuyên gia và lập luận,tương ứng với hệ thống có 2 khối chính là Cơ sở tri thức và động cơ suy diễn
- Hệ chuyên gia là một loại CSTT được thiết kế cho một lĩnh vực ứng dụng
cụ thể Hệ chuyên gia là một chương trình máy tính thông minh sử dụng tri thức
và các thủ tục suy luận để giải những bài toán tương đối khó khăn đòi hỏi nhữngchuyên gia mới giải được
- Hệ chuyên gia làm việc như một chuyên gia thực thụ và cung cấp các ý kiếndựa trên kinh nghiệm của chuyên gia đã được đưa vào hệ chuyên gia
- Cơ sở tri thức: Chứa các tri thức chuyên sâu về lĩnh vực nào đó như mộtchuyên gia Cơ sở tri thức bao gồm: Các sự kiện, các luật, các khái niệm và cácquan hệ
- Động cơ suy diễn: Bộ xử lý tri thức theo mô hình hóa theo cách lập luậncủa chuyên gia Động cơ hoạt động trên thông tin về vấn đề đang xét, so sánhvới tri thức lưu trong Cơ sở tri thức rồi rút ra kết luận
- Kỹ sư tri thức: Người thiết kế, xây dựng và thử nghiệm Hệ chuyên gia
Trang 51.2 Cấu trúc của Hệ chuyên gia
Hình 1.1 Cấu trúc của Hệ chuyên gia
Cơ sở tri thức (knowledge base): Gồm các phần tử (hay đơn vị) tri thức, thông thường được gọi là luật (rule), được tổ chức như một cơ sở dữ liệu
Máy suy diễn (interface engine): Công cụ (chương trình hay bộ xử lý) tạo ra sự suy luận bằng cách quyết định xem những luật nào sẽ làm thỏa mãn các sự kiện, các đối tượng; chọn ưu tiên các luật thỏa mãn, thực hiện các luật có tính
ưu tiên cao nhất
Lịch công việc (agenda): Danh sách các luật ưu tiên do máy suy diễn tạo ra thỏa mãn các sự kiện, các đối tượng có mặt trong bộ nhớ làm việc
Bộ nhớ làm việc (working memory): Cơ sở dữ liệu toàn cục chứa các sự kiện phục vụ cho các luật
Khả năng giải thích (explanation facility): Giải nghĩa cách lập luận của hệ thống cho người sử dụng
Khả năng thu nhận tri thức: Cho phép người sử dụng bổ sung các tri thức vào hệthống một các tự động thay vì tiếp nhận tri thức bằng cách mã hóa tri thức một cách tường minh Khả năng thu nhận tri thức là yếu tố mặc nhiên của nhiều hệ chuyên gia
Cơ sở tri thức
Các luật việcBộ nhớ làm
Khả năng giảithích
Khả năng thunhận tri thức
Giao diện người
sử dụngMáy suy diễnLịch công việc
Trang 6Giao diện người sử dụng (user interface): Là nơi người sử dụng và hệ chuyên gia trao đổi với nhau.
Cơ sở tri thức còn được gọi là bộ nhớ sản xuất (production memory) trong hệ chuyên gia Trong một cơ sở tri thức, người ta thường phân biệt hai loại tri thức
là tri thức phán đoán (assertion knowledge) và tri thức thực hành (operating
Hình 1.2 Quan hệ giữa máy suy diễn và cơ sở tri thức
Máy suy diễn
Cơ sở tri thứcTri thức phán đoán
Tri thức thực hành
Trang 7CHƯƠNG 2 THUẬT TOÁN QUINLAN
2.1 Thuật toán Quinlan
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.Với mỗi thuộc tính dẫn xuất A còn có thể sử dụng để phân hoạch, tính:
V(Aj) = (T(j, r1), T(j, r2), …, T(j, rn))
T (j, ri) = (tổng số phần tử trong phân hoạch có giá trị thuộc tính dẫn xuất A
là j và có giá trị thuộc tính mục tiêu là ri) / (tổng số phần tử trong phân hoạch cógiá trị thuộc tính dẫn xuất A là j)
Trong đó r1, r2,…, rn là các giá trị của thuộc tính mục tiêu
Nếu một thuộc tính A có thể nhận một trong 5 giá trị khác nhau thì nó sẽ
Trang 8Đề bài: Sử dụng thuật toán Quinlan để rút ra quy luật cho những người cóđặc điểm nào có khả đỗ đại học hoặc không theo cơ sở dữ liệu ở bảng sau:
Giải:
Đặt:
A là thuộc tính “Bố hoặc mẹ đỗ đại học”
B là thuộc tính “Điều kiện kinh tế”
VA(Không) = (T(Không,Đỗ) ; T(Không,Không Đỗ)) = ( 0/2 ; 2/2 ) = (0;1)
- Xét thuộc tính B (Điều kiện kinh tế), thuộc tính này có 3 giá trị “Thấp”,
“Trung Bình” và “Cao”
VB(Thấp) = (T(Thấp,Đỗ) ; T(Thấp,Không Đỗ)) = ( 1/4 ; 3/4 ) = (1;3)
VB(Trung Bình) = (T(Trung Bình,Đỗ) ; T(Trung Bình,Không Đỗ)) = ( 3/3 ; 0/3 ) = (1;0)
VB(Cao) = (T(Cao,Đỗ) ; T(Cao,Không Đỗ)) = ( 0/1 ; 1/1 ) = (0;1)
Trang 9- Xét thuộc tính C (Học lực), thuộc tính này có 3 giá trị “Trung Bình”, “Khá”
và “Giỏi”
VC(Trung Bình) = (T(Trung Bình,Đỗ) ; T(Trung Bình,Không Đỗ)) = ( 0/3 ; 3/3 ) = (0;1)
VC(Khá) = (T(Khá,Đỗ) ; T(Khá,Không Đỗ)) = ( 2/3 ; 1/3) = (2;1)
VC(Giỏi) = (T(Giỏi,Đỗ) ; T(Giỏi,Không Đỗ)) = ( 2/2 ; 0/2 ) = (1;0)
- Xét thuộc tính D (Có học thêm) có 2 giá trị là “Có” và “Không”
VD(Có) = (T(Có,Đỗ) ; T(Có,Không Đỗ)) = ( 3/5 ; 2/5 ) = (3;2)
VD(Không) = (T(Không,Đỗ) ; T(Không,Không Đỗ)) = ( 1/3 ; 2/3 ) = (1;2)
Có 2 thuộc tính B và C đều có 3 véc tơ thuộc tính, chọn thuộc tính C để phân
rã tiếp thì sẽ có bảng dữ liệu theo thuộc tính Học lực với giá trị là “Khá” nhưsau:
Thứ tự Tên
người
Bố hoặc
mẹ đỗ đạihọc
Điềukiện kinh tế
Có họcthêm
VA(Không) = (T(Không,Đỗ) ; T(Không,Không Đỗ)) = ( 0/1 ; 1/1 ) = (0;1)
- Xét thuộc tính B (Điều kiện kinh tế), thuộc tính này có 2 giá trị “Thấp” và
“Trung Bình”
VB(Thấp) = (T(Thấp,Đỗ) ; T(Thấp,Không Đỗ)) = ( 0/1 ; 1/1 ) = (0;1)
VB(Trung Bình) = (T(Trung Bình,Đỗ) ; T(Trung Bình,Không Đỗ)) = ( 2/2 ; 0/2 ) = (1;0)
- Xét thuộc tính D (Có học thêm) có 2 giá trị là “Có” và “Không”
Trang 10VD(Có) = (T(Có,Đỗ) ; T(Có,Không Đỗ)) = ( 2/2 ; 0/2 ) =(1;0)
VD(Không) = (T(Không,Đỗ) ; T(Không,Không Đỗ)) = ( 0/1 ; 1/1 ) = (0;1)
Cả 3 thuộc tính trên đều có 2 véc tơ đơn vị, chọn thuộc tính A (Bố hoặc mẹ
đỗ đại học) làm thuộc tính phân rã
Kết luận:
- Nếu học lực trung bình thì trượt
- Nếu học lực giỏi thì đỗ
- Nếu học lực khá mà có bố hoặc mẹ đỗ đại học thì đỗ
- Nếu học lực khá mà bố và mẹ không đỗ đại học thì trượt
Trang 11CHƯƠNG 3 TỔNG QUAN VỀ CHƯƠNG TRÌNH MINH HỌA
3.1 Tổng quan về chương trình
Chương trình minh họa được xây dựng và cài đặt bằng ngôn ngữ C++
Giới thiệu về ngôn ngữ C++
C++ là một ngôn ngữ lập trình tương đối nhỏ gọn vận hành gần với phần cứng và nó giống với ngôn ngữ Assembler hơn hầu hết các ngôn ngữ bậc cao Hơn thế, C++ đôi khi được đánh giá như là "có khả năng di động", cho thấy sự khác nhau quan trọng giữa nó với ngôn ngữ bậc thấp như là
Assembler, đó là việc mã C++ có thể được dịch và thi hành trong hầu hết cácmáy tính, hơn hẳn các ngôn ngữ hiện tại trong khi đó thì Assembler chỉ có thể chạy trong một số máy tính đặc biệt Vì lý do này C++ được xem là ngôn ngữ bậc trung
C++ đã được tạo ra với một mục tiêu là làm cho nó thuận tiện để viết các chương trình lớn với số lỗi ít hơn trong mẫu hình lập trình thủ tục mà lại không đặt gánh nặng lên vai người viết ra trình dịch C++, là những người bề bộn với các đặc tả phức tạp của ngôn ngữ Cuối cùng C++ có thêm những chức năng sau:
- Một ngôn ngữ cốt lõi đơn giản, với các chức năng quan trọng chẳng hạn như
là những hàm hay việc xử lý tập tin sẽ được cung cấp bởi các bộ thư viện cácthủ tục
- Tập trung trên mẫu hình lập trình thủ tục, với các phương tiện lập trình theo kiểu cấu trúc
- Một hệ thống kiểu đơn giản nhằm loại bỏ nhiều phép toán không có ý nghĩa thực dụng
Trang 12- Dùng ngôn ngữ tiền xử lý, tức là các câu lệnh tiền xử lý C++, cho các nhiệm
vụ như là định nghĩa các macro và hàm chứa nhiều tập tin mã nguồn (bằng cách dùng câu lệnh tiền xử lý dạng #include chẳng hạn)
- Mức thấp của ngôn ngữ cho phép dùng tới bộ nhớ máy tính qua việc sử dụngkiểu dữ liệu point
- Số lượng từ khóa rất nhỏ gọn
- Các tham số được đưa vào các hàm bằng giá trị, không bằng địa chỉ
- Hàm các con trỏ cho phép hình thành một nền tảng ban đầu cho tính
đóng và tính đa hình
- Hỗ trợ các bản ghi hay các kiểu dữ liệu kết hợp do người dùng từ khóa định nghĩa struct cho phép các dữ liệu liên hệ nhau có thể được tập hợp lại và được điều chỉnh như là toàn bộ
3.2 Code của chương trình minh họa
Trang 13cout<<"Ta co bang du lieu :\n\n";
for(int i = 0; i < hang; i++)
void getCol(string cot[20],string thuocTinh[20],string tbl[20][20],int
&soThuoctinh,int somau,int vitri)
Trang 14int tinhVecto(string tbl[20][20],int somau,int vitri,int socot,string luat[20],int
&soluat,string biLoai[20],int &sttBiloai)
Trang 18Hình 3.1 Thông tin file “dulieu.txt”
Hình 3.2 Đọc dữ liệu từ file “dulieu.txt” vào chương trình minh họa
Hình 3.3 Quá trình xử lý của chương trình minh họa
Trang 19Hình 3.4 Kết quả của chương trình minh họa
Trang 20KẾT LUẬN VÀ KIẾN NGHỊ
1 Kết luận
Qua đề tài “Xây dựng chương trình minh họa thuật toán Quinlan”, em đã hiểuhơn về học phần CÁC HỆ CƠ SỞ TRI THỨC nói chung và thuật toán Quinlannói riêng Em xin chân thành cảm ơn thầy Nguyễn Hạnh Phúc đã giúp đỡ emhoàn thành đề tài này!
Trang 21TÀI LIỆU THAM KHẢO
1 Hoàng Kiếm, Các hệ cơ sở tri thức, Nhà xuất bản ĐHQG TPHCM, 2002
2 Ngô Trung Việt, Trí tuệ nhân tạo, Nhà xuất bản Giáo dục, 1995
3 Nguyễn Thanh Thủy, Trí tuệ nhân tạo, Nhà xuất bản Giáo dục, 1997
4 Đặng Hoàng Anh, Trí tuệ nhân tạo và hệ chuyên gia, Nhà xuất bản Hàng hải,
2015