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

TẬP THÔ TRONG KHAI PHÁ DỮ LIỆU TÌM TẬP RÚT GỌN SỬ DỤNG MA TRẬN PHÂN BIỆT ĐƯỢC

27 666 1

Đ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 27
Dung lượng 730,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINCHƯƠNG TRÌNH ĐÀO TẠC THẠC SĨ CNTT QUA MẠNG TẬP THÔ TRONG KHAI PHÁ DỮ LIỆU TÌM TẬP RÚT GỌN SỬ DỤNG MA TRẬN PHÂN BIỆT ĐƯỢC Bộ môn: Khai phá dữ liệu và kho

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

CHƯƠNG TRÌNH ĐÀO TẠC THẠC SĨ CNTT QUA MẠNG

TẬP THÔ TRONG KHAI PHÁ DỮ LIỆU TÌM TẬP RÚT GỌN SỬ DỤNG MA TRẬN PHÂN BIỆT ĐƯỢC

Bộ môn: Khai phá dữ liệu và kho dữ liệu Giáo viên hướng dẫn: PGS.TS Đỗ Phúc Sinh viên: Trần Hoài Phong

MSSV: CH1101027

Trang 2

Mục lục

Lời mở đầu 3

1 Các khái niệm và thuật ngữ 4

1.1 Hệ thông tin 4

1.2 Quan hệ bất khả phân biệt 5

1.3 Xấp xỉ tập hợp 6

1.4 Rút gọn và lõi 6

1.5 Ma trận bất khả phân biệt 7

2 Các thuật toán tìm rút gọn 8

2.1 Tìm rút gọn dựa trên hàm phân biệt 8

2.2 Tìm rút gọn dựa trên chiến lược Johnson 9

3 Cài đặt thuật toán Johnson 12

3.1 Các hàm để nhập, xuất dữ liệu phục vụ cho bài toán 12

3.2 Các hàm chính được sử dụng trong thuật toán Johnson 15

3.3 Chạy và thực thi kết quả: 21

3.4 Nhận xét: 23

4 Kết luận 25

Tài liệu tham khảo 26

Trang 3

Lời mở đầu

Việc khám phá tri thức trong cơ sở dữ liệu đã được phát triển như là một trong những lĩnh vực quan trọng và năng động nhất vì những thách thức gặp phải trong lý thuyết cũng như các ứng dụng thực tế có liên quan đến vấn đề khám phá hoặc rút trích

ra những thông tin thú vị và kiến thức chưa biết từ một tập cơ sở dữ liệu rất lớn của thếgiới thực Lý thuyết Tập thô là một hình thức toán học để biểu diễn các thông tin không chắc chắn Nó được xem như là một công cụ để giảm số chiều đầu vào và xử lý các dữ liệu mơ hồ không chắc chắn Trong những năm trở lại đây, đã có những sự phát triển nhanh chóng trong lý thuyết tập thô và các ứng dụng của nó trong nhiều lĩnh vực nghiên cứu khách nhau bao gồm các vấn đề liên quan đến máy học theo quy nạp và rút trích tri thức trong các hệ thống tri thức Mục tiêu chính của bài báo cáo này sẽ đưa ra một số khái niệm cơ bản về tập thô Trong đó tập trung phần lớn vào bài toán tìm ma trận tập rút gọn sử dụng ma trận phân biệt được để quá đó cho chúng ta thấy rõ tại sao việc phân tích tập thô lại có thể được sử dụng hiệu quả để rút trích ra kiến thức từ một tập lớn cơ sở dữ liệu

Trong bài báo cáo em sẽ đưa ra một thuật toán cũng như một ứng dụng áp dụng thuật toán được nêu ra để giúp hiểu rõ hơn về quá trình rút trích tri thức từ tập dữ liệu thực tế Việc cài đặt thuật toán hoàn toàn là do cá nhân lập trình, do tính phức tạp của thuật toán cũng như một số hạn chế về thời gian cài đặt cũng như kiến thức nên phần ứng dụng có thể chưa phải là bản hoàn chỉnh nhất có thể

Cuối cùng em xin cám ơn thầy đã rất nhiệt tình hướng dẫn trong quá trình giảng dạy Thầy đã cung cấp cho em nhiều kiến thức quý báu qua đó giúp em có thể nghiên cứu sâu hơn trong nhiều lĩnh vực trong tin học mà trước đây mình chưa từng nghĩ đến

Trang 4

1 Các khái niệm và thuật ngữ

Tập thô dùng để phân tích sự không chắc chắn trong dữ liệu Chúng được sử dụng để xác định các đặc trưng quan trọng của các đối tượng và xây dựng các tập xấp

xỉ trên và xấp xỉ dưới của tập đối tượng Trong thế giới thực các dữ liệu khác nhau về kích thước và độ phức tạp do đó rất khó để phân tích cũng như quản lý trên quan điểm toán học Mục tiêu quan trọng nhất của phân tích tập thô là giảm kích thức dữ liệu và

xử lý vấn đề không đồng nhất trong dữ liệu Phần tiếp theo sẽ nêu ra các khái niệm chính của tập thô được dùng cho các thông tin không nhất quán, gần đúng để xử lý các

dữ liệu dư thừa

1.1 Hệ thông tin

Trong mô hình dữ liệu của tập thô, thông tin được lưu trữ trong bảng nơi một sựkiện hoặc một đối tượng được thể hiện tương ứng với một dòng Các thông tin về đối tượng trong thế giới thực được thể hiện bởi dòng tương ứng trong bảng Mỗi cột trong bảng được dùng để thể hiện các đặc trưng (một giá trị, một đặc điểm, …) mà có thể đo đạc được cho đối tượng đó Một bảng như vậy được gọi là một hệ thông tin

Nó có thể được biểu diễn như là một cặp IS=(U,A) trong đó U={x1, x2,…,xn}

là tập hữu hạn khác rỗng các phần tử A={a1, a2, …, am} là tập hữu hạn khác rỗng cácthuộc tính sao cho a:U->Va, a  A Tập Va được gọi là tập giá trị của a Chúng ta sẽ chia tập giá trị này thành hai tập con C  A và D = A – C, tương ứng là tập thuộc tính

và thuộc tính quyết định Tập thuộc tính đại diện cho các đặc trưng có thể đo lường được của đối tượng trong khi thuộc tính quyết định là một thuộc tính dùng để phân lớp

Một ví dụ của bảng thông tin:

Các cột của bảng được đánh nhãn bởi các thuộc tính Outlook, Temperature, Humidity, Windy và Play Các dòng được đánh nhãn bởi các đối tượng p1, p2, p3,

…,p5

Trang 5

Mỗi dòng trong bảng có thể được xem là thông tin về một đối tượng cụ thể Ví

dụ đối tượng p3 có thể được đặc trưng trong bảng bởi các tập giá trị thuộc tính sau đây {(Outlook,overcast),(Temperature,83),(Humidity,86), (Windy, False),(Play, Yes)}

1.2 Quan hệ bất khả phân biệt

Đây là điểm khởi đầu của lý thuyết tập thô, nó thể hiện thực tế do thiếu một số tri thức làm cho chúng ta không thể phân biệt được vài đối tượng với những thông tin sẵn có Đây là một dạng của sự dư thừa trong dữ liệu Cho hệ thông tin IS = (U, A) đối với mỗi tập thuộc tính B  A một quan hệ bất khả phân biệt được ký hiệu là INDB

được định nghĩa như sau:

INDB(U) = {(x,y) U2 | a  B a(x) = a(y)} trong đó B là quan hệ bất khả phân biệt

Nếu (x,y)  INDisthì đối tượng x và y là bất khả phân biệt với nhau bởi thuộc tính B Chúng ta có thể dễ dàng chứng minh quan hệ bất khả phân biệt là một quan hệ tương đương Chúng ta kí hiệu lớp bất khả phân biệt B của x là [x]B Quan hệ tương đương sẽ làm cho tập đối tượng bị chia thành các phân mãnh lớp tương đương và hội các tập hợp này sẽ tạo ra lại tập đối tượng

Chúng ta hãy quan sát mỗi tập con các thuộc tính đã chia tập hợp các đối tượng

Trang 6

của các thuộc tính sẽ tạo ra một nhóm các tập đối tượng có cùng các đặc trưng Các nhóm này được xem như tập cơ sở là khối xây dựng cơ bản của lý thuyết tập thô.

BX = {x  U: [x] B  X}

BX = {x  U: [x] B X }

BNB = BX - BX

Trong đó BNB gọi là biên B của X chứa các đối tượng không thể phân lớp theo

B Nêu biên B là một tập hợp rỗng người ta nói tập này là rõ, ngược lại nếu biên B khác rỗng người ta nói tập này là thô

Tập thô có thể được đặc trưng bởi một con số

Trang 7

có thể được coi như là một tập đầy đủ các thuộc tính có nghĩa là nó có thể đại diện cho cấu trúc của lớp.

Cho C,D  A là một tập các thuộc tính điều kiện và quyết định Chúng ta sẽ gọiC’  C là D-Rút gọn của C (rút gọn tương ứng của D), nếu C’ là một tập con nhỏ nhất của C thỏa

Cho hệ thông tin T = (U, C, D) với U={u1, u2, …., un}, ma trận phân biệt của

nó M là một ma trận n x n, trong đó mỗi phần tử m cho một cặp (x,y) được định nghĩa như sau

mij =λ, ui(D) = uj(D)

={c  C | ui(c)  uj(c)} , ui(D) uj(D)}

Ý nghĩa của phần tử m là các đối tượng x, y có thể được phân biệt bởi bất kì thuộc tính nào trong m Nếu mij= λ hàm ý các đối tượng x, y không phân biệt được trên tập thuộc tính quyết định D Nếu mij=  thì bảng quyết định là không nhất quán (x, y bằng nhau thuộc tính điều kiện nhưng khác nhau trong thuộc tính quyết định)

Ví dụ cho ma trận

Trang 8

Ma trận bất khả phân biệt tương ứng là:

2 Các thuật toán tìm rút gọn

Từ các khái niệm và thuật ngữ đã được tìm hiểu ở trên chúng ta đi vào một số thuật toán để thấy được bản chất của vấn đề rút gọn các tập thuộc tính và đây là cơ sở

để hiểu được phần nào các thuật toán tìm tập rút gọn trong một hệ thông tin

1.6 Tìm rút gọn dựa trên hàm phân biệt

Cho hệ thông tin T = (U, C, D) với U={u1, u2, …., un} có ma trận phân biệt M

= “mij”, hàm phân biệt ft của T được xây dựng như sau

Trang 9

Ta có hàm phân biệt sau:

ft = (a c ) b c  (a b )

Sử dụng các tính chất trong đại số Boolean ta có thể đưa về các dạng chuẩn tắc,

từ đó ta sẽ tìm ra được các rút gọn của hệ thông tin

Sau khi rút gọn ta được ft = b c từ đó ta tìm được một rút gọn của hệ thông tin

là {b, c}

1.7 Tìm rút gọn dựa trên chiến lược Johnson

Trong thuật toán trên đòi hỏi một độ phức tạp rất lớn về thời gian và không gianlưu trữ Để khắc phục nhược điểm trên Johnson đưa ra một thuật toán vẫn dựa vào ý nghĩa của ma trận bất khả phân biệt nhưng không cần phải lưu trữ ma trận bất khả phânbiệt Thay vào đó là xác định số cặp phân biệt được đối với từng thuộc tính điều kiện

Xét hệ thông tin T = (U, C, D) với U={u1, u2, …., un}, Với bất kì B  C và X

 U, quan hệ tương đương IND(B) giới hạn trên tập X được ký hiệu là INDx(B) và tập các lớp tương đương tạo bởi quan hệ này là [INDx(B)]

Với thuộc tính a A, giả sử [INDx(a)] = {X1, X2, …., Xm} Đặt x = |X| và xi

= |Xi|, i = 1,…, m Số Wx(a) các cặp đối tượng trong X phân biệt nhau tại thuộc tính a được tính từ công thức:

Trang 10

2 2 1

Tính WU

R(cj) = Wx 1(cj) + … + Wx m(cj) End

Trang 11

Dừng

Ngược lại thực hiện lại bước 2

Ví dụ

Cho hệ thông tin sau:

Đặt c1= Đau đầu, c2= Đau cơ, c3= Thân nhiệt

Trang 12

7 Do WL

R (c3)  0 hoặc R  C Lặp lại bước 2

1 R = { c3}; L = {{u1, u4}, {u2, u5}{u3, u6}}

2 Repeat

3

[INDx 1(c1)] = {{u1}, {u4}} Wx 1(c1) = 0

[INDx 2(c1)] = {{u2}, {u5}} Wx 2(c1) = 0

[INDx 3(c1)] = {{u3}, {u6}} Wx 3(c1) = 0

WL

R(c1) = 0 + 0 + 0 = 0

[INDx 1(c2)] = {{u1, u4}} Wx 1(c2) = 0

[INDx 2(c2)] = {{u2}, {u5}} Wx 2(c2) = 0

[INDx 3(c2)] = {{u3, u6}} Wx 3(c2) = 0

=> Sau khi thuật toán kết thúc ta được R = { c3, c1} hoặc R = { c3, c2}

3 Cài đặt thuật toán Johnson

Ứng dụng minh họa được lập trình trên nền net Ngôn ngữ lập trình c# được viết trên bộ công cụ visual studio 2008

1.8 Các hàm để nhập, xuất dữ liệu phục vụ cho bài toán

Trang 13

- Hàm này để thay đổi số thuộc tính đầu vào, từ thuộc tính đầu vào sẽ tạo ra giao

diện nhập hệ thông tin

private void txtA_TextChanged(object sender, EventArgs e) {

- Hàm này thêm vào một gridview để người dùng nhập các thông tin của hệ thông

tin làm đầu vào cho bài toán

private void XayDungBangQuyetDinh() {

Trang 15

}

}

}

}

1.9 Các hàm chính được sử dụng trong thuật toán Johnson

- Hàm “btnTimRutGon_Click” thực hiện các bước 1, 4, 5, 6, 7 trong thuật toán

Mô tả hàm

Ban đầu hàm khởi tạo các giá trị cho R, L, Y ban đầu từ các giá trị đầu vào Lưu

ý ở đây ta có thêm tập Y dùng để lưu các giá trị WU

R(cj) phục vụ cho việc kiểm tra xem có bằng 0 hay không cũng như để loại các trường hợp có WU

R(cj) không phải là nhỏ nhất

Tập R sẽ có nhiều trường hợp vì đôi khi thuật toán chạy sẽ cho ra hai giá trị WU

R

(cj) bằng nhau và đều nhỏ nhất, do đó sẽ có trường hợp R = “{c1, c2}” hoặc R = “{c1, c3}” Do đó ta phải lặp trong R trước tiên lấy ra mọi trường hợp để tiến hành tính toán

WU

R(cj) trên các trường hợp khác nhau

Với mỗi trường hợp trong R ta có các L tương ứng, từ R với L tương ứng đó ta đưa vào hàm “GetMinY” Hàm “GetMinY” mô tả lại các bước thực hiện trong 2 và 3

Sau khi đã chạy hàm GetMinY ta sẽ được các giá trị sau đây: giá trị WU

R(cj) nhỏ nhất, các vị trí của thuộc tính gây ra giá trị WU

R(cj) nhỏ nhất, các thuộc tính gây ra giá trị WU

Trang 16

_bangQuyetDinh.Columns.Count > 1)

{

ArrayList TapR = new ArrayList();

TapR.Add(new ArrayList());

ArrayList TapXTemp = new ArrayList();

ArrayList TapL = new ArrayList();

for (int i = 0; i < _bangQuyetDinh.Rows.Count - 1; i++) {

ArrayList TapRTemp = (ArrayList)TapR.Clone();

ArrayList TapLTemp = (ArrayList)TapL.Clone();

ArrayList TapHopYTemp = (ArrayList)TapHopY.Clone(); TapR.Clear();

TapHopY.Clear();

TapL.Clear();

for (int i = 0; i < TapRTemp.Count; i++)

{

ArrayList CacTHR = (ArrayList)TapRTemp[i];

ArrayList CacTHL = (ArrayList)TapLTemp[i];

GetMinY(CacTHR, CacTHL, out minY, out minYIndex, out arrMinC, out TapHopIndC, out TapHopYTemp); for (int j = 0; j < arrMinC.Count; j++)

{

Trang 17

ArrayList CacTHRTemp =

(ArrayList)CacTHR.Clone();

CacTHRTemp.Add(arrMinC[j]); TapR.Add(CacTHRTemp); TapHopY.Add(TapHopYTemp[(int)minYIndex[j]]); CacTHLTemp = new ArrayList();

foreach (ArrayList lTemp in (ArrayList)TapHopIndC[(int)minYIndex[j]]) {

foreach (ArrayList tapX in lTemp) {

if (tapX[0] is ArrayList) {

foreach (object tapXX in (ArrayList)tapX) {

CacTHLTemp.Add(tapXX); }

}

else {

CacTHLTemp.Add(tapX); }

}

}

TapL.Add(CacTHLTemp);

}

}

if (minY == 0) {

break; }

bool iBreak = false;

Trang 18

Ban đầu hàm nhận giá trị R, L vào Lặp tất cả thuộc tính cj, nếu thuộc tính đó

đã có trong R thì ta sẽ không xét nữa Tiếp theo lặp các X thuộc L

Trong mỗi vòng lặp ta tính ra được các [INDx i(cj)] và Wx i(cj) Đồng thời có một biết y để lưu tổng các Wx i(cj) vừa tìm được

Sau khi hàm được chạy xong ta trả lại kết quả cho hàm “btnTimRutGon_Click”

để hàm này tính toán điều kiện dừng

Lập trình hàm

private void GetMinY(ArrayList TapR, ArrayList TapL,

out int minY, out ArrayList minYIndex, out ArrayList minC,

out ArrayList TapHopIndC, out ArrayList TapHopY)

{

TapHopIndC = new ArrayList();

TapHopY = new ArrayList();

minY = int.MinValue;

minYIndex = new ArrayList();

Trang 19

minC = new ArrayList();

for (int i = 0; i < _iCCount; i++)

ArrayList excluseU = new ArrayList();

ArrayList IndCX = new ArrayList();

for (int j = 0; j < tapX.Count; j++)

Trang 20

ArrayList tempDel = new ArrayList();

int w = temp.Count * temp.Count;

int row0Index = (int)temp[0];

int rowlIndex = (int)temp[l];

if

(_bangQuyetDinh.Rows[row0Index].Cells[i].Value.ToString().Equals(_bangQuyet Dinh.Rows[rowlIndex].Cells[i].Value.ToString()) &&

_bangQuyetDinh.Rows[row0Index].Cells[_bangQuyetDinh.Columns.Count -

1].Value.ToString().Equals(_bangQuyetDinh.Rows[rowlIndex].Cells[_bangQuyetD inh.Columns.Count - 1].Value.ToString()))

Trang 21

1.10 Chạy và thực thi kết quả:

Người dùng nhập số lượng thuộc tính C của hệ thông tin Sau đó nhập các giá trị

c tương ứng trong từng ô Sau khi nhập xong nhấn nút tìm rút gọn Chương trình sẽ đưa ra tập rút gọn tìm được

Dữ liệu thứ 1:

Trang 22

Dữ liệu thứ 2:

Trang 23

Dữ liệu thứ 3:

Trang 24

1.11 Nhận xét:

Ưu điểm

- Thuật toán đã cài đặt thành công và thu được kết quả chính xác trong trường

hợp có nhiều tình huống phức tạp như có nhiều Wx i(cj) giống nhau Điều chưa được xử lý đầy đủ trong phần thuật toán

- Không cần phải tốn không gian lưu trữ để lưu ma trận bất khả phân biệt

- Người dùng có thể nhập động hoàn toàn các thuộc tính cũng như các đối tượng

để đưa vào bài toán

- Phần cài đặt đã được đi đúng với các bước của thuật toán, đồng thời có những

bước tinh chỉnh để giúp cho thuật toán tìm được đầy đủ nhất, đồng thời có những hàm tinh chỉnh kết quả giúp tránh tình trạng dư thừa dữ liệu

Trang 25

- Từ các trường hợp khác nhau trong R đã nêu trên sau khi đã cài đặt và xử lý

được, ta lại gặp trường hợp một số R lại cho ra kết quả đi hết các thuộc tính nhưng Wx i(cj) lại không bằng không và không giống nhau Đòi hỏi chúng ta phải qua một bước xử lý kết quả đối với các trường hợp như vậy để có thể nhận được kết quả chính xác nhất

- Một số khuyết điểm nhỏ như thực hiện việc lặp hết các thuộc tính sẽ tạo ra các

kết quả ví dụ R = {{c1, c2}, {c2, c1}} nghĩa là hai cặp trên thực tế là giống nhau nhưng lại có trong kết quả cũng đã được xử lý

- Cũng vì thời gian thực tế có hạn nên chưa thể test được nhiều trường hợp, có thể

trong quá trình lập trình các trường hợp phức tạp kể trên sẽ gây một số sai sót cóthể gây ra lỗi chương trình đồng thời phần lập trình chưa được tối ưu và gọn nhẹnhất có thể mong thầy có thể thông cảm

Ngày đăng: 09/04/2015, 22:01

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w