Bao gồm giới thiệu bài toán về phân nhóm bệnh nhân trong cơ sở dữ liệucủa “Bệnh xơ vữa động mạch”, cấu trúc của cơ sở dữ liệu và các bước phân tích,tiền xử lý dữ liệu để có được dữ liệu
Trang 1MỤC LỤC
CHƯƠNG 1 – TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ PHÁT TRIỂN
4
1.1 Phát hiện tri thức: 4
1.2 Khai phá dữ liệu: 5
1.2.1 Kiến trúc hệ thống khai phá dữ liệu: 5
1.2.2 Quá trình khai phá: 6
1.2.3 Mục đích của các tác vụ khai phá dữ liệu: 8
1.2.4 Một số phương pháp khai phá dữ liệu: 10
1.2.5 Tại sao phải cần lựa chọn phương pháp khai phá dữ liệu? 14
CHƯƠNG 2 - MỘT SỐ PHƯƠNG PHÁP SONG SONG KHAI PHÁ DỮ LIỆU 18
2.1 Tổng quan về xử lý song song : 18
2.1.1 Tổng quan: 18
2.1.2 Xử lý song song trong môi trường chia sẻ bộ: 20
2.1.3 Xử lý song song trong môi trường bộ nhớ phân tán: 23
2.2 Giải thuật phân vùng dữ liệu: 26
2.2.1 Giải thuật K-MEANS phân vùng dữ liệu: 27
2.2.2 Cách xác định tâm của các vùng: 28
2.2.3 Vấn đề về khởi tạo k-tâm trong giải thuật K-MEANS: 28
2.2.4 Độ phức tạp của giải thuật K-MEANS: 29
2.2.5 Đánh giá giải thuật K-MEANS: 30
2.2.6 Thuật toán K-MEANS song song: 31
CHƯƠNG 3 - NGHIÊN CỨU CƠ SỞ DỮ LIỆU "XƠ VỮA ĐỘNG MẠCH 35 3.1 Giới thiệu bài toán: 35
Trang 23.2 Giới thiệu chung về dữ liệu: 35
3.3 Mô tả dữ liệu: 39
3.4 Tiền xử lý dữ liệu: 45
CHƯƠNG 4 - CÀI ĐẶT VÀ THỬ NGHIỆM CHƯƠNG TRÌNH 53
4.1 Lựa chọn giải pháp: 53
4.1.1 Lựa chọn môi trường cài đặt: 53
4.1.2 Lựa chọn giải thuật sử dụng trong chương trình: 59
4.2 Phân tích và thiết kế chức năng bài toán: 60
4.2.1 Xác định yêu cầu bài toán: 60
4.2.2 Hoạt động của chương trình: 61
4.2.3 Cài đặt chương trình bằng Visual C++ và OpenMP: 67
KẾT LUẬN VÀ KIẾN NGHỊ 69
TÀI LIỆU THAM KHẢO 71
Trang 3MỞ ĐẦU
Khai phá dữ liệu là một trong những lĩnh vực đang phát triển nhanh chóng và
đã được ứng dụng trong các lĩnh vực khác nhau Những lĩnh vực ứng dụng tiêubiểu của khai phá dữ liệu là trong kinh doanh thương mại, trong khoa học kỹ thuật.Trong những lĩnh vực ứng dụng đó, y học là một trong những lĩnh vực mà khaiphá dữ liệu đã có những đóng góp đáng kể và trở thành một trong những giải phápcho nhiều vấn đề y học Nhiều hệ thống phát hiện tri thức y học đã được phát triển
và thu được nhiều được rất nhiều lợi ích Vì vậy tôi chọn đề tài để này mong muốnnghiên cứu áp dụng một vấn đề nhỏ trong lĩnh vực y học và khai phá dữ liệu nóichung
Nội dung đề tài được chia làm 4 chương với bố cục như sau:
Chương 1 Giới thiệu tổng quan về kỹ thuật khai phá dữ liệu và phát hiện tri
thức
Chương 2 Nghiên cứu một số phương pháp song song khai phá dữ liệu Bao
gồm các định nghĩa và các mô hình về xử lý song song Các kỹ thuật xử lý songsong trong môi trường bộ nhớ chia sẻ và bộ nhớ phân tán Nghiên cứu thuật toánsong song khai phá dữ liệu hay dùng là thuật toán KMEANS song song
Chương 3 Ứng dụng khai phá dữ liệu trong y học “Bệnh xơ vữa động
mạch” Bao gồm giới thiệu bài toán về phân nhóm bệnh nhân trong cơ sở dữ liệucủa “Bệnh xơ vữa động mạch”, cấu trúc của cơ sở dữ liệu và các bước phân tích,tiền xử lý dữ liệu để có được dữ liệu sạch cho quá trình khai phá dữ liệu bằngchương trình
Chương 4 Cài đặt và thử nghiệm chương trình, chương này là áp dụng thuật
toán khai phá dữ liệu song song đã nghiên cứu và cơ sở dữ liệu đã được phân tích,
xử lý, xây dựng chương trình Khai phá dữ liệu sử dụng thuật toán KMEANS songsong
Trang 4CHƯƠNG 1 – TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ PHÁT
TRIỂN TRI THỨC
Trong chương này, bài báo cáo trình bày tổng quan về khai phá dữ liệu vàphát hiện tri thức
1.1 Phát hiện tri thức:
Thông tin là yếu tố quan trọng trong cuộc sống hằng ngày của con người.Không những vậy, thông tin là nhân tố tạo ra thành công trong mọi lĩnh vực nếubiết sử dụng và khai thác thông tin có hiệu quả Thông tin phải có ích đối vớingười dùng tin, có tính thời sự cao…Điều đặt ra là khai thác thông tin ở đâu? khinào? …Câu trả lời là từ các kho dữ liệu có sẵn, chúng ta tìm ra những thông tintiềm ẩn có giá trị mà trước đó chưa phát hiện, tìm ra những quy luật và các yếu tốtác động lên chúng Thực hiện công việc này chính là thực hiện quá trình phát hiệntri thức trong kho dữ liệu mà trong đó kỹ thuật cho phép ta lấy được các tri thức đóchính là kỹ thuật khai phá dữ liệu (data mining)
Tuân theo quy luật phát triển tự nhiên, con người luôn luôn thiếu thốn về trithức Dữ liệu có thể là các sự kiện, cũng có thể là các hiện tượng cụ thể hay không
cụ thể, có cấu trúc hay phi cấu trúc Còn với tri thức, chúng ta không thể địnhnghĩa rõ ràng, chính xác, đó là một khái niệm rất rộng khó có thể đưa ra địnhnghĩa chính xác Tuy nhiên ta thể có nói rằng, tri thức được khai phá từ cơ sở dữliệu là tri thức có thể biểu diễn, mô tả (mà con người có thể hiểu được) trong mộtngôn ngữ nào đó bao gồm một hay nhiều yếu tố hoặc là mối quan hệ giữa cácthuộc tính trong dữ liệu Điều đó nói lên rằng phát hiện tri thức là phát hiện ra trithức để phục vụ một hoạt động của con người Do vậy quá trình phát hiện tri thức
là quá trình hoạt động, khai phá của người dùng tin dựa vào cơ sở vật chất về côngnghệ hiện có
Tri thức có được nhờ vào công nghệ nói chung, trong đó có vai trò thiết yếucủa kho dữ liệu (Data Warehousing) và khai phá dữ liệu (Data Mining)
Trang 51.2 Khai phá dữ liệu:
Khám phá tri thức trong CSDL bao gồm một số công đoạn, trong đó chủ yếunhất là khai phá dữ liệu (Data Mining-DM) Mục đích của khai phá dữ liệu lànhằm phát hiện ra những tri thức mới, tiềm ẩn có lợi, chưa được biết tới trong cáckhối dữ liệu Chỉ trong một thời gian khá ngắn ngủi ít năm vừa qua DM đã đạtđược những bước tiến vượt bậc cả về phương diện nghiên cứu lý thuyết lẫn xâydựng sản phẩm phần mềm thương mại ở trong hầu hết các lĩnh vực khác nhau củađời sông kinh tế xã hội như: Tài chính, Ngân hàng, Thương mại, Y tế, Giáo dục,Khoa học-công nghệ và Môi trường,… Thậm chí người ta còn cho rằng hệ quản trị
cơ sở dữ liệu (CSDL) chiếm ưu thế trên thị trường, được người phát triển phầnmềm ứng dụng CSDL sử dụng sẽ là hệ quản trị được hỗ trợ bởi những công cụ(Tools) khai phá dữ liệu có chất lượng Các tập đoàn như IBM, ORACLE, INTEL,hay MICROSOFT, … đều có và thực hiện rất cấp thiết nhiều dự án phối hợpnghiên cứu cơ bản và triển khai xây dựng các công cụ như vậy
Với hai mục đích chính của khai phá dữ liệu là Dự đoán (Prediction) và Mô
tả (Description), người ta thường chọn hai phương pháp cho việc khai phá dữ liệu:
Dự đoán: đòi hỏi sử dụng một vài biến hoặc trường để dự đoán thông tin
tiềm ẩn hoặc một giá trị tương lai của một biến thuộc tính mà ta quan tâm đến
Mô tả: Tập trung làm nổi bậc lên mô hình kết quả mà con người có thể hiểu
sâu về thông tin dữ liệu
1.2.1 Kiến trúc hệ thống khai phá dữ liệu:
Kiến trúc của hệ thống khai phá dữ liệu có thể chia thành các thành phầnchính như sau:
Kho dữ liệu là một tập các cơ sở dữ liệu, kho dữ liệu…các công cụ làm sạch
dữ liệu và tích hợp dữ liệu có thể thực hiện trên chúng
Cơ sở trí thức: là yếu tố tri thức được dùng để đánh giá các mẫu kết quả khaiphá được
Trang 6Kỹ thuật khai phá: là các công cụ để thực hiện các nhiệm vụ: mô tả, kết hợp,phân lớp, phân nhóm dữ liệu…
Công cụ đánh giá mẫu: gồm một số modul sử dụng các độ đo và tương tácvới các modul khai phá dữ liệu để tập trung vào các thuộc tính cần quan tâm Biểu diễn dạng đồ hoạ: Modul này giao tiếp giữa người dùng và hệ thốngkhai phá dữ liệu
Hình 1 1: Kiến trúc hệ thống khai phá dữ liệu
1.2.2 Quá trình khai phá:
Khai phá dữ liệu là lĩnh vực có nhiệm vụ khảo sát dữ liệu, chiết xuất tri thức,thu lượm thông tin, thậm chí là duyệt và tìm kiếm dữ liệu mà chúng ta quan tâm
Trang 7đến…Là quá trình nhận biết các mẫu dữ liệu qua các giai đoạn khác nhau, các mẫu
dữ liệu phải có tính chính xác, hợp lý, tiềm ẩn và có tính được khám phá, hữudụng, cốt lõi là phải hiểu được
Khai phá dữ liệu liên quan đến nhiều ngành, nhiều lĩnh vực: xác suất thống
kê, trí tuệ nhân tạo, cơ sở dữ liệu, thuật toán, tính toán song song với tốc độ cao…Hay có thể nói rằng khai phá dữ liệu là việc khám phá ra các dữ liệu có ích, hữudụng với người dùng thông tin Khai phá dữ liệu thường là những modul chươngtrình hoạt động trực tiếp trên dữ liệu, tuy nhiên vẫn tồn tại việc khai phá gián tiếp,một số phương pháp có thể khai phá dữ liệu sau:
+ Phương pháp xác suất thống kê (chọn mẫu)
+ Phương pháp trí tuệ nhân tạo (hay còn gọi là “học máy”)
+ Phương pháp phân đoạn (vùng, lớp) dữ liệu (clustering)
+ Phương pháp nhận dạng (mô hình)
+ Phương pháp cơ sở dữ liệu
+ …
Phương pháp học máy và phương pháp thống kê bước đầu là thuật toán nạp
toàn bộ tệp dữ liệu vào bộ nhớ Nếu mô hình kho dữ liệu là lớn thì đây là điều
thách thức với người dùng(người khai phá dữ liệu)
Mô hình khai phá dữ liệu có thể mô phỏng như sau:
Hình 1.2: Mô hình khai phá dữ liệu
Trang 8+ Xác định nhiệm vụ chính: Qua quá trình hình thành bài toán, cần xác địnhchính xác và rõ ràng vấn đề cần giải quyết là gì?
+ Dữ liệu liên quan: Từ việc xác định rõ nhiệm vụ, bước này xây dựng giảipháp dựa trên cơ sở dữ liệu liên quan đến bài toán đã đặt ra
+ Thu thập dữ liệu liên quan và tiền xử lý chúng: bước này rất quan trọng là
vì sẽ trả lời câu hỏi: thuật toán khai phá có hiểu được cấu trúc dã liệu hay không ?
Và nếu hiểu thì phải xữ lý như thế nào?
+ Chọn thuật khai phá dữ liệu phù hợp và thực hiện chính xác đáp ứng nhucầu mẫu cần quan tâm và biểu diễn chúng dưới dạng có ý nghĩa
+ Mẫu: Các mẫu này là kết quả của quy trình khai phá Tức là hiểu và sửdụng tri thức đã tìm được thông qua hành động
1.2.3 Mục đích của các tác vụ khai phá dữ liệu:
Có hai nhiệm vụ cơ bản đó là dự đoán (prediction) và mô tả (description) Từcác mẫu tìm kiếm được, chúng ta dự đoán những giá trị chưa biết hoặc những giátrị trong tương lai Và tập trung mô tả vào việc tìm kiếm các mẫu mô tả dữ liệulàm sao cho con người có thể hiểu được
+ Phân lớp(Classification): là việc học một hàm ánh xạ từ một mẫu dữ liệuvào một trong số các lớp đã được xác định trước đó
Hồi quy(Regression): Là việc học một hàm ánh xạ từ một mẫu dữ liệu thànhmột biến dự đoán có giá trị thực
+ Phân nhóm(Clustering): Là việc mô tả chung để tìm ra các tập hay cácnhóm, loại mô tả dữ liệu Các nhóm có thể tách nhau hoặc phân cấp Có nghĩa là
dữ liệu có thể vừa thuộc nhóm này vừa thuộc nhóm kia
Trang 9Hình 1.3: Ví dụ về phân nhóm
+ Tổng hợp (Summarization): liên quan đến các phương pháp tìm kiếm một
mô tả tập con dữ liệu, thường áp dụng trong việc phân tích dữ liệu có tính thăm dò
và báo cáo tự động
+ Mô hình ràng buộc (Dependency Modeling): là việc tìm kiếm một mô hình
mô tả sự phụ thuộc giữa các biến, thuộc tính theo hai mức: phụ thuộc cục bộ vàocấu trúc của mô hình, phụ thuộc vào thước đo của một định lượng nào đó
+ Dò tìm biến đổi và độ lệch (Change and Deviation Dectection): Chú ý vàonhững thay đổi quan trọng trong dữ liệu từ các giá trị chuẩn hoặc đã được xác địnhtrước đó
+ Biểu diễn mô hình (Model Representation): Là việc dùng một ngôn ngữ Lnào đó để mô tả các mẫu mô hình có thể khái phá được Mô tả mô hình rõ ràng thì
“học máy” sẽ tạo ra mẫu có mô hình chính xác cho dữ liệu Tuy nhiên nếu môhình quá lớn thì khả năng dự đoán của “học máy” bị hạn chế Như thế sẽ làm choviệc tìm kiếm sẽ phức tạp hơn cũng như việc hiểu được mô hình và không đơngiản
+ Kiểm định mô hình (Model Evaluation): Là việc đánh giá, ước lượng các
mô hình chi tiết, chuẩn trong quá trình xữ lý phát hiện tri thức với sự ước lượng có
Trang 10dự báo chính xác hay không và có thoả mãn cơ sở logíc hay không? Ước lượngphải đánh giá chéo (cross validation) với việc mô tả đặc điểm bao gồm dự báochính xác, tính mới lạ, tính hữu ích, tính hiểu được phù hợp với các mô hình Cảhai phương pháp logic và thống kê chuẩn có thể sử dụng trong mô hình kiểm địnhnày
+ Phương pháp tìm kiếm (Search Method): Gồm có hai thành phần, Trong bảng tham biến (phạm vi tìm kiếm tham số) thuật toán phải tìm kiếm cáctham số trong phạm vi các chuẩn của mô hình kiểm định rồi tối ưu hoá và đưa racác tiêu chí (quan sát) dữ liệu và biểu diễn mô hình đã định (2)- Mô hình tìmkiếm, xuất hiện như một đường vòng trên toàn bộ phương pháp tìm kiếm: biểudiễn mô hình phải thay đổi sao cho các hệ gia phả mô hình phải được thông qua
(1)-1.2.4 Một số phương pháp khai phá dữ liệu:
a Phương pháp quy nạp(induction)
Đây gồm hai kỹ thuật chính, suy diễn và quy nạp
- Suy diễn: Dựa trên dãy một số sự kiện chính xác để suy ra các tri thức mới
từ các tri thức đã có Kỹ thuật suy diễn thường phải dựa vào các luật suy diễn
- Quy nạp: Dựa vào cơ sở dữ liệu hoặc các kho dữ liệu đã có, phương pháp
quy nạp tự tìm kiếm, tạo mô hình, mẫu và sinh ra tri thức diễn tả các đối tượngtrong cơ sở dữ liệu, liên quan trực tiếp đến mẫu dữ liệu
b Cây quyết định
Là một phương pháp mô tả tri thức dạng đơn giản bằng bộ phân loại các đốitượng có cấu trúc cây phân lớp Trong đó mỗi nút của cây được gắn nhãn và thuộctính có thể là:
+ Một nút lá: Chỉ ra giá trị thuộc tính của lá
+ Một nút trong: Hay còn gọi là nút ra quyết định, kiểm tra mỗi một giá trịcủa từng thuộc tính đơn đi cùng một nhánh đường đi là một cây con qua các cạnhtương ứng với giá trị thuộc tính của lá
Trang 11Cây quyết định là một công cụ được dùng rất phổ biến trong việc phân lớp,phân loại và dự đoán Cây có ưu điểm là mô tả đơn giản, mô hình quy diễn để hiểu
và dể sử dụng Tuy nhiên hạn chế là độ chính xác của mô hình
Trái với mạng Nơron, cây quyết định biểu diễn các luật - rất dễ hiểu đối vớingười sử dụng hoặc thậm chí có thể dùng trực tiếp trong cơ sở dữ liệu với công cụtruy vấn(query), báo cáo(report) thì dễ dàng lấy ra các bản ghi kết quả
Cây quyết định quy nạp là một dạng quy nạp được dùng trong việc “học” trithức thông qua phân lớp, phân loại, phân đoạn Điều chủ yếu để có thể dùng câyquyết định trong khai phá dữ liệu đó là:
+ Giá trị thuộc tính: các đối tượng phải được biểu diễn thành các biểu thứccủa một tập cố định các thuộc tính, nghĩa là chúng ta sẽ phải rời rạc hoá các miềngiá trị liên tục
+ Các lớp phải được xác định: tức là các mẫu cần được xếp loại thì phải biếtcác lớp, các loại từ trước đó
+ Các lớp dùng để phân loại là rời nhau
+ Dữ liệu được dùng phải đầy đủ: điều này đòi hỏi phải có hàng trăm hoặchàng nghìn các trường hợp dùng để luyện mẫu
Ví dụ về cây quyết định:(Ở đây X= sự kiện nào đó (PlayTenis) có thể xãy ratheo viễn cảnh được xây dựng trong cây quyết định)
Hình 1.4 : Ví dụ về cây quyết định
A
B=Gió C=Độ ẩm
Trang 12Từ các thành phần đối tượng trong dữ liệu, chúng ta khai phá dữ liệu bằngcác luật kết hợp trong dữ liệu Ví dụ ta phân tích một cơ sở dữ liệu kinh doanh bánhàng của công ty Toyota về chiến lược kinh doanh và bán xe máy và ô tô tronglương lai:
“Xe máy->Phụ tùng xe máy” {Độ hỗ trợ=20%, độ tin cậy=80%}
Với ví dụ này ta có thể hiểu độ hỗ trợ 20% có nghĩa là phân tích các giao tácngười mua xe máy và mua phụ tùng xe máy có tỷ lệ mua cùng nhau Còn độ tincây 80% có nghĩa là người mua xe máy bao giờ cũng có tỷ lệ lớn mua phụ tùng xemáy
* Phân lớp, phân nhóm và phân đoạn (Classification, Clustering and Segmentaion)
Phân lớp (classification), phân đoạn (segmentation) và phân vùng(clustering) dữ liệu sao cho mỗi phần, mỗi nhóm hoặc mỗi đoạn giống nhau theomột tiêu chuẩn nào đó Điều đó nói lên mối quan hệ của các thành phần, từ đó xâydựng nên các luật ràng buộc giữa chúng Một vấn đề cần nói là có sự khác nhau cơbản trong việc phân lớp dữ liệu thì các lớp đã được xác định và đặt tên từ trướccòn phân vùng dữ liệu thì chỉ đến khi thực hiện xong giải thuật mới biết dữ liệuthuộc vào vùng nào và các vùng đấy hoàn toàn chưa được đặt tên
Một giải thuật phân vùng dữ liệu tối ưu(optimal partitioning) phải là giảithuật mà các tập mẫu chứa dữ liệu có chung tính chất nào đó được phân tách từ dữ
Trang 13liệu Hơn nữa dữ liệu trong cùng một vùng thì có sự khác nhau không lớn, còn dữliệu trong các vùng khác nhau thì có khoảng cách rõ rệt
Trong các giải thuật phân vùng dữ liệu thì việc xây dựng các hàm đánh giáthuộc tính, hàm định nghĩa tham số giữa các thành phần dữ liệu đóng vai trò quantrọng trong việc xác định hai đối tượng A, B có tương đồng với nhau hay không.Tuy nhiên, tuỳ theo kiểu dữ liệu của các đối tượng cần xử lý mà chúng ta lại cócác hàm định nghĩa khác nhau
* Phương pháp dựa trên mẫu
Là việc sử dụng các mẫu từ cơ sở dữ liệu để tạo nên một mô hình dữ đoánbằng cách rút ra các thuộc tính tương tự như các mẫu đã biết trong mô hình Trongphương pháp này, các kỹ thuật thường hay áp dung như: Phân lớp vùng lân cận,giải thuật hồi quy (Dasarathy 1991), các hệ thống suy diễn dựa trên các lý do(case-based reasoning-Kolodner 1993)
* Mô hình phụ thuộc dựa trên đồ thị xác suất
Các mô hình đồ thị xác định sự phụ thuộc xác suất giữa các sự kiện thôngqua các mối liên hệ trực tiếp treo mô hình biểu diễn các cung của đồ thị (Pearl1988; Whittaker 1990) Mô hình này thường được áp dụng với các biến có giá trịrời rạc hoặc phân loại từng nhóm Các biến này cần xác định có phụ thuộc trựctiếp lẫn nhau hay không?
Mô hình học quan hệ(FOL hoặc FOPC)
Áp dụng luật suy diễn và cây quyết định cùng với việc áp dụng mệnh đềlogic, mô hình học quan hệ (first order logic-ngôn ngữ mẫu thứ tự logíc trước) rấtmềm dẻo là vì mô hình này ứng dụng logic trong tự nhiên
Khai phá văn bản(text mining)
Phù hợp với việc tìm kiếm, phân lớp, phân hoặch và phân tích các dữ liệuvăn bản phi cấu trúc Khai phá dữ liệu văn bản hiện được áp dụng trong việc khaiphá thông tin trên mạng và trang WEB Khảo sát và tìm kiếm nội dung tài liệu,thông tin phức tạp Câu hỏi đặt ra cho chúng ta: Tại sao khai phá dữ liệu văn bảnlại là mềm dẻo là không dễ điều khiển
Trang 14Mạng neuron
Là một lĩnh vực tiếp cận liên quan đến phát triển cấu trúc toán học với khảnăng “học” Nó là kết quả của việc nghiên cứu mô hình học của hế thống thầnkinh con người Mạng neuron có thể đưa ra từ các dữ liệu phức tạp (chính xáchoặc không) để trích chọn các mẫu và đưa ra các quá trình phức tạp mà con ngườihay một số kỹ thuật tầm thường khác không thể phát hiện ra
Bàn luận về ưu điểm của mạng neuron:
Khả năng tạo ra các mô hình dự đoán có độ chính xác cao
Áp dụng phong phú và đa dạng cho rất nhiều loại bài toán trong thực tiễnVới việc áp dụng trong các phương pháp phân nhóm, phân đoạn, phân loại,
Giải thuật di truyền(GA-Genetic Algorithms)
GA nói nôm na rằng là một kỹ thuật có sử dụng máy tính toán mô phỏng quátrình tiến hoá phức tạp trong tự nhiên, Nói cách khác là giải thuật chỉ ra các cá thểđược hình thành, được đánh giá, ước lượng và thay đổi ra sao?
GA là một giải thuật tối ưu hoá trong kỹ thuật khai phá dữ liệu Nói rõ hơn làđược áp dụng trong các kỹ thuật xây dựng cây quyết định và luật kết hợp
Tóm tắt: Trong quá trình khai phá dữ liệu, chúng ta có thể áp dụng cácphương pháp trên Tuy nhiên, không phải lúc nào củng máy móc áp dụng một giảithuật mà cần phải có phân tích và đánh giá xem: phương pháp nào có đặc điểmchung và riêng gì để áp dụng vào từng loại bài toán và dữ liệu nhất định
1.2.5 Tại sao phải cần lựa chọn phương pháp khai phá dữ liệu?
Các phương pháp suy diễn dựa trên tình huống(case-based reasoning), liệt kêlân cận, logic mờ, các thuật toán đột biến gien cũng chưa hẳn là một phương pháp
Trang 15khai phá dữ liệu mà nó có khả năng đưa ra các thông tin mới dựa trên việc suyluận nhưng lại không đáp ứng được yêu cầu về tính “tự động”: việc duyệt và tìmkiếm dữ liệu của công cụ này rất ưu việt nhưng tự thân công cụ đó lại rất phụthuộc vào quy trình nhập dữ liệu Nếu xét mạng nơron, mạng đa thức thì mặc dù
có tính tự động nhưng chỉ là các quá trình phân loại, nhận dạng các mẫu chứ chưahoàn toàn khai phá ra được tri thức mới
Hiện nay, người ta vẫn chưa đưa ra được một tiêu chuẩn nào trong việc quyếtđịnh sử dụng phương pháp khai phá nào cho bái toán nào thì tối ưu và có hiệu quảnhất Câu hỏi và câu trả lời cho việc này là không đơn giãn Là vì mỗi phươngpháp điều có điểm mạnh và điểm yếu của nó
Phân lớp – phân loại - phân đoạn dữ liệu
Phần này được chia thành ba dạng chính: phân lớp – phân loại, đưa ra cácluật kết hợp và cuối cùng là phân tích chuỗi
Với việc phân tích một tập dữ liệu sau đó chia tập dữ liệu đó thành các lớp,các nhóm, các loại, các đoạn khác nhau dựa vào một số quy tắc hay luật (kết hợp)hay các chuẩn nhất định Tuy nhiên khi áp dụng thì các phần tử thuộc cùng mộtnhóm thì phải “giống nhau” ở các thuộc tính nào đó Vấn đề quan trọng là làm saophải đưa ra được mô hình cho mỗi một lớp dựa trên các đặc tính của dữ liệu đượcdùng để làm mẫu
Tiếp theo không kém phần cốt lõi là khả năng học luật hay nói cách khác là
khả năng tìm ra các luật có thể áp dụng để xếp dữ liệu vào một trong các lớp đãđược xác định trước, mô tả trước Chúng ta có thể chọn các phương pháp: câyquyết định, xác suất, mạng nơron, giải thuật gen di truyền, tìm lân cận gần nhất,phương pháp quy nạp luật, để áp dụng vào việc này tuỳ theo mỗi dạng bài toán
Mô tả luật kết hợp
Khai phá luật kết hợp là một kỹ thuật cốt lõi của khai phá dữ liệu Tuy nhiên,luật kết hợp là luật chỉ ra các mối quan hệ, các mối ràng buộc giữa các đối tượngtrong một tập nào đấy Có thể định nghĩa luật kết hợp như sau:
Trang 16Định nghĩa: một luật kết hợp là một biểu thức dạng X=>Y trong đó X, Y là
các tập các đối tượng hay các sự kiện
Luật X=>Y có nghĩa là: nếu có X thì Y cũng có xu hướng xảy ra hoặc cũng
có thể hiểu là nếu có X thì ta nói rằng sẽ có Y
Ví dụ: Có luật kết hợp nói lên mối liên hệ giữa những người hút thuốc và
bệnh ung thư phổi như sau:
“Người có vợ, có chồng điều có con; người dân Việt Nam điều có vợ chồng”.
Chọn dữ liệu mẫu (pattern selection)
Chọn dữ liệu mẫu là một giai đoạn rất quan trọng trong kỹ thuật nhận dạng
và khai phá dữ liệu Trong xác suất thống kê nhiều chiều có một phần tương tựnhư thế đó là tìm các thuộc tính chính của một véctơ thuộc tính nhiều chiều
Sau khi chọn mẫu thu được một tập con của tập các biến thuộc tính đầu vàosau khi đã loại bỏ đi các thuộc tính ít quan trọng Từ đó kết tập thành bộ vectơthuộc tính mẫu
Một vài câu hỏi đặt ra trong khai phá dữ liệu
Có phải tất cả các mẫu đưa ra là đáng quan tâm hay không?
Cái gì tạo ra các mẫu đáng quan tâm?
Hệ thống khai phá dữ liệu có thể sinh ra tất cả các mẫu hữu ích haykhông?
Có thể tạo ra các mẫu cần quan tâm hay không?
Trang 17Để trả lời cho các câu hỏi trên chúng ta phải hiểu một cách tổng quát thì hệthống khai phá dữ liệu có thể sinh ra rất nhiều mẫu và luật Tuy nhiên một phần
“ít” trong tất cả các mẫu và luật đã sinh ra là có ích với người dùng Hơn nữa, cácmẫu đó phải thoả không ít yếu tố sau:
Dể hiểu với người dùng
Có tiềm năng sử dụng
Mới lạ (novel)
Có độ tin cậy ở mức chắc chắn
Biểu diễn sự hiểu biết (tri thức)
Từ các mẫu đã khám phá đó, người dùng dựa trên cấu trúc của các mẫu xácđịnh độ đo (độ hỗ trợ, độ tin cậy) của các luật kết hợp(X->Y)
Định nghĩa độ hỗ trợ và độ tin cậy:
Luật X=>Y có độ hổ trợ là s% nếu như s% của giao tác T bao hàm (chứa) X
U Y
Luật X=>Y có độ tin cậy là c% nếu như c% của giao tác T chứa X thì cũng
Y Kết quả của luật kết hợp khai phá là đi tìm kiếm tất cả các luật với độ hỗ trợ và
độ tin cậy vượt quá ngưỡng một vài người dùng chỉ ra
Độ hỗ trợ được tính bằng xác suất của X hoặc Y xuất hiện trong tổng số lầnxuất hiện
Tóm tắt: Khám phá tri thức là một quy trình bao gồm nhiều giai đoạn mà
trong đó khai phá dữ liệu là một trong những công đoạn quan trọng nhất, công
Trang 18đoạn này lại phụ thuộc vào việc chọn phương pháp khai phá dữ liệu cùng với luậtkết hợp là vấn đề mấu chốt của vấn đề
CHƯƠNG 2 – MỘT SỐ PHƯƠNG PHÁP SONG SONG KHAI PHÁ
DỮ LIỆU
Chương này trình bày tổng quan về xử lý song song, các mô hình của xử lýsong song trong môi trường bộ nhớ chia sẻ và phân tán Nghiên cứu giải thuậtsong song khai phá dữ liệu nổi tiếng là giải thuật KMEANS
2.1 Tổng quan về xử lý song song :
2.1.1 Tổng quan:
Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồngthời và cùng tham gia giải quyết một bài toán, nói chung xử lý song song đượcthực hiện trên những hệ thống đa bộ xử lý Mục đích của xử lý song song là thựchiện tính toán nhanh trên cơ sở sử dụng nhiều bộ xử lý đồng thời Xử lý song songdùng để giải quyết các bài toán phức tạp với yêu cầu tính toán lớn trên bộ dữ liệulớn
Xử lý song song liên quan trực tiếp đến nhiều yếu tố như cấu hình máy, phầnmềm hệ thống, thuật toán, ngôn ngữ lập trình
Độ phức tạp của xử lý song song lớn hơn so với xử lý tuần tự, tập trung chủyếu ở quá trình trao đổi dữ liệu và đồng bộ các tiến trình
Để cài đặt các thuật toán song song trên các máy tính song song, chúng taphải sử dụng những ngôn ngữ lập trình song song, tiêu biểu như Fortran 9.0,Pthread với Fortran /C++, MPI với C/C++, OpenMP với C/C++
Các mô hình xử lý song song hiện nay tập trung chủ yếu vào 4 mô hình sau:
- Mô hình chia sẻ bộ nhớ: Các máy tính thực hiện xử lý song song theo mô
hình chia sẻ bộ nhớ đều có điểm chung là các bộ vi xử lý đều dùng chung một bộ
Trang 19nhớ chia sẻ, các bộ vi xử lý thực hiện xử lý độc lập nhau nhưng có cùng một tàinguyên bộ nhớ Kỹ thuật xử lý song song chia sẻ bộ nhớ được chia thành 2 loạichính dựa vào thời gian truy cập bộ nhớ là truy cập đồng bộ UMA và truy cậpkhông đồng bộ NUMA.
Hình 2.1 Mô hình chia sẻ bộ nhớ
- Mô hình bộ nhớ phân tán: Cũng giống như mô hình chia sẻ bộ nhớ, mô
hình bộ nhớ phân tán cũng có một điểm chung là tất cả các bộ xử lý tham giatrong một hệ thống phân tán bộ nhớ phải cùng trong một mạng truyền thông, cácmáy tính phải cùng trong một kênh truyền thông Các bộ xử lý có bộ nhớ riêng của
nó, không có bộ nhớ chung giữa các bộ xử lý và được xử lý độc lập Các thay đổi
về bộ nhớ chỉ ảnh hưởng tới bộ xử lý tại bộ xử lý đó là không ảnh hưởng tới các
bộ xử lý khác Khi một bộ xử lý muốn truy cập vào dữ liệu của một bộ xử lý khác,điều này yêu cầu lập trình viên phải định nghĩa ra làm thế nào và khi nào đượctruy cập vào dữ liệu của bộ xử lý khác Đồng bộ hoá giữa các tiến trình là tráchnhiệm của các lập trình viên
Hình 2.2 Mô hình bộ nhớ phân tán
- Mô hình lai giữa chia sẻ bộ nhớ và bộ nhớ phân tán: Mô hình này được
sử dụng trong các máy tính lớn nhất và nhanh nhất thế giới Thành phần bộ nhớchia sẻ thường là các bộ nhớ đệm gắn liền với các máy tính đa bộ xử lý đối xứng
Trang 20SMP (Symmetric Mutilprocessor) Các bộ xử lý trên một máy tính SMP có cùngmột bộ nhớ chia sẻ Thành phần bộ nhớ phân tán là mạng truyền thông nối giữacác máy tính SMP với nhau Mỗi SMP có bộ nhớ riêng của nó và giữa các SMPkhông có bộ nhớ chung, vì thế mạng truyền thông là truyền dữ liệu giữa các SMP.
Hình 2.3 Mô hình lai giữa chia sẻ bộ nhớ và bộ nhớ phân tán.
2.1.2 Xử lý song song trong môi trường chia sẻ bộ:
Trong môi trường chia sẻ bộ nhớ, các tiến trình chia sẻ một không gian bộnhớ chung, tại đó các tác vụ truy cập vào vùng nhớ như đọc, ghi được thực hiệnkhông đồng bộ, vì thế có nhiều kỹ thuật như là khoá/cờ hiệu cấm để thực hiện điềukhiển việc truy cập bộ nhớ
Trong lập trình thủ tục tuần tự (như với C, C++, Pascal, Fortran), ta có thể
mô tả bài toán một cách độc lập với các ngôn ngữ lập trình Khi đã có mô tả vềthuật toán ta dễ dàng cài đặt trên các ngôn ngữ lập trình tuần tự khác nhau bởi vìhầu hết các ngôn ngữ lập trình thủ tục đều sử dụng các lệnh và cấu trúc điều khiểnchuẩn như: tuần tự, rẽ nhánh if-then, các cấu trúc lặp (for, while, repeat), v.v Tương tự như vậy, trong môi trường lập trình chia sẻ bộ nhớ có hai ràng buộcquan trọng mà chúng ta phải chú ý:
- Một tiến trình có thể chờ một khoảng thời gian bất kỳ giữa hai câu lệnh cầnthực hiện
- Không thể xem các lệnh thực hiện là đơn thể ở mức các ngôn ngữ lập trình
a Lập trình chia sẻ bộ nhớ dựa vào tiến trình:
Yêu cầu đầu tiên của xử lý song song là phải tạo ra được một số các tiếntrình cần thiết cho bài toán để thực hiện chạy song song và khả năng huỷ bỏ chúngkhi phần việc xử lý song song kết thúc để giải phóng bộ nhớ và các thiết bị mà các
Trang 21tiến trình đã chiếm giữ Việc huỷ bỏ các tiến trình phải không cản trở hoạt độngcủa những tiến trình khác Xác định được tiến trình chủ để thực hiện thu nhận kếtquả tính toán và giải quyết những việc còn lại cho đến khi kết thúc thuật toán.Yêu cầu thứ hai của phương pháp này là phân công nhiệm vụ cho các tiếntrình, các tiến trình được tạo ra, được phân công nhiệm vụ và cùng thực hiện Ví
dụ sau đây minh hoạ việc phân công các tiến trình thực hiện:
Ví dụ 1:
id = create_process(N);
switch(id)
{
case 1: … do NhiemVu1 …(s1); break;
case 2: … do NhiemVu2 …(s2); break;
.case N: … do NhiemVuN …(sn); break;
}
Tiến trình chủ sẽ thu thập kết quả tính toán của các tiến trình khác và thựchiện các công việc còn lại, còn những tiến trình khác kết thúc Ví dụ khi chúng taviết
join_process(N, id); id là tiến trình còn tiếp tục hoạt động Nếu ta đặt sau nómột số câu lệnh thì:
Các câu lệnh này sẽ không được thực hiện cho đến khi tất cả các tiếntrình đều thực hiện join_process()
Sau đó chỉ còn lại một tiến trình chủ hoạt động
b Cách thức chia sẻ dữ liệu giữa các tiến trình:
Một mặt một tiến trình có thể muốn giữ một phần dữ liệu cục bộ cho riêngmình, không cho những tiến trình khác nhìn thấy/truy cập tới những dữ liệu đó.Mặt khác, nó cũng muốn trao đổi thông tin với các tiến trình khác Xử lý vấn đềche giấu hay chia sẻ thông tin như thế nào còn tuỳ thuộc vào mô hình mà chúng ta
áp dụng, dựa vào tiến trình hay luồng
Trang 22 Các tiến trình trong UNIX, WINDOWS được sử dụng như các đơn vịtính toán độc lập Khi muốn sử dụng bộ nhớ chung, ta cần phải xin cấp phát bộnhớ và sau khi sử dụng xong phải giải phóng chúng Người lập trình phải có tráchnhiệm giải phóng bộ nhớ chia sẻ một cách tường minh khi chúng không còn cầnthiết sử dụng Có hai hàm cơ sở:
o shared(m, &id): cấp phát m byte bộ nhớ chia sẻ cho tiến trình id
o free_shm(): giải phóng bộ nhớ đã được cấp
Đối với các luồng, tất cả các thông tin, theo mặc định, là nhìn thấy được
Do vậy, trong mô hình này cần phải cố gắng để che giấu thông tin (cơ chế dùngbiến cục bộ)
c Lập trình chia sẻ bộ nhớ dựa vào luồng (thread)
Các luồng của một tiến trình có thể chia sẻ với nhau về không gian địa chỉchương trình, các đoạn dữ liệu và môi trường xử lý, đồng thời cũng có vùng dữliệu riêng để thao tác
Các tiến trình và các luồng trong hệ thống song song cần phải được đồng bộ,song việc đồng bộ giữa các luồng được thực hiện hiệu quả hơn đổi với các tiếntrình Đồng bộ giữa các tiến trình đòi hỏi tốn thời gian hoạt động của hệ thống,trong khi đối với các luồng thì việc đồng bộ chủ yếu tập trung vào sự truy cập cácbiến chung (global) của chương trình
Nhiều hệ điều hành hiện nay hỗ trợ đa luồng như: SUN Solaris, Window NT,Windows 2000, OS/2, v.v Hiện nay đã có một chuẩn cho việc lập trình song songdựa trên các luồng đó là POSIX Threads hay P Threads Ngoài ra còn có một công
cụ khác nữa hỗ trợ lập trình song song đa luồng là OpenMP, công cụ này hỗ trợnhiều nền tảng hệ điều hành hơn là cho cả UNIX và Windows NT, hơn nữa Open
MP cho phép thực thi cả đoạn mã tuần tự, điều này khác với P Threads yêu cầu tất
cả mã lệnh là song song
Trang 232.1.3 Xử lý song song trong môi trường bộ nhớ phân tán:
Tính toán phân tán là những tính toán được thực hiện trên cơ sở kết hợp khảnăng tính toán và truyền thông của hai hay nhiều máy tính trên mạng Các máytính thực hiện trên bộ nhớ và bộ xử lý riêng của nó và thực hiện trao đổi thông tinqua một mạng truyền thông giữa các máy
Mô hình tính toán phân tán có những ưu điểm sau:
Cho phép chia sẻ dữ liệu được lưu trữ ở nhiều máy tính khác nhau
Chia sẻ với nhau về một số chức năng chính của máy tính
Độ tin cậy cao hơn Trong trường hợp có một máy tính bị trục trặc thìnhững máy tính khác có thể thay thế để hoàn thành nhiệm vụ của hệ thống
Tính kinh tế: thường đầu tư vào hệ phân tán sẽ thấp hơn đầu tư cho hệ tậptrung
Tuy nhiên, hệ tính toán phân tán cũng đứng trước nhiều thách thức:
+ Những vấn đề liên quan đến việc quản trị hệ thống, vấn đề đảm bảo an toàn
hệ thống, bảo mật thông tin, v.v
+ Xử lý trong các hệ thống phân tán không có bộ nhớ chia sẻ để trao đổi dữliệu với nhau Sự trao đổi được thực hiện bằng cách gửi/nhận thông báo
Hiện nay có nhiều công cụ lập trình được sử dụng cho tính toán phân tán ởnhiều mức độ trừu tượng khác nhau, như: CORBA, PVM, MPI, Globus Toolkit 4v.v
a Mô hình gửi/nhận thông báo trong tính toán phân tán:
Trong mô hình tính toán phân tán việc chia sẻ dữ liệu được thực hiện thôngqua cơ chế trao đổi thông điệp
Các tiến trình có thể thực hiện trên những bộ xử lý khác nhau và không
có không gian bộ nhớ chia sẻ
Chia sẻ dữ liệu thông qua cơ chế send() và receive()
Tất cả các biến là cục bộ của các tiến trình Vì thế, những vấn đề về xungđột dữ liệu (cần phải khoá dữ liệu khi một tiến trình truy cập), hay tranh chấp
Trang 24thông tin (bài toán loại trừ nhau) không xuất hiện trong mô hình tính toán phântán.
Nói chung có hai mô hình gửi/nhận thông báo:
- Gửi/nhận thông báo theo cơ chế dị bộ:
- Gửi/nhận thông báo theo cơ chế đồng bộ: Trong mô hình này, tiến trình gửi
bị chặn lại cho đến khi tiến trình nhận sẵn sàng nhận Ở đây, sự truyền thông vàđồng bộ hoá luôn gắn chặt với nhau
* Ưu, nhược điểm của cơ chế gửi/nhận thông báo đồng bộ:
Ưu điểm: Làm cho nhiều vấn đề trong đồng bộ hoá và việc cấp phát bộ nhớđộng trở lên đơn giản hơn
Nhược điểm:
- Việc gắn chặt các tiến trình với thời gian phân phát thông điệp cũng đượcxem như là điều kiện ràng buộc bổ sung đòi hỏi trong khi thiết kế và thực thichương trình
- Việc bắt tiến trình gửi phải chờ dẫn đến việc làm giảm tính đồng thời của
hệ thống
- Ngoài ra, để cài đặt hiệu quả các hệ thống truyền thông đồng bộ đòi hỏiphải có những phần cứng đặc biệt để đảm bảo rằng sự truyền thông phải cựcnhanh và sự trao đổi dữ liệu không ảnh hưởng tới sự tính toán của hệ thống Màcác mạng truyền thông nhanh có nhiều nút mạng trao đổi dữ liệu với nhau là rấtđắt tiền Vì những lý do trên, nên hệ gửi/nhận thông báo dị bộ làm việc trên mạngcục bộ đã được phát triển mạnh mẽ hơn
Các mô hình lập trình dựa trên cơ chế gửi/nhận thông báo dị bộ
Các yêu cầu và trả lời qua lại giữa khách (Client) và chủ (Server) – Môhình hướng tâm Đây là mô hình mà các máy tính chỉ có quan hệ gửi-nhận dữ liệuvới một máy - máy “chủ” Trong suốt quá trình tính toán, chúng không cần đếnnhau
Trang 25Mô hình đường ống là mô hình các máy tính được hình dung là xếp thànhmột hàng và mỗi máy tính gửi nhận dữ liệu cho 2 máy kề bên.
Mô hình vòng tròn là mô hình các máy tính được hình dung là xếp thành mộthàng và mỗi máy tính gửi nhận dữ liệu cho 2 máy kề bên
Ngoài ra còn có mô hình: Hình sao, lưới 2D, lưới 3D, …
b Lập trình song song phân tán:
Lập trình theo mô hình gửi/nhận thông báo trong hệ thống nhiều máy tính cóthể thực hiện theo ba cách:
1 Sử dụng ngôn ngữ lập trình song song đặc biệt, ví dụ Occam được thiết
kế để sử dụng với các Transputer (Inmos 1986)
2 Sử dụng ngôn ngữ lập trình bậc cao (tuần tự) được mở rộng bằng cách bổsung thêm các từ khoá và cú pháp mở rộng để xử lý việc trao đổi thông điệp, ví
dụ CC++ (mở rộng của C++)
Sử dụng những ngôn ngữ lập trình bậc cao và các thư viện gồm những thủtục xử lý việc trao đổi thông điệp, ví dụ ngôn ngữ C/C++ và hệ chương trình thưviện để chạy với PVM, MPI, …
Trang 262.2 Giải thuật phân vùng dữ liệu:
Khái quát hoá: Là việc phân chia dữ liệu sao cho các phần tử nằm trong cùng một
phần hay một vùng dữ liệu thì có sự khác nhau ít còn các phần tử nằm khác vùngnhau thì sự khác biệt sẽ lớn hơn nhiều
Để đánh giá tính hiệu quả ta có thể dùng tỷ số D/S trong đó D là khoảng cách
bé nhất giữa các phần tử khác vùng nhau còn S là khoảng cách lớn nhất của cácphần tử cùng một vùng với nhau
+ Dựa trên cấu trúc lưới
+ Dựa trên việc định nghĩa các mô hình cho từng vùng dữ liệu sau đó tìm cácđối tượng của cơ sở dữ liệu đáp ứng được các giả thiết của mô hình
Tuỳ theo kiểu dữ liệu cần được khai phá mà chúng ta xây dựng các hàm D và
S khác nhau
jp ip q
j
tượng thứ i là (xi1, , xip) và đối tượng thứ j là (xj1, , xjp) (p-số chiều của dữ liệu)
Dữ liệu là nhị phân: D(i, j) = (b+c)/(a+b+c+d) đối với trường hợp xác suất đểthuộc tính của đối tượng nhận giá trị 0 bằng xác suất để thuộc tính của đối tượngnhận giá trị 1 và D(i, j) = (b+c)/(a+b+c) đối với trường hợp xác suất thuộc tính đốitượng nhận giá trị 0 khác xác suất để thuộc tính đối tượng nhận giá trị 1 Trong đó:
a = tổng số trường hợp 2 đối tượng i, j có thuộc tính cùng nhận giá trị 1
b = tống số trường hợp 2 đối tượng i, j có thuộc tính của i nhận giá trị 1 còn j nhậngiá trị 0
Trang 27c = tổng số trường hợp đối tượng i có giá trị thuộc tính = 0 còn đối tượng j cógiá trị thuộc tính = 1
d = tổng số trường hợp cả 2 đối tượng i và j cùng có giá trị thuộc tính là 0
Đối với dữ liệu nhận nhiều giá trị rời rạc
Dữ liệu rời rạc: Có hai trường hợp D(i, j) = (p – m)/p trong đó m – là tổng sốtrường hợp hai đối tượng i, j nhận cùng giá trị còn p – là tổng số giá trị rời rạc đó
2.2.1 Giải thuật K-MEANS phân vùng dữ liệu:
Hình 2 4 Giải thuật K-MEANS
Giải thuật phân vùng dữ liệu K-MEANS là giải thuật với mục tiêu chia n đốitượng của cơ sở dữ liệu thành k vùng (k biết trước) sao cho các đối tượng trong
Trang 28cùng một vùng có khoảng cách bé còn các đối tượng khác vùng thì có khoảng cáchlớn hơn nhiều
Giải thuật phân vùng dữ liệu K-MEANS trải qua 4 bước chính sau đây:(1) Chọn ra k phần tử trong n phần tử làm k điểm tâm của k vùng dữ liệu.(2) Lặp: Duyệt tuần tự n mẫu dữ liệu, với mỗi mẫu dữ liệu (hay đối tượng),gán đối tượng đó thuộc vào vùng dữ liệu i nếu như khoảng cách giữa đối tượng đó
và tâm của vùng i là bé nhất Kết thúc bước lặp, ta có các mẫu dữ liệu đã được gánvào 1 vùng nào đó trong k vùng
(3) Tính lại toạ độ điểm trung tâm của vùng bằng công thức tính trọng tâmcủa vùng (tính trung bình cộng các giá trị thuộc tính tương ứng với nhau giữa cácđiểm trong cùng một vùng)
(4) Quay lại bước 2, tiếp tục bước gán vùng cho các mẫu dữ liệu với cácđiểm trung tâm vùng mới Quá trình lặp lại bước 2 này kết thúc khi thực hiện bước
2 mà không có mẫu dữ liệu nào bị thay đổi vùng, có nghĩa là các điểm đã đượcphân đúng về vùng dữ liệu của mình
2.2.2 Cách xác định tâm của các vùng:
Về bản chất, việc phân vùng N-mẫu dữ liệu vào K vùng riêng biệt Sj, mỗi
vùng Sj chứa Nj mẫu dữ liệu, chính là việc tối ưu hoá hàm
j x d J
1
) ,
2.2.3 Vấn đề về khởi tạo k-tâm trong giải thuật K-MEANS:
Như ở trên đã trình bày, bước đầu tiên của giải thuật K-MEANS chính làviệc chọn ra k-điểm tâm cho k vùng dữ liệu Việc lựa chọn k điểm tâm này có thểnảy sinh vấn đề: trong các bước lặp sau đó, có thời điểm mà một vùng không chứa
Trang 29một mẫu dữ liệu nào (và trọng tâm của vùng đó được gọi là trọng tâm chết) hoặckết quả đạt được có chất lượng không cao
Để giải quyết vấn đề về lựa chọn k-điểm tâm cho giải thuật K-MEANS, cóthể thực hiện lặp lại giải thuật nhiều lần, mỗi lần với một lựa chọn ban đầu về k-điểm tâm khác nhau (số lần lặp đề xuất khoảng 30 lần) và lấy ra lần lặp cho kếtquả tốt nhất
2.2.4 Độ phức tạp của giải thuật K-MEANS:
Số ô nhớ cần dùng để lưu trữ các đối tượng là O(mn) trong đó m là số đốitượng còn n là số chiều (hay số thuộc tính) của các đối tượng
Còn độ phức tạp về thời gian của giải thuật K-MEANS là O(I*K*m*n) trong
đó I là số bước lặp cần thiết để giải thuật dừng (hội tụ), K là số vùng
Ví dụ: ban đầu tập 10 đối tượng được phân thành 2 tập con như hình vẽ dưới
Từ 2 tập đó, xác định được tâm của 2 vùng (là 2 dấu hình tròn)
Sau đó, 10 đối tượng ban đầu được phân vùng lại như hình vẽ dưới và lạiđược xác định lại trọng tâm và cứ như vậy cho đến khi việc xác định trọng tâmkhông thay đổi nữa hoặc số vòng lặp đạt đến độ lớn nhất định:
Trang 30Độ phức tạp của thuật toán K-MEANS là O(tkn) trong đó n là số đối tượnghay số mẫu dữ liệu, k là số vùng và t là số vòng lặp
Tuy nhiên, giải thuật K-MEANS yêu cầu phải biết trước hằng số k Mà đểxác định hằng số k thì nhiều khi lại không hề dễ dàng
Một vài biến thể của giải thuật K-MEANS:
+ Đưa thêm cách lựa chọn hằng số k
+ Thay đổi cách xác định sự tương đồng (2 phần tử có sự khác biệt nhỏ) + Dùng chính các đối tượng trong dữ liệu làm các điểm biểu diễn các vùng(trong giải thuật K-MEANS thì đối tượng biểu diễn vùng là tâm của vùng đó) + Không dùng 1 đối tượng để biểu diễn một vùng dữ liệu mà sử dụng mộttập các đối tượng để biểu diễn một vùng dữ liệu nhằm nâng cao khả năng phânvùng dữ liệu
Dưới đây trình bày việc dùng chính các đối tượng trong dữ liệu để biểu diễncác vùng dữ liệu:
(1) Chọn ra tập C gồm k đối tượng bất kì trong tập dữ liệu đầu vào, mỗi đốitượng đại diện cho một vùng dữ liệu
(2) Với mỗi cặp đối tượng (h, i) trong đó h không phải là đối tượng của tập Ccòn i là đối tượng của tập C, tính giá trị của hàm đổi vị trí:
(4) Lặp lại bước 2 và bước 3 cho đến khi không còn sự thay thế nào giữa i và
h
2.2.5 Đánh giá giải thuật K-MEANS:
Nếu dùng giải thuật K-MEANS, tuy có ưu điểm là độ phức tạp là đa thức vàthường là đạt được những cực trị địa phương nhưng vướng mắc ở đây là:
Trang 31- Phải xác định trước số vùng k, trong khi đó ta chưa thể biết được việc phânchia dữ liệu thành bao nhiêu vùng là thích hợp nhất
- Ngoài ra, giải thuật K-MEANS không xử lý được nhiễu và không thích hợpkhi các vùng dữ liệu không có tính chất lồi
2.2.6 Thuật toán K-MEANS song song:
K-MEANS song song - Parallel K-MEANS được sử dụng để phân lớp/nhómcác đối tượng trong các bài toán với dung lượng dữ liệu lớn Song song hoá làmgiảm thời gian tính toán Thuật toán K-MEANS kinh điển là cốt cõi của củaParallel K-MEANS, quá trình thực hiện song song hoá chỉ diễn ra trên một phầncủa thuật toán K-MEANS tuần tự
K-MEANS song song thực hiện tạo ra p tiến trình được đánh số từ 0 đến p-1trong đó tiến trình 0 được ngầm định là tiến trình chủ Không gian dữ liệu của bàitoán được coi là n bộ dữ liệu (mỗi bộ dữ liệu được coi là một vector có nhiềuthuộc tính dữ liệu) và được chia thành n/p không gian dữ liệu nhỏ độc lập với nhau
và được giao cho mỗi tiến trình con thực hiện trên không gian dữ liệu độc lập củamình
Mỗi tiến trình con (Sub_Process) thực hiện độc lập với n/p dữ liệu đầu vào (p
là số tiến trình) Dữ liệu này được phân chia cố định, mỗi tiến trình quản lý vàthực thi các phép toán một cách độc lập
Tiến trình chính (Main_Process) quản lý các tiến trình con
Hình 2.6 Mô hình quan hệ giữa tiến trình chính với các tiến trình con.
Main_Process
Sub_Process 1Sub_Process 2
Sub_Process p -1
Trang 32Các phần tử trọng tâm (trung tâm) lúc đầu được tiến trình chính khởi tạongẫu nhiên từ k phần tử cho k phân lớp trong tập dữ liệu đầu vào Các phần tửtrọng tâm của các tiến trình con là như nhau Mỗi tiến trình đều nhận các giá trịnày từ tiến trình chính Hoạt động của 1 tiến trình con được mô tả như sau:
- Tính SSE mỗi tiến trình (summing up all the squared distances, one
between each object and its nearest cluster centroid.).
- Phân nhóm theo giá trị nhỏ nhất của
- Gửi kết quả về Main_process
Cho đến khi SSE hội tụ
Hoạt động của tiến trình chủ (Main_Process) như sau:
- Khởi tạo k phần tử trung tâm ngẫu nhiên
- Chia khoảng dữ liệu theo số tiến trình một cách hợp lý
Trang 33Hình 2.7 Mô hình thực hiện thuật toán K-MEANS song song.
Kết thúc thuật toán, ta thu được một tập các phần tử đã được phân nhóm, cácphần tử trung tâm sau khi kết thúc thuật toán được lưu vào một mảng để dùng chocác bước khai phá dữ liệu tiếp theo
Tính khoảng cách giữa 2 điểm bất kỳ trong không gian n chiều theo côngthức Euclid
ai=(xi1, xi2, xim) i=1 n - đối tượng thứ i cần phân phân loại
xis - thuộc tính thứ s của đối tượng ai
xjs - thuộc tính thứ s của phần tử trung tâm cj
received k cluster centers
Main_Process
Sub_Process i (i=1 p)
received k cluster centers
calculate
objects-centers
grouping based on the min
Initial k cluster
centers
recompute c i
Trang 34Tính toán lại các điểm trung tâm của phân lớp: k phần tử trung tâm (k nhóm)
ban đầu được chọn ngẫu nhiên, sau mỗi lần nhóm các đối tượng vào các nhóm,phần tử trung tâm được tính toán lại
Cluster[i] = {a1, a2 at} – Nhóm thứ i
t
s
sj ij
- Số nhóm k luôn phải được xác định trước
- Không xác định được rõ ràng vùng của nhóm, cùng 1 đối tượng, nó có thểđược đưa vào nhóm này hoặc nhóm khác khi dung lượng dữ liệu thay đổi
- Điều kiện khởi tạo có ảnh hưởng lớn đến kết quả Điều kiện khởi tạo khácnhau có thể cho ra kết quả phân vùng nhóm khác nhau
- Không xác định được mức độ ảnh hưởng của thuộc tính đến quá trình tạonhóm
- Về vấn đề hạn chế phân nhóm, có thể dùng phương pháp xác định trungtuyến thay vì xác định khoảng cách nhỏ nhất
Một quan niệm cho rằng K-MEANS không thể dùng cho dữ liệu có kiểu làđịnh lượng Điều này không đúng, K-MEANS có thể được dùng giải quyết các bàitoán dữ liệu đa biến, thậm chí cho các bài toán có nhiều dạng dữ liệu Chìa khoácho việc giải bài toán này của K-MEANS là sử dụng ma trận khoảng cách
Trang 35CHƯƠNG 3 – NGHIÊN CỨU CƠ SỞ DỮ LIỆU “XƠ VỮA ĐỘNG
MẠCH”
3.1 Giới thiệu bài toán:
Dựa vào CSDL về chứng bệnh “Xơ vữa động mạch” mà các nhà nghiên cứungười Nga thu thập được trong vòng 20 năm qua trên cơ thể của 1417 bệnh nhânnam tuổi trung niên.Từ CSDL này nghiên cứu tìm ra một giải thuật phù hợp nhấtnhằm xây dựng một hệ thống chuẩn đoán bệnh nhân một cách hiệu quả và đạtđược độ chính xác cao Có thể chia dữ liệu bệnh án thành 4 nhóm bệnh nhân phùhợp sau:
Nhóm bệnh nhân có một số ít nhân tố nguy hiểm
Nhóm bệnh nhân có mang bệnh lý đặc biệt nguy hiểm
Để tìm được giải thuật hợp lý và hiệu quả chúng ta cần hiểu rõ về CSDL,nguồn gốc, các thuộc tính, các kiểu dữ liệu…Từ những thông tin đó chúng ta sẽthực hiện tiền xử lý dữ liệu để thu được dữ liệu tương đối sạch
3.2 Giới thiệu chung về dữ liệu:
Trong bảy mươi năm gần đây của thế kỷ 20, dự án mở rộng dịch tễ họcnghiên cứu về việc ngăn ngừa chứng xơ vữa động mạch từ sơ khai được phát triểndưới cái tên là “Nghiên cứu quốc gia đa nhân tố về ngăn ngừa các cơn bệnh và độtquỵ mạnh” ở Liên Xô cũ trước kia Các mục đích của nghiên cứu là:
Nhận biết các nhân tố nguy hiểm của chứng xơ vữa động mạch thịnh hành ởhầu hết dân cư, xem xét đến hầu hết các lứa tuổi nguy hiếm nhất do tính phức tạp
có thể có của chứng xơ vữa mạch máu gây nên, ví dụ những người ở lứa tuổi trungniên
Sự phát triển tiếp theo của những nhân tố nguy hiểm này và các tác động củachúng đối với sức khoẻ của những người tham gia kiểm tra theo dõi, đặc biệt đốivới bệnh xơ vữa động mạch tim