Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
375,5 KB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG ۞ University of Information Technology University of Information Technology Công nghệ trí thức và ứng dụng Bài thu hoạch: ỨNG DỤNG LUẬT KẾT HỢP VÀ THUẬT TOÁN APRIORI TÌM CÁC NHÂN TỐ ẢNH HƯỞNG PRODUCTIVTY/QUALITY CỦA SOFTWARE MAINTENANCE PROJECT Giáo viên hướng dẫn: GS.TSKH. Hoàng Kiếm Người thực hiện : Dương Ngọc Nhân, MSHV: CH1101115 TP.HCM, Tháng 06 năm 2012 Lời nói đầu 3 Phần 1 – Tổng quan về bài toán tìm luật kết hợp và thuật toán Apriori 4 1.Tóm tắt qui trình khai phá dữ liệu 4 2.Bài toán tìm luật kết hợp (association rules) 4 3.Thuật toán Apriori 6 Phần 2- Mô tả ứng dụng và cài đặt chương trình 7 1.Một số thuật ngữ cơ bản 7 2.Mô tả ứng dụng 8 3.Cài đặt chương trình 11 13 Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 2 Lời nói đầu Ngày nay Data mining đã được sử dụng sâu và rộng khắp trong các tổ chức và cơ quan với nhiều lĩnh vực hoạt động khác nhau. Trong công việc quản lý phát triển phần mềm, việc ứng dụng data mining để phân tích và tìm ra mối quan hệ giữa các trường dữ liệu từ đó đưa ra sự điều chỉnh cũng như quyết định kịp thời mang lại thành công cho dự án nói riêng và công ty nói chung. Trong phạm vi bài thu hoạch, em trình bày một ứng dụng nhỏ trong việc tìm ra các nhân tố (factors) ảnh hưởng nhiều nhất (độ tin cậy cao) đến năng suất (productivity) và chất lượng (quality) của những dự án phát triển và bảo trì phần mềm (software maintenance project) thông qua luật kết hợp và thuật toán Apriori. Bài thu hoạch gồm 2 phần, phần 1 tóm tắt qui trình khai phá dữ liệu và các khái niệm về luật kết hợp, các bước tìm luật kết hợp, và thuật toán Apriori. Phần 2 mô tả chi tiết ứng dụng và cài đặt chương trình tìm các nhân tố ảnh hưởng nhiều nhất đến productivity and quality của software maintenance project. Em xin gửi lời cảm ơn đến PGS.TSKH Hoàng Kiếm đã tận tình giảng dạy và đưa ra một số định hướng để vận dụng kiến thức từ môn học vào công việc hàng ngày. Bài viết này vẫn còn sơ khai, rất mong nhận được sự góp ý, khích lệ từ Thầy Cô, bạn bè. Trân trọng Người thực hiện Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 3 Phần 1 – Tổng quan về bài toán tìm luật kết hợp và thuật toán Apriori 1. Tóm tắt qui trình khai phá dữ liệu Qui trình khai phá dữ liệu bắt đầu bằng cách xác định vấn đề cần giải quyết, sau đó xác định các dữ liệu liên quan và thu thập dữ liệu (nếu chưa có) dùng để khai phá. Bước tiếp theo là xử lý chúng thành các dạng thích hợp sao cho giải thuật khai phá dữ liệu có thể hiểu được. Cuối cùng là chọn thuật toán khai phá dữ liệu phù hợp và thực hiện để tìm được các mẫu (pattern) và các mối quan hệ (relationship) trong dữ liệu có thể dùng để đưa ra các dự báo hay quyết định có cơ sở. 1 Sơ đồ mô tả quá trình khai phá dữ liệu Có hai điều then chốt để thành công trong data mining, đầu tiên là đưa ra một vấn đề thật rõ ràng chính xác mà đang cố gắng tìm ra lời giải và điều thứ hai là đang dùng một dữ liệu đúng. 2 Các loại mẫu (patterns) có thể được phát hiện là phụ thuộc vào các thao tác data mining. Có hai kiểu thao tác của data mining là descriptive data mining và predictive data mining. Các thao tác descriptive data mining là diễn tả các thuộc tính chung của dữ liệu hiện có. Các thao tác predictive data mining là thử đưa ra các dự báo dựa trên suy luận về dữ liệu có sẵn. 3 2. Bài toán tìm luật kết hợp (association rules) a) Một số khái niệm Phát hiện luật kết hợp là một trong hai phương pháp phổ biến của phân tích liên kết (link analysis). Phân tích liên kết là một kiểu descriptive data mining để khám phá dữ liệu có thể giúp xác định các mối quan hệ giữa các giá trị trong một cơ sở dữ liệu. Ví dụ: Sau khi phân tích một CSDL bán hàng ta tìm ra được các luật 4 (1): Nếu khách hàng mua món A cũng sẽ mua món B. (2): Nếu khách hàng mua món C thì tháng sau sẽ mua món D. Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 4 Xác định vấn đề Xác định dữ liệu liên quan và thu thập Tiền xử lý dữ liệu Giải thuật Data Mining Patterns/Relationships Xác định vấ đề cần giải quyết Xác định dữ liệu liên quan và thu thập Tiền xử lý dữ liệu Thật dễ dàng để xác định tỷ lệ giao tác có chứa một mục cụ thể (món A hay món B) đơn giản chỉ cần đếm tần suất xuất hiện của chúng trong cơ sở dữ liệu. Tần suất xuất hiện đó gọi là Support hoặc Prevalence. Ví dụ, nếu nói có 30 giao tác có chứa món A và món B trong 100 giao tác, thì Support cho kết hợp này sẽ là 30% (30/100) Mức Support thấp (hay nói, chỉ có 1% giao tác của món A và món B trong 100 giao tác) có thể cho thấy sự kết hợp này không được quan trọng lắm hoặc nó có thể chỉ ra sự hiện diện của dữ liệu sai (ví dụ, sự kết hợp của 2 mục "nam giới và mang thai") hoặc chưa đủ. Để tìm ra được các luật kết hợp có ý nghĩa, chúng ta cũng phải nhìn vào tần số của sự xuất hiện các món A và món B và sự kết hợp của họ. Với sự xuất hiện của món A (tiền đề), làm thế nào để biết món B (kết quả) thường xuyên xảy ra. Người ta dùng độ tin cậy (confidence) để biết mức độ xuất hiện kết hợp giữa món A và món B. Tóm tắt một số khái niệm: 4 Cho I = {i 1 , i 2 , i 3 , …, i n } là tập hợp các trường gọi là items D: tập các giao tác có các giao tác T i mà T i ⊆ I T chứa X nếu X ⊆ T (X là tập có các phần tử ⊆ I). Mỗi giao tác T i có chỉ danh là TID. Luật kết hợp là một mối liên hệ điều kiện giữa hai tập các hạng mục dữ liệu X và Y theo dạng sau: Nếu X thì Y, và ký hiệu là X ⇒ Y. Chúng ta có luật kết hợp X ⇒ Y, nếu X ⊂ I, Y ⊂ I và X ∩ Y = ∅ Luật X ⇒ Y có độ support là s nếu có s% số giao tác trong D có chứa X ∪ Y. Hay là : support (X⇒Y) = s% = Card(X∪Y)/ Card(D) % Luật X⇒Y có độ tin cậy là c (confidence) nếu có c% số giao tác trong D chứa X∪Y so với số giao tác trong D chứa X, khi đó ta có : c = Card(X∪Y)/Card(X) % Tập các hạng mục dữ liệu gọi là ItemSet có độ support lớn hơn hay bằng giá trị ngưỡng nhỏ nhất (gọi là minsupp) được gọi là Large ItemSet. Các ItemSet còn lại được gọi là các Small ItemSet Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 5 Với mỗi một Large ItemSet - L, và A là một tập con khác rỗng của L, nếu tỉ lệ phần trăm giữa support của L so với support của A lớn hơn hay bằng độ tin cậy nhỏ nhất (gọi là minconf) thì ta có luật kết hợp A ⇒ (L\A). Ví dụ: trong một 100 giao tác (hay là lần) bán hàng, người ta thấy Hóa đơn có sữa 40 lần Hóa đơn có bánh 30 lần Hóa đơn có sữa và bánh 20 lần Support giữa sữa và bánh là 20% (20/100) Confidence của sữa => bánh 50% (20/40) b) Tìm luật kết hợp 4 Để rút ra được luật trong CSDL cần tiến hành 5 bước sau: B1: Xác định khoảng phân chia của mỗi thuộc tính khi cần phân tích. B2: Kết hợp mỗi khoảng thuộc tính đã phân chia ở bước B1 với một số nguyên để thực hiện các thuật toán được nhanh, dễ dàng. B3: So sánh các support của các item với minsupp, tạo tập Largeitemset. B4: ABCD và AB là Large itemset ta rút ra được luật AB ⇒ CD khi support (ABCD)/support(AB) >= minconf B5: Xác định chọn những luật phù hợp 3. Thuật toán Apriori Trong data mining, Apriori là một thuật toán cổ điển cho việc tìm tập luật kết hợp. Apriori được thiết kế để hoạt động trên cơ sở dữ liệu có chứa các giao tác (ví dụ, bộ sưu tập những thứ được mua bởi khách hàng, hoặc các chi tiết một nơi trên trang web mà khách hàng thường xuyên xem). 5 Đầu tiên đếm số items và xác định Large Itemsets L 1 Mỗi bước tiếp theo tìm tập các itemsets C k từ các Large Itemsets trước bằng cách kết L k-1 với chính nó Đếm Support cho itemsets và xác định Large Itemsets L k-1 tiếp theo Quá trình này tiếp tục cho đến khi không Large Itemsets mới được tìm thấy 1) L 1 = {large 1-itemsets}; Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 6 2) for ( k = 2; L k-1 ≠ ∅; k++ ) do begin 3) C k = apriori-gen(L k-1 ); // ứng viên mới 4) forall transactions t ∈ D do begin 5) C t = subset(C k , t); // ứng viên chứa trong t 6) forall candidates c ∈ C t do 7) c.count++; 8) end 9) L k = {c ∈ C k | c.count≥ minsup} 10) end 11) Answer = U k L k ; Tạo các luật hợp từ tập Large ItemSets: For each itemset l của Large ItemSets For each s (tập con khác rỗng) của l if confidence=count(l)/count(s) >= minconf then xuất kết quả : s (l-s) Phần 2- Mô tả ứng dụng và cài đặt chương trình 1. Một số thuật ngữ cơ bản Một số thuật ngữ cơ bản dùng trong bài thu hoạch này: Software maintenance: (trong công nghệ phần mềm) là việc thêm mới chức năng, sửa đổi chức năng hiện có, hoặc sửa lổi đã tìm thấy trong một sản phẩm phần mềm sau khi đã bàn giao cho khách hàng hoặc đưa ra người sử dụng nhằm cải thiện hiệu suất của sản phẩm cũng như chức năng tiện lợi cho người sử dụng Technology experience: là tính số năm kinh nghiệm của nhân viên hoặc kỷ sư phần mềm trên kiến thức cũng như các ngôn ngữ lập trình đang dùng cho Software maintenance. Product experience: là tính số năm kinh nghiệm của nhân viên hoặc kỷ sư phần mềm trên sản phẩm phần mềm đang làm việc (càng nhiều năm thâm niên trên sản phẩm thì hầu như càng nắm vững và hiểu rõ các chức năng cũng như yêu cầu của sản phẩm) Requirement complexity: là độ phức tạp được tính từ 1 (đơn giản) đến 5 (phức tạp) của một yêu cầu cần thực hiện (như làm mới, sửa đổi, lổi). Độ phức tạp ở đây bao gồm việc ảnh hưởng đến nhiều chức năng, nhiều phần, dùng nhiều công thức tính toán, tương tác với nhìều hệ thống khác, hoặc khó hiểu. v.v. Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 7 Customer Involvement: là mức độ mà customer tham gia trao đổi, chia sẽ, và giải thích yêu cầu đã đưa ra cho nhóm làm việc Source lines of code (SLOC): là số hàng source code đã thay đổi chỉnh sửa Quality: chỉ xét ở khía cạnh mỗi phiên bản cập nhật hay gởi cho khách hàng có thể tồn tại với một số lỗi ít nhất và không nghiệm trọng Test coverage: là phần trăm các tính năng hoặc SLOC đã được kiểm tra (test) hoặc duyệt qua trên tổng số Coding complexity: là chỉ số chỉ ra sự phức tạp (1 đơn giản – 5 phức tạp) của các đoạn source code có nguy cơ thực thi không đúng hoặc gây ra lỗi nhưng vẫn có thể chỉnh sửa lại cho tốt hơn. 2. Mô tả ứng dụng Trong việc phát triển và bảo trì phần mềm, productivity và quality là hai thành phần quan trọng quyết định đến sự thành công hay thất bại của sản phẩm phần mềm. Vì vậy việc đo lường (measurement), phân tích và việc quản lý (management) các thành phần này là rất cần thiết để có sự điều chỉnh, thay đổi, và ra quyết định kịp thời trong từng giai đọan và từng sản phẩm. Để đảm bảo productivity luôn được tốt, người ta thường phân tích tìm ra các factor có ảnh hưởng thường xuyên đến productivity, từ đó giám sát và quản lý chặt chẽ các factor đó. Có rất nhiều factor ảnh hưởng đến productivity trong software maintenance project, việc xác định các factor để thu thập dữ liệu là tùy theo môi trường, đặc thù của từng tổ chức và dự án. Trong bài này, em dùng SLOC/person-hour để đo lường productivity và chỉ xét cũng như thu thập dữ liệu của một số factors như: technology experience (trung bình của cả nhóm), product experience (trung bình của cả nhóm), requirement complexity (trung bình của các yêu cầu), và customer involvement TID Productivity Technology Experience Product Experience Requirement Complexity Customer Involvement SLOC/P-H Years Years (1-5) High/Medium/Low Release 1 8.12 3.62 2.60 2.687 M Release 2 9 3.69 2.63 2.546 L Release 3 7.12 4.21 2.12 3.421 L Release 4 10.2 4.30 2.21 2.012 H Release 5 11.82 4.40 2.24 2.008 M Release 6 6.28 4.50 2.30 3.411 L Release 7 8.56 4.60 2.33 2.706 M Release 8 9.34 4.70 2.38 3.012 H Release 9 8.69 4.20 2.27 2.576 H Release 10 10.53 4.30 2.31 2.078 H Release 11 7.5 4.40 2.34 3.982 M Release 12 6.4 4.50 2.36 4.109 M Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 8 Release 13 9.8 4.60 2.39 2.891 M Release 14 12.2 4.70 2.43 1.598 L Release 15 5.9 4.80 2.45 4.028 H Release 16 8.43 4.90 2.49 2.987 M Release 17 9.12 5.00 2.50 2.313 M Release 18 6.01 5.10 2.55 4.324 H … …. …. … … … Chia productivity thành 2 khoảng (<=8 không đạt và >8 là đạt), technology experience theo 6 tháng (0.5) và product experience theo 3 tháng (0.25) Productivity Integer Product Experience Integer Requirement Complexity Integer <= 8 1 2.00 - 2.25 1 1.0 - 1.9 1 > 8 2 2.26 - 2.50 2 2.0 - 2.9 2 2.51 - 2.75 3 3.0 - 3.9 3 4.0 - 5.0 4 Technical Experience Integer Customer Involvement Integer 3.6 - 4.0 1 L 1 4.1 - 4.5 2 M 2 4.6 - 5.0 3 H 3 5.1 - 5.5 4 Ta được một tập dữ liệu mới sau khi biến đổi để tiến hành tìm các mối quan hệ giữa các factor với productivity thông qua luật kết hợp TID Productivity Technology Experience Product Experience Requirement Complexity Customer Involvement SLOC/P-H Years Years (1-5) High/Medium/Low Release 1 2 1 3 2 2 Release 2 2 1 3 2 1 Release 3 1 2 1 3 1 Release 4 2 2 1 2 3 Release 5 2 2 1 2 2 Release 6 1 2 2 3 1 Release 7 2 3 2 2 2 Release 8 2 3 2 3 3 Release 9 2 2 2 2 3 Release 10 2 2 2 2 3 Release 11 1 2 2 3 2 Release 12 1 2 2 4 2 Release 13 2 3 2 2 2 Release 14 2 3 2 1 1 Release 15 1 3 2 4 3 Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 9 Release 16 2 3 2 2 2 Release 17 2 3 2 2 2 Release 18 1 4 3 4 3 … …. …. … … … Thông thường productivity dao động trong một khoảng với cận trên UCL và cận dưới LCL đối xứng nhau qua Mean, nghĩa là bất kỳ productivity đo được rơi trong khoảng này đều xem như là đạt, đặc biệt là khoảng từ Mean tới LCL. Khoảng từ LCL tới UCL lớn hay nhỏ phụ thuộc vào sự phân đố giá trị của producitivty là tập trung hay phân tán và khoảng cách này được điều chỉnh tăng hay giảm theo số liệu thực của dự án theo thời gian Control chart 6 Và theo sau là control chart mô phỏng từ bảng số liệu ở trên Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 10 [...]... chương trình nhỏ và đơn giản mô phỏng những kiến thức đã học để tìm luật kết hợp cho ứng dụng mô tả ở trên Nó được viết bằng C# trên môi trường Visual Studio 2010 (.NET 4.0) và chạy trên Windows 7 thông qua file exe không cần cài đặt Chương trình được viết dựa trên thuật toán Apriori và theo dạng mở, nghĩa là có thể dùng để tìm ra các luật kết hợp giữa các factor đã cho bất kỳ Dương Ngọc Nhân – Bài Thu... một tổ chức hoặc từ thị trường công nghiệp phần mềm (software industry) Với giá trị productivity ở trên ta có thể chia “Productivity (2)” (confidence =6/6 = 100%) “Product Experience (2.26 - 2.50)”, “Requirement Complexity (2.0 – 2.9)” => “Productivity (>8)” sau khi đã loại các luật khác vì đã chỉ ra Measurement... giao diện, thì đầu tiên loại bỏ hết các bộ dữ liệu mà có Productivity 2 trước khi thực hiện các bước kế tiếp TID Release 1 Release 2 Release 4 Release 5 Release 7 Productivity SLOC/P-H 2 2 2 2 2 Technology Product Requirement Customer Experience Experience Complexity Involvement Years Years (1-5) High/Medium/Low 1 3 2 2 1 3 2 1 2 1 2 3 2 1 2 2 3 2 2 2 Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 12 Release . Technology Công nghệ trí thức và ứng dụng Bài thu hoạch: ỨNG DỤNG LUẬT KẾT HỢP VÀ THUẬT TOÁN APRIORI TÌM CÁC NHÂN TỐ ẢNH HƯỞNG PRODUCTIVTY/QUALITY CỦA SOFTWARE MAINTENANCE PROJECT Giáo viên hướng. tìm luật kết hợp, và thuật toán Apriori. Phần 2 mô tả chi tiết ứng dụng và cài đặt chương trình tìm các nhân tố ảnh hưởng nhiều nhất đến productivity and quality của software maintenance project. Em. (software maintenance project) thông qua luật kết hợp và thuật toán Apriori. Bài thu hoạch gồm 2 phần, phần 1 tóm tắt qui trình khai phá dữ liệu và các khái niệm về luật kết hợp, các bước tìm