7. Bố cục luận văn
3.1.1. Phân tích yêu cầu
a. Biểu đồ ca sử dụng
Dựa vào các yêu cầu chức năng về hệ thống, ta có biểu đồ ca sử dụng tổng quát. Biểu đồ ca sử dụng tổng quát gồm 02 tác nhân là cán bộ thẩm định sử dụng chương trình, quản trị viên hệ thống và 03 ca sử dụng chính.
Huấn luyện Dữ Liệu
Đăng nhập
Cán bộ thẩm định Administrator
Tư vấn
Hình 3.1. Biểu đồ ca sử dụng tổng quát
- Ca sử dụng Huấn luyện dữ liệu có thể phân rã thành 03 ca sử dụng nhỏ hơn là: + Ca sử dụng Tải dữ liệu huấn luyện: Dùng để tải dữ liệu của thông tin khách
hàng cho quá trình huấn luyện, đầu vào dữ liệu có thể là file CSV được thống nhất định dạng.
+ Ca sử dụng Huấn luyện: Sử dụng cả hai thuật toán Random Forest và Fuzzy Random Forest để xây dựng cây quyết định và sinh ra tập luật.
+ Ca sử dụng Lưu cây và tập luật: Lưu lại cây và tập luật sau khi được sinh,
Hình 3.2. Phân rã ca sử dụng huấn luyện dữ liệu
- Ca sử dụng Tư vấn có thể phân rã thành 03 ca sử dụng nhỏ hơn là:
+ Ca sử dụng Nhập dữ liệu khách hàng: Dữ liệu khách hàng có thể được nhập riêng lẽ hoặc được tải từ các file excel, CSV lưu ở ngoài.
+ Ca sử dụng Áp dụng luật: Sử dụng tập luật đã lưu dể đánh giá, tư vấn. + Ca sử dụng Xuất kết quả: xuất thông tin kết quả đánh giá.
Hình 3.3. Phân rã ca sử dụng Tư vấn
b. Biểu đồ hoạt động
Biểu đồ hoạt động huấn luyện dữ liệu: Hoạt động này tải thông tin dữ liệu huấn luyện, xây dựng cây quyết định và sinh tập luật.
Biểu đồ hoạt động phân loại dữ liệu: Hoạt động này tải thông tin dữ liệu dùng phân loại, sau đó áp dụng tập luật để xuất ra kết quả phân loại.
Hình 3.4. Biểu đồ hoạt động huấn luyện dữ liệu
Hình 3.5. Biểu đồ hoạt động tư vấn
c. Biểu đồ tuần tự
Ta có các biểu đồ tuần tự sau:
- Biểu đồ tuần tự cho ca sử dụng đăng nhập. - Biểu đồ tuần tự cho ca dụng huấn luyện dữ liệu. - Biểu đồ tuần tự cho ca dụng tư vấn.
Hình 3.7. Biểu đồ tuần tự cho hoạt động huấn luyện dữ liệu
d. Triển khai hệ thống
Hệ thống được cài đặt trên các máy của cán bộ thẩm định sử dụng. Database được cài trên một máy server dùng chung cho các máy PC client.
PC sử dụng Database Server TCP/IP Hình 3.9. Triển khai hệ thống 3.1.2. Các chức năng chính
Hệ thống xây dựng gồm các chức năng cơ bản sau:
- Lựa chọn nguồn dữ liệu: Chức năng này cho phép người dùng có thể lựa chọn dữ liệu từ nhiều nguồn khác nhau để làm đầu vào cho hệ thống xử lý. Nguồn dữ liệu ở đây có thể có là các hệ quản trị cơ sở dữ liệu khác nhau như: các tập tin dữ liệu được lưu trữ dưới dạng Excel hoặc CSV.
- Tiền xử lý dữ liệu: Chức năng này còn có thể gọi là làm sạch dữ liệu và biến đổi dữ liệu ban đầu về các dạng chuẩn để thuật toán Random Forest và Fuzzy Random Forest để có thể dễ dàng xử lý.
- Xây dựng cây quyết định: Đây là chức năng quan trọng nhất của hệ thống. Sẽ phân tích dữ liệu, lựa chọn các thuộc tính tốt nhất để xây dựng cây quyết định dựa vào hai thuật toán Random Forest và Fuzzy Random Forest.
- Chuyển cây về dạng luật: Từ cây quyết định đã được xây dựng, chức năng này sẽ rút ra một tập các luật đơn giản, giúp người sử dụng dễ dàng hiểu và nắm bắt được các luật xử lý dữ liệu của hệ thống.
- Thống kê tỉ lệ lỗi: Đây cũng là một chức năng khá quan trọng của ứng dụng. Nó giúp ta đánh giá được mức độ tin cậy của mô hình vừa xây dựng cũng như khả năng áp dụng mô hình trong việc dự đoán rủi ro cho các tập dữ liệu mới.
3.2. THỬ NGHIỆM ỨNG DỤNG
- 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.
Hình 3.10. Màn hình Đăng nhập hệ thống
➢ Giao diện chính: Có 2 chức năng đó là Huấn luyện dữ liệu và Tư vấn:
Hình 3.11. Màn hình Menu
➢ Huấn luyện dữ liệu: Đầu tiên ta chon mút Chọn dữ liệu để nạp dữ liệu huấn luyện (dữ liệu huấn luyện là file excel có phần mở rộng là *.xls hoặc file CSV, arff).
Phần mô hình hệ thống gồm có 2 mô hình phân lớp Random Forest và Fuzzy Random Forest. Sau khi chạy hệ thống sẽ sinh ra các tập luật và kết xuất ra kết quả dự đoán khách hàng và lưu trong database.
Hình 3.12. Màn hình tải dữ liệu huấn luyện
- Mô hình phân lớp với Random Forest
- Mô hình phân lớp với Fuzzy Random Forest
Hình 3.14. Giao diện mô hình phân lớp Fuzzy Random Forest
Trong đó:
+ MaxDepth: Cho thấy độ sâu tối đa của cây. Thường thì chọn 0 để truy xuất đầy đủ dữ liệu, tuy nhiên nếu dữ liệu quá lớn. Thời quan xử lý quá lâu, cần giới hạn lại độ sâu của cây.
+ NumFeatures: Số lượng các thuộc tính sử dụng khi lựa chọn ngẫu nhiên để chia nút.
+ NumTree: Số lượng cây được tạo ra.
- Giao diện Tư vấn: Khi chọn chức năng này, hệ thống cho phép người dùng cập nhật trực tiếp các thông tin của khách hàng mà cán bộ thậm định cần hệ thống tư vấn tư vấn, sau đó click Xem kết quả, hệ thống sẽ dựa vào tập luật đã có trong database và xuất kết quả dự đoán phân lớp khách hàng trong vùng hiện thị Kết quả.
Bảng 3.1. Ví dụ về khách hàng cần tư vấn Mục Đích sử dụng thời gian sử dụng Kinh nghiệm lái xe Giới tính Bảo dưỡng định kỳ Số tiền bồi thường Khu vực để xe Phạm vi hoạt đông Rủi ro Kinh doanh Chưa xác định 5 Nữ Có 15 Không Chưa xác định ?
Hình 3.15. Giao diện ứng dụng tư vấn
Với dữ liệu cần tư vấn trong Bảng 3.15 thì chương trình sinh ra 10 tập luật. Trong đó có 6 tập luật nguy cơ rủi ro là TRUNG BÌNH, 4 tập luật nguy cơ rủi ro là CAO. Từ đây cán bộ thẩm định có thể đưa ra quyết định 1 cách đúng nhất.
3.3. ĐÁNH GIÁ ĐỘ CHÍNH XÁC 3.3.1. Mô hình Random Forest
Xây dựng mô hình phân lớp và đánh giá kết quả bằng thuật toán Random Forest với cùng dữ liệu là 1957 khách hàng và lựa chọn phương pháp cắt tỉa cây.
a. Kết quả mô hình phân lớp với Random Frorest
Hình 3.16. Mô hình Cây quyết đi ̣nh bằng Random Forest
Vớ i kết quả trên là mô hình của tâ ̣p hợp 25 cây với 4 thuô ̣c tính ngẫu nhiên được cho ̣n khi xem xét chia cây.
Cách biểu diễn như trên giúp ta có thể biểu diễn được những cây có kích thước lớ n để dễ cho viê ̣c sử du ̣ng.
b. Đánh giá độ chính xác của mô hình
với k=10. Kết quả với mỗi lần cha ̣y là: Fold 1: ---Fold 1--- **Ket Qua** STT PhanLop DuDoan 1 Thap Thap 2 Thap Thap 3 Thap Thap 4 Thap TrungBinh 5 Thap Thap ……… 194 Thap Thap 195 TrungBinh TrungBinh 196 Cao Cao Số dự đoán chinh xác là: 188.0/196.0 Độ Chính Xác : 95.91836734693878%
Hình 3.17. Độ chính xác của mô hình Random Forest- fold1
Vậy Fold 1: Đúng với 188.0/196 => 95.9% Tương tự với các lần chạy còn lại:
- Fold 2: Đúng 181.0/196.0 => 92.35% - Fold 3: Đúng 176.0/196.0 => 89.80% - Fold 4: Đúng 177.0/196.0 => 90.31% - Fold 5: Đúng 180.0/196.0 => 91.84% - Fold 6: Đúng 179.0/196.0 => 91.33% - Fold 7: Đúng 170.0/196.0 => 86.73% - Fold 8: Đúng 176.0/195.0 => 90.26% - Fold 9: Đúng 182.0/195.0 => 93.33% - Fold 10: Đúng 181.0/195.0 => 92.82% Kết quả độ chính xác : 1957/1790.0 => 91.47%
************** TỔNG KẾT ******************
Số trường hợp chính xác của Random Forests với 1957 trường hợp = 1790.0 Tỉ lệ chính xác của Random Forests = 91.4665304036791%
***************************************
Hình 3.18. Kết quả độ chính xác của mô hình Random Forest
3.3.2. Mô hình Fuzzy Random Forest
a. Kết quả mô hình phân lớp với Fuzzy Random Forest
Hình 3.19. Mô hình cây quyết định bằng Fuzzy Random Forest
b. Đánh giá độ chính xác của mô hình
Đánh giá độ chính xác của mô hình bằng cách sử dụng k-fold croos validation với k=10. Kết quả với mỗi lần chạy là:
Fold 1: ---Fold 1--- **Ket Qua** STT PhanLop DuDoan 1 Thap Thap 2 Thap Thap 3 Thap Thap ……….. 194 Thap Thap 195 TrungBinh TrungBinh 196 Cao Cao Số dự đoán chinh xác là: 189.0/196.0 Độ Chính Xác : 97.83673469387756%
Hình 3.20. Độ chính xác của mô hình Fuzzy Random Forest – Fold 1
Vậy Fold 1: Đúng 188.0/196.0 => 97.84% Tương tự với các lần chạy còn lại:
- Fold 2: Đúng 182.0/196.0 => 94.19% - Fold 3: Đúng 177.0/196.0 => 91.59% - Fold 4: Đúng 178.0/196.0 => 92.11% - Fold 5: Đúng 181.0/196.0 => 93.67% - Fold 6: Đúng 179.0/196.0 => 93.15% - Fold 7: Đúng 171.0/196.0 => 88.47% - Fold 8: Đúng 177.0/195.0 => 92.06% - Fold 9: Đúng 183.0/195.0 => 93.37% - Fold 10: Đúng 182.0/195.0 => 95.2% Kết quả độ chính xác: 1957/1790.0 => 93.29%
************** TỔNG KẾT ******************
Số trường hợp chính xác của Fuzzy Random Forests với 1957 trường hợp = 1790.0
Tỉ lệ chính xác của Fuzzy Random Forests = 93.29586101175269% *************************************
Hình 3.21. Kết quả độ chính xác của mô hình Fuzzy Random Forest
2.3.3. So sánh độ chính xác giữa mô hình Random Forest và Fuzzy Random Forest
Bảng 3.2. So sánh độ chính xác giữa Random Forest và Fuzzy Random Forest
Phương pháp Độ chính xác Độ sai lệch Thời gian
Random Forest 91.46% 8.54% 0.32 giây
Fuzzy Random Forest 93.29% 6.71% 0.34 giây
Kết quả Bảng 3.2 cho thấy 2 thuật toán Random Forest và Fuzzy Random Forest đều có tốc độ xử lý nhanh và gần bằng nhau. Do đó sẽ rất tiết kiệm thời gian khi áp dụng xử lý cho những khối dữ liệu lớn.
Tuy nhiên, độ chính xác của thuật toán Fuzzy Random Forest (93.29%) tương đối tốt hơn thuật toán Random Forest (91.46%).
KẾT CHƯƠNG 3
Trong chương này, luận văn đã trình bày các chức năng của hệ thống, xây dựng và kiểm thử ứng dụng dựa trên những số liệu cụ thể từ Công ty Cổ phần Bảo hiểm AAA tại Quảng Ngãi. Hệ thống trợ giúp cho cán bộ thẩm định dễ dàng phát hiện ra các trường hợp khách hàng có mức độ rủi ro cao. Qua đó đưa ra những quyết định hợp lý nhằm tăng hiệu quả kinh doanh trong đơn vị.
KẾT LUẬN 1. Kết quả đã đạt được
- Trong luận văn này, chúng tôi đã trình bày một số nội dung liên quan đến khai phá dữ liệu, Thuật toán Rừng ngẫu nhiên (Random Forest) và Rừng ngẫu nhiên mờ (Fuzzy Random Forest).
- Xây dựng và thử nghiệm ứng dụng liên quan đến các thuật toán trên.
- Hệ thống đáp ứng đầy đủ các yêu cầu chuyên môn trong việc đánh giá rủi ro trong bảo hiển xe cơ giới. Nó giúp cho người dùng ra quyết định một cách khoa học, chính xác, tránh được các tình huống thẩm định theo cảm tính, hạn chế các trường hợp rủi ro và tạo thế mạnh cạnh tranh giữa các doanh nghiệp.
2. Hạn chế
- Chương trình phải chuyển đổi dữ liệu từ SQL Server sang Excel. Nên chỉ xử lý dữ liệu được lưu trữ bằng các tập tin Excel.
- Chưa kết nối và truy xuất dữ liệu trực tiếp đến hệ quản trị cơ sở dữ liệu SQL Server của công ty.
- Thuộc tính mờ quá ít (3/8 thuộc tính) nên sự khác biệt giữa hai thuật toán Fuzzy Random Forest và Random Forest là không đáng kể.
3. Hướng phát triển
- Tiếp tục nghiên cứu các thuật toán khai phá dữ liệu mờ bằng thuật toán Fuzzy C-mean Random Forest để nâng cao hiệu quả mô hình cây quyết định.
- Cần thử nghiệm hệ thống với khối lượng dữ liệu lớn để đánh giá lại độ tin cậy của cây quyết định đánh giá rủi ro.
- Xây dựng giao diện đồ họa trực quan hơn để dễ dàng tương tác với người dùng.
DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt
[1] Hoàng Kiếm, Đỗ Phúc (2005), Giáo trình khai phá dữ liệu, Trung tâm nghiên cứu phát triển công nghệ thông tin, Đại học Quốc gia thành phố Hồ Chí Minh.
[2] Lê Văn Tường Lân, Đoàn Văn Ban, Lê Mạnh Thạnh (2006), Một phương pháp để xây dựng cây quyết định có hiệu quả trong khai phá dữ liệu, Kỷ
yếu hội thảo quốc gia về Công nghệ phần mềm và Công nghệ tri thức. [3] Nguyễn Anh Thơ, Nguyễn Long Giang, Cao Chính Nghĩa (2016), Về cải tiến
phương pháp Fuzzy Random Forest, Ứng dụng cho phân lớp dữ liệu không chắc chắn, Kỷ yếu Hội nghị Quốc gia lần thứ 9 về Nghiên cứu cơ
bản và ứng dụng Công nghệ thông tin (Fair’9), tr.811-818.
[4] Phan Trọng Hải (2017), “Ứng dụng khai phá dữ liệu để xây dựng hệ thống trợ
giúp đánh giá rủi ro trong bảo hiểm xe cơ giới”, Luận văn Thạc sĩ ngành Hệ thống thông tin, Đại học Đà Nẵng.
[5] Nguyễn Quang Thu (2008), Quản lý rủi ro và bảo hiểm trong doanh nghiệp,
NXB Thống kê.
[6] Khối Xe cơ giới (2010), Tài liệu hướng dẫn khai thác bảo hiểm xe cơ giới,
Công ty Cổ phẩn Bảo Hiểm AAA, Lưu hành nội bộ.
[7] Khối Xe cơ giới (2012), Quy trình khai thác và quản lý hợp đồng bảo hiểm xe
cơ giới, Công ty Cổ phẩn Bảo Hiểm AAA, Lưu hành nội bộ.
Tiếng Anh
[8] IJCSI International Journal of Computer Science Issues (2012), Random Forests and Decision Trees, Vol. 9, Issue 5, No 3.
[9] Mitchell. T (1999), Machine Learning and Data Mining, Communications of
the ACM, Vol. 42, No. 11, pp. 30-36.
[10] Guoxiu Liang (2005), A comparative study of three Decision Tree algorithms:
ID3, Fuzzy ID3 and Probabilistic Fuzzy ID3, Bachelor Thesis (PFDT),
[11] M. Zeinalkhani and M. Eftekhari (2014), Comparing different stopping criteria for Fuzzy decision tree induction through IDFID3, Iranian
Journal of Fuzzy Systems Vol. 11, No. 1, (2014) pp. 27-48.
[12] Daniel Conn, Tuck Ngun, Gang Li, Christina M. Ramirez (2015), Fuzzy Forests: Extending Random Forests for Correlated, High-Dimensional Data, Department of Biostatistics, pp. 1-17.
[13] Piero Bonissone, José M. Cadenas, M. Carmen Garrido, R. Andrés Díaz- Valladares (2010), A fuzzy random forest, International Journal of
Approximate Reasoning, no. 51, pp.729–747.
[14] Bonissone, P.P., Cadenas, J.M., Garrido, M.C., Diaz-valladares, R.A. (2008),
A fuzzy random forest: fundamental for design and construction, In:
Proceedings of the 12th International Conference on Information Processing and Management of Uncer- tainty in Knowledge-Based Systems (IPMU 2008), pp. 1231–1238.
[15] Bonissone, P.P., Cadenas, J.M., Garrido, M.C., Diaz-Valladares, R.A (2008),
Combination methods in a fuzzy random forest, In: IEEE International
Conference on Systems, Man and Cybernetics, SMC 2008, pp. 1794– 799.
[16] Breiman, L., Friedman, J., Olshen, R., Stone, C. (1984), Classification and Regression Trees, Wadsworth and Brooks, Monterey.
[17] Breiman, L. (2001), Random forests, Mach. Learn. 45(1), 5–32.
[18] Chang, R.L.P., Pavlidis, T. (1977), Fuzzy decision tree algorithms, IEEE
Trans. Syst. Man Cybern, 7(1), 28–35.
[19] Janikow, C.Z. (1998), Fuzzy decision trees: issues and methods, IEEE Trans.
PHỤ LỤC
A. Hàm cây quyết định mờ
function [tree] = FDT(examp, attributes, C,mumfv) theta=2;
theta_n=1;
numberAttr=length(attributes); numberEx = length(examp(:,1));
lastColumn = examp(:, numberAttr+1); un =unique(lastColumn);
num_outcome = length(un);
tree = struct('value','null','bound1' ,'null','bound2' ,'null', 'bound3' ,'null','left', 'null','center', 'null', 'right', 'null');
if(num_outcome == 1) tree.value = un; return end GI=zeros(1,numberAttr); for j=1:numberAttr GI(:,j)=GGain(C(:,:,j),lastColumn); end [M I]=max(GI); index =I; m=M; %%%%%%%%%%%%%%%%% switch attributes{index} case {'GioiTinh','PhamViHD','BaoDuongDK','KVDoXe'} fBound1 = 0.25; fBound2 = 0.5; fBound3 = 0.75; case {'MucDichSD'} fBound1 = 0.5; fBound2 = 1; fBound3 = 1.5 ; case {'ThoiGianSD'} fBound1 = 5; fBound2 = 9.953; fBound3 = 15 ; case {'SoTienBT'}
fBound1 = 10; fBound2 = 17.733; fBound3 = 35; case {'KinhNghiemLX'} fBound1 = 5; fBound2 = 8.255; fBound3 = 10 ; end %end ten=attributes{index}; tree.value=ten; tree.bound1=fBound1 ; tree.bound2=fBound2; tree.bound3=fBound3; if(m==0) return end %%%%%% for j=1:numberEx; if (examp(j,index)<fBound2) mumfv(j,1,index)= mumfv(j,1,index)*C(j,1,index); end if and(examp(j,index)>=fBound1,examp(j,index)<=fBound3) mumfv(j,2,index)= mumfv(j,2,index)*C(j,2,index); end if (examp(j,index)>fBound2) mumfv(j,3,index)= mumfv(j,3,index)*C(j,3,index); end end %%%%%%%%%%%%%%%%% for j=1:numberEx; if (examp(j,index)<fBound2) mumfv(j,1,index)= mumfv(j,1,index)*C(j,1,index); end if and(examp(j,index)>=fBound1,examp(j,index)<=fBound3) mumfv(j,2,index)= mumfv(j,2,index)*C(j,2,index);
end if (examp(j,index)>fBound2)