4.1.1. Mã lệnh thuật toán gSpan
Thuật toán gSpan bao gồm các thủ tục, các hàm:
Thủ tục subgraph_Mining(DFSCode code) dùng để khai phá các đồ thị con thỏa mãn điều kiện Support >= minSup trong tập dữ liệu đầu vào thì sẽ thêm đồ thị con vào tập kết quả là các đồ thị con thƣờng xuyên.
Thủ tục graphSet_Projection(DataBase gs) dùng để xử lý tập dữ liệu đầu vào khởi tạo đồ thị 1-edge ban đầu, gán lại nhãn đồ thị, sắp xếp các đồ thị theo thứ tự từ điển DFS, loại bỏ những đồ thị trong DataBase có support < minSup.
Hàm khởi tạo GSpan(Settings settings) dùng khởi tạo giá trị các tham số của class GSpan.
Hàm getGraphFactory(GraphDataParser parser) dùng để định dạng dữ liệu đồ thị theo quy định biểu diễn đồ thị thự thi trong thuật toán.
Hàm startRealMining() dùng để tính thời gan thực thuật toán và chứa lời gọi hàm thực thi hàm graphSet_Projection(gs) với gs là CSDL đồ thị đầu vào.
public class GSpan extends AbstractGSpan {GraphFactory factory = GraphFactory.getFactory(GraphFactory.LIST_GRAPH|
GraphFactory.UNDIRECTED_GRAPH); public GSpan(Settings settings) { super(settings);
this.m_frequentSubgraphs = new FragmentSet(); Debug.out = System.out;
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Debug.dlevel = m_settings.debug;
}
protected GraphFactory getGraphFactory(GraphDataParser parser) {
int mask = parser.getDesiredGraphFactoryProperties() | GraphFactory.CLASSIFIED_GRAPH; return GraphFactory.getFactory(mask);
}
protected void startRealMining() {
long start = System.currentTimeMillis();
DataBase gs = new DataBase(m_graphs, m_settings.minimumSupGraph, m_frequentSubgraphs, factory);
graphSet_Projection(gs); }
private void graphSet_Projection(DataBase gs) {
for (Iterator eit = gs.frequentEdges(); eit.hasNext();) { GSpanEdge edge = (GSpanEdge) eit.next();
DFSCode code = new DFSCode(edge, gs); //taọ DFSCode cho cạnh hiện thời subgraph_Mining(code); //tìm kiếm đệ quy
eit.remove(); //thu gọn CSDL
if (gs.size() < m_settings.minimumSupGraph && gs.size() != 0) { return;
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
} }
private void subgraph_Mining(DFSCode code) { if (!code.isMin()) {
m_settings.duplicateFragments++; return;
}
m_frequentSubgraphs.add(code.toFragment());
Iterator it = code.childIterator(m_settings.findTreesOnly, m_settings.findPathsOnly); for (; it.hasNext();) {
DFSCode next = (DFSCode) it.next();
if (next.isFrequent(m_settings.minimumSupGraph)) { subgraph_Mining(next); } } } 4.1.2. Dữ liệu thử nghiệm
Dữ liệu thử nghiệm là tệp dữ liệu về CSDL đồ thị là đầu vào cho thuật toán tìm các đồ thị con thƣờng xuyên từ CSDL đồ thị. Tệp dữ liệu về CSDL đồ thị có cấu trúc nhƣ sau:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Loại dòng Định dạng Giải thích ý nghĩa
Chú thích # Ký hiệu báo hiệu chú thích,
chƣơng trình sẽ bỏ qua những dòng có ký hiệu này ở đầu
Đồ thị t # <id> Bắt đầu một giao dịch hay đồ
thị với id mô tả tên của giao dịch hay đồ thị
Đỉnh v <ID><Label> Dòng mô tả đỉnh bắt đầu bởi ký tự v. Tiếp theo là mã của đỉnh (ID) và nhãn của đỉnh (Label) đƣợc cách nhau bởi khoảng trống
Cạnh e<ID1><ID2><Label> Dòng mô tả cạnh bắt đầu bởi ký tự e. Tiếp theo là mã của đỉnh đầu (ID1), đỉnh cuối (ID2) của cạnh và nhãn (Label) của cạnh đó đƣợc cách nhau bởi khoảng trống
# Do thi g1 t # g1 v 0 1 v 1 1 v 2 2 v 3 2 # Do thi g2 t # g2 v 0 1 v 1 2 v 2 2 v 3 1
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ v 4 1 e 0 1 1 e 1 2 1 e 2 3 1 e 3 4 1 e 0 1 1 e 1 2 1 e 2 3 1 # Do thi g3 t # g3 v 0 1 v 1 1 v 2 2 v 3 2 v 4 1 e 0 1 1 e 0 3 1 e 1 2 1 e 2 3 1 e 3 4 1 # Do thi g4 t # g4 v 0 2 v 1 1 v 2 2 v 3 2 v 4 1 v 5 1 e 0 1 1 e 1 2 1 e 1 5 1 e 2 3 1 e 3 4 1
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
4.1.3. Biểu diễn đồ thị
Công cụ biễu diễn đồ thị có chức năng đồ họa hóa đồ thị từ tệp dữ liệu đầu vào hoặc tệp dữ liệu đầu ra. Mỗi dữ liệu đồ thị trong tệp sẽ tƣơng ứng với một form đồ họa đồ thị.Giao diện công cụ hiển thị đồ thị nhƣ sau:
Hình 4.2. Giao diện biễu diễn đồ thị
Chọn tệp dữ liệu đồ thị, tùy chọn "Đỉnh màu" để cho phép mỗi nhãn đỉnh sẽ có một màu, sau đó nhấn nút "Hiển thị", các đồ thị tƣơng ứng sẽ đƣợc hiển thị. Ví dụ Hình 4.3 là một trong các form biểu diễn dữ liệu đồ thị.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
4.2. ĐÁNH GIÁ
4.2.1. Kiểm tra thuật toán
Trong quá trình xây dựng và cài đặt thuật toán, thì điều quan trọng là tính đúng đắn của thuật toán. Học viên đã đƣa vào một số dữ liệu mẫu nhỏ để có thể mô hình hóa bằng đồ họa, trong đó Hình 4.4 biễu diễn tập CSDL đồ thị đầu vào, ngƣỡng hỗ trợ tối thiệu là 80% thì kết quả sẽ cho ra là 4 đồ thị con thƣờng xuyên thỏa mãn ngƣỡng và đƣợc biễu diễn trong Hình 4.5.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 4.5. Tập kết quả các đồ thị con thƣờng xuyên
4.2.2. Đánh giá thuật toán
Ngày nay, với sự ra đời công nghệ lƣu trữ và xử lý dữ liệu lớn, học viên đã nghiên cứu và lựa chọn thuật toán gSpan để cài đặt trên hạ tầng này. Thuật toán gSpan có ƣu điểm hơn so với thuật toán AGM cũng nhƣ FSG là không tạo ra các ứng viên, do đó làm giảm đƣợc chi phí tính toán cũng nhƣ không gian lƣu trữ. Do đó, thuật toán là lựa chọn tốt cho giải pháp cài đặt trên hạ tầng lƣu trữ và xử lý dữ liệu lớn để giải quyết các bài toán tìm đồ thị con thƣờng xuyên trong tập CSDL đồ thị lớn.
Trong luận văn này, học viên đƣa vào một số mẫu dữ liệu và đã thu đƣợc một số kết quả khả quan. Nó phản ánh đƣợc tính đúng đắn của thuật toán bài toán. Nếu dữ liệu vào với khối lƣợng đồ thị giao dịch nhỏ, thì thuật toán sẽ chạy rất nhanh. Nhƣng khi khối lƣợng đồ thị giao dịch lớn, thì kết quả trả về sẽ chậm hơn. Đồng thời, tham số ngƣỡng tối thiểu có ảnh hƣởng rất lớn tới
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
thời gian xử lý. Nếu ngƣỡng tối thiểu nhỏ thì thuật toán chon kết quả chậm, nhƣng ngƣỡng tối thiểu lớn thì thuật toán cho kết quả nhanh hơn. Ở Hình 4.6 biểu diễn hiệu suất của thuật toán khi chạy với tập dữ liệu đồ thị, mà mỗi đồ thị 500 đỉnh, 1500 cạnh, ngƣỡng hộ trợ tối thiệu là 40%, số lƣợng đồ thị giao dịch thay đổi từ 500 đến 5000 đồ thị, thì thời gian thay đổi tƣơng ứng.
Hình 4.6. Hiệu suất thuật toán khi chạy với số đồ thị giao dịch thay đổi Trong Hình 4.7biểu diễn hiệu suất của thuật toán khi chạy với tập dữ liệu đồ thị, mà mỗi đồ thị 500 đỉnh, 1500 cạnh, số lƣợng đồ thị giao dịch là 3000 đồ thị và ngƣỡng hỗ trợ tối thiểu thay đổi từ 40% đến 90% , thì thời gian thay đổi tƣơng ứng.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 4.7. Hiệu suất thuật toán khi chạy với ngƣỡng hỗ trợ tối thiểu thay đổi
4.3.KẾT LUẬN
Phần mềm thử nghiệm cài đặt thuật toán tìm các đồ thị con thƣờng xuyên trong CSDL đồ thị đƣợc học viên phát triển dựa trên thuật toán gSpan đƣợc X. Yan and J. Han đƣa ra. Thuật toán gSpan đƣợc triển khai trên hạ tầng lƣu trữ và xử lý dữ liệu lớn với kết quả khả quan.
Sử dụng môi trƣờng máy ảo Java để chạy ứng dụng biễu diễn đồ thị bằng đồ họa và cài đặt phần mềm thử nghiệm lên hạ tầng lƣu trữ và xử lý dữ liệu lớn. Đồng thời học viên đã chạy một số dữ liệu mẫu và có đánh giá về kết quả của thuật toán.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN KẾT LUẬN
Nội dụng luận văn đã tìm hiểu các vấn đề lý thuyết về khai phá dữ liệu đồ thị: bao gồm cơ sở lý thuyết đồ thi,cách tiếp cận phát hiện cấu trúc con thƣờng xuyên dựa vào thuật toán Apriori và cách tiếp cận dựa trên sự phát triển mẫu,nội dung chính là các thuật toán phát hiện đồ thị con thƣờng xuyên với một ngƣỡng hỗ trợ tối thiểu minsup cho trƣớc trong một tập cơ sở dữ liệu đồ thị. Luận văn tập trung vào hai chiến lƣợc tìm kiếm đó là chiến lƣợc tìm kiếm theo chiều rộng gồm các thuật toán Subdue, FSM và chiến lƣợc tìm kiếm theo chiều sâu gồm các thuật toán gSpan, FFSM, Grew.
Chƣơng trình thử nghiệm đƣợc xây dựng nhằm chứng minh tính khả thi của các kết quả nghiên cứu. Chƣơng trình hoàn thiện cần có sự đầu tƣ nhiều hơn về mặt thời gian và công sức. Đề tài có thể tiếp tục phát triển để đem lạiứng dụng đáp ứng đƣợc yêu cầu thực tế.
HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
Xây dựng chƣơng trình thực nghiệm với giao diện đồ họa thân thiện với ngƣời dùng trong quá trình nhập tham số đầu vào của thuật toán.Tiếp tục nghiên cứu và cài đặt các thuật toán khai phá đồ thị con thƣờng xuyên khác (Subdue, FSM. FFSM,Grew) để khẳng định tính hiệu quả của chúng trong khai phá dữ liệu đồ thị từ các kho dữ liệu đồ thị lớn.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
TÀI LIỆU THAM KHẢO
Tiếng Anh:
[1]. D.J.Cook and L.B.Holder (2000), Graph Base Data Mining, IEEE Intelligent Systems, 15(2),pp. 32-41.
[2]. J. Huan, W. Wang, and J. Prins (2003), Efficient mining of frequent subgraph in the presence of isomorphism. In Proceedings of the 3rd IEEE International Conference on Data Mining (ICDM),pp.549-552.
[3]. L.B.Holder,D.J.Cook and S.Djoko(1994), Substructure Discovery in
the SUBDUE System.In Proceedings of the AAAI Workshop on
Knowledge Discovery in Databases, pp. 169 -180.
[4]. J. R. Ullman (1976), An algorithm for subgraph isomorphism.Journal of theACM,23(1),pp.31–42.
[5]. M. Moy(May 2005). Using tmods to run the best friends group detection algorithm. 21st CenturyTechnologies Internal Publication.
[6]. Jun Huan, Wei Wang, Jan Prins, Efficient Mining of Frequent Subgraph in the Presence of Isomorphism, pp.1-16.
[7]. Lawrence B. Holder,Nikhil S. Ketkar,Diane J. Cook,Subdue:
Compression-Based Frequent Pattern Discovery in Graph Data, pp.5-6.
[8]. Bismita Srichandan, Rajshekhar Sunderraman, OO-FSG: An Object- Oriented Approach to Mine Frequent Subgraphs,pp.11-12.
[9]. Xifeng Yan,Jiawei Han,gSpan: Graph-Based Substructure Pattern Mining, pp.5-6.
[10]. Lawrence B. Holder,Diane J. Cook,Mining Graph Data. Wiley- interscience a john wiley & sons, inc., publication ,pp 101-154.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
LỜI CAM ĐOAN
Tôi xin cam đoan toàn bộ nội dung bản luận văn này là do tôi tự sƣu tầm, tra cứu và phát triển thuật toán đáp ứng nội dung yêu cầu của đề tài.
Nội dung bản luận văn chƣa từng đƣợc công bố hay xuất bản dƣới bất kỳ hình thức nào và cũng không đƣợc sao chép từ bất kỳ một công trình nghiên cứu nào.
Tất cả phần mã nguồn của chƣơng trình đều do tôi tự tìm kiếm và xây dựng thử nghiệm.
Nếu sai tôi xin tôi xin hoàn toàn chịu trách nhiệm.
Thái Nguyên, tháng 09 năm 2014
Ngƣời cam đoan
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
LỜI CẢM ƠN
Em xin chân thành cảm ơn các Thầy, Cô giáo trong khoa Công nghệ thông tin và các cán bộ, nhân viên các phòng Đào tạo trƣờng Đại học Công nghệ thông tin & truyền thông - Đại học Thái nguyên đã luôn nhiệt tình giúp đỡ và tạo điều kiện tốt nhất cho em trong suốt quá trình học tập tại trƣờng.
Xin chân thành cảm ơn các anh, các chị và các bạn học viên lớp Cao học K11I - trƣờng Đại học Công nghệ thông tin & truyền thông thuộc Đại học Thái nguyên đã luôn động viên, giúp đỡ và nhiệt tình chia sẻ với tôi những kinh nghiệm học tập, công tác trong suốt khoá học.
Tôi xin chân thành cảm ơn Ban giám hiệu trƣờng Đại học công nghiệp thành phố Hồ Chí Minh, ban lãnh đạo cơ sở trƣờng Đại học công nghiệp thành phố Hồ Chí Minh cơ sở Thanh hóa, lãnh đạo khoa công nghệ cơ sở đã tạo điều kiện tốt nhất để tôi có thể hoàn thành tốt đẹp khoá học Cao học này.
Đặc biệt tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy giáoTS.Nguyễn Nhƣ
Sơn đã tận tình giúp đỡ tôi hình thành, nghiên cứu và hoàn chỉnh luận văn.
Mặc dù đã có nhiều cố gắng, song do sự hạn hẹp về thời gian, điều kiện nghiên cứu và trình độ, luận văn không tránh khỏi những khiếm khuyết. Em chân thành mong nhận đƣợc sự đóng góp ý kiến của các thầy, cô giáo và đồng nghiệp gần xa.
Thái nguyên, tháng 09 năm 2014
Ngƣời thực hiện luận văn
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
Thuật ngữ Viết tắt Ý nghĩa
Công nghệ thông tin CNTT Công nghệ thông tin
Cơ sở dữ liệu CSDL Cơ sở dữ liệu
Directed Acyclic Graph DAG Đồ thị định hƣớng phi chu trình
Frequent Subgraphs
Mining FSM Khai phá đồ thị con thƣờng xuyên
Apriori Graph Mining AGM Khai phá đồ thị dựa trên Apriori
Fast Frequent Subgraph
Mining FFSM
Khai phá đồ thị con thƣờng xuyên bền vững
Canonical Adjacency
Matrix CAM Ma trận kề chính tắc
Maximum Common
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
DANH MỤC HÌNH VẼ , BẢNG BIỂU
Hình 2.1. (b) đẳng cấu với (a), (c) đẳng cấu với một đồ thị con của (a). ... 11
Hình 2.3. Mẫu cơ sở dữ liệu đồ thị ... 12
Hình 2.4. Các đồ thị con thƣờng xuyên ... 12
Hình 2.5: Tám cây không có thứ tự nhận đƣợc từ một cây có thứ tự ... 14
Hình 3.1. Đồ thị hình A sau khi nén đƣợc biểu diễn hình B. ... 22
Hình 3.2–Biểu diễn các đồ thị trong tập dữ liệu. ... 25
Hình 3.3 Cây tìm kiếm theo chiều sâu. ... 28
Hình 3.4 Mã DFS/ Đồ thị gia tăng. ... 31
Hình 3.5. Biểu diễn hai đồ thị con đẳng cấu. ... 34
Hình 3.6. Ba ma trận kề của đồ thị gán nhãn P trong hình 3.5. ... 35
Hình 3.7. Biểu diễn ma trận con riêng cực đại. ... 35
„Hình 3.8 Cây CAM của đồ thị P trong hình 3.5 ... 38
Hình 3.9. Biểu diễn thao tác hòa nhập cho bốn trƣờng hợp ... 41
Hình 3.10. Cây CAM tối ƣu của đồ thị P biểu diễn trong hình 3.5. ... 43
Hình 4.1. Tệp input.lgp biểu diễn 4 đồ thị đầu vào ... 56
Hình 4.2. Giao diện biễu diễn đồ thị ... 57
Hình 4.3. Biễu diễn đồ thị ... 57
Hình 4.4. Cơ sở dữ liệu đồ thị đầu vào ... 58
Hình 4.5. Tập kết quả các đồ thị con thƣờng xuyên ... 59
Hình 4.6. Hiệu suất thuật toán khi chạy với số đồ thị giao dịch thay đổi ... 60
v MỤC LỤC
MỞ ĐẦU ... 1
CHƢƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU ĐỒ THỊ ... 4
1.1. TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU ĐỒ THỊ: ... 4
1.1.1. Định nghĩa dữ liệu lớn: ... 4
1.1.2. Giải pháp dữ liệu lớn của một số nhà cung cấp dịch vụ: ... 5
1.2. TỔNG QUAN VỀ KHAI PHÁ ĐỒ THỊ CON THƢỜNG XUYÊN: ... 6
1.3. KẾT LUẬN ... 7
CHƢƠNG 2: PHÁT HIỆN CÁC CẤU TRÚC CON THƢỜNG XUYÊN ... 9
2.1. CƠ SỞ LÝ THUYẾT ĐỒ THỊ ... 9
2.1.1. Định nghĩa 2.1 (Graph): ... 9
2.1.2. Định nghĩa 2.2 (Subgraph): ... 10
2.1.3. Định nghĩa 2.3 (Graph Isomorphism): ... 10
2.1.4. Định nghĩa 2.4 (Subgraph Isomorphism): ... 11
2.1.5. Định nghĩa 2.5 (Maximum Common Subgraph, MCS): ... 11
2.1.6. Định nghĩa 2.6 (Frequent Graph) ... 12
2.2. CÁC DẠNG CHUẨN CỦA CÂY ... 12
2.2.1. Dạng chuẩn của cây theo chiều rộng: ... 16
2.2.2. Dạng chuẩn của cây theo chiều sâu: ... 17
2.3. CÁCH TIẾP CẬN DỰA TRÊN APRIORI ... 18
2.4. CÁCH TIẾP CẬN DỰA TRÊN SỰ PHÁT TRIỂN MẪU 20 2.5. KẾT LUẬN ... 21
CHƢƠNG 3: CÁC THUẬT TOÁN PHÁT HIỆN ĐỒ THỊ CON THƢỜNG XUYÊN ... 22
3.1. CHIẾN LƢỢC TÌM KIẾM THEO CHIỀU RỘNG: ... 22
3.1.1. Thuật toán SUBDUE ... 22
3.1.2. Thuật toán FSG ... 25
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
3.2.1. Thuật toán gSpan (Graph-Based Substructure Pattern Mining) ... 27
3.2.2. Thuật toán FFSM ... 32
3.2.3. Thuật toán GREW ... 45
3.3. KẾT LUẬN ... 51
CHƢƠNG 4: THIẾT KẾ HỆ THỐNG THỬ NGHIỆM THUẬT TOÁN ... 52
4.1. CÀI ĐẶT THỬ NGHIỆM THUẬT TOÁN gSpan ... 52
4.1.1. Mã lệnh thuật toán gSpan ... 52
4.1.2. Dữ liệu thử nghiệm ... 54
4.1.3. Biểu diễn đồ thị ... 57
4.2. ĐÁNH GIÁ ... 58
4.2.1. Kiểm tra thuật toán ... 58
4.2.2. Đánh giá thuật toán ... 59
4.3.KẾT LUẬN ... 61
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ... 62