1. Chuyển đổi dữ liệu bên ngoài vào CSDL Oracle.
Vì dữ liệu khai phá trong CSDL ORACLE nên cần có tiện ích cho phép dễ dàng chuyển đổi dữ liệu từ các CSDL khác. Với đa số các hệ quản trị CSDL khác nhƣ Access, Foxpro, Orcale… đều có cơ chế export dữ liệu ra dạng text file. Vì vậy tiện ích này sẽ cho phép chuyển đổi dữ liệu từ dữ liệu dạng file text vào các bảng trong CSDL Oracle. Để đảm bảo tính mềm dẻo, dễ thích ứng và dễ mở rộng cần thiết kế và tạo ra các công cụ sao cho có thể sử dụng đƣợc khi có thay đổi cấu trúc dữ liệu nguồn. Tiện ích chuyển đổi này thực thi trong môi trƣờng Oracle với các bảng dữ liệu và giao diện cho phép ngƣời dùng khai báo các tham số định nghĩa ánh xạ và các công thức chuyển đổi hoặc làm sạch dữ liệu nhƣ chuyển dạng, đổi mã, chuyển các mã tiếng Việt, thay thế từ viết tắt, các công thức số học tính toán giữa các trƣờng, các hàm xoay cột thành hàng... Trên cơ sở đó sinh ra các script tạo lập và chuyển dữ liệu vào các bảng.
2. Chuyển đổi DL về dạng có thể khai phá được:
Chuyển từ dạng quan hệ sang dạng giao dịch: - Dữ liệu dạng quan hệ
- Dữ liệu dạng giao dịch
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle - Sử dụng câu lệnh query xoay chiều để chuyển :
INSERT ALL
INTO odm_mtr.market_basket_Tx_binned (sequence_ID, Attribute_name,value)
VALUES (ID,'DELI',decode(deli,null,null,1) )
INTO odm_mtr.market_basket_Tx_binned (sequence_ID, Attribute_name,value)
VALUES(ID,'CANNED_GOODS',decode(CANNED_GOODS,null,null,1) ) ….
(SELECT * FROM odm_mtr.market_basket_2d_binned WHERE id=11 ) ;
3. Rời rạc hoá dữ liệu:
Sử dụng các thuật toán và module của Oracle
- Dữ liệu vào là bảng có các giá trị theo tên hoặc giá trị số liên tục
- Qua thủ tục rời rạc hoá sẽ có 3 bảng kết quả sau: Bảng map các giá trị tên vào Group_Id.
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle Bảng map các giá trị số liên tục vào các khoảng BIN_ID
Kết quả dữ liệu sau rời rạc sẽ có giá trị các trƣờng là BIN_ID hoặc GROUP_ID
4. Biểu diễn kết quả thành các dạng dễ hiểu:
- Dữ liệu dạng cây: Sử dụng query phân cấp thể hiện kết quả ra:
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle - Dữ liệu dạng cây ABN trên hai bảng quan hệ:
* Bảng 1 chứa các định nghĩa về cây bao gồm các trƣờng Tree_name, Node_id, Parent, Predictor, Target, trong đó thể hiện cấu trúc cây: (Tree_name, Node_id, Parent) tên thuộc tính dự báo (Predictor) tại các node và lớp (Target) của cây đó.
Ví dụ node_id=5 và thể hiện lớp kết quả 0 của thuộc tính AGE. * Bảng 2 chứa giá trị của thuộc tính tại mỗi node_id của cây đó. Ví dụ tại node_id=5 nhận các giá 10,4,5,6
* Luật đƣợc thể hiện là : IF AGE IN (10,4,5,6) THEN CLASS=0 ….
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle IV.2.2. Xây dựng các giao diện hỗ trợ khai phá dữ liệu
Sử dụng Oracle Form 6i xây dựng các giao diện thực hiện các chức năng Phân lớp, Luật kết hợp, Gộp nhóm với một số thuật toán nhƣ sau:
1. Hệ thống
1.1 Khai báo các tham số hệ thống: Connect Database
Các tên URL. các cổng kết nối
Định nghĩa các lƣợc đồ lƣu trữ dữ liệu để lấy dữ liệu và đƣa ra kết quả. Các tham số này đƣợc nhập và ghi vào file Sample_global.property
1.2 Rời rạc hóa dữ liệu
Cho phép nhập tên bảng và query dữ liệu ra để xem xét và hiệu chỉnh. Tham số tên bảng đƣợc viết trong file:
Discretization_CreateBinBoundaryTables.property
Có thể định nghĩa các khoảng hoặc các lô cần rời rạc cho các thuộc tính : - Gộp một số trƣờng có giá trị tên thành các khoảng trƣờng WORKCLASS đƣợc gộp thành 3 nhóm sau nhƣ sau:
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
// WORKCLASS
cats1[0] = new Category("Fed-gov"); cats1[1] = new Category("Loc-gov"); cats1[2] = new Category("Sta-gov");
groups[0] = new CategoryGroup(100,"Government",cats1); cats2[0] = new Category("Never");
cats2[1] = new Category("No-pay");
groups[1] = new CategoryGroup(200,"Unemployed",cats2); cats3[0] = new Category("Private");
cats3[1] = new Category("SelfEI");
groups[2] = new CategoryGroup(300,"Others",cats3); ...DiscretizationSpecification("workclass",cat1);
Nếu giá trị WORKCLASS in ("Fed-gov","Loc-gov","Sta-gov") đƣợc gộp vào nhóm 1 có giá trị 100, tên là Goverment…
- Các giá trị số liên tục có thể chỉ ra số các nhóm để rời rạc hoá trƣờng WEIGHT
nhóm thành 10 khoảng giá trị
NumericalDiscretization bin2 = new NumericalDiscretization(10); DiscretizationSpecification("WEIGHT",bin2);
- Các giá trị số liên tục có thể đƣợc rời rạc hoá theo cách chỉ ra các khoảng với cận trên và cận dƣới nhƣ sau:
NumericalBin bb12[] = new NumericalBin[5];
bb12[0] = new NumericalBin(1,(float)1,(float)35); bb12[1] = new NumericalBin(2,(float)35,(float)40); bb12[2] = new NumericalBin(3,(float)40,(float)41); bb12[9] = new NumericalBin(4,(float)41,(float)48); bb12[4] = new NumericalBin(5,(float)48,(float)99); DiscretizationSpecification("HOURS_PER_WEEK",bin12);
Nếu giá trị HOURS_PER_WEEK trong khoảng 1-35 sẽ thuộc Lô 1, 35-40: Lô 2… Thực hiện rời rạc hoá để tạo ra các khoảng hoặc các lô theo ví dụ mẫu:
exec.bat Discretization_CreateBinBoundaryTables Discretization_CreateBinBoundaryTables.property
áp dụng rời rạc hoá theo các mẫu cho một bảng dữ liệu có cấu trúc giống mẫu trên :
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
Discretization_UseBinBoundaryTables.property
2. Phân lớp
2.1 Phân lớp bằng cây quyết định ABN 2.1.1 Xây dựng
- Nhập tham số tên bảng dữ liệu xây dựng mô hình và query dữ liệu xem xét và hiệu chỉnh, dữ liệu có thể dạng quan hệ hoặc giao dịch, có một trƣờng tên là CLASS có giá trị lớp của đối tƣợng. Các tên bảng và loại dữ liệu đƣợc viết trong file:
Adapter_Naive_Bayees_Build.property.
- Thực hiện khai phá dữ liệu gọi module:
exec.bat Adapter_Naive_Bayees_Build Adapter_Naive_Bayees_Build.property
- Thể hiện kết quả dạng luật: IF AGE IN (10, 4, 5, 6) THEN CLASS = 0 2.1.2 Kiểm thử mô hình
- Nhập tham số tên bảng dữ liệu kiểm thử mô hình và query dữ liệu xem xét và hiệu chỉnh, dữ liệu có thể dạng quan hệ hoặc giao dịch, có một trƣờng tên là CLASS
có giá trị lớp của đối tƣợng. Các tên bảng và loại dữ liệu đƣợc viết trong file:
Adapter_Naive_Bayees_Test.property.
- Thực hiện khai phá dữ liệu gọi module :
exec.bat Adapter_Naive_Bayees_Test Adapter_Naive_Bayees_Test.property
- Thể hiện kết quả dạng bảng trong đó các đối tƣợng đã đƣợc phân lớp và ma trận hỗn hợp và thể hiện chính xác của các lớp dự đoán với các lớp thực sự của dữ liệu 2.1.Áp dụng mô hình
- Cho phép nhập tên bảng dữ liệu. Các tên bảng và loại dữ liệu đƣợc viết trong file
Adapter_Naive_Bayees_Apply.property.
- Thực hiện khai phá dữ liệu:
exec.bat Adapter_Naive_Bayees_Apply Adapter_Naive_Bayees_Apply.property
- Thể hiện kết quả dạng danh sách khách hàng đã phân lớp với xác suất nào đó.
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
Nếu bảng dữ liệu có giá trị của trƣờng CLASS sẽ đƣa ra đánh giá độ chính xác giông kiểm thử mô hình.
2.2 Phân lớp bằng NB - Tƣơng tự phân lớp ABN 2.2.1 Xây dựng mô hình
exec.bat Naive_Bayees_Build Naive_Bayees_Build.property
2.2.2 Kiểm thử và tính độ lệch
exec.bat Naive_Bayees_Test Naive_Bayees_Test.property
2.2.3 Ap dụng mô hình
execute.bat Naive_Bayees_Apply Naive_Bayees_Apply.property
3. Luật kết hợp
3.1 Dữ liệu dạng giao dịch.
- Nhập tên bảng dữ liệu. Các tên bảng và loại dữ liệu đƣợc viết trong file
AssociationRules_Transactional.property. Trong đó cần chỉ ra tên các column tƣơng ứng với các trƣờng ID, ATTRIBUTE_NAME, VALUE
- Thực hiện khai phá dữ liệu gọi module:
exec.bat AssociationRules AssociationRules_Transactional.property
- Đƣa ra kết quả danh sách dạng luật với danh sách các luật đƣợc sắp xếp theo thứ tự độ hỗ trợ và độ tin cậy:
IF (BEER) THEN (TV_DINNER) với độ hỗ trợ là 0.17…
3.2 Dữ liệu dạng quan hệ
- Nhập tên bảng dữ liệu và kiểm tra dữ liệu. Các tên bảng và loại dữ liệu đƣợc viết trong file: AssociationRules_TwoDimension.property.
- Thực hiện khai phá dữ liệu:
exec.batAssociationRules AssociationRules_TwoDimensional.property
- Thể hiện kết quả danh sách dạng luật với danh sách các luật đƣợc sắp xếp theo thứ tự độ hỗ trợ và độ tin cậy: IF (BEER) THEN (TV_DINNER) , độ hỗ trợ 0.17…
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
4. Gộp nhóm
4.1 Xây dựng mô hình
- Nhập tên bảng dữ liệu và kiểm tra dữ liệu. Các tên bảng và loại dữ liệu đƣợc viết trong file ClusteringBuild.property
- Thực hiện exec.bat ClusteringBuild ClusteringBuild.property
- Thể hiện kết quả dạng cây với các node lá là tập phân hoạch các nhóm của dữ liệu. Trên mỗi node của cây thể hiện số bản ghi thuộc lớp đó. Ví dụ
Theo kết quả của mô hình trên với tập dữ liệu đƣa vào sẽ đƣợc phân thành 5 nhóm (tại mức lá) là 8, 9, 6, 7, 5.
4.2 Áp dụng mô hình
- Nhập tên bảng dữ liệu, tên bảng và loại dữ liệu ghi vào file
ClusteringApply.property. Cấu trúc bảng và các kiểu giá trị giống nhƣ dữ liệu xây dựng.
- Thực hiện exec.bat ClusteringBuild ClusteringApply.property
- Thể hiện kết quả dạng bảng với danh sách các bản ghi dữ liệu sẽ thuộc 1 trong các nhóm ở bƣớc xây dựng đã khai phá đƣợc. (8, 9, 6, 7, 5.) 1 2 3 8 9 4 5 6 7 4000 2464 1526 1016 520 490 474 1990 1500
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
IV.3. Tiến hành một số thử nghiệm khai phá dữ liệu
IV.3.1. Mô tả các thử nghiệm
Chức
năng Mô hình /Dữ liệu Form Bảng dữ liệu vào Số bản ghi Kết quả Thờ i gian Rời rạc dữ liệu Xây dựng
DIS_build census_2d_test_unbinned 2940 census_2d_num
census_2d_cat 2” áp dụng DIS_Apply census_2d_apply_unbinne d 1226 census_2d_appl y_binned_v 2” Phân lớp, Naive Bayee s Xây dựng NB_Build census_2d_build_unbinne d 2940 Sample_NB_Mo del 8” Kiểm thử NB_Test census_2d_Test_unbinne d 834 4” áp dụng NB_Apply census_2d_Apply_unbinn ed 1226 38’’ Cây quyết định Xây dựng ABN_build census_2d_build_binned 2940 1’6’’ Kiểm thử ABN_Test census_2d_Test_binned 834 1’5’’ áp dụng ABN_Appl y census_2d_Apply_binned 1226 35’’ Luật kết hợp Quan hệ Ass_Rule_ 2d market_basket_2d_binned 1000 42’’ Giao dịch Ass_Rule_ Tx market_basket_tx_binned 3799 39’’ Gộp nhóm Xây dựng Clust_build eight_clouds_buid_unbinn ed 4000 36’’
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle áp dụng Clust_Appl y eight_clouds_apply_unbin ned 4000 35’’ Dữ liệu BHNT Luật kết hợp Ass_Rule_ 2d Mua_sf 7995 2 1’
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle IV.3.2. Phân lớp
1. Xây dựng mô hình ABN
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
3. Áp dụng mô hình ABN
4. Áp dụng mô hình NB
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle IV.3.3. Luật kết hợp
1. Dữ liệu dạng giao dịch
2. Dữ liệu quan hệ
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle IV.3.4. Gộp nhóm
1. Xây dựng mô hình
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle IV.3.5. Khai phá luật kết hợp trong CSDL Bảo Việt
1. Chuẩn bị dữ liệu từ dữ liệu Khách hàng, hợp đồng và Sản phẩm.
Số lượng bản ghi hợp đồng BHNT là 84922
drop table mua_sf;
create table mua_sf as (select id,
TO_NUMBER(decode ( NT_5,null,null,1)) as NHAN_THO_5,
...
TO_NUMBER(decode ( DKR_4,null,NULL,1)) as DKR_4 ,,,,
from nt_dkr c, nt_hopdong b ,nt_khach a where a.kh_id=b.tgia_id and c.hd_id=b.hd_id AND SUBSTR(KH_ID,1,4)='1002') group by id ) )
Đƣa dữ liệu vào bảng giao dịch mua_sf_tx
create table mua_sf_tx as (select * from odm_mtr.market_basket_Tx_binned where 1=2); insert all
into mua_sf_tx (sequence_ID, Attribute_name,value)
values (ID,'NHAN_THO_5 ',decode(NHAN_THO_5 ,null,null,1) ) ...
into mua_sf_tx (sequence_ID, Attribute_name,value) values (ID,'DKR_4',decode(DKR_4,null,null,1) ) (SELECT * FROM mua_sf ) ;
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
Số lượng bản ghi mua_sf_Tx là 79952 2. Kết quả khai phá luật kết hợp
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
KẾT LUẬN
Trong khuôn khổ của luận văn chƣa có điều kiện để thử nghiệm đƣợc đầy đủ các định hƣớng khai phá trên các dữ liệu thật và đƣa ra kết quả cụ thể. Một phần do những yêu cầu bảo mật số liệu kinh doanh của các ngành, mặt khác do hạn chế: các nguồn số liệu còn thiếu các thông tin quan trọng cho khai phá nhƣ các thông tin thu nhập cá nhân, các tình trạng bệnh tật, sức khoẻ… và sự phối hợp với các chuyên gia chuyên ngành còn chƣa đủ chặt chẽ để có thể tận dụng hết các hiểu biết về nhu cầu phân tích định hƣớng ra quyết định.
Luận văn mới chỉ sử dụng đƣợc một phần các lý thuyết, các cách tiếp cận và thử nghiệm một số mô hình thuật toán khai phá tri thức trong các CSDL Oracle nhƣ khai phá luật kết hợp trong các giao dịch bán lẻ, các sản phẩm BHNT, phân loại, gộp nhóm khách hàng. Các kết quả này chƣa mang nhiều ý nghĩa thực tế, nhƣng có thể đánh giá đƣợc về mặt thời gian, và sự ổn định của các mô hình và thuật toán. Dữ liệu BHNT đƣợc thử nghiệm trên 3 bộ số liệu của 3 Công ty khác nhau đều có kết quả tƣơng tự. Thời gian khai phá luật kết hợp trên tập dữ liệu khoảng 80 000 bản ghi với 12 sản phẩm (mặt hàng) khoảng 1 phút.
Kết quả đạt đựợc
Tổng kết, đánh giá một số chức năng, nhiệm vụ và các kỹ thuật cơ bản trong khai phá dữ liệu.
Xây dựng các công cụ, giao diện dễ dùng trợ giúp chuyên gia tiến hành khai phá dữ liệu trên nền CSDL Oracle 9i và sử dụng môi trƣờng phát triển ứng dụng của Oracle.
Phân tích một số định hƣớng khai phá dữ liệu cho các lĩnh vực thuế và bảo hiểm.
Tiến hành khai phá trên một số dữ liệu thử nghiệm.
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
Định hƣớng phát triển.
Tìm hiểu, nghiên cứu khai thác rộng và sâu hơn nữa các tri thức về lý thuyết cơ bản của khai phá dữ liệu để có thể vận dụng vào thực tiễn chính xác hơn.
Hoàn thiện các công cụ và giao diện hỗ trợ chuyên gia khai phá dữ liệu. Thử nghiệm và đánh giá kỹ hơn các thuật toán trên số liệu thật.
Khai phá dữ liệu trên kho dữ liệu với các luật kết hợp đa chiều, nhiều mức. Có các hƣớng hiệu chỉnh số liệu cho có nghĩa.
Định hƣớng cải thiện thêm các thuật toán, sử dụng các thuật toán song song hoặc phân hoạch dữ liệu song song.
Tìm kiếm và xây dựng các công cụ thể hiện kết quả ở các dạng dễ hiểu và đẹp mắt hơn nhƣ các đồ thị, cây, biểu đồ…
Có sự hợp tác với các nhà chuyên môn. Cung cấp và trợ giúp các cán bộ nghiệp vụ, vì bản thân số liệu là nguồn tài sản quý giá của từng ngành. Chỉ có các chuyên gia trong ngành mới có đủ tri thức và kiến thức cần thiết để có thể tận dụng và khai phá dữ liệu với các phân tích có ý nghĩa, phục vụ hiệu quả nhất nhu cầu quản lý.
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
TÀI LIỆU THAM KHẢO TIẾNG VIỆT
[1] Nhóm Actuary Trung tâm OLICD (1997) Nhập môn sở toán học Bảo hiểm Nhân thọ.Trung tâm phát triển BHNT Đông phƣơng Tokyo Nhật bản
[2] Đỗ Việt Nga (2001) Phân tích khai phá dữ liệu trên kho dữ liệu có sẵn Data Mining. Viện CNTT.
[3] Tổng cục thuế (2003): Dự án xây dựng hệ thống dịch vụ Đối tượng nộp thuế qua mạng máy tính.
TIẾNG ANH:
[4] HoTuBAo (2000). Introdution knowledge discovery and data mining.
Institute of Information Technology National Center for NCST.
[5] HoTuBAo (2003). Lectures of Methodology for Knowledge Discovery
Institute of Information Technology National Center for NCST. [6] D.B. Skillicorn(1999): Strategies for Parallizing Data Mining.
[7] Dorian, P. Morgan Kaufmann. (1999) Data Preparation for Data Mining . [8] David Hand, Heikki Mannila and Padhraic Smyth (2001) Principles of
Data Mining. The MIT Press
[9] Martin T.Hagan Oklahoma State University, Howard B.Demuth University of Idaho (1996).Neural Network Design. PWS Publishing Company.
[10] IBM Research Report (1998) Parallel Mining of Association Rules: Design, Implementation and Experience.
[11] Jiawei Han, Micheline Kamber (2001), Data Mining Concept and
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
techniques. Simon Froser University.
[12] Karuna Pande Joshi (1997) Analysis of Data Mining Algorithms.
[13] Liu, H. and Motoda (1998). Feature Selection for Knowledge Discovery and Data Mining, Kluwer International
[14] Oracle 9i (2002) Oracle Data Mining Concept and techniques.
[15] Tom Michael Mitchell (1997), Machine Learning. McGraw Hill. [16] Oracle Coporation (2002): Oracle9i Data Warehousing Guide (9.2).
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
PHỤ LỤC
1. Cấu trúc một số bảng dữ liệu khai phá thử nghiệm
- Dữ liệu phân lớp
- Dữ liệu phân tích luật kết hợp
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle
2. Các file tham số và chƣơng trình xây dựng mô hình NB
- File chứa các tham số dữ liệu vào
AssociationRules_Transactional.property miningServer.url=jdbc:oracle:thin:@cun:1521:tps miningServer.userName=ODM miningServer.password=ODM inputDataSchemaName=sh outputSchemaName=sh timeout=120
## Input data for Association Rules Build buildData.type=transactional
# Input table details
buildData.tableName=MARKET_BASKET_TX_BINNED transactionalData.sequenceId=SEQUENCE_ID transactionalData.attributeName=ATTRIBUTE_NAME transactionalData.valueName=VALUE associationRulesOutput.miningSettingsName=Sample_AR_MFS_tx associationRules.dataPrepStatus=discretized associationRules.minimumSupport=0.01 associationRules.minimumConfidence=0 associationRules.maximumRuleLength=2 associationRulesOutput.miningTaskName=Sample_AR_Build_Task_tx associationRulesOutput.modelName=Sample_AR_Model_tx enableCleanup=cleanupBeforeExecution
- Source chƣơng trình AssociationRules.java
* This sample program illustrates the use of ODM API to build a NB // Generic Java Imports
Một số thử nghiệm khai phá dữ liệu trong CSDL Oracle import java.sql.*; import java.util.*; import java.sql.SQLException; // ODM Imports