Trong giai đoạn này chúng ta thực hiện khai phá luật kết hợp từ Data-cube sử dụng giải thuật DataCubeSimpleMining.
Dưới đây là đoạn mã thực hiện khai phá luật kết hợp dựa trên giải thuật này:
Bảng 3.3: Đoạn mã thực hiện khai phá luật kết hợp từ Data-cube.
privatevoid tsbtnRulesGenerate_Click(object sender, EventArgs e) {
try
{
// Temp:
double dblDBSize = Convert.ToDouble(txtDBSize.Text); double dblMinSupport = Convert.ToDouble(txtMinSupport.Text); double dblMinConfidence = Convert.ToDouble(txtMinConfidence.Text); double dblMinSupportInteger = (int)(dblDBSize * dblMinSupport);
#region // Build Sql:
string strSqlGetDataCubeSchema = string.Format(@" select t.* from {0} t where (0=1) ; ", "DataCubeFor" + _strTableName );
DataTable dtDataCubeSchema = _db.ExecQuery(strSqlGetDataCubeSchema).Tables[0]; string strFields_LeftRules = ""; string strFields_RightRules = ""; string strFields_AllRules = ""; string strJoin_Main = ""; string strJoin_Ex1 = ""; string strJoin_Ex2 = "";
for (int i = 0; i < dtDataCubeSchema.Columns.Count; i++) {
DataColumn dc = dtDataCubeSchema.Columns[i]; if (string.Equals(dc.ColumnName, "MYCOUNT")) continue; strFields_LeftRules += string.Format(@"
, t1.{0} LR_{0} ", dc.ColumnName );
strFields_RightRules += string.Format(@" , ( case when t1.{0} != t.{0} then t.{0} else '*' end ) RR_{0} ", dc.ColumnName );
strFields_AllRules += string.Format(@" , t.{0} AR_{0}
", dc.ColumnName );
strJoin_Main += string.Format(@" and (t1.{0} = '*' or t1.{0} = t.{0}) ", dc.ColumnName
);
strJoin_Ex1 += string.Format(@" and t1.{0} = t.{0}
", dc.ColumnName );
strJoin_Ex2 += string.Format(@" and t1.{0} = '*'
", dc.ColumnName );
}
string strSqlGenerateRules = string.Format(@" select
t.MYCOUNT SUPPORTINTEGER , (t.MYCOUNT / @dblDBSize) SUPPORT
, (1.0 * t.MYCOUNT / t1.MYCOUNT) CONFIDENCE {0}
{1} {2}
into RulesFor{3} from DataCubeFor{3} t
inner join DataCubeFor{3} t1
on (t.MYCOUNT <= t1.MYCOUNT) -- LeftItems must be less than AllItems and
( -- Main condition for join: (1=1)
{4} ) and not
( -- LeftItems cannot equal AllItems: (1=1)
{5} ) and not
( -- LeftItems cannot be null: (1=1)
{6} ) where (1=1)
and (t.MYCOUNT >= @dblMinSupportInteger)
and (1.0 * t.MYCOUNT / t1.MYCOUNT >= @dblMinConfidence) ; " , strFields_LeftRules , strFields_RightRules , strFields_AllRules , _strTableName , strJoin_Main , strJoin_Ex1 , strJoin_Ex2 ); #endregion
// Clear old data and create new Rules:
coreClearOldData(string.Format("RulesFor{0}", _strTableName)); _db.ExecQuery(strSqlGenerateRules , "@dblDBSize", dblDBSize , "@dblMinSupportInteger", dblMinSupportInteger , "@dblMinConfidence", dblMinConfidence ); // Return good:
MessageBox.Show("Generate rules successfully.", "Simple OLAP Mining"); }
53
CProcessException.Process(exc); }
}
Kết quả ta thu được tập luật:
Hình 3.5: Luật kết hợp khai phá từ Data-cube.
3.3. Đánh giá
Khung ứng dụng được cài đặt và triển khai trên nền ngôn ngữ lập trình C#.Net là ngôn ngữ lập trình hướng đối tượng và cũng hướng thành phần hiện đại nhất hiện nay của Microsoft. Đồng thời dữ liệu được lưu trữ bởi hệ quản trị CSDL Sql Server – đây cũng là một hệ quản trị CSDL rất tốt và đặc biệt tốt với OLAP-engine. Ở đây ứng dụng đã được chạy thử và cho thấy nó tương thích và chạy tốt với cả phiên bản Sql Server 2000 và Sql Server 2005, và với vài cải tiến nhỏ nó cũng chạy tốt trên Oracle 9i và Oracle 10g. Ngoài ra, giao diện ứng dụng được thiết kế đẹp mắt, hiệu quả trong nhập liệu và xem kết quả, đặc biệt là xem dữ liệu dưới dạng Pivot.
Thời gian chạy thực tế khá nhanh, vì trong thực tế, các tiêu chí chuẩn hoá dữ liệu (lọc và rời rạc hoá dữ liệu) góp phần tích cực trong việc giảm kích thước bài toán - thậm chí kích thước của Data-cube trong một số trường hợp còn nhỏ hơn kích thước của bộ dữ liệu thô ban đầu vì như giới thiệu trong phần lý thuyết, kích thước của Data-cube:
s = |d1| * ... * |dn|
Trong đó |di| là lực lượng hay kích thước của chiều thứ i, và nếu người sử dụng không quan tâm tới quá nhiều chiều dữ liệu và với mỗi chiều cũng không chia ra quá nhiều giá trị hoặc quá nhiều khoảng giá trị thì kích thước của Data-cube cũng không phải là con số khổng lồ như chúng ta tưởng, thậm chí còn nhỏ hơn kích thước của bộ dữ liệu thô ban đầu.
Khung ứng dụng được giới thiệu ở trên là một Framework khá tốt đối với OLAP- Mining và Data warehouse Mining để những bạn đọc quan tâm có thể phát triển tiếp và cụ thể hoá (Customize) thành ứng dụng chi tiết hơn phục vụ cho công việc và nghiên cứu của mình. Chi tiết mã nguồn (Source code) được trình bày trong phụ lục đính kèm.
55
KẾT LUẬN
Mặc dù đã được áp dụng rộng rãi trên thế giới nhưng Kho dữ liệu (Data warehouse), Phân tích dữ liệu trực tuyến (OLAP) và Khai phá dữ liệu (Data mining) vẫn còn là các lĩnh vực còn tương đối mới với nước ta. Trên tinh thần như vậy tôi đã cố gắng trình bày những khái niệm cơ bản nhất về Data warehouse, OLAP và Data mining trong đó đi sâu vào việc khai phá luật kết hợp từ kho dữ liệu dựa trên OLAP và từ đó xây dựng một khung ứng dụng mẫu áp dụng vào khai phá dữ liệu từ kho dữ liệu của ngân hàng.
Xét về độ phức tạp thuật toán thì trong trường hợp tổng quát bài toán khai phá luật kết hợp có thể quy về bài toán Clique hai phía, tức là trong trường hợp tổng quát nhất thì ta phải chấp nhận giải một bài toán NP-Complete [110]. Tuy nhiên, trong thực tế do CSDL là thưa, các mẫu phổ biến thường ngắn, do vậy các thuật toán khai phá thường có độ phức tạp đa thức với kích thước của dữ liệu mà thôi.
Xét riêng với trường hợp OLAP-Mining thì độ phức tạp về mặt lý thuyết còn lớn hơn nữa, nó tương đương với bài toán duyệt toàn bộ, độ phức tạp tỉ lệ trực tiếp với kích thước của Data-cube. Tuy nhiên trong thực tế nếu người sử dụng không quan tâm tới quá nhiều chiều dữ liệu và với mỗi chiều cũng không chia ra quá nhiều giá trị hoặc quá nhiều khoảng giá trị thì kích thước của Data-cube cũng không phải là con số khổng lồ như chúng ta tưởng, thậm chí còn nhỏ hơn kích thước của bộ dữ liệu thô ban đầu.
Trước khi đề xuất các vấn đề và hướng phát triển tiếp theo, xin được tổng kết lại toàn bộ nội dung của luận văn:
Chương 1: Kho dữ liệu và Phân tích dữ liệu trực tuyến
Trình bày những nét khái quát nhất từ khái niệm cho tới mô hình và cấu trúc lưu trữ trong Data warehouse và OLAP.
Chương 2: Khai phá dữ liệu phát hiện luật kết hợp
Trình bày các vấn đề chung, cơ bản nhất về luật kết hợp gồm các định nghĩa và tính chất cho tới các loại luật kết hợp. Tiếp đó là trình bày về thuật toán kinh điển Apriori cho tới thuật toán khai phá tập mục phổ biến dựa trên cấu trúc Data-cube của Hua Zhu và quan trọng nhất là thuật toán cực kỳ đơn giản nhưng hiệu quả và tận dụng tối đa cấu trúc dữ liệu Data-cube – thuật toán DataCubeSimpleMining.
Chương 3: Xây dựng ứng dụng minh hoạ
Trình bày nhu cầu thực tiễn cho tới việc minh hoạ triển khai cài đặt khung ứng dụng - cho phép người sử dụng tiếp tục phát triển để khai phá dữ liệu từ kho dữ liệu của ngân hàng nói riêng và mọi kho dữ liệu nói chung.
Hướng phát triển tiếp theo của luận văn:
(1)Như trình bày ở trên, bước chuẩn hoá dữ liệu mà cụ thể là vấn đề rời rạc hoá dữ liệu là một trong những vấn đề cần thiết và cũng gây nhiều tranh cãi vì nó tạo ra các điểm biên “gãy”. Một trong những giải pháp được các chuyên gia hàng đầu về khai phá dữ liệu hiện nay đề xuất là mờ hoá các điểm biên “gãy” này hay khai phá luật kết hợp mờ (Fuzzy), đây là một trong những hướng quan trọng nhất mà luận văn sẽ tiếp tục hướng tới.
(2)Tiếp tục nghiên cứu và bổ sung chi tiết khai phá luật kết hợp đa mức, luật kết hợp có ràng buộc, bổ sung các tiêu chí mở rộng như độ thú vị của luật, ...
(3)Mở rộng phạm vi ứng dụng vào thực tiễn như thị trường chứng khoán, bệnh viện, viễn thông, ....
57
TÀI LIỆU THAM KHẢO Danh sách tài liệu tham khảo tiếng Việt
[001] Tạ Liên Dung (2003), Một số vấn đề khai phá dữ liệu, Luận văn thạc sĩ CNTT, Đại học Quốc gia Hà Nội.
[002] Trần Vĩnh Hoàng (2007), Một số phương pháp khai phá dữ liệu sinh luật kết hợp, Luận văn thạc sĩ CNTT, Đại học Quốc gia Hà Nội.
[003] Hoàng Kiếm (4/2005), Giải một bài toán trên máy tính như thế nào, Tập 3 (tái bản lần thứ nhất). NXB Giáo dục.
[004] Nguyễn Hùng Sơn (2006), Bài giảng Tập thô và Khai phá dữ liệu.
[005] Vũ Đức Thi, Lê Hải Khôi (1999), Một số nguyên lý hoạt động của kho dữ liệu. [006] Vũ Đức Thi (1997), Cơ sở dữ liệu – Kiến thức và thực hành. NXB Thống Kê. [007] Nguyễn Thanh Thuỷ (8/2001), Bài giảng Khai phá dữ liệu - Kỹ thuật và ứng dụng.
Danh sách tài liệu tham khảo tiếng Anh
[101] (1995) J.Gray, S.Chaudhuri, A.Bosworth, A.Layman, D.Reichart, M.Venkatrao, F.Pellow and H.Pirahesh, Data-cube: a relational aggregation operator
generalizing group-by, cross-tab and sub-totals, Microsoft Technical report. [102] J.Han (1999), OLAP-Mining: An integration of OLAP with Data-Mining, Simon
Fraser University.
[103] J.Han and M.Kamber (2001), Data Mining: Concepts and Techniques, Hacours Science and Technology Company, USA.
[104] W.H.Inmon (1996), Building the Data Warehouse, John Wiley & Sons, Chichester, second edition.
[105] W.H.Inmon (1995), "What is a Data Warehouse?", Prism, Volume 1.
[106] W.H.Inmon, C. Kelly (1993), Rdb/VMS: Developing the Data Warehouse, QED Publishing Group, Boston, Massachussetts.
[107] Mehmed Kantardzic (2002), Data Mining: Concepts, Models, Methods and Algorithms, Wiley-IEEE Press.
[108] R.Kimball (1996), The Data Warehouse Toolkit: Practical Techniques for Building Dimensional Data Warehouses, John Wiley & Sons.
[109] M. Levene, G. Loizou (2000), “Why is the Snowflake Schema a Good Data Warehouse Design?”, Birkbeck College, University of London.
[110] M.J.Zaki and M.Ogihara (6/1998), Theoretical Foundations of Association Rules, In 3rd ACM SIGMOD Workshop on Research Issues in Data mining and Knowledge Discovery.
[111] Hua Zhu (1998), Online Analytical Mining of Association Rules, Master thesis, Simon Fraser University.
Danh sách Websites tham khảo
[L01] http://citeseer.ist.psu.edu/ [L02] http://citeseer.ist.psu.edu/agrawal93mining.html [L03] http://citeseer.ist.psu.edu/han99mining.html [L04] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.21.3808 [L05] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.74.3044 [L06] http://www.cs.sfu.ca/ [L07] http://www.cse.ohio-state.edu/~agrawal/Research_new/mining.htm [L08] http://en.wikipedia.org/wiki/Data_mining [L09] http://en.wikipedia.org/wiki/Association_rule_mining [L10] http://www.filibeto.org/sun/lib/nonsun/oracle/11.1.0.6.0/B28359_01/datamine.111/ b28129/intro_concepts.htm [L11] http://freedatawarehouse.com/tutorials/dmtutorial/Dimensional%20Modeling%20 Tutorial.aspx [L12] http://freedatawarehouse.com/tutorials/dmtutorial/Star%20Schema.aspx [L13] http://freedatawarehouse.com/tutorials/dmtutorial/Snowflake%20Schema.aspx [L14] http://www.intranetjournal.com/features/datawarehousing.html [L15] http://it.toolbox.com/blogs/enterprise-solutions/snowflake-schema-modelling-data- warehouse-20809