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

Nghiên cứu xây dựng công cụ đo và phân nhóm lưu lượng mạng

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 (2.38 MB, 35 trang )

1
BỘ GIÁO DỤC VÀ ĐÀO TẠO TẬP ĐOÀN BƯU CHÍNH VIỄN THÔNG VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG



VŨ ĐỖ DIN


NGHIÊN CỨU XÂY DỰNG CÔNG CỤ ĐO
VÀ PHÂN NHÓM LƯU LƯỢNG MẠNG



CHUYÊN NGÀNH: TRUYỀN DỮ LIỆU VÀ MẠNG MÁY TÍNH
MÃ SỐ: 60.48.15

Người hướng dẫn khoa học: PGS. TS NGUYỄN VĂN TAM


TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT




Hà Nội - 2010








2
MỞ ĐẦU

Xu hướng hội tụ công nghệ trong lĩnh vực viễn thông đã làm cho mạng Internet
trở thành hạ tầng truyền thông chủ yếu nhất của tất cả các ứng dụng thông tin liên lạc,
từ các ứng dụng truyền thống như duyệt web, gửi thư điện tử, truyền file đến các
ứng dụng thời gian thực như VOIP, truyền hình trực tuyến, trò chơi trực tuyến và các
dịch vụ chia sẻ dữ liệu. Việc triển khai các ứng dụng thời gian thực này tạo ra thách
thức rất lớn đối với Internet trên hai khía cạnh: (1) Cung cấp chất lượng dịch vụ (QoS)
và (2) Giám sát mức chất lượng dịch vụ do mạng cung cấp.
Để có thể xây dựng được mô hình giám sát chất lượng dịch vụ mạng thì việc
xác định được độ biến thiên lưu lượng theo thời gian của mạng là vô cùng cần thiết.
Trên mạng thì độ biến thiên lưu lượng thường rất lớn và qua việc phân tích độ biến
thiên lưu lượng thì ta có thể rút ra được các kết luận quan trọng như:
 Có xảy ra tắc nghẽn không?
 Có hiện tượng tấn công từ chối dịch vụ hay không?

Trong luận văn này, tác giả thực hiện nghiên cứu đề xuất cách sử dụng hệ thống
thư viện .NET 3.5 để phát triển công cụ đo lưu lượng mạng, tác giả cũng nghiên cứu
việc áp dụng phương pháp phân nhóm đối tượng K-Means để thực hiện đánh giá kết
quả đo.

1. Mục đích và đối tượng phạm vi nghiên cứu
Mục tiêu nghiên cứu của luận án là bao gồm 3 phần chính: Tìm hiểu về các phương
pháp và công cụ đo hiện tại, xây dựng công cụ đo dựa trên nền tảng công nghệ .NET
3.5, phân nhóm lưu lượng bằng phương pháp K-Mean.

2. Phương pháp nghiên cứu

a) Nghiên cứu lý thuyết:
 Tìm hiểu các phương pháp đo lưu lượng và các công cụ đo lưu lượng hiện tại
 Tìm hiểu phương pháp K-Means để phân nhóm dữ liệu.
b) Nghiên cứu thực nghiệm:
 Tìm hiểu các thư viện lập trình được hỗ trợ trong nền tảng .NET 3.5 để xây
dựng công cụ đo và phân nhóm kết quả đo lưu lượng mạng.



3
Chương 1
TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP ĐO VÀ CÔNG
CỤ ĐO

Chương 1 giới thiệu tổng quan về các phương pháp đo và công cụ đo hiện đang
được áp dụng rộng rãi.
1. 1 ĐO CHẤT LƯỢNG MẠNG IP

Các dịch vụ mạng IP có các yêu cầu về đặc tính lưu lượng và chất lượng dịch
vụ (QoS) khác nhau. Các dịch vụ thời gian thực có những yêu cầu chặt chẽ về mất và
trễ gói trong khi các dịch vụ phi thời gian thực có các yêu cầu khác như là thông lượng
cao. Một mạng dịch vụ IP đầy đủ phải cung cấp các dịch vụ cùng với yêu cầu chất
lượng phù hợp.
Việc xác định các thông số quy định hiệu năng mạng phụ thuộc vào tầng của
mạng trong mô hình mạng sau:



Hình 1. 1 Mô hình các lớp mạng và đại lượng hiệu năng tương ứng





4
1.1. 1 Các phép đo lớp mạng
Các thông số cơ bản về hiệu năng lớp mạng là trễ (delay), thông lượng
(throughput), mất gói (loss), kết nối (connectivity) và mức độ sử dụng tài nguyên
(resource utilization). [1]
1.1. 2 Các phép đo lớp truyền tải
Các phép đo lớp truyền tải thể hiện khả năng của giao thức truyền tải mà hiện
nay thường được sử dụng trong mạng IP là TCP và UDP. Ví dụ các tham số lớp truyền
tải cho giao thức TCP là số lần truyền lại (number of retransmissions), thời gian thiết
lập và kết thúc kết nối TCP, kích thước phân đoạn trung bình (average segment size)
và thông lượng.

1.1. 3 Các phép đo lớp ứng dụng
Các thông số hiệu năng lớp ứng dụng cho truyền file là thời gian thiết lập một
kết nối, kích thước file trung bình, thời gian tải (download) trung bình.
Các thông số hiệu năng cho lớp truyền tải và ứng dụng được xác định bởi các
điểm đặc trưng của giao thức và dịch vụ thực tế, ví dụ như VOIP các thông số hiệu
năng bao gồm: Thời gian thiết lập cuộc gọi và xác suất nghẽn cuộc gọi.[2]

1.1. 4 Đo tại cấp độ người sử dụng
Sự cảm nhận của con người về các dịch vụ hay hệ thống được cung cấp là rất
quan trọng. Sự tiếp nhận của con người về các dịch vụ được cung cấp quyết định sự
thành công và sự chấp thuận của dịch vụ đó. Sự tiếp nhận này liên quan chặt chẽ với
sự mong đợi và giá thành.

1.1. 5 Một số vấn đề cần chú ý khi đo kiểm:
 Điểm đo

 Phương pháp đo
 Chu kỳ đo
 Sự tương thích của phép đo với đặc tính lỗi của các phương tiện truyền dẫn cơ bản



5
1. 2 PHƯƠNG PHÁP VÀ CÔNG CỤ ĐO CHẤT LƯỢNG MẠNG IP
Có 2 phương pháp đo chủ yếu là đo chủ động và bị động. Cả hai phương pháp
này đều có thể thực hiện được ở các lớp giao thức mạng khác nhau.

1.2. 1 Phương pháp chủ động (tích cực)
Đo bằng cách chèn lưu lượng vào hệ thống cần đo, trong trường hợp này là một
mạng hoặc một phần của mạng.


Hình 1. 2 Ví dụ về việc sử dụng IPERF
(Nguồn: e/netperf/)

6

Hình 1. 3 Ví dụ về việc sử dụng NETPERF
(Nguồn: e/netperf/)

1.2. 2 Phương pháp đo thụ động
Không thực hiện chèn lưu lượng mà thực hiện giám sát các gói tin thực tại các
điểm đo đã chọn. Trái với phương pháp đo chủ động, quá trình đo của phương pháp
này hoàn toàn không ảnh hưởng hay xâm nhập đến hoạt động của mạng.

1. 3 PHÂN LOẠI CÁC CÔNG CỤ ĐO LƯỜNG

1.3. 1 Theo mục đích đo lường
7

Hình 1. 4 Phân loại các công cụ đo lường theo mục đích

1.3. 2 Theo mức nhiệm vụ
 Thu thập
 Phân tích
1.3. 3 Theo thành phần chế tạo
 Công cụ phần cứng
 Công cụ phần mềm

1. 4 CÁC CÔNG CỤ ĐO LƯỜNG
1.4. 1 TCP Dump
TCPDump là công cụ phân tích gói tin thông thường mà chạy theo dòng lệnh,
cho phép người sử dụng dùng để đánh chặn và hiển thị các gói tin đang được truyền đi
hoặc được nhận trên một mạng máy tính. TCPDump được viết vào năm 1987 do Văn
Jacobson, Craig Leres và Steven McCanne - ba kỹ sư làm việc tại Phòng thí nghiệm
Lawrence Berkeley Mạng Nghiên cứu Group.
1.4. 2 TCP Stat
Báo cáo TCP liên quan đến thống kê định kỳ:
 Băng thông được sử dụng
 Số gói tin được trao đổi
 Kích thước trung bình của gói tin.
1.4. 3 NETPIPE
8
Netpipe có thể nhận được dữ liệu truyền đi giữa hai nút, và có thể được gửi đi
giữa các nút trong các gói tin có kích thước bất kỳ, đo thời gian cần thiết. Vì vậy,
người dùng có thể tính toán chậm trễ (trong một gói dữ liệu truyền qua đường rất nhỏ
giữa các nút thời gian), băng thông, mỗi dòng số tiền tối đa truyền dữ liệu.


1. 5 KẾT LUẬN CHƯƠNG
Chương 1 của luận văn này đã giới thiệu tổng quan về các phương pháp đo và
công cụ đo hiệu năng của mạng. Có 2 phương pháp đo là phương pháp đo chủ động và
phương pháp đo thụ động, trong đó với mỗi lớp mạng khác nhau thì lại có phương
pháp đo khác nhau. Trong chương 2, tác giả sẽ trình bày hướng tiếp cận để xây dựng
một công cụ đo dựa trên hệ thống thư viện lập trình .NET 3.5.










9
Chương 2
XÂY DỰNG CÔNG CỤ ĐO LƯU LƯỢNG

Chương 2 giới thiệu về các thư viện lập trình của .NET 3.5 hỗ trợ cho người lập
trình trong việc xây dựng hệ thống đo lưu lượng mạng. Từ việc nghiên cứu các thư
viện lập trình, tác giả trình bày công cụ đo lưu lượng do chính tác giả phát triển.


2. 1 LÝ DO CẤP THIẾT CỦA VIỆC XÂY DỰNG CÔNG CỤ ĐO LƯU LƯỢNG
Như đã trình bày ở Chương 1, trên thế giới có nhiều công cụ đo lưu lượng mạng
tồn tại. Tuy nhiên thì việc vận hành các công cụ đo lưu lượng này còn gặp nhiều khó
khăn, chẳng hạn:

 Chi phí mua cao
 Có các phần mềm miễn phí hoặc mã nguồn mở nhưng không có độ tin cậy cao
và việc sửa đổi, kiểm thử độ tin cậy của mã nguồn mở cũng tốn nhiều chi phí.
 Để có thể áp dụng kỹ thuật phân nhóm lưu lượng (sẽ trình bày ở Chương 3) thì
phần mềm cần phải xuất ra thông tin theo định dạng mong muốn. Các công cụ
đo lưu lượng hiện tại không đưa ra được định dạng thông tin cần thiết.

2. 2 THƯ VIỆN LẬP TRÌNH HỖ TRỢ VIẾT CHƯƠNG TRÌNH ĐO LƯU
LƯỢNG
Để đo lưu lượng mạng, ta sử dụng gói thư viện System.Diagnotics của .NET
frameworks (Hình 2.1). System.Diagnotics cung cấp các lớp thư viện cho phép ta
tương tác với các tiến trình hệ thống, hệ thống log của hệ điều hành windows và các bộ
đếm hiệu năng. Các lớp thư viện bao gồm:

2.2. 1 Lớp EventLog
Lớp EventLog cung cấp các chức năng giúp người lập trình có thể ghi được các
thông tin về sự kiện vào hệ thống quản lý thông tin sự kiện của hệ điều hành, thậm chí
là thêm và xóa các thông tin về sự kiện ở hệ thống quản lý sự kiện trên mạng máy tính.
EntryWrittenEventHandler cung cấp một phương pháp để có thể tương tác với
các thông tin sự kiện một cách không đồng bộ.

2.2. 2 Lớp Process
10
Lớp Process cung cấp chức năng theo dõi kiểm soát các tiến trình trên toàn
mạng và để khởi động hay chấm dứt các tiến trình cục bộ.

2.2. 3 Lớp PerformanceCounter và PerformaceCounterCategory
Lớp PerformanceCounter và PerformaceCounterCategory: PerformanceCounter
là một lớp thư việc cho phép người lập trình theo dõi được hiệu năng của hệ thống,
trong khi PerformaceCounterCategory cho phép người lập trình có thể chỉ định kiểu

đối tượng cần theo dõi.



Hình 2. 1 Các lớp thư viện trong gói thư viện System.Diagnotics

2. 3 CHƯƠNG TRÌNH ĐO LƯU LƯỢNG MẠNG
2.3. 1 Mô hình đo
System.Diagnostics
EventLog
EntryWrittenEventHandler
EventLogPermission

EventLogEntryType

EventLogEntryCollection
Process

EventLogEntryType
ProcessThread

Pro
cessModule

ProcessStartInfo

PerformanceCounter

PerformanceCounterCategory
11

Máy tính 1 là máy tính thực hiện download và upload data từ internet, các gói
tin khi download và upload sẽ lần lượt đi qua switch và modem. Để thực hiện đo lưu
lượng, ta cấu hình switch ở chế độ forward gói tin đến máy tính 2, máy tính 2 có cài
đặt phần mềm đo lưu lượng mạng, sẽ đảm nhận nhiệm vụ đo lưu lượng (Hình 2.2).


Hình 2. 2 Mô hình đo lưu lượng mạng

Giả sử ta muốn đo lưu lượng download: Ta sẽ sử dụng browser từ máy tính 1 để
tiến hành download data từ internet, lúc này data download về sẽ được tự động chuyển
tiếp đến máy tính 2 (switch sẽ thực hiện thao tác sao chép data và chuyển tiếp) và
chương trình đo lưu lượng ở máy tính 2 sẽ ghi lại tốc độ lưu lượng.

2.3. 2 Chương trình đo lưu lượng Traffic Logger
Chương trình đo lưu lượng Traffic Logger được tác giả phát triển dựa trên các
thư viện lập trình đã mô tả ở phần 2.2. Thiết kế lớp của chương trình được mô tả ở
Hình 2.3.
Internet
Máy tính 1:
Thực hiện
download
upload data

Switch: Được cấu
hình để chuyển
các gói tin nó
nhận được đến
đến máy tính 2
Máy tính 2: Thực
hiện đo lưu

lượng thông qua
số gói tin nhận
được từ switch
Switch
Modem

12
#fileName : string
ReaderWriter
+Read() : string[]
+Write(in lines : string[])
TextLinesReaderWriter
+Read() : TrafficObject[]
+Write(in trafficObjects : TrafficObject[])
TrafficObjectsReaderWriter
PerformanceCounter
PerformanceCounterCategory
+Main()
-ShowNetworkTraffic()
TrafficLoggerProgram
System.Diagnostics;


Hình 2. 3 Thiết kế lớp của chương trình đo lưu lượng mạng

Tốc độ lưu lượng được ghi lại dưới dạng file .txt, trong file có nhiều hàng kết
quả, mỗi hàng có cấu trúc data như mô tả ở Bảng 2.1.

Bảng 2. 1 Một ví dụ về kết quả đo lưu lượng
Thời

gian bắt
đầu
Tốc độ 1

Tốc độ 2

Tốc độ 3

Tốc độ 4

Tốc độ 5

Tốc độ 6

6/7/2010
15:30
20 0 20 30 40 15

Trong đó, Tốc độ 1 là tốc độ trung bình của mạng trong 10 phút đầu, Tốc độ 2
là tốc độ trung bình của mạng từ phút thứ 11 đến phút thứ 20, Tốc độ được tính
bằng đơn vị Bytes/s.
Khi chạy thử nghiệm, để tiết kiệm thời gian chờ đợi, tác giả cấu hình để chương
trình đưa ra thông tin lưu lượng 1s một lần và một dòng thông tin tương ứng với lưu
lượng của 6s (dòng thông tin này sẽ được mô hình hóa thành một đối tượng lưu lượng
để thực hiện phân nhóm lưu lượng ở Chương 3)(Hình 2.4).

13


Hình 2. 4 Giao diện chương trình đo lưu lượng Traffic Logger khi chạy


File được log lại có dạng ddMMYYYY_hhmmss.txt, trong đó ddMMYYYY là
ngày chạy chương trình và hhmmss là giờ bắt đầu chạy chương trình, ví dụ file
28112010_083529.txt có thông tin như Hình 2.5.


Hình 2. 5 Một ví dụ về file log kết quả

14
0
50
100
150
200
250
300
350
400
450
500
1 2 3 4 5 6
Bytes/s
8:35:29
8:35:35
8:35:41
8:35:48
8:35:54
8:36:00
8:36:07
8:36:13

8:36:19
8:36:25
8:36:31
8:36:37
8:36:43
8:36:50
8:36:57
8:37:03
8:37:09
8:37:17
8:37:23
8:37:29
8:37:35

Hình 2. 6 Kết quả đo lưu lượng thể hiện dưới dạng đồ thị

Về chi tiết mã nguồn của chương trình đo, xin mời tham khảo phần A ở Phụ lục.


2. 4 KẾT LUẬN CHƯƠNG
Chương 2 giới thiệu về các thư viện lập trình của .NET 3.5 hỗ trợ cho người lập
trình trong việc xây dựng hệ thống đo lưu lượng mạng. Từ việc nghiên cứu các thư
viện lập trình, tác giả trình bày công cụ đo lưu lượng do chính tác giả phát triển. Trong
chương kế tiếp, tác giả tiếp tục trình bày việc phân nhóm lưu lượng dựa trên kết quả
đo của chương trình đo lưu lượng đã trình bày ở Chương 2.



15
Chương 3

PHÂN NHÓM LƯU LƯỢNG BẰNG PHƯƠNG PHÁP K-
MEANS

Chương này trình bày lý thuyết về phương pháp phân nhóm dữ liệu K-Means,
qua đó tác giả áp dụng lý giải thuật K-Means vào việc phân nhóm dữ liệu lưu lượng
thu được từ chương trình đo lưu lượng ở chương 2.
Chương này cũng trình bày thiết kế của chương trình phân nhóm lưu lượng do
tác giả thiết kế.


3. 1 THUẬT TOÁN PHÂN NHÓM K-MEANS
3.1. 1 Các khái niệm
3.1.1. 1 Phân nhóm dữ liệu K-Means
Thuật toán phân nhóm K-Means do MacQueen giới thiệu trong tài liệu “J. Some
Methods for Classification and Analysis of Multivariate Observations” năm 1967. [3]

Hình 3. 1 Ví dụ về phân nhóm đối tượng
Về nguyên lý, có n đối tượng, mỗi đối tượng có m thuộc tính, ta phân chia được
các đối tượng thành k nhóm dựa trên các thuộc tính của đối tượng bằng việc áp dụng
thuật toán này.
Coi mỗi thuộc tính của đối tượng (đối tượng có m thuộc tính) như một toạ độ của
không gian m chiều và biểu diễn đối tượng như một điểm của không gian m chiều.
16


imiii
xxxa , ,,
21

(3.1)

a
i
với i = 1 n là đối tượng thứ i
x
ij
(i = 1 n, j = 1 m) là thuộc tính thứ j của đối tượng i
Phương thức phân loại/nhóm dữ liệu thực hiện dựa trên khoảng cách Euclidean
nhỏ nhất giữa đối tượng đến phần tử trung tâm của các nhóm.
Phần tử trung tâm của nhóm được xác định bằng giá trị trung bình các phần tử
trong nhóm.

3.1.1. 2 Khoảng cách Euclidean


imiii
xxxa , ,,
21
 i = 1 n là đối tượng thứ i cần phân phân loại


jmjjj
xxxc , ,,
21
 j = 1 k là phần tử trung tâm nhóm j
Khoảng cách Euclidean từ đối tượng a
i
đến phần tử trung tâm nhóm j c
j
được tính
toán dựa trên công thức:[3][5]




m
s
jsisji
xx
1
2
)(
(3.2)

ji
- Khoảng cách Euclidean từ a
i
đến c
j
x
is
- Thuộc tính thứ s của đối tượng a
i
x
js
- Thuộc tính thứ s của phần tử trung tâm c
j

3.1.1. 3 Phần tử trung tâm
Phần tử trung tâm của nhóm được xác định bằng giá trị trung bình các phần tử
trong nhóm.
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
= {a
1
, a
2
a
t
} – Nhóm thứ i
i =1 k, k số cluster
j = 1 m, m số thuộc tính
t - số phần tử hiện có của nhóm thứ i
x
sj
- Thuộc tính thứ j của phần tử s s = 1 t
c
ij
- Toạ độ thứ j của phần tử trung tâm nhóm i;
t
x
c
t
s
sj
ij




1
(3.3)

3.1. 2 Thuật toán
Thuật toán K-Means thực hiện như sau:
17
 Khởi tạo k phần tử trung tâm một cách ngẫu nhiên (mỗi phần tử trung tâm đại
diện cho một nhóm)
 Thực hiện ba bước cơ bản sau cho đến khi tất cả các đối tượng được phân loại
và không còn còn sự thay đổi của các đối tượng đến các nhóm:
 Bước 1: Xác định khoảng cách Euclidean của các đối tượng đến các phần tử
trọng tâm theo công thức (3.2)
 Bước 2: Nhóm đối tượng vào nhóm dựa khoảng cách nhỏ nhất của đối
tượng với các phần tử trọng tâm
 Bước 3: Tính toán lại phần tử trọng tâm của mỗi nhóm dựa vào các đối
tượng của nhóm, theo công thức (3.3)
Sơ đồ thuật toán được mô tả theo Hình 3.2:[6, 7]


Hình 3. 2 Sơ đồ thuật toán phân nhóm K-Means
Sử dụng thuật toán K-Means clustering để phân loại thuốc theo trọng lượng và độ
PH của thuốc.
Trong phạm vi ví dụ này, để dễ theo dõi và hình dung một cách đầy đủ, ta chọn
- Số nhóm k = 3
- Số đối tượng cần phân chia n = 9 (9 loại thuốc)
- Số thuộc tính của mỗi loại thuốc là m = 2
Cụ thể, danh mục các loại thuốc cần phân loại như Bảng 3.1

Dữ liệu đầu vào: n đối
tượng, k nhóm

Bắt đầu
Khởi tạo k phần tử trung tâm
Tính các khoảng cách Euclide

từ các
phần tử đến các phần tử trung tâm



Phân nhóm dựa trên

nhỏ nhất
Không có sự thay
đổi nhóm?
Tính toán lại các phần tử trung tâm c
i
T

F

Kết thúc
18

Bảng 3. 1 Danh mục các đối tượng
Loại thuốc/ đối tượng Trọng lượng Độ pH
Loại thuốc 1 (A) 1

1

Loại thuốc 2 (B) 7


4

Loại thuốc 3 (C) 1.5

2

Loại thuốc 4 (D) 5

1.5

Loại thuốc 5 (E) 4

3

Loại thuốc 6 (F) 6.5

6

Loại thuốc 7 (G) 8

2

Loại thuốc 8 (H)

1

2

Loại thuốc 9 (I) 10


6

Để áp dụng K-Means, ta coi mỗi loại thuốc như 1 điểm trên mặt phẳng toạ độ (x,
y), toạ độ của điểm đó chính là các thuộc tính của loại thuốc đó.
Mỗi đối tượng đại diện cho một điểm trên mặt phẳng với 2 thuộc tính (x, y). Như
vây, toạ độ của mỗi đối tượng được biểu diễn trên mặt phẳng toạ độ xy được xác định
như sau: A(1,1), B(7,4), C(1.5, 2), D(5, 1.5), E(4,3), F(6.5, 6), G(8,2), H(1,2), I(10,6).
Các đối tượng được cụ thể hoá theo bảng toạ độ thuộc tính 3.2

Bảng 3. 2 Bảng biểu diễn các thuộc tính trên mặt phẳng x,y
A B C D E F G H I
X
1 7 1.5

5 4 6.5 8 1 10
Y
1 4 2 1.5 3 6 2 2 6

Các đối tượng được biểu diễn trên mặt phẳng toạ độ (x,y) như hình sau:
19
1, 1
7, 4
1.5, 2
5, 1.5
4, 3
6.5, 6
8, 21, 2
10, 6
0

1
2
3
4
5
6
7
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 10.5
x (tr.lượng)
y(PH)

Hình 3. 3 Biểu diễn các đối tượng trên mặt phẳng toạ độ x,y

Thuật toán được áp dụng như sau:
3.1.2. 1 Khởi tạo các phần tử trung tâm
Ở đây, ta chọn c
1
= (1, 1), c
2
= (7, 4), c
3
= (1.5, 2)

Bảng 3. 3 Khởi tạo các phần tử trọng tâm
A

B C D E F G H

I C
1

C
2
C
3

X
1 7 1.5

5 4 6.5

8 1 10 1 7 1.5
Y
1 4 2 1.5

3 6 2 2 6 1 4 2

Các đối tượng được biểu diễn trên mặt phẳng toạ độ như sau:
20
1, 1
7, 4
1.5, 2
5, 1.5
4, 3
6.5, 6
8, 21, 2
10, 6
1, 1
7, 4
1.5, 2
0

1
2
3
4
5
6
7
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 10.5
x (tr.lượng)
y(PH)
Hình 3. 4 Biểu diễn các đối tượng, phần tử trung tâm trên mặt phẳng toạ độ x,y
(Khởi tạo)

3.1.2. 2 Thực hiện nhóm các đối tượng theo thuộc tính
Việc thực hiện nhóm các đối tượng theo thuộc tính được lặp đi lặp lại cho đến
khi không còn đối tượng để nhóm vào các nhóm.
Vòng lặp 1
Bước 1: Xác định khoảng cách Euclidean

theo công thức (3.2), ta có:

0)11()11(
22
11



71.6)41()71(
22
12




12.1)21()5.11(
22
13



03.4)5.11()51(
22
14



61.3)31()41(
22
15



43.7)61()5.61(
22
16



07.7)21()81(
22
17




1)21()11(
22
18



30.10)61()101(
22
19



71.6)14()17(
22
21



16.3)34()47(
22
25



06.2)64()5.67(
22
26




24.2)24()87(
22
27



32.6)24()17(
22
28



61.3)64()107(
22
29



12.1)12()15.1(
22
31



85.5)42()75.1(
22
32




0)22()5.15.1(
22
33



54.3)5.12()55.1(
22
34



69.2)32()45.1(
22
35



21
0)44()77(
22
22



85.5)24()5.17(
22

23



2.3)5.14()57(
22
24




4.6)62()5.65.1(
22
36



5.6)22()85.1(
22
37



5.0)22()15.1(
22
38



39.9)62()105.1(

22
39




Khoảng cách Euclidean được biểu diễn thông qua Bảng 3.4

Bảng 3. 4 Bảng khoảng cách Euclidean (vòng lặp 1)
 A B C
D
E
F G H I
C
1

0.00 6.71 1.12 4.03 3.61 7.43 7.07

1.00

10.30

C
2

6.71 0.00 5.85 3.20 3.16 2.06 2.24

6.32

3.61

C
3

1.12 5.85 0.00 3.54 2.69 6.40 6.50

0.50

9.39
Bước 2: Nhóm đối tượng:
Đối tượng có khoảng cách Euclidean đến phần tử trung tâm nhóm nào nhỏ nhất,
thì phần tử đó được nhóm vào nhóm đó.
Từ khoảng cách Euclidean trong bảng trên ta tìm được giá trị nhỏ nhất của
khoảng cách các phần tử đến các phần tử trung tâm, cụ thể như Bảng 3.5

Bảng 3. 5 Khoảng cách min giữa các khoảng cách (vòng lặp 1)

A B C D E F G H I
C
1

0.00 6.71 1.12 4.03 3.61 7.43 7.07

1.00

10.30

C
2

6.71 0.00 5.85 3.20 3.16 2.06 2.24


6.32

3.61
C
3

1.12 5.85 0.00 3.54 2.69 6.40 6.50

0.50

9.39

Như vậy, đối tượng A được nhóm vào Cluster 1, đối tượng B, D, F, G, I được
nhóm vào Cluster 2, các đối tượng còn lại được nhóm vào Cluster 3. Các nhóm được
biểu diễn như Bảng 3.6.

Bảng 3. 6 Kết quả phân nhóm các đối tượng (vòng lặp 1)
Cluster 1
A
Cluster 2
B D F G I
Cluster 2
C E H
22
Bước 3: Tính toán phần tử trọng tâm theo công thức (3.3)
Ta có c
1
= (1,1) – do Cluster 1 chỉ có 1 phần tử A (1,1)
)9.3,3.7()

5
6265.14
,
5
1085.657
(
2









c ;
)33.2,17.2()
3
232
,
3
145.1
(
3






c
Các phần tử trung tâm mới được biểu diễn qua Bảng 3.7

Bảng 3. 7 Phần tử trọng tâm (vòng lặp 1)
A

B C D E F G H

I C
1
C
2
C
3

X
1 7 1.5

5 4 6.5

8 1 10
1 7.3 2.17

Y
1 4 2 1.5

3 6 2 2 6
1 3.9 2.33

1, 1

7, 4
5, 1.5
4, 3
6.5, 6
8, 2
10, 6
1, 1
7.3, 3.9
2.17, 2.33
1.5, 2
1, 2
0
1
2
3
4
5
6
7
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 10.5
x (tr.lượng)
y(PH)

Hình 3. 5 Biểu diễn các đối tượng, phần tử trung tâm trên mặt phẳng toạ độ x,y
(Vòng lặp 1)
Vòng lặp 2
Sau vòng lặp 1, ta xác định được các phần tử trọng tâm mới: c
1
(1,1), c
2

(7.3, 3.9) và
c
3
(2.17, 2.33), tiếp tục thực hiện thuật toán ta được:
Bước 1: Xác định khoảng cách Euclidean

theo công thức (3.2), ta được bảng khoảng
cách sau:
Bảng 3. 8 Bảng khoảng cách Euclidean (Vòng lặp 2)
 A B C
D
E
F G H I
C
1

0.00 6.71 1.12 4.03 3.61 7.43 7.07

1.00

10.30

C
2

6.94 0.32 6.10 3.32 3.42 2.25 2.02

6.58

3.42

C
3

1.77 5.11 0.75 2.95 1.95 5.68 5.84

1.21

8.65
23
Bước 2: Nhóm đối tượng:
Đối tượng có khoảng cách Euclidean đến phần tử trung tâm nhóm nào nhỏ nhất,
thì phần tử đó được nhóm vào nhóm đó. Từ khoảng cách Euclidean trong bảng trên ta

Bảng 3. 9 Tìm khoảng cách min giữa các khoảng cách (Vòng lặp 2)
 A B C
D
E
F G H I
C
1

0.00 6.71 1.12 4.03 3.61 7.43 7.07

1.00

10.30

C
2


6.94 0.32 6.10 3.32 3.42 2.25 2.02

6.58

3.42
C
3

1.77 5.11 0.75 2.95 1.95 5.68 5.84

1.21

8.65
Như vậy, sau vòng lặp 2, các nhóm đã có sự thay đổi, cụ thể: nhóm 1 gồm đối
tượng A, H; nhóm 2 gồm các đối tượng B, F, G, I và nhóm 3 gồm các phần tử còn lại:
Bảng 3. 10 Kết quả phân nhóm các đối tượng (vòng lặp 2)
Cluster 1

A H
Cluster 2

B F G I
Cluster 2

C D E
Bước 3: Tính toán phần tử trọng tâm theo công thức (3.3), được kết quả như sau:
Bảng 3. 11 Phần tử trọng tâm (vòng lặp 2)
A

B C D E F G H


I C
1
C
2
C
3

X
1 7 1.5

5 4 6.5

8 1 10
1 7.88

3.5
Y
1 4 2 1.5

3 6 2 2 6
1.5 4.5 2.17

1, 1
7, 4
1.5, 2
5, 1.5
4, 3
6.5, 6
8, 21, 2

10, 6
1, 1.50
7.88, 4.50
3.50, 2.17
0
1
2
3
4
5
6
7
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 10.5
x (tr.lượng)
y(PH)

Hình 3. 6 Biểu diễn các đối tượng, phần tử trung tâm trên mặt phẳng toạ độ x,y
(Vòng lặp 2)
24

Vòng lặp 3
Sau vòng lặp 2, ta tính được giá trị của các phần tử trung tâm mới: c
1
(1, 1.5), c
2
(7.88,
4.5) và c
3
(3.5, 2.17), tiếp tục thực hiện thuật toán, ta được:
Bước 1: Xác định khoảng cách Euclidean


theo công thức (3.2), ta được bảng khoảng
cách 3.12 sau:
Bảng 3. 12 Bảng khoảng cách Euclidean (vòng lặp 3)
 A B C
D
E
F G H I
C
1

0.50 6.50 0.71 4.00 3.35 7.11 7.02

0.50

10.06

C
2

7.71 1.01 6.85 4.16 4.16 2.03 2.50

7.32

2.60
C
3

2.76 3.95 2.01 1.64 0.97 4.87 4.50


2.51

7.55
Bước 2: Nhóm đối tượng:
Đối tượng có khoảng cách Euclidean đến phần tử trung tâm nhóm nào nhỏ nhất,
thì phần tử đó được nhóm vào nhóm đó. Từ khoảng cách Euclidean trong bảng trên ta
có:

Bảng 3. 13 Tìm khoảng cách min giữa các khoảng cách (vòng lặp 3)
 A B C
D
E
F G H I
C
1

0.50 6.50 0.71 4.00 3.35 7.11 7.02

0.50

10.06

C
2

7.71 1.01 6.85 4.16 4.16 2.03 2.50

7.32

2.60

C
3

2.76 3.95 2.01 1.64 0.97 4.87 4.50

2.51

7.55
Như vậy, sau vòng lặp 3, các nhóm đã có sự thay đổi, cụ thể: nhóm 1 gồm đối
tượng A, C, H; nhóm 2 gồm các đối tượng B, F, G, I và nhóm 3 gồm các phần tử còn
lại:
Bảng 3. 14 Kết quả phân nhóm các đối tượng (vòng lặp 3)
Cluster 1
A C H
Cluster 2
B F G I
Cluster 2
D E

Bước 3: Tính toán phần tử trọng tâm theo công thức (3.3), được kết quả như sau:

Bảng 3. 15 Phần tử trọng tâm (vòng lặp 3)
A B C D E F G H I C
1
C
2
C
3

X

1 7 1.5

5 4 6.5 8 1 10
1.17 7.88 4.5
Y
1 4 2 1.5

3 6 2 2 6
1.67 4.5 2.25
25
1, 1
7, 4
1.5, 2
5, 1.5
4, 3
6.5, 6
8, 2
10, 6
7.88, 4.50
4.50, 2.25
1.17, 1.67
1, 2
0
1
2
3
4
5
6
7

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 10.5
x (tr.lượng)
y(PH)

Hình 3. 7 Biểu diễn các đối tượng, phần tử trung tâm trên mặt phẳng toạ độ x,y
(Vòng lặp 3)
Vòng lặp 4:
Sau vòng lặp 3, ta tính được giá trị của các phần tử trung tâm mới: c
1
(1,17 1.67),
c
2
(7.88, 4.5) và c
3
(4.5, 2.25)
Tiếp tục thực hiện, ta thu được kết quả các phần tử được chia thành 3 nhóm trùng
với kết quả ở vòng lặp 3:

Bảng 3. 16 Kết quả phân nhóm các đối tượng (vòng lặp 4)
Cluster 1
A C H
Cluster 2
B F G I
Cluster 2
D E
Các phần tử trung tâm tính được sau vòng lặp 4 là c
1
(1.17, 1.67), c
2
(7.88, 4.5) và

c
3
(4.5, 2.25). Thuật toán kết thúc.
Kết quả phân nhóm được biểu diễn qua bảng:
Bảng 3. 17 Bảng kết quả phân nhóm thuốc
Loại thuốc/ đối tượng

Trọng lượng Độ pH Thuộc nhóm
Loại thuốc 1 (A) 1 1 1
Loại thuốc 2 (B) 7 4 2
Loại thuốc 3 (C) 1.5 2 1
Loại thuốc 4 (D) 5 1.5 3
Loại thuốc 5 (E) 4 3 3
Loại thuốc 6 (F) 6.5 6 2
Loại thuốc 7 (G) 8 2 2
Loại thuốc 8 (H) 1 2 1
Lo

i thu

c 9 (I)

10

6

2

×