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

KỸ THUẬT PHÂN CỤM TRONG KHAI PHÁ DỮ LIỆU

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 (388.39 KB, 32 trang )

Đại Học Quốc Gia TP.HCM
Trường Đại Học Công Nghệ Thông Tin
BÀI TIỂU LUẬN MÔN
KHAI PHÁ DỮ LIỆU VÀ KHO DỮ LIỆU
ĐỀ TÀI:
KỸ THUẬT PHÂN CỤM TRONG
KHAI PHÁ DỮ LIỆU
GVHD: PGS.TS Đỗ Phúc
Người thực hiện: Tô Hồ Hải
Mã số: CH1101011
Lớp: Cao học khóa 6
TP.HCM – 11/2012
MỤC LỤC

MỤC LỤC 1
LỜI NÓI ĐẦU 2
TỔNG QUAN 3
PHẦN I: TỔNG QUAN PHÁT HIỆN TRI THỨC VÀ KHAI PHÁ DỮ LIỆU 5
PHẦN II. KỸ THUẬT GOM CỤM – PHƯƠNG PHÁP GOM CỤM BẰNG K-
MEANS 13
5.2. Minh họa thuật giải K-Means: 16
PHẦN III. CÀI ĐẶT MINH HỌA THUẬT TOÁN 20
K-MEANS 20
1. Giao diện: 20
2. Thực hiện chương trình: 20
} 29
PHẦN IV. TỔNG KẾT 30
TÀI LIỆU THAM KHẢO 31
Trang 1
LỜI NÓI ĐẦU
Trong chương trình cao học ngành công nghệ thông tin, nhóm các môn


học bắt buộc là bảy môn. Trong đó có hai môn là “Cơ sở dữ liệu (Nâng cao)” và
“Khai thác dữ liệu và kho dữ liệu” em được thầy Đỗ Phúc phụ trách. Khi học với
thầy em nhận thấy rằng: thầy có kiến thức rất sâu rộng ở nhiều lĩnh vực nên luôn
tạo cho bài giảng của mình một cách rất sinh động, tự nhiên. Thầy dẫn dắt chúng
em đi sâu vào bài học bằng những kiến thức, những mẩu chuyện, những ví dụ rất
quen thuộc và cách thầy đan xen chúng vào nhau thật là khéo léo. Và điều quan
trọng hơn cả là cách thầy truyền cảm hứng học tập cho chúng em và chỉ cách cho
chúng em phải tự học, nghiên cứu như thế nào để được kết quả tốt nhất.
Bên cạnh đó em cũng đúc kết được thêm một số kinh nghiệm, kỹ năng rất
quan trọng, cần thiết và nhất là phần kiến thức vô cùng bổ ích mà thầy đã truyền
đạt và định hướng cho chúng em.
Em xin gởi lời cám ơn đến thầy Đỗ Phúc, thầy đã rất tận tâm, truyền đạt
rất nhiều kiến thức, ý tưởng mà em rất tâm đắc. Em chúc thầy cùng luôn khỏe
mạnh và đạt nhiều thành quả trong công việc của mình.
Trang 2
TỔNG QUAN
Nhiều năm trở lại đây, với sự phát triển và ứng dụng của công nghệ thông
tin vào nhiều lĩnh vực khác nhau như: kinh tế, y tế, xã hội, giáo dục, quân sự. . .
Điều này cũng có nghĩa rằng lượng dữ liệu được các tổ chức sử dụng công nghệ
thông tin thu thập và lưu trữ ngày một nhiều hơn. Nhưng trên thực tế thì lượng
dữ liệu khổng lồ này lại không được sử dụng nhiều (chỉ khoảng 5% - 10%) vì
nhiều nguyên nhân khác nhau. Lượng dữ liệu tái sử dụng thì rất ít nhưng chúng
ta vẫn tiếp tục thu thập với ý nghĩ lo sợ rằng sẽ có bỏ qua phần nào đó quan trọng
hoặc những dữ liệu này sẽ có lúc cần đến. Trong khi đó để thu thập lượng dữ liệu
này cũng là một bài toán về kinh phí.
Bên cạnh đó, vấn đề về kinh tế hiện nay cạnh tranh rất khốc liệt. Vì vậy,
đối với những người làm kinh tế người ta rất cần có nhiều thông tin với tốc độ
nhanh để trợ giúp việc ra quyết định và ngày càng có nhiều câu hỏi mang tính
chất định tính cần phải trả lời dựa trên một khối lượng dữ liệu khổng lồ đã có.
Với những lý do như vậy, các phương pháp quản trị và khai thác cơ sở dữ liệu

truyền thống ngày càng không đáp ứng được yêu cầu của thực tế. Từ đây phát
triển ra một kỹ thuật mới đó là Kỹ thuật phát hiện tri thức và khai phá dữ liệu
(KDD – Knowledge Discovery and Data Mining). Kỹ thuật phát hiện tri thức và
khai phá dữ liệu đã và đang được nghiên cứu, phát triển và ứng dụng trong nhiều
lĩnh vực khác nhau ở các nước trên thế giới. Tại Việt Nam kỹ thuật này tương đối
còn mới, tuy nhiên cũng đang được nghiên cứu và dần đưa vào ứng dụng. Bước
quan trọng nhất của quá trình này là Khai phá dữ liệu (Data Mining - DM), giúp
người sử dụng thu được những tri thức hữu ích từ những CSDL hoặc các nguồn
dữ liệu khổng lồ khác. Rất nhiều doanh nghiệp và tổ chức trên thế giới đã ứng
dụng kỹ thuật khai phá dữ liệu vào hoạt động sản xuất kinh doanh của mình và
đã thu được những lợi ích to lớn. Nhưng để làm được điều đó, sự phát triển của
các mô hình toán học và các giải thuật hiệu quả là chìa khoá quan trọng. Và hiện
nay có rất nhiều kỹ thuật được đưa ra để giải quyết vấn đề này. Trong bài tiểu
luận này em xin trình một trong những cách mà em đã được học trong môn học
Trang 3
“Khai phá dữ liệu và Kho dữ liệu” do thầy Đỗ Phúc phụ trách, đó là “Kỹ thuật
phân cụm trong khai phá dữ liệu”.
Trang 4
PHẦN I: TỔNG QUAN PHÁT HIỆN TRI THỨC VÀ
KHAI PHÁ DỮ LIỆU
1. Giới thiệu chung.
Trong những năm gần đây, sự phát triển mạnh mẽ của CNTT và ngành
công nghiệp phần cứng đã làm cho khả năng thu thập và lưu trữ thông tin của các
hệ thống thông tin tăng nhanh một cách chóng mặt. Bên cạnh đó việc tin học hoá
một cách ồ ạt và nhanh chóng các hoạt động sản xuất, kinh doanh cũng như
nhiều lĩnh vực hoạt động khác đã tạo ra cho chúng ta một lượng dữ liệu lưu trữ
khổng lồ. Hàng triệu CSDL đã được sử dụng trong các hoạt động sản xuất, kinh
doanh, quản lí , trong đó có nhiều CSDL cực lớn cỡ Gigabyte, thậm chí là
Terabyte. Sự bùng nổ này đã dẫn tới một yêu cầu cấp thiết là cần có những kỹ
thuật và công cụ mới để tự động chuyển đổi lượng dữ liệu khổng lồ kia thành các

tri thức có ích. Từ đó, các kỹ thuật khai phá dữ liệu đã trở thành một lĩnh vực
thời sự của nền CNTT thế giới hiện nay.
2. Khái niệm khai phá dữ liệu
Khai phá dữ liệu (Data Mining) là một khái niệm ra đời vào những năm
cuối của thập kỷ 1980. Nó là quá trình trích xuất các thông tin có giá trị tiềm ẩn
bên trong lượng lớn dữ liệu được lưu trữ trong các CSDL, kho dữ liệu hay
dùng để phân tích dữ liệu bán tự động hay giải thích dữ liệu trên các tập dữ liệu
lớn…
Hiện nay, ngoài thuật ngữ khai phá dữ liệu, người ta còn dùng một số
thuật ngữ khác có ý nghĩa tương tự như: khai phá tri thức từ CSDL, trích lọc dữ
liệu, phân tích dữ liệu/mẫu, khảo cổ dữ liệu, nạo vét dữ liệu. Nhiều người xem
khai phá dữ liệu và một thuật ngữ thông dụng khác là phát hiện tri thức trong
CSDL (Knowlegde Discovery in Databases - KDD) là như nhau. Tuy nhiên trên
thực tế, khai phá dữ liệu chỉ là một bước thiết yếu trong quá trình phát hiện tri
thức trong CSDL. Có thể nói Data Mining là giai đoạn quan trọng nhất trong tiến
Trang 5
trình phát hiện tri thức từ cơ sở dữ liệu, các tri thức này hỗ trợ trong việc ra quyết
định trong khoa học và kinh doanh.
3. Các bước của quá trình khai phá dữ liệu:
Nghiên cứu lĩnh vực
Tạo tập dữ liệu đầu vào
Tiền xử lý/làm sạch, mã hóa
Rút gọn/chiều
Chọn tác vụ khai thác dữ liệu
Chọn các thuật giải khai thác dữ liệu
Khai thác dữ liệu: Tìm kiếm tri thức
Đánh giá mẫu tìm được
Biểu diễn tri thức
Sử dụng các tri thức vừa khám phá
4. Một số kỹ thuật khai phá dữ liệu thông dụng:

4.1. Khai phá Luật kết hợp (Association Rules)
- Mục tiêu của phương pháp này là phát hiện và đưa ra các mối liên hệ
giữa các giá trị dữ liệu trong CSDL. Mẫu đầu ra của giải thuật khai phá dữ liệu là
tập luật kết hợp tìm được.
- Phương pháp này được sử dụng rất hiệu quả trong các lĩnh vực như
marketing có chủ đích, phân tích quyết định, quản lí kinh doanh, …
- Tiếp cận cho kỹ thuật này thường sử dụng thuật toán Apriori.
- Nhiều bài báo đã được công bố về đề tài này
4.2. Khai phá luật Episode:
- Các luật Episode mô tả quan hệ thời gian giữa các sự vật
Trang 6
- Hai cách tiếp cận:
* WINEPI với cửa sổ trượt
* MINEPI với việc tìm sự xuất hiện nhỏ nhất
- Mở rộng thuật toán tăng cường cho bài toán Sequential Pattern Mining
4.3. Gom cụm
Mục tiêu chính của phương pháp phân cụm dữ liệu là nhóm các đối tượng
tương tự nhau trong tập dữ liệu vào các cụm sao cho các đối tượng thuộc cùng
một cụm là tương đồng còn các đối tượng thuộc các cụm khác nhau sẽ không
tương đồng. Phân cụm dữ liệu là một ví dụ của phương pháp học không giám sát.
Không giống như phân loại dữ liệu, phân cụm dữ liệu không đòi hỏi phải định
nghĩa trước các mẫu dữ liệu huấn luyện. Vì thế, có thể coi phân cụm dữ liệu là
một cách học bằng quan sát (learning by observation), trong khi phân loại dữ liệu
là học bằng ví dụ (learning by example). Trong phương pháp này bạn sẽ không
thể biết kết quả các cụm thu được sẽ như thế nào khi bắt đầu quá trình. Vì vậy,
thông thường cần có một chuyên gia về lĩnh vực đó để đánh giá các cụm thu
được. Kỹ thuật phân cụm dữ liệu được sử dụng rất nhiều trong các ứng dụng về
nhận dạng mẫu, phân loại email, phân loại khách hàng, phân đoạn thị trường…
Ngoài ra phân cụm dữ liệu còn có thể được sử dụng như một bước tiền xử lí cho
các thuật toán khai phá dữ liệu khác.

4.4. Phân lớp Bayes
- Có thể dùng phân lớp và dự đoán để xác lập mô hình nhằm môtả các lớp
quan trọng hay dự đoán khuynh hướng dữ liệu trong tương lai.
- Phân lớp Bayes được triển khai rất rộng rãi trong Data Mining vì dễ
hiểu, dễ triển khai. Tuy nhiên, phân lớp Bayes giả thiết rằng các biến trong mô
hình là độc lập nhau. Nếu các biến không độc lập nhau thì phân lớp Bayes cho
kết quả thiếu chính xác. Hiện nay có rất nhiều Data Mining Software triển
khai phân lớp Bayes như Weka, XMMiner, StatSoft,…
4.5. Cây quyết định
Trang 7
Giải thuật quy nạp cây ID3 (gọi tắt là ID3) là một giải thuật học đơn giản
nhưng tỏ ra thành công trong nhiều lĩnh vực. ID3 là một giải thuật hay vì cách
biểu diễn tri thức học được của nó, tiếp cận của nó trong việc quản lý tính phức
tạp, heuristic của nó dùng cho việc chọn lựa các khái niệm ứng viên, và tiềm
năng của nó đối với việc xử lý dữ liệu nhiễu.
ID3 biểu diễn các khái niệm (concept) ở dạng các cây quyết định (decision
tree). Biểu diễn này cho phép chúng ta xác định phân loại của một đối tượng
bằng cách kiểm tra các giá trị của nó trên một số thuộc tính nào đó.
Như vậy, nhiệm vụ của giải thuật ID3 là học cây quyết định từ một tập các
ví dụ rèn luyện (training example) hay còn gọi là dữ liệu rèn luyện (training
data).
4.6. Tập thô
- Lý thuyết tập thô được nhà logoc học Balan Zdzilaw Pawlak đề xuất ra
vào đầu những năm 80 của thế kỷ 19
- Nó cung cấp một công cụ để phân tích, suy diễn dữ liệu không chính xác
để phát hiện ra mối quan hệ giữa các đối tượng và những tiềm ẩn trong dữ liệu.
- Một hướng tiếp cận mới về tính không chắc chắn và không chính xác
của dữ liệu
. . .
5. Phân loại khai phá dữ liệu:

5.1 Khai phá dữ liệu mô tả:
Kỹ thuật này có nhiệm vụ mô tả về các tính chất hoặc các đặc tính chung
của dữ liệu trong CSDL hiện có.
- Cho biết điều gì là hữu ích có thể tìm thấy được trong dữ liệu
- Giải thích dữ liệu đó
Khai phá dữ liệu mô tả bao gồm các kỹ thuật: phân cụm (clustering), phân tích
luật kết hợp (association rules)
Trang 8
5.2 Khai phá dữ liệu dự báo:
• Dựa trên dữ liệu quá khứ, dự báo tương lai
• Xu thế phát triển!
6. Lợi thế của khai phá dữ liệu so với các phương pháp khác
Khai phá dữ liệu là một lĩnh vực liên quan tới rất nhiều ngành học khác
như: hệ CSDL, thống kê, Hơn nữa, tuỳ vào cách tiếp cận được sử dụng, khai
phá dữ liệu còn có thể áp dụng một số kỹ thuật như mạng nơ ron, lý thuyết tập
thô hoặc tập mờ, biểu diễn tri thức… Như vậy, khai phá dữ liệu thực ra là dựa
trên các phương pháp cơ bản đã biết. Tuy nhiên, sự khác biệt của khai phá dữ
liệu so với các phương pháp đó là gì? Tại sao khai phá dữ liệu lại có ưu thế hơn
hẳn các phương pháp cũ? Ta sẽ lần lượt xem xét và giải quyết các câu hỏi này.
6.1 Học máy (Machine Learning):
So với phương pháp học máy, khai phá dữ liệu có lợi thế hơn ở chỗ, khai
phá dữ liệu có thể sử dụng với các cơ sở dữ liệu thường động, không đầy đủ, bị
nhiễu và lớn hơn nhiều so với các tập dữ liệu học máy điển hình. Trong khi đó
phương pháp học máy chủ yếu được áp dụng trong các CSDL đầy đủ, ít biến
động và tập dữ liệu không quá lớn. Thật vậy, trong học máy, thuật ngữ cơ sở dữ
liệu chủ yếu đề cập tới một tập các mẫu được lưu trong tệp. Các mẫu thường là
các vectơ với độ dài cố định, thông tin về đặc điểm, dãy các giá trị của chúng đôi
khi cũng được lưu lại như trong từ điển dữ liệu. Một giải thuật học sử dụng tập
dữ liệu và các thông tin kèm theo tập dữ liệu đó làm đầu vào và đầu ra biểu thị
kết quả của việc học. Học máy có khả năng áp dụng cho cơ sở dữ liệu, lúc này,

học máy sẽ không phải là học trên tập các mẫu nữa mà học trên tập các bản ghi
của cơ sở dữ liệu. Tuy nhiên, trong thực tế, cơ sở dữ liệu thường động, không
đầy đủ và bị nhiễu, lớn hơn nhiều so với các tập dữ liệu học máy điển hình. Các
yếu tố này làm cho hầu hết các giải thuật học máy trở nên không hiệu quả. Khai
phá dữ liệu lúc này sẽ xử lý các vấn đề vốn đã điển hình trong học máy và vượt
quá khả năng của học máy, đó là sử dụng được các CSDL chứa nhiều nhiễu, dữ
liệu không đầy đủ hoặc biến đổi liên tục.
Trang 9
6.2 Hệ chuyên gia (Expert Systems)
Các hệ chuyên gia nắm bắt các tri thức cần thiết cho một bài toán nào đó.
Các kỹ thuật thu thập giúp cho việc lấy tri thức từ các chuyên gia con người.
Mỗi phương pháp hệ chuyên gia là một cách suy diễn các luật từ các ví dụ
và giải pháp đối với bài toán chuyên gia đưa ra. Phương pháp hệ chuyên gia khác
với khai phá dữ liệu ở chỗ các ví dụ của chuyên gia thường ở mức chất lượng cao
hơn nhiều so với các dữ liệu trong CSDL, và chúng thường chỉ bao hàm được
các trường quan trọng. Hơn nữa các chuyên gia sẽ xác nhận giá trị và tính hữu
ích của các mẫu phát hiện được.
6.3 Thống kê (Statistics).
Mặc dù các phương pháp thống kê cung cấp một nền tảng lý thuyết vững
chắc cho các bài toán phân tích dữ liệu nhưng chỉ có tiếp cận thống kê thuần tuý
thôi chưa đủ bởi:
Các phương pháp thống kê không phù hợp với các kiểu dữ liệu có cấu
trúc trong rất nhiều các cơ sở dữ liệu.
Thống kê hoàn toàn tính toán trên dữ liệu, nó không sử dụng tri thức sẵn
có về lĩnh vực quan tâm.
Các kết quả của phân tích thống kê có thể rất nhiều và khó có thể làm rõ
được.
Các phương pháp thống kê cần có sự hướng dẫn của người dùng để xác
định phân tích dữ liệu như thế nào và ở đâu. Phương pháp thống kê là một trong
những nền tảng lí thuyết của khai phá dữ liệu. Sự khác nhau cơ bản giữa khai phá

dữ liệu và thống kê ở chỗ khai phá dữ liệu là một phương tiện được dùng bởi
người sử dụng đầu cuối chứ không phải là các nhà thống kê. Khai phá dữ liệu đã
khắc phục được các yếu điểm trên của thống kê, tự động quá trình thống kê một
cách hiệu quả, vì thế giảm bớt công việc của người dùng đầu cuối, tạo ra một
công cụ dễ sử dụng hơn.
7. Các ứng dụng và thách thức của việc khai mỏ dữ liệu.
7.1 Các ứng dụng của Khai mỏ dữ liệu:
Trang 10
Các kỹ thuật khai mỏ dữ liệu có thể được áp dụng vào trong nhiều lĩnh
vực:
• Thông tin thương mại: Phân tích dữ liệu tiếp thị và bán hàng, phân tích
vốn đầu tư, chấp thuận cho vay, phát hiện gian lận,
Thông tin sản xuất: Điều khiển và lập lịch, quản lý mạng, phân tích kết
quả thí nghiệm,
• Thông tin khoa học:
Địa lý: Phát hiện động đất,

7.2 Những thách thức đối với khai mỏ dữ liệu:
• Các cơ sở dữ liệu lớn hơn rất nhiều: cơ sở dữ liệu với hàng trăm trường
và bảng, hàng triệu bản ghi và kích thước lên tới nhiều gigabyte là vấn đề hoàn
toàn bình thường và cơ sở dữ liệu terabyte (1012bytes) cũng đã bắt đầu xuất
hiện.
• Số chiều cao: Không chỉ thường có một sốlượng rất lớn các bản ghi
trong cơ sở dữ liệu mà còn có một số lượng rất lớn các trường (các thuộc tính,
các biến) làm cho số chiều của bài toán trở nên cao. Thêm vào đó, nó tăng thêm
cơ hội cho một giải thuật khai phá dữ liệu tìm ra các mẫu không hợp lệ. Vậy nên
cần giảm bớt hiệu quả kích thước của bài toán và tính hữu ích của tri thức cho
trước để nhận biết các biến không hợp lệ.
• Over-fitting (quá phù hợp): Khi giải thuật tìm kiếm các tham số tốt nhất
cho một mô hình đặc biệt sử dụng một tập hữu hạn dữ liệu, kết quả là mô hình

biểu diễn nghèo nàn trên dữ liệu kiểm định. Các giải pháp có thể bao gồm hợp lệ
chéo, làm theo quy tắc và các chiến lược thống kê tinh vi khác.
• Thay đổi dữ liệu và tri thức: Thay đổi nhanh chóng dữ liệu (động) có thể
làm cho các mẫu được phát hiện trước đó không còn hợp lệ. Thêm vào đó, các
biến đã đo trong một cơ sở dữ liệu ứng dụng cho trước có thể bị sửa đổi, xoá bỏ
hay tăng thêm các phép đo mới. Các giải pháp hợp lý bao gồm các phương pháp
tăng trưởng để cập nhật các mẫu và xử lý thay đổi.
Trang 11
• Dữ liệu thiếu và bị nhiễu: Bài toán này đặc biệt nhạy trong các cơ sở dữ
liệu thương mại. Dữ liệu điều tra dân số U.S cho thấy tỷ lệ lỗi lên tới 20%. Các
thuộc tính quan trọng có thể bị mất nếu cơ sở dữ liệu không được thiết kế với sự
khám phá bằng trí tuệ. Các giải pháp có thể gồm nhiều chiến lược thống kê phức
tạp để nhận biết các biến ẩn và các biến phụ thuộc.
Trang 12
PHẦN II. KỸ THUẬT GOM CỤM – PHƯƠNG PHÁP
GOM CỤM BẰNG K-MEANS.
1. Gom cụm là gì?
Xử lý nhóm một tập các đối tượng vào trong các lớp các đối tượng giống
nhau được gọi là phân cụm. Một cụm là một tập hợp các đối tượng dữ liệu giống
nhau trong phạm vi cùng một cụm và không giống nhau với các đối tượng trong
các cụm khác.
2. Mục tiêu của gom cụm:
Phép phân tích cụm là một hoạt động quan trọng. Thời kì đầu, nó học làm
thế nào để phân biệt giữa các cụm với nhau bằng cách trau dồi liên tục tiềm thức
các lược đồ phân loại. Phép phân tích cụm được dùng rộng rãi trong nhiều ứng
dụng, bao gồm nhận dạng, phép phân tích dữ liệu, xử lý ảnh, nghiên cứu thị
trường, v.v Bằng phân cụm, ta có thể nhận biết các vùng đông đúc và
thưa thớt, bởi vậy tìm ra toàn bộ các mẫu phân bố và các tương quan thú vị giữa
các thuộc tính dữ liệu. Trong kinh doanh, phân cụm có thể giúp cho các nhà
nghiên cứu thị trường tìm ra các nhóm riêng biệt dựa trên khách hàng của họ và

mô tả các nhóm khách hàng dựa trên các mẫu mua sắm. Trong sinh vật học, nó
có thể được dùng để có được các nguyên tắc phân loại thực vật và động vật, phân
loại gien theo chức năng giống nhau và có được sự hiểu biết thấu đáo các cấu
trúc kế thừa trong các mẫu. Phân cụm cũng có thể được dùng để nhận biết các
vùng đất giống nhau dùng trong cơ sở dữ liệu quan sát trái đất và nhận biết các
nhóm có hợp đồng bảo hiểm ô tô với mức chi phí trung bình cao, cũng như nhận
biết các nhóm nhà trong thành phố theo kiểu nhà, giá trị và khu vực địa lý. Nó có
thể cũng giúp cho việc phân loại dữ liệu trên WWW để khai thác thông tin. Như
một hàm khai phá dữ liệu, phép phân tích cụm được dùng như là một công cụ độc
lập để có thể nhìn thấu được bên trong sự phân bố dữ liệu, để quan sát các đặc
điểm của mỗi cụm và tập trung trên một tập đặc biệt các cụm cho phép phân tích
Trang 13
xa hơn. Tiếp theo, nó phục vụ như là một bước tiền xử lý cho các giải thuật khác
như phân loại và mô tả, thao tác trên các cụm đã dò được.
3. Các kiểu dữ liệu trong phép phân cụm
3.1. Kiểu số
 khoảng cách Minkowski
q
q
jpip
q
ji
q
ji
xxxxxxjid ) (),(
2211
−++−+−=
i = (x
i1
, x

i2
, …, x
ip
) và j = (x
j1
, x
j2
, …, x
jp
) là 2 phần tử dữ liệu trong p-imensional,
q là số nguyên dương
 nếu q = 1, d là khoảng cách Manhattan
 nếu q = 2, d là khoảng cách Euclid
 khoảng cách cosine : d
cos
(i, j) = i
T
j/(||i|| ||j||)
3.2. Kiểu nhị phân
Object j
1 0 Sum
Object i
1 a b a + b
0 c d c + d
sum a + c b + d p
 khoảng cách đối xứng:
dcba
cb
jid
+++

+
=),(
 khoảng cách bất đối xứng:
cba
cb
jid
++
+
=),(
 hệ số Jaccard bất đối xứng:
cba
a
jisim
Jaccard
++
=),(
3.3. Kiểu loại (nominal type)
 ví dụ: thuộc tính color có giá trị là red, green, blue, . . .
Trang 14
 phương pháp matching đơn giản, m là số lượng matches và p là tổng số
biến (thuộc tính), khoảng cách được định nghĩa:
p
mp
jid

=),(
3.4. Kiểu symbol
4. Phân loại các phương pháp phân cụm chính
- Các phương pháp phân chia
- Các phương pháp phân cấp

- Các phương pháp phân cụm dựa trên mật độ
- Các phương pháp phân cụm dựa trên lưới
5. Giải thuật K-Means
5.1. Giải thuật:
1. Khởi động ngẫu nhiên K tâm (center) của K cụm (clusters).
2. Mỗi phần tử được gán cho tâm gần nhất với phần tử dựa vào khoảng
cách (e.g. khoảng cách Euclid)
3. Cập nhật lại các tâm của K clusters, mỗi tâm là giá trị trung bình
(mean) của các phần tử trong cluster của nó.
4. Lặp lại bước 2, 3 cho đến khi hội tụ.
Trang 15
5.2. Minh họa thuật giải K-Means:
Tạo ngẫu nhiên 3 tâm k1, k2, k3 của 3 cụm.
Mỗi phần tử được gán với tâm cụm gần nó nhất.
Trang 16
Cập nhật lại tâm của các cụm.
Cấu hình mới cho lần lặp tiếp theo.
Trang 17
Các phần tử được gán lại tâm cụm gần nhất với nó
Cập nhật lại tâm của các cụm
(giá trị trung bình của các phần tử trong cụm)
Trang 18
Tâm cụm được cập nhật và chuẩn bị cho lần duyệt tiếp theo
Trang 19
PHẦN III. CÀI ĐẶT MINH HỌA THUẬT TOÁN
K-MEANS
1. Giao diện:
2. Thực hiện chương trình:
- Ta nhập số điểm cần gom cụm và tọa độ các điểm (hệ trục tọa độ XOY)
cần gom cụm vào list danh sách điểm phía bên dưới. Sau đó ta chọn thực thi

chương trình.
- Chương trình demo như sau:
Trang 20
3. Phần code chương trình:
Phần mềm cài đặt: Chương trình minh họa được viết bằng ngôn ngữ C# 2008
và được biên dịch sẵn để chạy trực tiếp.
Một số code cơ bản xử lý thuật toán K-Means
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace K_MEANS
{
public partial class Form1 : Form
Trang 21
{
public Form1()
{
InitializeComponent();
}
#region Gán hai ma trận có 2 dòng, DataGridview.Rowcount-1 cột
public void gan(ref int[,] A, int[,] B)
{
for (int i = 0; i < 2; i++)// Chỉ có 2 hàng(2 cụm)
{
for (int j = 0; j < dataGridView.RowCount - 1; j++)

{
A[i, j] = B[i, j];
}
}
}
#endregion
#region So sanh hai ma tran có 2 dòng, DataGridview.Rowcount-1 cột
public bool sosanh(int[,] A, int[,] B)
{
bool ss = true;
for (int i = 0; i < 2; i++)// Chỉ có 2 hàng(2 cụm)
{
for (int j = 0; j < dataGridView.RowCount - 1; j++)
{
if (A[i, j] != B[i, j])
ss = false;
break;
Trang 22
}
break;
}
return ss;
}
#endregion

#region doicho
public void doicho(ref int a, ref int b)
{
int tam;
tam = a;

a = b;
b = tam;
}
#endregion
#region Khai báo ma trận chứa các điểm nhập vào
double[,] dataInput; int i, j;
#endregion
private void button1_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
#region Bước 1: nhận giá trị các điểm nhập vào. Lưu trữ vào ma trận dataInput
int dong= dataGridView.RowCount-1;
int cot = dataGridView.ColumnCount;
dataInput = new double[dong,cot];
Trang 23
for (i = 0; i <dong; i++)
for (j = 0; j < cot; j++)
dataInput[i, j] = double.Parse(dataGridView[j, i].Value.ToString());
#endregion
#region Bước 2: ma trận U random
int[,] Usau = new int[2, dong];
int[,] U = new int[2,dong];
Random rand = new Random();
for (j = 0; j < dong; j++)
U[0, j] = rand.Next(2);
for (j = 0; j < dong; j++)
if (U[0, j] == 1)
U[1, j] = 0;
else
{

U[1, j] = 1;
}
//U[0, 0] = 1; U[0, 1] = 0; U[0, 2] = 0; U[0, 3] = 0;
//U[1, 0] = 0; U[1, 1] = 1; U[1, 2] = 1; U[1, 3] = 1;
sb.Append("Ma trận gom cụm random ngẫu nhiên");
sb.AppendLine();
for (i = 0; i < 2; i++)
{
for (j = 0; j < dong; j++)
{
Trang 24

×