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
Trang 1TRƯỜ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
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
Trang 2Lờ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
Tài liệu tham khảo 14
Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 2
Trang 3Lờ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
Trang 4Phầ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ật4
(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 Data MiningGiải thuật
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
Trang 5Thậ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 = {i1, i2, i3, …, in} 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 Ti mà Ti Í I
Mỗi giao tác Ti 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 = Æ
Y Hay là :
support (XÞY) = s% = Card(XÈY)/ Card(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) %
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
Trang 6 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ợp4
Để rút ra được luật trong CSDL cần tiến hành 5 bước sau:
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
AB Þ CD khi support (ABCD)/support(AB) >= minconf
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
Đầu tiên đếm số items và xác định Large Itemsets L1
Mỗi bước tiếp theo tìm tập các itemsets Ck từ các Large Itemsets trước bằng cách kết
Lk-1 với chính nó
Đếm Support cho itemsets và xác định Large Itemsets Lk-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) L1 = {large 1-itemsets};
Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 6
Trang 72) for ( k = 2; Lk-1≠ Æ; k++ ) do begin
3) Ck = apriori-gen(Lk-1); // ứng viên mới
4) forall transactions t Î D do begin
6) forall candidates c Î Ct do
10) end
11) Answer = Uk Lk;
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)(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
Trang 8Customer 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
Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 8
Trang 9Release 13 9.8 4.60 2.39 2.891 M
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
Technical
Customer Involvement Integer
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
Trang 10Release 16 2 3 2 2 2
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
Trang 11Như vậy làm thế nào để biết được vùng productivity chấp nhận khi bắt đầu một dự án,
ta tham khảo số liệu từ những dự án trước có cùng đặc tính giống nhau trong cùng 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 <= 8 thành 2 vùng, < 6.5 (không đạt) và 6.5 <= đạt <=8 (tương tự >9.5 và 8.5 – 9.5) để tiếp tục phân tích và tìm ra những factor ảnh hưởng nhiều đến các vùng này
Trương tự ta cũng xét và thu thập dữ liệu cho các factor có thể ảnh hưởng đến quality
TID
Delivery Acceptance Rate and Post
Test Coverage
Coding Complexity
Product Experience
3 Cài đặt chương trình
Giới thiệu chương trình:
Đây là 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ỳ
Trang 12Giao diện của chương trình
Cách dùng:
Có thể lấy dữ liệu từ một tập tin văn bản (.txt) đã tồn tại với các giá trị ngăn cách nhau bởi TAB (tham khảo thêm một trong hai tập productivity.txt và quality.txt đi kèm) hoặc xây dựng mới bằng việc nhập dữ liệu vào ID, Measurement (đây vẫn xem một factor 0 bình thường), Factor 1 Factor 5 (không nhất thiết phải có đầy đủ các factor) Sau khi đã có dữ liệu thì Process theo Minsupp và Minconf đã cho
RHS (right hand side) dùng để chỉ ra cái bắt buộc phải có Y nếu đã biết trước trong luật (X=>Y), qua đó giúp loại bỏ bớt các giá trị không nằm trong vùng cần khai phá,
bỏ bớt các Large Itemsets và các luật không chứa giá trị Y
Ví dụ khi mở productivity.txt thì cột measurement là tương ứng với cột Productivity
và chọn Measurement = 2 cho RHS trên 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 Productivity
Technology Experience
Product Experience
Requirement Complexity
Customer Involvement
Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 12
Trang 13Release 8 2 3 2 3 3
Sau khi tính toán được Large Itemset là
{Productivity (2), Product Experience (2), Requirement Complexity (2)}.
Và ta có được một luật duy nhất “Product Experience (2)”, “Requirement
Complexity (2)” => “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 trong RHS
trên giao diện
Một số chức năng chính trong source code:
- FilterFactor: dùng để lọc bỏ bớt các bộ giá trị nếu có chỉ ra trong RHS
- GenerateCandidates: tạo ra tập ứng cử viên
- GetFrequentItems: thu được tập phổ biến
-GenerateRules: sinh ra luật kết hợp
Trang 14Tài liệu tham khảo
[1] Nguyễn Trần Minh Khuê - Các phương pháp & kỹ thuật Data Mining
[2] Two Crows Corporation – Introduction to Data Mining and Knowledge Discovery, third edition
[3] Osmar R.Zaiane, 1999 – CMPUT690 Principles of Knowledge Discovery in Databases
[4] GS.TSKH Hoàng Kiếm - Bài giảng cao học môn học cơ sở tri thức và ứng dụng
[6] Carnegie Mellon University- High Maturity
Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 14