1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứ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

14 953 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

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 1

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

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 2

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

Tài liệu tham khảo 14

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

Trang 3

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

Trang 4

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ậ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 5

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 = {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 7

2) 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 8

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

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

Trang 9

Release 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 10

Release 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 11

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

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 12

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

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

Trang 13

Release 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 14

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

[6] Carnegie Mellon University- High Maturity

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

Ngày đăng: 10/04/2015, 16:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w