Tải bản đầy đủ (.pdf) (51 trang)

TÌM HIỂU THUẬT TOÁN GOM CỤM K-MEAN VÀ CÀI ĐẶT CHƯƠNG TRÌNH MINH HỌA

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 (1009.97 KB, 51 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
  





BÀI THU HOẠCH
Môn học
KHAI PHÁ DỮ LIỆU VÀ KHO DỮ LIỆU

Đề tài
TÌM HIỂU THUẬT TOÁN GOM CỤM K-MEAN
VÀ CÀI ĐẶT CHƯƠNG TRÌNH MINH HỌA




Giảng viên hướng dẫn : PGS.TS Đỗ Phúc
Học viên thực hiện : Bùi Thị Hoàng Anh
Mã số : CH1101065
Lớp : Cao học – CNTT K6



HCM, 11/2012



















MỤC LỤC
LỜI NÓI ĐẦU

1

NỘI DUNG

2

Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU

2

1.1 Giới thiệu về khám phá tri thức

2


1.2 Khai phá dữ liệu và các khái niệm liên quan

3

1.2.1 Khái niệm khai phá dữ liệu

3

1.2.2 Các hướng tiếp cận trong khai phá dữ liệu

3

1.2.2 Các lĩnh vực ứng dụng

4

Chương 2: PHÂN CỤM DỮ LIỆU VÀ THUẬT TOÁN K-MEANS

5

2.1 Khái quát gom cụm dữ liệu

5

2.1.1 Khái niệm

5

2.1.2 Chuẩn hóa các độ đo


6

2.1.3 Một số ứng dụng của gom cụm dữ liệu

7

2.1.4 Một số kỹ thuật tiếp cận trong cụm dữ liệu

7

2.2 Gom cụm phân hoạch

9

2.3 Thuật toán K-Means

10

2.3.1 Thuật toán

10

2.3.2 Ví dụ minh họa

10

Chương 3: CÀI ĐẶT THỬ NGHIỆM THUẬT TOÁN K-MEANS

15


3.1 Chương trình thử nghiệm thuật toán K-Means

15

3.2 Chương trình ứng dụng thuật toán K-Means trong bài toán
phân đoạn ảnh

16

KẾT LUẬN

20

TÀI LIỆU THAM KHẢO

21

PHỤ LỤC

22

1

LỜI NÓI ĐẦU

Trong vài thập niên gần đây, công nghệ thông tin được ứng dụng
rộng rãi trong nhiều lĩnh vực: tài chính, sản xuất, kinh doanh, truyền thông,
y tế, Sự phát triển không ngừng của ngành công nghệ thông tin và các
lĩnh vực liên quan dẫn đến hệ quả là khối lượng thông tin lưu trữ ngày

càng lớn. Sự bùng nổ về dữ liệu dẫn đến yêu cầu cấp thiết là cần có những
kĩ thuật và công cụ tự động trích chọn ra những thông tin có ý nghĩa từ cơ
sở dữ liệu để từ đó giải quyết được các yêu cầu của thực tế như trợ giúp ra
quyết định, dự đoán,… Hướng nghiên cứu Khai phá dữ liệu (Data mining)
đã ra đời nhằm giải quyết các yêu cầu thực tiễn đó. Khai phá dữ liệu được
chia nhỏ thành các hướng nghiên cứu chính như sau: mô tả khái niệm, luật
kết hợp, phân lớp dữ liệu, gom cụm dữ liệu, khai phá chuỗi,
Có nhiều thuật toán giải quyết vấn đề gom cụm dữ liệu. Tuy nhiên
trong khuôn khổ bài thu hoạch luận này, em chỉ đi sâu tìm hiểu thuật toán
K-Means và từ đó xây dựng hai chương trình ứng dụng có sử dụng thuật
toán K-Means để giải quyết bài toán ban đầu. Chương trình thứ nhất mô
phỏng chi tiết các bước thực hiện của thuật toán K-Means sau khi người
dùng nhập dữ liệu ban đầu. Chương trình thứ hai giải quyết vấn đề phân
đoạn ảnh theo màu sắc.
Thông qua bài thu hoạch, em xin gởi lời cảm ơn chân thành đến
PGS.TS. Đỗ Phúc, người thầy đã rất nhiệt tình trong công tác giảng dạy và
tận tâm truyền đạt các kiến thức quý báu về môn học Data Mining cho
chúng em.
2

NỘI DUNG

Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU

1.1 Giới thiệu về khám phá tri thức
Yếu tố thành công trong mọi hoạt động kinh doanh ngày nay là việc
biết sử dụng thông tin một cách có hiệu quả. Điều đó có nghĩa là từ các dữ
liệu sẵn có, phải tìm ra những thông tin tiềm ẩn có giá trị mà trước đó chưa
được phát hiện, tìm ra những xu hướng phát triển và những yếu tố tác động
lên chúng. Thực hiện công việc đó chính là thực hiện quá trình phát hiện

tri thức trong cơ sở 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.
Quá trình phát hiện tri thức gồm một số bước sau:
- Làm sạch dữ liệu: Loại bỏ nhiễu và các dữ liệu không cần thiết
- Tích hợp dữ liệu: Các nguồn dữ liệu khác nhau tích hợp lại
- Lựa chọn dữ liệu: Các dữ liệu có liên quan đến quá trình phân
tích được lựa chọn từ cơ sở dữ liệu
- Chuyển đổi dữ liệu: Các dữ liệu được chuyển đổi sang các dạng
phù hợp cho quá trình xử lý
- Khai phá dữ liệu: Là một trong những bước quan trọng nhất,
trong đó sử dụng những phương pháp thông minh để lựa chọn ra
những mẫu dữ liệu.
- Ước lượng mẫu: Quá trình đánh giá kết quả thông qua một độ đo
nào đó
- Biểu diễn tri thức: Biểu diễn các kết quả một cách trực quan cho
người dùng.
3

1.2 Khai phá dữ liệu và các khái niệm liên quan
1.2.1 Khái niệm khai phá dữ liệu
Khai phá dữ liệu được định nghĩa như một quá trình chắt lọc hay
khám phá tri thức từ một lượng lớn dữ liệu. Thuật ngữ Data Mining ám chỉ
việc tìm một tập nhỏ có giá trị từ một lượng lớn các dữ liệu thô. Khai phá
dữ liệu chỉ là một bước trong quá trình phát hiện tri thức.
1.2.2 Các hướng tiếp cận trong khai phá dữ liệu
Khai phá dữ liệu được chia nhỏ thành một số hướng chính như sau:
 Mô tả khái niệm (concept description): thiên về mô tả, tổng hợp
và tóm tắt khái niệm.
Ví dụ: tóm tắt văn bản.
 Luật kết hợp (association rules): là dạng luật biểu diễn tri thứ ở

dạng khá đơn giản.
Ví dụ: “50% những người mua máy tính thì cũng mua máy in”.
Luật kết hợp được ứng dụng nhiều trong lĩnh vực kính doanh, y
học, tài chính & thị trường chứng khoán,…
 Phân lớp và dự đoán (classification & prediction): xếp một đối
tượng vào một trong những lớp đã biết trước.
Ví dụ: phân lớp vùng địa lý theo dữ liệu thời tiết.
Hướng tiếp cận này thường sử dụng một số kỹ thuật của
machine learning như cây quyết định (decision tree), mạng nơ
ron nhân tạo (neural network), Người ta còn gọi phân lớp là
học có giám sát (học có thầy).
 Gom cụm (clustering): xếp các đối tượng theo từng cụm (số
lượng cũng như tên của cụm chưa được biết trước. Người ta
còn gọi gom cụm là học không giám sát (học không thầy).
4

 Khai phá chuỗi (sequential/temporal patterns): tương tự như
khai phá luật kết hợp nhưng có thêm tính thứ tự và tính thời
gian.
Hướng tiếp cận này được ứng dụng nhiều trong lĩnh vực tài
chính và thị trường chứng khoán vì nó có tính dự báo cao.
1.2.3 Các lĩnh vực ứng dụng
Khai phá dữ liệu tuy là một hướng tiếp cận mới nhưng thu hút được
sự quan tâm của rất nhiều nhà nghiên cứu và phát triển nhờ vào những ứng
dụng thực tiễn của nó.
 Phân tích dữ liệu và hỗ trợ ra quyết định (data analysis &
decision support)
 Điều trị y học (medical treatment)
 Text mining & Web mining
 Tin-sinh (bio-informatics)

 Tài chính và thị trường chứng khoán (finance & stock market)
 Bảo hiểm (insurance): nhận dạng các nhóm công ty có chính
sách bảo hiểm mô tô với chi phí đền bù trung bình cao
 Tiếp thị: khám phá các nhóm khác hàng phân biệt trong CSDL
mua hàng
 Sử dụng đất: nhận dạng các vùng đất sử dụng giống nhau khi
khảo sát CSDL quả đất
 Hoạch định thành phố: nhận dạng các nhóm nhà cửa theo loại
nhà, giá trị và vị trí địa lý

5

Chương 2: GOM CỤM DỮ LIỆU
VÀ THUẬT TOÁN K-MEANS
2.1 Khái quát gom cụm dữ liệu
2.1.1 Khái niệm
Gom cụm là quá trình phân chia một tập dữ liệu ban đầu thành các
cụm dữ liệu thỏa mãn:
a. Các đối tượng trong một cụm “tương tự” nhau.
b. Các đối tượng khác cụm thì “không tương tự” nhau.
Mục đích của gom cụm là xác định được bản chất của việc nhóm các
đối tượng trong một tập dữ liệu không có nhãn. Gom cụm không dựa trên
một tiêu chuẩn chung nào, mà dựa vào tiêu chí do người dùng cung cấp
trong từng trường hợp.
 Thế nào là một gom cụm tốt?
 Một phương pháp tốt sẽ tạo ra các cụm có chất lượng cao với:
- Tương tự cao cho trong lớp (intra-class)
- Tương tự thấp giữa các lớp (inter-class)
 Chất lượng của kết quả gom cụm phụ thuộc vào:
- Độ đo tương tự sử dụng

- Cài đặt độ đo tương tự
 Chất lượng của phương pháp gom cụm cũng được đo bởi khả
năng phát hiện vài hay tất cả các mẫu bị che (hidden patterns).
 Tương tự và bất tương tự giữa hai đối tượng
 Không có định nghĩa duy nhất về sự tương tự và bất tương tự
giữa các đối tượng dữ liệu.
 Định nghĩa về tương tự và bất tượng tự giữa các đối tượng tùy
thuộc vào:
- Loại dữ liệu khảo sát
- Loại tương tự cần thiết
6

 Tương tự/ Bất tượng tự giữa đối tượng thường được biểu diễn
qua độ đo khoảng cách d(x,y).
 Lý tưởng, mọi độ đo khoảng cách phải là một và phải thỏa các
điều kiện sau:




 Các loại dữ liệu trong phân tích cụm
 Các biến khoảng tỉ lệ
 Biến nhị phân
 Các biến định danh, thứ tự, tỉ lệ
 Các biến có kiểu hỗn hợp
 Các kiểu dữ liệu phức tạp
Các độ đo liên tục của các thang đo tuyến tính, thô. Ví dụ: trọng
lượng, chiều cao, tuổi.
Đơn vị đo có thể ảnh hưởng đến phân tích cụm. Để tránh sự phụ
thuộc vào đơn vị đo, cần chuẩn hóa dữ liệu.

2.1.2 Chuẩn hóa các độ đo
 Tính sai biệt tuyệt đối trung bình

với và
 Tính độ đo chuẩn (z-score)


 Một nhóm các độ đo khoảng cách phổ biến cho biến tỉ lệ theo
khoảng là khoảng cách Minkowski.

),(),(),( 4.
),(),( 3.
iff 0),( 2.
0),( 1.
zydyxdzxd
xydyxd
yxyxd
yxd




|)| |||(|
1
21 fnffffff
mxmxmx
n
s 
,)
21

1
nffff
xx(x
n
m 
f
fif
if
s
m
x
z


q
q
pp
qq
j
x
i
x
j
x
i
x
j
x
i
xjid )|| |||(|),(

2211

7


với i = (x
i1
, x
i2
, …, x
ip
) và j = (x
j1
, x
j2
, …, x
jp
) là các đối tượng
dữ liệu p-chiều và q là số nguyên dương.
 Nếu q = 1, độ đo khoảng cách là Manhattan

 Nếu q = 2, độ đo khoảng cách là khoảng cách Euclidean


2.1.3 Một số ứng dụng của gom cụm dữ liệu
Kỹ thuật gom cụm có thể áp dụng trong rất nhiều lĩnh vực như:
 Thương mại: Xác định các nhóm khách hàng (khách hàng tiềm
năng, khách hàng giá trị, phân loại và dự đoán hành vi khách
hàng, ) sử dụng sản phẩm của công ty để có chiến lược kinh
doanh hiệu quả hơn.

 Sinh học: Phân nhóm động vật và thực vật dựa vào các thuộc
tính của chúng.
 Thư viện: Theo dõi độc giả, sách, dự đoán nhu cầu của độc giả.
 Tài chính, bảo hiểm: Phân nhóm các đối tượng sử dụng bảo
hiểm và các dịch vụ tài chính, dự đoán xu hướng của khách
hàng, phát hiện gian lận tài chính.
 World wide web: Phân loại tài liệu ,phân loại người dùng web
 Lập quy hoạch đô thị: Nhận dạng các nhóm nhà theo kiểu và vị
trí địa lý, nhằm cung cấp thông tin cho quy hoạch đô thị.
 Nghiên cứu trái đất: Gom cụm để theo dõi các tâm động đất
nhằm cung cấp thông tin cho nhân dạng các vùng nguy hiểm.
2.1.4 Một số kỹ thuật tiếp cận trong gom cụm dữ liệu
 Gom cụm dựa trên phân hoạch
Phương pháp gom cụm phân hoạch nhằm phân một tập dữ liệu
|
|

|
|
|
|
)
,
(
2211 pp j
x
i
x
j
x

i
x
j
x
i
x
j
i
d







)|| |||(|),(
22
22
2
11 pp j
x
i
x
j
x
i
x
j
x

i
xjid 
8

có n phần tử cho trước thành k nhóm dữ liệu sao cho mỗi phần
tử dữ liệu chỉ thuộc về một nhóm dữ liệu và mỗi nhóm dữ liệu
có tối thiểu ít nhất một phần tử dữ liệu.
 Gom cụm dữ liệu phân cấp
Gom cụm phân cấp sắp xếp một tập dữ liệu đã cho thành một
cấu trúc có dạng hình cây, cây phân cấp này được xây dựng
theo kỹ thuật đệ quy.
 Gom cụm dữ liệu dựa trên mật độ
Phương pháp này nhóm các đối tượng theo hàm mật độ xác
định. Mật độ được định nghĩa như là số các đối tượng lân cận
của một đối tượng dữ liệu theo một ngưỡng nào đó. Trong cách
tiếp cận này, khi một cụm dữ liệu đã xác định thì nó tiếp tục
được phát triển thêm các đối tượng dữ liệu mới miễn là số các
đối tượng lân cận của các đối tượng này phải lớn hơn một
ngưỡng đã được xác định trước. Phương pháp gom cụm dựa
vào mật độ của các đối tượng để xác định các cụm dữ liệu có
thể phát hiện ra các cụm dữ liệu với hình thù bất kỳ. Tuy vậy,
việc xác định các tham số mật độ của thuật toán rất khó khăn,
trong khi các tham số này lại có tác động rất lớn đến kết quả
gom cụm dữ liệu.
 Gom cụm dữ liệu dựa trên lưới
Kỹ thuật gom cụm dựa trên mật độ không thích hợp với dữ liệu
nhiều chiều, để giải quyết cho đòi hỏi này, người ta đã dử dụng
phương pháp gom cụm dựa trên lưới. Đây là phương pháp dựa
trên cấu trúc dữ liệu lưới để PCDL, phương pháp này chủ yếu
tập trung áp dụng cho lớp dữ liệu không gian. Thí dụ như dữ

liệu được biểu diễn dưới dạng cấu trúc hình học của đối tượng
trong không gian cùng với các quan hệ, các thuộc tính, các hoạt
động của chúng.
9

Một số thuật toán PCDL dựa trên cấu trúc lưới điển hình là:
STING, WAVECluster, CLIQUE,…
2.2 Gom cụm phân hoạch
Gom cụm phân hoạch là phân một tập dữ liệu có n phần tử cho trước
thành k tập con dữ liệu (k ≤ n), mỗi tập con biểu diễn một cụm.
Các cụm hình thành trên cơ sở làm tối ưu giá trị hàm đo độ tương tự
sao cho:
i) Các đối tượng trong một cụm là tương tự.
ii) Các đối tượng trong các cụm khác nhau là không tương tự nhau.
Đặc điểm:
- Mỗi đối tượng chỉ thuộc về một cụm.
- Mỗi cụm có tối thiểu một đối tượng.
Tối ưu toàn cục: Liệt kê theo lối vét cạn tất cả các phân hoạch.
Một số thuật toán điển hình:
- K-mean

(MacQueen’67): mỗi cụm được đại diện bằng tâm
của cụm.
- K-medoids (Kaufman & Rousseeuw’87): mỗi cụm được đại
diện bằng một trong các đối tượng của cụm.
2.3 Thuật toán k-means
Thuật toán k-means là thuật toán gom cụm lặp đơn giản. Nó phân
mảnh tập dữ liệu cho trước thành k cụm, giá trị k do người dùng xác định.
Thuật toán dễ thực hiện, thi hành nhanh, dễ thích nghi và phổ biến trong
thực tế. Đây là một trong những thuật toán kinh điển trong khai thác dữ

liệu.
K-means được nhiều nhà nghiên cứu khám phá thông qua nhiều
cách khác nhau, đáng chú ý nhất là Lloyd (1957, 1982), Forgey (1965),
Friedman và Rubin (1967) và McQueen (1967). Jain và Dubes mô tả lịch
10

sử k-means theo nhiều biến thể. Gray và Neuhoff cung cấp nền tảng cho k-
means diễn ra trong ngữ cảnh lớn hơn trên các thuật toán leo đồi.
2.3.1 Thuật toán
 Đầu vào của thuật toán: số k cụm k, và CSDL có n đối tượng
 Thuật toán gồm 4 bước:
i) Phân hoạch đối tượng thành k tập con/cụm khác rỗng
ii) Tính các điểm hạt giống làm centroid (trung bình của các
đối tượng của cụm) cho từng cụm trong cụm hiện hành
iii) Gán từng đối tượng vào cụm có centroid gần nhất
iv) Quay về bước 2, chất dứt khi không còn phép gán mới
2.3.2 Ví dụ minh họa
Bước 1:
Lập bảng ma trận U0 gồm 2 hàng (2 cụm) và 4 cột (4 điểm); gán
ngẫu nhiên các giá trị 0 hoặc 1 cho từng điểm Xi đối với cụm mà nó thuộc
vào.
U0 X1 X2 X3 X4
C1 1 0 1 1
C2 0 1 0 0

Bước 2: Tìm vector trọng tâm (bước này không làm vì bài toán đã
cho trước).
Bước 3: Tính khoảng cách các điểm Xi so với các vector trọng tâm.
Giả sử bình phương của số x ký hiệu là sqr(x), căn bậc hai của x ký
hiệu là sqrt(x)

d(X1,V1) = sqrt(sqr(1 - 1) + sqr(1 - 1)) = 0.0
d(X1,V2) = sqrt(sqr(1 - 2) + sqr(1 - 1)) = 1.0
+ Do d(X1,V1) < d(X1,V2) nên X1 thuộc cụm C1
d(X2,V1) = sqrt(sqr(2 - 1) + sqr(1 - 1)) = 1.0
d(X2,V2) = sqrt(sqr(2 - 2) + sqr(1 - 1)) = 0.0
11

+ Do d(X2,V2) < d(X2,V1) nên X2 thuộc cụm C2
d(X3,V1) = sqrt(sqr(4 - 1) + sqr(3 - 1)) = 3.61
d(X3,V2) = sqrt(sqr(4 - 2) + sqr(3 - 1)) = 2.83
+ Do d(X3,V2) < d(X3,V1) nên X3 thuộc cụm C2
d(X4,V1) = sqrt(sqr(5 - 1) + sqr(4 - 1)) = 5.0
d(X4,V2) = sqrt(sqr(5 - 2) + sqr(4 - 1)) = 4.24
+ Do d(X4,V2) < d(X4,V1) nên X4 thuộc cụm C2
Tăng n lên 1, ta có ma trận:
U1 X1 X2 X3 X4
C1 1 0 0 0
C2 0 1 1 1

Lặp lại bước 2 đối với U1: Tìm các vector trọng tâm.
* Gọi V1 là vector trọng tâm của cụm C1
V11 = (m11*X11 + m12*X21 + m13*X31 + m14*X41) /
(m11+m12+m13+m14)
= (1*1 + 0*2 + 0*4 + 0*5)/(1+0+0+0) = 1/1 = 1.0
V12 = (m11*X12 + m12*X22 + m13*X32 + m14*X42) /
(m11+m12+m13+m14)
= (1*1 + 0*1 + 0*3 + 0*4)/(1+0+0+0) = 1/1 = 1.0
Vậy V1 = (1.0, 1.0)
* Gọi V2 là vector trọng tâm của cụm C2
V21 = (m21*X11 + m22*X21 + m23*X31 + m24*X41) /

(m21+m22+m23+m24)
= (0*1 + 1*2 + 1*4 + 1*5)/(0+1+1+1) = 11/3 = 3.67
V22 = (m21*X12 + m22*X22 + m23*X32 + m24*X42) /
(m21+m22+m23+m24)
= (0*1 + 1*1 + 1*3 + 1*4)/(0+1+1+1) = 8/3 = 2.67
Vậy V2 = (3.67, 2.67)
Bước 3: Tính khoảng cách các điểm Xi so với các vector trọng tâm.
12

d(X1,V1) = sqrt(sqr(1 - 1.0) + sqr(1 - 1.0)) = 0.0
d(X1,V2) = sqrt(sqr(1 - 3.67) + sqr(1 - 2.67)) = 3.15
+ Do d(X1,V1) < d(X1,V2) nên X1 thuộc cụm C1
d(X2,V1) = sqrt(sqr(2 - 1.0) + sqr(1 - 1.0)) = 1.0
d(X2,V2) = sqrt(sqr(2 - 3.67) + sqr(1 - 2.67)) = 2.36
+ Do d(X2,V1) < d(X2,V2) nên X2 thuộc cụm C1
d(X3,V1) = sqrt(sqr(4 - 1.0) + sqr(3 - 1.0)) = 3.61
d(X3,V2) = sqrt(sqr(4 - 3.67) + sqr(3 - 2.67)) = 0.47
+ Do d(X3,V2) < d(X3,V1) nên X3 thuộc cụm C2
d(X4,V1) = sqrt(sqr(5 - 1.0) + sqr(4 - 1.0)) = 5.0
d(X4,V2) = sqrt(sqr(5 - 3.67) + sqr(4 - 2.67)) = 1.88
+ Do d(X4,V2) < d(X4,V1) nên X4 thuộc cụm C2
Tăng n lên 1, ta có ma trận:
U2 X1 X2 X3 X4
C1 1 1 0 0
C2 0 0 1 1

Lặp lại bước 2 đối với U2: Tìm các vector trọng tâm.
* Gọi V1 là vector trọng tâm của cụm C1
V11 = (m11*X11 + m12*X21 + m13*X31 + m14*X41) /
(m11+m12+m13+m14)

= (1*1 + 1*2 + 0*4 + 0*5)/(1+1+0+0) = 3/2 = 1.5
V12 = (m11*X12 + m12*X22 + m13*X32 + m14*X42) /
(m11+m12+m13+m14)
= (1*1 + 1*1 + 0*3 + 0*4)/(1+1+0+0) = 2/2 = 1.0
Vậy V1 = (1.5, 1.0)
* Gọi V2 là vector trọng tâm của cụm C2
V21 = (m21*X11 + m22*X21 + m23*X31 + m24*X41) /
(m21+m22+m23+m24)
= (0*1 + 0*2 + 1*4 + 1*5)/(0+0+1+1) = 9/2 = 4.5
13

V22 = (m21*X12 + m22*X22 + m23*X32 + m24*X42) /
(m21+m22+m23+m24)
= (0*1 + 0*1 + 1*3 + 1*4)/(0+0+1+1) = 7/2 = 3.5
Vậy V2 = (4.5, 3.5)
Bước 3: Tính khoảng cách các điểm Xi so với các vector trọng tâm.
d(X1,V1) = sqrt(sqr(1 - 1.5) + sqr(1 - 1.0)) = 0.5
d(X1,V2) = sqrt(sqr(1 - 4.5) + sqr(1 - 3.5)) = 4.3
+ Do d(X1,V1) < d(X1,V2) nên X1 thuộc cụm C1
d(X2,V1) = sqrt(sqr(2 - 1.5) + sqr(1 - 1.0)) = 0.5
d(X2,V2) = sqrt(sqr(2 - 4.5) + sqr(1 - 3.5)) = 3.54
+ Do d(X2,V1) < d(X2,V2) nên X2 thuộc cụm C1
d(X3,V1) = sqrt(sqr(4 - 1.5) + sqr(3 - 1.0)) = 3.2
d(X3,V2) = sqrt(sqr(4 - 4.5) + sqr(3 - 3.5)) = 0.71
+ Do d(X3,V2) < d(X3,V1) nên X3 thuộc cụm C2
d(X4,V1) = sqrt(sqr(5 - 1.5) + sqr(4 - 1.0)) = 4.61
d(X4,V2) = sqrt(sqr(5 - 4.5) + sqr(4 - 3.5)) = 0.71
+ Do d(X4,V2) < d(X4,V1) nên X4 thuộc cụm C2
Tăng n lên 1, ta có ma trận:
U3 X1 X2 X3 X4

C1 1 1 0 0
C2 0 0 1 1

Ta thấy U2 và U3 không có sự thay đổi. Vậy thuật toán gom cụm
kết thúc với kết quả sau:
X1, X2 thuộc cụm C1
X3, X4 thuộc cụm C2
2.3.3 Đánh giá thuật toán
A. Ưu Điểm
1. Scalable tương đối: trong khi xử lý các tập dữ liệu lớn
14

2. Hiệu suất tương đối: O(tkn), với n là số đối tượng, k là số cụm, và
t là số lần lặp. Thông thường k, t << n.
3. Bảo đảm hội tụ sau một số bước lặp hữu hạn.
4. Thường kết thúc ở điểm tối ưu cục bộ; có thể tìm được tối ưu
toàn cục dùng các kỹ thuật như thuật toán di truyền
B. Nhược điểm
1. Có thể áp dụng chỉ khi xác định được trị trung bình của các đối
tượng
2. Cần chỉ định trước k, số các cụm
3. Không thể xử lý dữ liệu chuỗi và outliers
4. Không phù hợp để khám phá các cụm với dạng không lồi hay
cụm có kích thước khác nhau.
2.3.4 Ứng dụng của thuật toán K-Mean
 Gom cụm tài liệu web
1. Tìm kiếm và trích rút tài liệu
2. Tiền xử lý tài liệu: Quá trình tách từ và vecto hóa tài liệu:
tìm kiếm và thay thế các từ bới chỉ số của từ đó trong từ
điển. Biểu diễn dữ liệu dưới dạng vectơ.

3. Áp dụng K-Mean
Kết quả trả về là các cụm tài liệu và các trọng tâm tương ứng.
 Phân vùng ảnh
15

Chương 3: CÀI ĐẶT THỬ NGHIỆM THUẬT TOÁN K-
MEANS

3.1 Chương trình thử nghiệm thuật toán K-Means
3.1.1 Giới thiệu
- Chương trình demo thuật toán K-Means được thiết kế trên nền
ngôn ngữ lập trình Visual Basic. Các chức năng chính của
chương trình bao gồm:
- Nhập số liệu đầu vào:
 Số cụm k
 Tọa độ các điểm
 Tọa độ vector trọng tâm ban đầu (nếu có)
 Ma trận phân hoạch ban đầu (nếu có)
- Thực thi thuật toán K-Means
- Hiển thị kết quả:
 Chi tiết các bước thực hiện thuật toán từ lúc bắt đầu đến
khi kết thúc
3.1.2 Phụ lục giao diện của chương trình

16

3.1.3 Hướng dẫn sử dụng
- Bước 1: Nhập số cụm và số điểm vào các ô nhập tương ứng.
- Bước 2: Nhập tọa độ các điểm vào các ô nhập tọa độ điểm
- Bước 3 (không bắt buộc): Nếu bài toán có cho trước vector trọng

tâm thì click vào ô chọn Cho trước vector trọng tâm, sau đó
nhập tọa độ các vector trọng tâm.
- Bước 4 (không bắt buộc): Nếu bài toán có cho trước ma trận
phân hoạch thì click vào ô chọn Cho trước ma trận phân hoạch,
sau đó click vào các ô tương ứng để đánh dấu các điểm (cột) cho
trước thuộc cụm (dòng) nào. Ví dụ: ô (3,2) được đánh dấu thì có
nghĩa là điểm X
3
thuộc cụm 2.
- Bước 5: Nhấn nút Run, chương trình sẽ hiển thị chi tiết các bước
tính toán theo thuật toán trong khung Description
3.1.4 Hướng dẫn cài đặt
Mở file CH1101065 _ K-Means.exe trong CD đính kèm. Nếu xuất
hiện thông báo lỗi thì chép 2 file Vsflex7L.ocx và RichTX32.ocx vào thư
mục C:\WINDOWS\SYSTEM32.
3.1.5 Source code
Xem phụ lục 1.
3.2 Chương trình phân đoạn ảnh bằng thuật toán K-Means
3.2.1 Bài toán phân đoạn ảnh
Tầm quan trọng và những khó khăn của việc gom nhóm các đối
tượng mang tính tri giác của con người từ lâu đã được nghiên cứu nhiều
trong các lĩnh vực của thị giác máy tính đặc biệt trong lĩnh vực của xử lí
ảnh. Và phân đoạn ảnh đã có những ứng dụng mạnh mẽ và rộng rãi trong
các bài toán phân tích và hiểu ảnh tự động, nhưng nó cũng là một bài toán
khó mà đến bây giờ các nhà khoa học vẫn chưa giải quyết được một cách
17

hoàn toàn thấu đáo. Làm thế nào để phân chia một ảnh thành các tập con.
Những cách khả thi để có thể làm được điều đó. Đó là những câu hỏi mà
người ta đã đặt ra từ lâu và mong muốn tìm được câu trả lời.

Trong khoảng 30 năm trở lại đây đã có rất nhiều các thuật toán được
đề xuất để giải quyết bài toán phân đoạn ảnh. Các thuật toán hầu hết đều
dựa vào hai thuộc tính quan trọng của mỗi điểm ảnh so với các điểm lân
cận của nó, đó là: sự khác (dissimilarity) và giống nhau (similarity). Các
phương pháp dựa trên sự giống nhau của các điểm ảnh được gọi là phương
pháp miền (region-based methods), còn các phương pháp dựa trên sự khác
nhau của các điểm ảnh được gọi là các phương pháp biên (boundary-based
methods).
Trong phạm vi bài thu hoạch này em xin phép được trình bày thuật
toán K-means để giải quyết bài toán phân đoạn ảnh như sau:
 Input:
 Ảnh có kích thước m*n.
 Số cụm (k) muốn phân đoạn.
 Output:
 Ảnh được phân thành k đoạn có màu sắc tương đồng
nhau.
3.2.2 Giới thiệu chương trình
- Chương trình này trình bày kết quả thực nghiệm gom cụm hình
ảnh theo màu sắc trên cơ sở thuật toán gom cụm K-Means.
Chương trình cài đặt được viết trên ngôn ngữ lập trình C# trên
nền tảng .Net Framework của Microsoft. Chương trình đã thực
thi được và cho kết quả gom cụm theo màu sắc của hình ảnh đưa
vào. Tuy nhiên, do thời gian hạn chế nên chương trình chỉ dừng
lại ở mức độ gom cụm hình ảnh theo màu sắc. Các chức năng
chính của chương trình bao gồm:
18

- Nhập số liệu đầu vào:
 Số cụm k
 Chọn ảnh cần phân đoạn

- Thực thi quá trình phân đoạn hình ảnh bằng thuật toán K-Means
- Hiển thị kết quả:
 Hiển thị lần lượt các kết quả phân đoạn hình ảnh qua các
bước thực hiện cho đến khi hội tụ.
3.2.3 Phụ lục giao diện của chương trình

19


3.2.4 Hướng dẫn sử dụng
- Bước 1: Nhập số cụm.
- Bước 2: Click nút Load Image để chọn file hình cần phân đoạn
ảnh.
- Bước 3: Nhấn nút Start, chương trình sẽ lần lược hiển thị chi tiết
các bước phân đoạn màu của hình ảnh được chọn
3.2.5 Hướng dẫn cài đặt
Mở file CH1101065 _ K-Means_XuLyAnh.exe trong CD đính kèm,
thư mục: X:\ K-Means - XuLyAnh\CVKMeans\bin\Debug.
3.2.6 Source code
Xem phụ lục 2.
20

KẾT LUẬN

Trong quá trình nghiên cứu và hoàn thành bài thu hoạch, em đã có dịp
tìm hiểu, đi sâu nghiên cứu kỹ hơn về data mining. Đây là một hướng
nghiên cứu khá thú vị. Do thời gian hạn chế nên phạm vi bài thu hoạch chỉ
giới hạn trong việc tìm hiểu kỹ thuật gom cụm, đặc biệt là kỹ thuật gom
cụm phân hoạch với thuật toán K-Means.
Đề tài này có thể mở rộng nghiên cứu, tìm hiểu, cài đặt thêm một số

thuật toán gom cụm khác như: k-modes, k-prototype, Đặc biệt "Chương
trình demo ứng dụng thuật toán K-Means trong phân đoạn ảnh" có thể
được phát triển thành phần mềm xử lý ảnh chụp từ máy CT phục vụ cho
công tác chẩn đoán bệnh trong y học.


21

TÀI LIỆU THAM KHẢO


1. TS. Đỗ Phúc, Giáo trình khai thác dữ liệu, Nhà xuất bản Đại Học
Quốc Gia TP.HCM, 2006
2. TS. Đỗ Phúc, Bài giảng Môn học Khai Phá Dữ Liệu, Trường Đại Học
Công Nghệ Thông Tin, 2007
3. />&cd=1&ved=0CC4QFjAA&url=http%3A%2F%2Ffit.hcmup.edu.vn
%2F~haits%2FXu%2520Ly%2520Anh%2FPhan%2520doan%2520a
nh.doc&ei=PyivUKWpN8PpiAeQ0IDQAg&usg=AFQjCNG9xDWo
wKHDvPM0YpWEiU7TnhWHcw&sig2=Vtk0lDYicUPuBZQZOtny
GA

22

PHỤ LỤC

Phụ lục 1: Source code chương trình demo thuật toán k_means
Option Explicit
Dim Bound() As Currency

Private Sub chkBietMaTran_Click()

Dim i, j As Byte
Dim k As Byte
Dim n As Byte

If Trim(txtSoCum.Text) = "" Then Exit Sub
If Trim(txtSoDiem.Text) = "" Then Exit Sub
k = Val(txtSoCum.Text)
n = Val(txtSoDiem.Text)
vsfU0.Visible = IIf(chkBietMaTran.Value = 0, False, True)
If chkBietMaTran.Value <> 0 Then
With vsfU0
.Cols = 1
.Cols = 1
.Rows = k + 1
.Cols = n + 1
For j = 0 To n
If j > 0 Then .ColDataType(j) = flexDTBoolean
.ColWidth(j) = 450
.ColAlignment(j) = flexAlignCenterCenter
If j > 0 Then .TextMatrix(0, j) = "X" & j
For i = 1 To k
.TextMatrix(i, j) = 0
.TextMatrix(i, 0) = "C" & i
Next i
Next j
End With
End If
End Sub

Private Sub chkBietTrongTam_Click()

Dim i As Byte

23

If Trim(txtSoCum.Text) = "" Then Exit Sub
Call Hide_Vector
If chkBietTrongTam.Value <> 0 Then
For i = 0 To Val(txtSoCum.Text) - 1
V1(i).Visible = True
lblV1(i).Visible = True
lblV2(i).Visible = True
txtV1(i).Visible = True
txtV2(i).Visible = True
Next i
End If
End Sub

Private Sub Hide_Vector()
Dim i As Byte

For i = 0 To 9
V1(i).Visible = False
lblV1(i).Visible = False
lblV2(i).Visible = False
txtV1(i).Visible = False
txtV2(i).Visible = False
txtV1(i).Text = ""
txtV2(i).Text = ""
Next i
For i = 0 To 2

txtV1(i).Text = ""
txtV2(i).Text = ""
Next i
End Sub

Private Sub Hide_Diem()
Dim i As Byte

For i = 3 To 19
X1(i).Visible = False
lblX1(i).Visible = False
lblX2(i).Visible = False
txtX1(i).Visible = False
txtX2(i).Visible = False
txtX1(i).Text = ""

×