Tải bản đầy đủ (.doc) (14 trang)

Ứ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 PRODUCTIVTYQUALITY CỦA SOFTWARE MAINTENANCE PROJECT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (309.29 KB, 14 trang )

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
Như 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
# of defects/KSLOC % (1-5) Years
Release 1 0.572 99.01 3 2.60
Release 2 0.723 95.32 5 2.63
Release 3 0.619 97.23 3 2.12
Release 4 0.423 99.23 2 2.21
Release 5 0.621 94.54 4 2.24
Release 6 0.589 98.87 3 2.30
Release 7 0.601 96.34 3 2.33
Release 8 0.712 92.73 4 2.38
Release 9 0.829 98.72 5 2.27
…. … …. … …
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ỳ
Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 11
Giao 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
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 4 2 2 1 2 3
Release 5 2 2 1 2 2
Release 7 2 3 2 2 2
Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 12
Release 8 2 3 2 3 3

Release 9 2 2 2 2 3
Release 10 2 2 2 2 3
Release 13 2 3 2 2 2
Release 14 2 3 2 1 1
Release 16 2 3 2 2 2
Release 17 2 3 2 2 2
… …. …. … … …
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


Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 13
Tà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.
[5] />[6] Carnegie Mellon University- High Maturity

Dương Ngọc Nhân – Bài Thu Hoạch CNTT & UD 14

×