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

Phân cụm dữ liệu dùng giải thuật ĐA KMEAN ++ trên Hadoop Mapreduce và Spark (Luận văn thạc sĩ)

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 (1.74 MB, 58 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN ANH VINH

NGUYỄN ANH VINH

PHÂN CỤM DỮ LIỆU DÙNG GIẢI THUẬT
ĐA K- MEANS++ TRÊN HADOOP
HỆ THỐNG THÔNG TIN

MAPREDUCE VÀ SPARK

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng nghiên cứu/ứng dụng)

2015 – 2018
TP
HCM
2018

TP. HỒ CHÍ MINH - 2018


HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN ANH VINH

PHÂN CỤM DỮ LIỆU DÙNG GIẢI THUẬT
ĐA K-MEANS++ TRÊN HADOOP


MAPREDUCE VÀ SPARK
Chuyên ngành:
Mã số:

Hệ thống thông tin
8480104

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. NGÔ QUỐC VIỆT

TP.HCM – 2018


i

LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.
Tp. Hồ Chí Minh, ngày 20 tháng 4 năm 2018
Học viên thực hiện luận văn

Nguyễn Anh Vinh


ii

LỜI CẢM ƠN

Tôi xin bày tỏ lòng biết ơn chân thành đến TS. Ngô Quốc Việt. Thầy đã tận
tâm chỉ dẫn, truyền đạt những kiến thức và kinh nghiệm quý báu cho tôi trong suốt
thời gian thực hiện luận văn này.
Tôi cũng xin gửi lời cảm ơn đến các quí thầy cô trong khoa Đào tạo Sau đại
học Học Viện Công Nghệ Bưu Chính Viễn Thông cơ sở tại thành phố Hồ Chí Minh
đã trang bị cho tôi những kiến thức nền tảng quan trọng trong suốt quá trình tôi theo
học.
Và cuối cùng, tôi xin gửi lời cảm ơn đến gia đình và bạn bè, những người đã
động viên tôi trong suốt thời gian qua.
Mặc dù đã cố gắng song luận văn cũng không tránh khỏi những thiếu sót. Tôi
rất mong nhận được các ý kiến đóng góp của thầy cô để tôi có thể hoàn thiện hơn
luận văn của mình
Xin trân trọng cảm ơn.
Tp. Hồ Chí Minh, ngày 20 tháng 4 năm 2018
Học viên thực hiện luận văn

Nguyễn Anh Vinh


iii

MỤC LỤC
LỜI CAM ĐOAN ....................................................................................................... i
LỜI CẢM ƠN ............................................................................................................ ii
MỤC LỤC ................................................................................................................. iii
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT ................................................v
DANH SÁCH HÌNH VẼ .......................................................................................... vi
MỞ ĐẦU .....................................................................................................................1
Chương 1 - TỔNG QUAN VỀ ĐỀ TÀI .....................................................................4
Chương 2 – CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ ..............................................7

2.1 Thuật toán K-Means ..........................................................................................7
2.1.1 Giới thiệu thuật toán K-Means ....................................................................7
2.1.2 Hạn chế và nhược điểm ...............................................................................8
2.2 Thuật toán Silhouette Index ...............................................................................8
2.2.1 Biểu thức toán học .......................................................................................9
2.2.2 Độ phức tạp của thuật toán ........................................................................11
2.3 Các công trình liên quan ..................................................................................11
2.4 Apache Hadoop................................................................................................12
2.4.1 Kiến trúc Hadoop cluster ...........................................................................13
2.4.2 Thành phần của Hadoop ............................................................................17
2.5 Hadoop Distributed File System (HDFS) ........................................................18
2.5.1 Kiến trúc HDFS .........................................................................................18
2.5.2 Đọc file từ HDFS ......................................................................................19
2.5.3 Ghi file xuống HDFS ................................................................................20
2.6 MapReduce ......................................................................................................21
2.7 Apache Spark ...................................................................................................25


iv

2.8 Kết luận chương 2 ............................................................................................30
Chương 3 – PHÂN CỤM DỮ LIỆU DÙNG GIẢI THUẬT ĐA K-MEANS++
TRÊN HADOOP VÀ SPARK ..................................................................................31
3.1 Multiple K-means MapReduce (MKMeansMR) .............................................33
3.1.1 Đọc hình ảnh .............................................................................................34
3.1.2 Khởi tạo Scalable K-Means++ với MapReduce .......................................34
3.1.3 Phân cụm đa K-means ...............................................................................36
3.1.4 Xác định các cụm ......................................................................................37
3.2 Công cụ Spark trong Multiple Scalable K-means++ .......................................38
3.2.1 Xử lý hình ảnh Spark job ..........................................................................39

3.2.2 Xác định các cụm ......................................................................................40
3.3 Kết luận chương 3 ............................................................................................41
Chương 4 - THỰC NGHIỆM ...................................................................................42
4.1 Giai đoạn phân cụm .........................................................................................45
4.2 Giai đoạn đa xác định (multiple Validation Phase) .........................................47
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................................48
DANH MỤC TÀI LIỆU THAM KHẢO ..................................................................49


v

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
Viết tắt

Tiếng Anh

Tiếng Việt

HDFS

Hadoop Distributed File System

Hệ thống tập tin phân tán

MKMeansMR

Multiple K-means MapReduce

Đa K-means MapReduce


RDD

Resilient Distributed Datasets

Tập dữ liệu phân tán

RDDs
SSI

Resilient Distributed Datasets
Simplified Silhouette Index

Tập dữ liệu phân tán linh hoạt
Chỉ số Silhouette đơn giản

MR
MR1

MapReduce
MapReduce 1

Mô hình tính toán
Mô hình tính toán 1

MR2
MR3
MR4

MapReduce 2
MapReduce 3

MapReduce 4

Mô hình tính toán 2
Mô hình tính toán 3
Mô hình tính toán 4


vi

DANH SÁCH HÌNH VẼ
Hình 2.1: Sơ đồ mô tả thuật toán K-Means ............................................................. 8
Hình 2.2: Kiến trúc Hadoop cluster....................................................................... 15
Hình 2.3: Tổng quan một cụm Hadoop ................................................................. 16
Hình 2.4: Kiến trúc HDFS ..................................................................................... 19
Hình 2.5: Quá trình đọc file trên HDFS ................................................................ 20
Hình 2.6: Quá trình tạo và ghi dữ liệu lên file trên HDFS .................................... 21
Hình 2.7: Mô hình MapReduce của Google.......................................................... 23
Hình 2.8: Quá trình thực hiện MapReduce của bài toán đếm từ ........................... 25
Hình 2.9: DAG Visualization ................................................................................ 26
Hình 2.10: Apache Spark components .................................................................. 28
Hình 2.11: Một số thống kê spark ......................................................................... 30
Hình 3.1: Phương pháp thực hiện .......................................................................... 32
Hình 3.2: Thí nghiệm MapReduce ........................................................................ 33
Hình 4.1: Block size và Replication ...................................................................... 42
Hình 4.2: Lịch sử ghi nhận quá trình thực hiện MapReduce (MR) ...................... 43
Hình 4.3: Stages for jobs ....................................................................................... 44
Hình 4.4: Executors ............................................................................................... 45
Hình 4.5: MapReduce Clustering Phase Speedup ................................................. 46
Hình 4.6: Spark Clustering Phase Speedup ........................................................... 46
Hình 4.7: MapReduce Validation Phase Speedup ................................................ 47

Hình 4.8: Spark Validation Phase Speedup .......................................................... 47


1

MỞ ĐẦU
1. Tính cấp thiết của đề tài
Những năm gần đây, sự phát triển mạnh của công nghệ thông tin đã 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. Sự tiến bộ của công nghệ, sự ra đời của các kênh truyền thông mới như
mạng xã hội và các thiết bị công nghệ mới tiên tiến hơn đã đặt ra thách thức cho các
nền công nghiệp khác nhau phải tìm những cách khác để xử lý dữ liệu.
Từ khi hình thành cho tới đến hết năm 2003, toàn thế giới chỉ có khoảng 5 tỷ
gigabyte dữ liệu, cũng một lượng dữ liệu như vậy được tạo ra chỉ trong 2 ngày trong
năm 2011. Đến năm 2013, khối lượng dữ liệu này được tạo ra cứ sau mỗi 10 phút.
Do đó, không có gì ngạc nhiên khi mà 90% dữ liệu của toàn thế giới hiện nay được
tạo ra trong một vài năm qua.
Sự bùng nổ này đã dẫn tới 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ồ thành các tri thức có ích. Trong
đó phải kể đến công nghệ tính toán phân tán.
MapReduce có thể hiểu là một phương thức thực thi để giúp các ứng dụng có
thể xử lý nhanh một lượng dữ liệu lớn. Các dữ liệu này được đặt tại các máy tính
phân tán. Các máy tính này sẽ hoạt động song song độc lập với nhau. Điều này làm
rút ngắn thời gian xử lý toàn bộ dữ liệu. MapReduce có thể chạy trên các máy tính
thông thường không yêu cầu cấu hình cao, chi phí triển khai MapReduce rẻ.
MapReduce làm đơn giản hoá các giải thuật tính toán phân tán. Với
MapReduce, bạn chỉ cần cung cấp hai hàm Map và Reduce với một số thành phần xử
lý dữ liệu đầu vào. Vì vậy, các nhà phát triển ứng dụng phân tán có thể tập trung
nhiều hơn cho phần logic của ứng dụng, bỏ qua các chi tiết phức tạp của việc phân
tán xử lý.

Sự ra đời của MapReduce đã mở ra cho các doanh nghiệp cơ hội xử lý các
nguồn dữ liệu đồ sộ với chi phí thấp và thời gian nhanh hơn. Với việc áp dụng


2

MapReduce, Amazon có thể xử lý được các file log phát sinh trong quá trình bán
hàng trên mạng, phục vụ cho việc dự đoán xu hướng mua hàng của khách hàng, các
sản phẩm đang được mua nhiều [2]... Facebook có thể xử lý được khối lượng hơn 10
tỷ hình ảnh mà họ đang lưu trữ để rút trích các thông tin về kích thước hình ảnh, phát
hiện các hình ảnh xấu.
Vì những lý do trên mà tôi chọn đề tài “Phân cụm dữ liệu dùng giải thuật Đa
K-Means++ dựa trên Hadoop MapReduce và Spark” làm đề tài luận văn của mình.

2. Tổng quan vấn đề nghiên cứu
Đề tài này giới thiệu khái niệm, phân tích, nghiên cứu mô hình MapReduce,
trình bày giải pháp Hadoop, phân cụm dữ liệu dựa vào thuật toán k-means. Bài viết
này tìm hiểu các hành vi của các thuật toán phân nhóm nói trên khi chạy trên nền tảng
dữ liệu lớn như MapReduce job.
Phân cụm hình ảnh là một trong những bước quan trọng của việc khai thác các
hình ảnh (vệ tinh, rừng, đồi..). Trong thử nghiệm của chúng tôi, chúng tôi đã chạy
đồng thời nhiều thuật toán K-means với các tâm ban đầu khác nhau và các giá trị của
k trong cùng một lần lặp lại các MapReduce jobs. Để khởi tạo các tâm ban đầu, sẽ
triển khai Scalable K-Means ++ MapReduce (MR) job [1]. Tôi cũng đã chạy một
thuật toán đánh giá Simplified Silhouette Index [2] cho các kết quả phân cụm nhiều
lần trong cùng một lần lặp lại các MR job. Luận văn này đã khám phá ra hành vi của
các thuật toán phân cụm được đề cập ở trên khi chạy trên các nền tảng dữ liệu lớn
như MapReduce và Spark. Nền tảng Spark đã được chọn vì nó phổ biến dành cho xử
lý nhanh, đặc biệt là nơi các vòng lặp có quan hệ với nhau [22].


3. Mục đích nghiên cứu
Nghiên cứu khái niệm, vai trò, ứng dụng và các kỹ thuật phân cụm dữ liệu.
Nghiên cứu và triển khai phân cụm dữ liệu bằng giải thuật K-Mean++ dựa trên
mô hình lập trình MapReduce và Spark.


3

4. Đối tượng và phạm vi nghiên cứu
Nghiên cứu phân cụm dữ liệu dựa trên MapReduce, tìm hiểu MapReduce và
Hadoop, nghiên cứu thuật toán K-means. Hiểu và áp dụng phân cụm được dữ liệu.
Nghiên cứu mô hình lâp ̣ trình MapReduce trong viêc ứng dung vào các bài
toán xử lý môṭ lươṇg lớn dữ liệu. Sử dụng Hadoop, môt thể hiện của MapReduce cho
việc phân tích dữ liệu.
Áp dụng cấu trúc, tham chiếu các đăc trưng của mô hình MapReduce vào bài
toán phân phân cụm dữ liệu.
Phạm vi nghiên cứu: nghiên cứu trên các tập dữ liệu chuẩn Dataset trong khai
thác dữ liệu lớn; Nguồn dữ liệu được lấy từ tập ảnh phong cảnh trích từ nguồn [23].

5. Phương pháp nghiên cứu
Phương pháp tài liệu: Nghiên cứu, tìm hiểu lý thuyết về các kỹ thuật phân cụm
dữ liệu.
Phương pháp thực nghiệm: Cài đặt mô hình lập trình MapReduce dựa trên
Hadoop. Sử duṇg ngôn ngữ lâp ̣ trình Java tích hợp Framework Hadoop.
Nguồn dữ liệu: dữ liệu sử dụng để thử nghiêṃ là dữ liệu viễn thám trên các
trang mạng xã hội hoặc dữ liệu mô phỏng [23].
Luận văn này, chúng tôi đã thực hiện MapReduce để tìm giá trị tối ưu của k
bằng cách thực thi thuật toán K-means với giá trị thay đổi của k trong cùng một bộ
lặp MapReduce.



4

Chương 1 - TỔNG QUAN VỀ ĐỀ TÀI
Ngày nay, cùng với sự phát triển vượt bậc của xã hội cũng như các lĩnh vực
khoa học kĩ thuật, nhu cầu xử lý dữ liệu trên máy tính lại càng trở nên cấp thiết hơn
bao giờ hết. Với công nghệ hiện đại, nhiều petabyte dữ liệu có độ phân giải cao được
tạo ra hàng ngày. Trong thập kỷ qua, sự tăng trưởng này theo cấp số mũ. Cùng với
việc gia tăng chóng về mặt về số lượng cũng như sự đa dạng dữ liệu ngày càng làm
các nhà kinh doanh mong muốn nhiều hơn những giá trị quý giá đem lại từ các loại
dữ liệu đó. Việc đó đồng nghĩa với các nhà khoa học phải đau đầu đối phó với việc
lưu trữ, xử lý khối lượng số liệu khổng lồ và đa dạng về chủng loại dữ liệu.
Vì vậy nhiều các nhà khoa học đang nghiên cứu các công nghệ, thuật toán để
giải quyết bài toán về lưu trữ, xử lý và phân tích các loại dữ liệu lớn (Bigdata) một
cách nhanh nhất đáp ứng được yêu cầu của các nhà quản trị kinh tế hoặc phân tích thị
trường. Một trong những giải pháp về Big data mã nguồn mở rất nổi tiếng đang được
rất nhiều các nhà khoa học trên thế giới quan tâm nghiên cứu và hoàn thiện đó chính
là Hadoop. Giải pháp Hadoop đem lại rất nhiều tính năng ưu việt trong việc lưu trữ
và tính toán xử lý song song trên nhiều máy chủ với số liệu rất lớn trong thời gian rất
ngắn. Trong lĩnh vực viễn thám, nạn phá rừng, thay đổi khí hậu, hệ sinh thái và nhiệt
độ bề mặt mặt đất là một số lĩnh vực nghiên cứu chính, nơi mà việc khai thác thông
tin và sự phân cụm các hình ảnh đóng một vai trò quan trọng. Kể từ đó, phân cụm là
một trong những kỹ thuật cơ bản để xử lý dữ liệu.
Mặc dù nhận được sự hỗ trợ mạnh mẽ từ sự đổi mới rất nhanh chóng của các
nền tảng công nghệ mới, việc xử lý lượng thông tin, dữ liệu nói chung thực sự là một
bài toán không hề dễ dàng, nhất là trong bối cảnh các yêu cầu đặt ra cần được thực
hiện một cách nhanh chóng và chính xác nhất. Vì vậy, để xử lý và quản lý có hiệu
quả số lượng lớn dữ liệu là vấn đề quan trọng.
Phân cụm toàn bộ dữ liệu vào cụm, hoặc gom những nhóm có tính chất tương
tự thành cụm. Những điểm dữ liệu trong cùng 1 cụm thì tính năng tương tự trong khi

các điểm dữ liệu của cụm khác được nhóm lại trong một cụm riêng biệt. K-Means là


5

thuật toán rất quan trọng và được sử dụng phổ biến trong kỹ thuật phân cụm, được sử
dụng trên tất cả các lĩnh vực, bao gồm viễn thám [3]. Mặc dù là đơn giản trong số rất
nhiều các thuật toán clustering, nó là thuật toán được sử dụng rộng rãi. Giả sử D là
một tập dữ liệu chứa n đối tượng. Phân nhóm các đối tượng vào các cụm k, trong đó
Cx ⊂ D và Cx ∩ Cy = ∅ cho (1 ≤ x, y ≤ k) [20].
Do số lượng dữ liệu lớn, xử lý nó là một thách thức đối với các nhà nghiên
cứu và các chuyên gia ngành công nghiệp. Hadoop là một trong những nền tảng tiêu
chuẩn cung cấp khả năng lưu trữ và xử lý dữ liệu lớn trong môi trường phân tán. Nó
có khả năng để phân tán dữ liệu và xử lý riêng biệt trên các nút trong cụm từ đó giảm
thiểu đường chuyền. Hadoop Distributed File System (HDFS) giúp việc phân tán các
phần của tập tin một cách hiệu quả [9].
Trong thời gian gần đây rất nhiều framework mới đã được xây dựng trên
Hadoop hỗ trợ các trường hợp sử dụng khác nhau. Hadoop bây giờ trở thành
framework cho lập trình phân tán.
Hadoop đã được kế thừa bởi các nhà nghiên cứu để chạy K-means trên nó [18],
[10]. Các nghiên cứu đã được tiến hành để chạy các thuật toán trên Hadoop để cải
thiện hiệu suất và khả năng mở rộng của Hadoop [1], [16]. Mở rộng kết quả của
những quan sát, nghiên cứu này khám phá các thuật toán chạy song song Scalable Kmeans++ clustering dữ liệu cho các giá trị khác nhau của k trong cùng một bộ lặp
thay vì chạy lặp đi lặp lại cho mỗi giá trị của k khác nhau.
Giá trị k thích hợp quyết định kết quả tối ưu clustering. Trong các ứng dụng
thực tế, số lượng cụm thường không được biết trước. Vì vậy để xác định k có thể chạy
k tăng dần nhiều lần nhằm xác định số lượng chính xác của cụm. Các giá trị thích hợp
của k được chọn bằng cách đánh giá chỉ số hiệu lực của cụm cho tất cả các lần thực
hiện. Tùy thuộc vào cụm tìm thấy cho các giá trị khác nhau của k, chúng tôi cũng xác
nhận số lượng thích hợp của các cụm yêu cầu. Chính các cơ quan doanh nghiệp và

chính phủ như NASA đã sử dụng Spark để xử lý petabyte dữ liệu [4]. Do đó, nó trở
nên cần thiết để nghiên cứu và thực hiện thí nghiệm như vậy trên Spark cùng với
Hadoop MapReduce.


6

Chương 2 của luận văn cung cấp nền tảng và công trình liên quan, thảo luận
về hệ sinh thái Hadoop với các thông tin cơ bản về các framework như MapReduce
và Apache Spark. Chương 3 phân cụm dữ liệu dùng giải thuật Đa K-Means++ dựa
trên Hadoop MapReduce và Spark, bao gồm các thuật toán mà chúng tôi đã sử dụng
cho MapReduce và Spark tương ứng. Chương 4 cung cấp tất cả các chi tiết các thí
nghiệm và phần cuối là kết luận những phát hiện của chúng tôi.


7

Chương 2 – CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ
2.1 Thuật toán K-Means
2.1.1 Giới thiệu thuật toán K-Means
K-Means là 1 thuật toán đơn giản nhưng lại khá hiệu quả và được sử dụng
rộng rãi. Nó đã chứng minh hiệu quả của nó trong hầu như tất cả các ứng dụng khoa
học bao gồm Công nghệ viễn thám RS. Các nhóm được tạo ra có tính tương đồng của
dữ liệu sao cho dữ liệu trong cùng một cụm có tính chất giống nhau. Tổng bình
phương của khoảng cách (SSD) giữa các điểm và tâm tương ứng càng giảm đi để tìm
các cụm thích hợp.
Thuật toán K-Means có 2 giai đoạn chính:
- Khởi tạo: Chọn k điểm bất kỳ làm các tâm ban đầu.
- Lặp đi lặp lại các bước sau:
Bước 1: Đối với tất cả các điểm, tính toán khoảng cách giữa mỗi điểm và các

tâm. Phân mỗi điểm dữ liệu vào cluster có tâm gần nó nhất.
Bước 2: Tìm điểm tâm mới bằng cách lấy trung bình cộng của tất các các điểm
dữ liệu đã được gán vào cluster đó.
Bước 3: Lặp lại bước 1, bước 2 cho đến khi các tiêu chuẩn hội tụ được đáp
ứng, các tiêu chuẩn hội tụ được đáp ứng khi các cụm ổn định.
Các tiêu chí hội tụ được đáp ứng khi cụm ổn định. Không có sự thay đổi trong
cluster thành phần, tức là không có sự thay đổi nào xảy ra ở giai đoạn gán nữa. Độ
phức tạp của thuật toán là O (nki) trong đó n là viết tắt của tổng số điểm, k là tổng
số phân vùng (các cụm) được tạo và i là là số lần lặp được thực hiện [6].


8

Hình 2.1: Sơ đồ mô tả thuật toán K-Means
[ />
2.1.2 Hạn chế và nhược điểm
Cùng với sự đơn giản và hiệu quả, thuật toán có một số hạn chế và nhược
điểm. Việc lựa chọn tâm ban đầu có thể không dẫn đến sự phân nhóm tối ưu. Nếu
tâm ban đầu không được chọn một cách khôn ngoan thì K-Means có thể hội tụ cục
bộ.
Thứ hai, tính chất tuần tự của thuật toán làm cho nó khó khăn để xử lý song
song. Các thí nghiệm đã được tiến hành để khắc phục tính chất tuần tự này bằng cách
chạy thuật toán trong các môi trường phân tán.
Thứ ba, giá trị của k cần phải được biết trước. K-Means đã trải qua nhiều cải
tiến đối với các vấn đề trên nhưng thuật toán cốt lõi thì vẫn vậy.

2.2 Thuật toán Silhouette Index
Silhouette là một trong những biện pháp phổ biến và hiệu quả nhất để đánh
giá tính hợp lệ của cụm. Simplified Silhouette là một phiên bản được đơn giản hóa
của Silhouette. Tuy nhiên, đến nay Simplified Silhouette đã không được phân tích



9

theo thời gian trong một thuật toán phân cụm cụ thể. Luận văn này áp dụng Simplified
Silhouette tới việc đánh giá tính hợp lệ của K-Means clustering.
Các phân tích lý thuyết cho thấy rằng Simplified Silhouette có mối quan hệ
toán học với Silhouette ban đầu, trong khi theo kinh nghiệm, cho thấy rằng nó có hiệu
suất tương đối với Silhouette ban đầu, nhưng nhanh hơn nhiều trong tính toán.
Dựa vào phân tích, kết luận rằng đối với một tập dữ liệu nhất định thì
Simplified Silhouette phù hợp hơn Silhouette gốc trong việc lựa chọn kết quả tốt nhất
từ K-Means clustering với các giá trị k khác nhau.
2.2.1 Biểu thức toán học
Cho X = {X1; X2;…; Xn} là một tập hợp các điểm dữ liệu n. Xi (1 ≤ i ≤ n) là
một trong các điểm dữ liệu, có thể được biểu diễn dưới dạng [xi, 1; xi, 2; :::; xi, m],
trong đó m là số lượng các tính năng. Với tập các điểm dữ liệu X, một số nguyên k
(2 ≤ k ≤ n) và k tâm ban đầu trong miền của X, thuật toán K-Means nhằm mục đích
tìm ra một clustering của X thành k clusters, tổng các khoảng cách từ một điểm dữ
liệu đến tâm của cụm được gán như sau:
CF(X,C) = ∑kl=1 ∑ni=1 ωi,l dE (X i , Ci )

(2.1)

trong đó dE (· , ·) là khoảng cách Euclide bình phương, C = {C1, C2, :::, Ck} là một
tập hợp các cụm tâm sau khi clustering, và wi,1 là chỉ số hàm số, bằng 1 khi Xi ở trong
C1 và 0 khi Xi không có trong C1. Theo định nghĩa, hàm giá trị thấp thì kết quả
clustering K-Means tốt hơn, vì vậy nó có thể được xem như là biện pháp nội bộ mặc
định cho cụm K-Means. Tuy nhiên, để đánh giá tính hợp lệ của sự phân cụm với các
giá trị k khác nhau, bằng cách sử dụng hàm giá trị đo là có vấn đề bởi vì nó có xu
hướng giảm khi giá trị k tăng. Do đó, chúng ta cần các biện pháp nội bộ khác như

Silhouette.
Tính toán của Silhouette không sử dụng bất kỳ đại diện nào của một cụm
(chẳng hạn như các tâm cụm được sử dụng bởi các hàm chức năng) nhưng dựa vào
ma trận khoảng cách trên tất cả các dữ liệu. Đối với một điểm dữ liệu đơn Xi, giá trị
Silhouette của nó Sil(i) được tính như sau:


10

Sil(i) =

b(i)−a(i)

(2.2)

max⁡{a(i),b(i)}

trong đó a (i) là khoảng cách của Xi đến nhóm của nó, được định nghĩa là trung bình
khoảng cách của Xi đến tất cả các điểm dữ liệu khác trong cluster h là:
∑n
p=1 ωp,h⁡ dE (Xi ,Xp )
p≠1

a(i) =

(2.3)

nh −1

trong đó nh là số điểm dữ liệu trong cluster h. b(i) là khoảng cách Xi đến cụm lân cận

lân cận gần nhất của nó, được định nghĩa là khoảng cách trung bình của Xi đến tất cả
các điểm dữ liệu trong cụm lân cận lân cận gần nhất như:
b(i) =

minimum∑n

p=1 ωp,l dE (Xi ,Xp )

l≠h⁡⁡⁡⁡⁡⁡⁡⁡

nl

(2.4)

Sil(i) dao động từ -1 đến 1. Khi a(i) nhỏ hơn nhiều so với b(i) có nghĩa là khoảng
cách của điểm dữ liệu đến cụm của nó nhỏ hơn nhiều so với các cụm khác, các Sil(i)
gần 1 để cho thấy điểm dữ liệu này được nhóm lại. Theo cách ngược lại, Sil(i) gần 1 để cho thấy nó là cụm xấu.
Giá trị Silhouette của toàn bộ một cụm hoặc một cụm đầy đủ được định nghĩa
là giá trị trung bình của Sil (i) trên tất cả dữ liệu có liên quan, ví dụ: Giá trị Silhouette
cho một Sil clustering toàn bộ được định nghĩa như sau:
1

Sil = ∑ni=1 sil(i)
n

(2.5)

Vì vậy, giá trị Silhouette cho một cụm đầy đủ Sil cũng có thể dao động từ -1,
cho thấy một clustering rất xấu, với 1, cho thấy một clustering tốt hơn.
Simplified Silhouette thông qua cách tiếp cận tương tự như Silhouette ban đầu,

nhưng đơn giản hóa khoảng cách của một điểm dữ liệu tới một cụm từ mức trung
bình khoảng cách của Xi đến tất cả các điểm dữ liệu khác trong một cụm với khoảng
cách đến tâm của cụm như sau:
a(i)’ =dE (X i , Ch )
b(i)’ =

minimum
l≠h⁡⁡⁡⁡⁡⁡dE (X i , Cl )

(2.6)
(2.7)


11

Và giá trị Simplified Silhouette cho một điểm dữ liệu đơn lẻ SS(i) được định nghĩa
là:

SS(i) =

b(i)′ −a(i)′
max⁡{a(i)′ ,b(i)′ }

(2.8)

Trong cùng một cách, giá trị Simplified Silhouette cho một nhóm SS đầy đủ được
xác định theo:

1


SS = ∑ni=1 ss(i)
n

(2.9)

Giá trị Simplified Silhouette cũng dao động từ -1 đến 1. -1 thể hiện cụm xấu,
trong khi 1 cho thấy một cụm hoàn hảo.
2.2.2 Độ phức tạp của thuật toán
Độ phức tạp tổng thể tính toán của Silhouette được ước tính là O (mn2), trong
khi đó của Simplified Silhouette được ước tính là O (kmn). Khi k nhỏ hơn nhiều so
với n, Silhouette có độ phức tạp hơn Simplified Silhouette. Ngoài ra, trong quá trình
phân cụm K-Means khoảng cách của mỗi điểm dữ liệu đến tâm cụm của nó đã được
tính toán trong mỗi lần lặp lại, làm giảm đáng kể tính toán của cả hai là hàm chức
năng và Simplified Silhouette. Do đó, hàm chức năng và Simplified Silhouette hiệu
quả hơn rất nhiều trong việc đánh giá hiệu lực K-Means clustering.

2.3 Các công trình liên quan
Các nhà khoa học và các nhà nghiên cứu đã đề xuất các thuật toán khác nhau
để tối ưu hóa giai đoạn khởi tạo. Vì các tâm ban đầu được chọn ngẫu nhiên, người ta
không thể dựa vào đầu ra của thuật toán để phân tích. Số lượng tâm ban đầu được
chọn gần với điểm thực tế càng nhiều thì kết quả phân cụm càng tốt.
AlDaoud và Roberts đề nghị khởi tạo phương pháp dựa trên mật độ dữ liệu
phân vùng thống nhất [14]. Dữ liệu được phân chia thành N tế bào và các trọng tâm
sau đó được chọn từ mỗi tế bào dựa trên tỷ lệ mật độ tế bào đặc biệt.
Kauffman cũng đề xuất các phương pháp tham lam để khởi tạo các điểm k
[11]. Trong năm 2007, Arthur và Vassilvitski cũng đã đề xuất thuật toán phân cụm
K-Means ++ [13]. Luận văn đề xuất phương pháp chọn giống cẩn thận để lựa chọn
các điểm ban đầu gần với kết quả tối ưu. Các điểm ban đầu được chọn ngẫu nhiên.
trung tâm tiếp theo tiếp theo được tính toán tỉ lệ với khoảng cách bình phương gần
nhất từ tâm đã chọn. Tuy nhiên, thuật toán này và nhiều thuật toán khác như vậy có



12

tính chất tuần tự tương tự như K Means. Tính chất lặp đi lặp lại của thuật toán này
ngăn không cho chúng mở rộng.
Trong [18], các nhà nghiên cứu đề xuất các thuật toán phân nhóm K-Means
mà chạy song song dựa trên MapReduce. Zhenhua et al. trong [3] chạy MapReduce
K-Means clustering trên hình ảnh. Lấy sự giúp đỡ của các framework MapReduce,
thuật toán được thu nhỏ lại khá tốt trên phần cứng.
Sau đó, [1] đã đưa ra khả năng mở rộng K-Means ++ để tối ưu hóa nó hơn nữa
bằng cách lấy mẫu nhiều điểm hơn trong mỗi lần lặp thay vì điểm duy nhất. Mặc dù
số lượng giảm lặp vẫn nhiều lần lặp lại là cần thiết. Trong [10], bài báo đề nghị cải
tiến K-Means hiệu quả với MapReduce. Nó đề xuất rằng một MapReduce duy nhất
là đủ cho giai đoạn khởi tạo thay vì nhiều lần lặp lại.
Trong trường hợp của MapReduce, cần phải lặp lại nhiều lần MapReduce jobs
để tìm số lượng các cụm thích hợp. Để vượt qua phương pháp tiếp cận MapReduce
lặp đi lặp lại, Garcia và Naldi đề xuất chạy các MapReduce jobs giống nhau cho tất
cả các giá trị của k [16]. Kết quả cuối cùng của các MR jobs bao gồm tập hợp các
cụm cho tất cả các giá trị của k. Họ đã sử dụng Simplified Silhouette Index để chọn
giá trị đúng của k. Họ so sánh kết quả thực hiện với Apache Mahout cho các bộ dữ
liệu có kích cỡ khác nhau được tạo ra bởi gói MixSim R. Bài báo chỉ ra giai đoạn lặp
đi lặp lại để tạo ra các cụm. Bài báo không tiến hành thử nghiệm dữ liệu thực và giai
đoạn khởi tạo không song song.

2.4 Apache Hadoop
Apache Hadoop là một framework dùng để chạy những ứng dụng trên 1 cluster
lớn được xây dựng trên những phần cứng thông thường và được thiết kế để hỗ trợ
cho các ứng dụng sử dụng lượng lớn dữ liệu cấu trúc và phi cấu trúc. Hệ thống phần
mềm mã nguồn mở này được tối ưu cho tính tin cậy, khả năng mở rộng và tính toán

phân tán. Hadoop được thiết kế để làm việc với nhiều loại dữ liệu. Hadoop cho phép
lưu trữ khối lượng lớn bằng cách chia thành các khối dữ liệu nhỏ hơn phân phối trên
các phần cứng của một cluster để xử lý nhanh hơn. Công nghệ này đã được sử dụng
rộng rãi trên thế giới như Facebook, eBay, Amazon,…


13

Hadoop là một framework mã nguồn mở viết bằng Java cho phép phát triển
các ứng dụng phân tán dữ liệu lớn. Hadoop cho phép lưu trữ và xử lý phân tán các
ứng dụng có thể làm việc với khối lượng dữ liệu khổng lồ trên các cụm máy tính từ
một vài máy chủ đơn đến hàng nghìn máy tính. Các dịch vụ của Hadoop cung cấp
cho việc lưu trữ, xử lý, truy cập, quản trị dữ liệu, an ninh và đảm bảo các hoạt động.
Ưu điểm của việc sử dụng Hadoop là khả năng lưu trữ, quản lý và phân tích
số lượng lớn dữ liệu có cấu trúc và không có cấu trúc một cách nhanh chóng, đáng
tin cậy, linh hoạt và chi phí thấp.
- Khả năng mở rộng và hiệu suất: Hadoop xử lý phân tán dữ liệu cục bộ trong
mỗi nút trong một cluster nên cho phép lưu trữ, quản lý, xử lý và phân tích dữ liệu rất
lớn.
- Độ tin cậy: Trong trường hợp các nút bị hỏng riêng lẻ trong cụm. Hadoop có
thể chuyển hướng đến các nút còn lại trong cụm vì dữ liệu được tự động sao chép lại
trên nhiều nút.
- Tính linh hoạt: Không giống như các hệ thống quản lý cơ sở dữ liệu quan hệ
truyền thống, với Hadoop không cần phải tạo lược đồ có cấu trúc trước khi lưu trữ dữ
liệu. Hadoop có thể lưu trữ dữ liệu ở nhiều định dạng, bao gồm các định dạng bán
cấu trúc hoặc không có cấu trúc.
- Chi phí thấp: Không giống như phần mềm độc quyền, Hadoop là mã nguồn
mở và chạy trên phần cứng giá rẻ.
2.4.1 Kiến trúc Hadoop cluster
Một Hadoop cluster được xây dựng dựa trên kiến trúc master-slave bao gồm

có một nút chủ chứa NameNode, JobTracker và SecondaryNameNode (nút chủ có
thể

chứa

DataNode



TaskTracker).

Cả

NameNode,

JobTracker



SecondaryNameNode có thể nằm trên cùng một máy vật lý (tuy nhiên với cluster thật
sự với hàng trăm, hàng nghìn nút thì thường phải tách các thành phần này ra các máy
vật lý khác nhau). Có nhiều nút phụ thuộc, mỗi nút phụ thuộc thường đóng 2 vai trò
là DataNode và TaskTracker. Mỗi thành phần có chức năng riêng. NameNode và


14

DataNode chịu trách nhiệm vận hành hệ thống file phân tán HDFS, JobTracker và
TaskTracker chịu trách nhiệm duy trì bộ máy MapReduce, nhận và thực thi các
MapReduce Job. Chức năng mỗi thành phần như sau:

- NameNode: Là một trình nền quan trọng nhất của Hadoop. Hadoop sử dụng
một kiến trúc master/slave cho cả lưu trữ phân tán và xử lý phân tán. NameNode chỉ
đạo các trình nền DataNode để thực hiện các nhiệm vụ I/O mức thấp. Hadoop có chức
năng quản lý metadata: tên file, danh sách các block và nơi lưu trữ, quản lý việc mở
đóng các file, quản lý các DataNode và điều hướng quá trình đọc/ghi dữ liệu từ client
lên các DataNode.
- JobTracker: Chỉ có một JobTracker trên một cụm Hadoop. JobTracker tiếp
nhận các yêu cầu thực thi công việc MapReduce và phân chia công việc này thành
các tác vụ (task) và phân công cho các TaskTracker thực hiện, quản lý tình trạng thực
hiện các tác vụ của TaskTracker. Nếu một tác vụ thất bại (fail), JobTracker sẽ tự động
chạy lại nhiệm vụ đó, có thể trên một nút khác. JobTracker cũng quản lý danh sách
các TaskTracker và tình trạng của từng nút.
- SecondaryNameNode: Một trình nền hỗ trợ giám sát trạng thái của các cụm
HDFS, nó lưu trữ một bản sao cho dữ liệu trên NameNode, và bản sao này sẽ được
dùng để phục hồi lại NameNode nếu NameNode bị hư hỏng.
- DataNode: Mỗi máy slave trong cluster sẽ lưu trữ một trình nền DataNode
để thực hiện các công việc nào đó của hệ thống file phân tán. Khi muốn đọc hay ghi
một file thì file đó được chia nhỏ thành các block và NameNode sẽ thông báo cho các
client nơi chứa các trình nền DataNode. Client sẽ liên lạc trực tiếp với các trình nền
DataNode để xử lý các block. Hơn nữa, một DataNode có thể giao tiếp với các
DataNode khác để nhân bản các khối dữ liệu của nó để dự phòng. Như vậy, DataNode
chứa các block dữ liệu thực sự của các file trên HDFS, quản lý lưu trữ các Block theo
yêu cầu của NameNode và đáp ứng yêu cầu truy cập các blocks từ client, đáp ứng các
yêu cầu tạo/xoá các block dữ liệu từ NameNode.


15

- TaskTracker: Có một TaskTracker cho một nút phụ thuộc. Nhiệm vụ của
TaskTracker là thực thi các tác vụ map và reduce theo yêu cầu của JobTracker. Một

trong những trách nhiệm của các TaskTracker là liên tục liên lạc với JobTracker. Nếu
JobTracker không nhận được phản hồi từ một TaskTracker nào đó trong vòng một
lượng thời gian đã quy định, nó sẽ cho rằng TaskTracker lỗi.

Hình 2.2: Kiến trúc Hadoop cluster
[ ]


16

Hình 2.3: Tổng quan một cụm Hadoop
[s/luan-van-hadoop-final3d78e7121c09e820117756e6890f100a89892.html]


17

2.4.2 Thành phần của Hadoop
Hadoop framework gồm 4 module:
- Hadoop Common: Đây là các thư viện và tiện ích cần thiết để hỗ trợ cho các
modules khác của Hadoop.
- Hadoop Yarn: là framework để quản lý tiến trình và tài nguyên của các
cluster.
- Hadoop Distributed File System (HDFS): Đây là hệ thống file phân tán cung
cấp truy cập thông lượng cao cho ứng dụng khai thác dữ liệu.
- Hadoop MapReduce: là hệ thống dựa trên Yarn dùng để xử lý song song các
tập dữ liệu lớn.
Một số dự án khác có liên quan đến Hadoop tại Apache
- Avro: Hệ thống dữ liệu tuần tự.
- Chukwa: Hệ thống thu thập dữ liệu để quản lý hệ thống phân tán lớn.
- Hbase: Cơ sở dữ liệu phân tán có khả năng mở rộng, hỗ trợ lưu trữ dữ liệu

có cấu trúc cho các bảng lớn.
- Hive: Hạ tầng kho dữ liệu (data warehouse), cung cấp tổng hợp dữ liệu và
cho phép thực hiện truy vấn tương tự SQL và biên dịch những câu lệnh này thành tập
hợp các tác vụ MapReduce.
- Hue: Cung cấp giao diện đồ họa dựa trên trình duyệt để thực hiện các truy
vấn trong Hive.
- Mahout: Thư viện học máy và khai phá dữ liệu có khả năng mở rộng.
- Pig: Ngôn ngữ luồng dữ liệu cấp cao và thực thi để tính toán song song. Đây
là môi trường lập trình mức cao hơn để viết các chương trình MapReduce.
- Spark: Công cụ tính toán nhanh và tổng quát cho dữ liệu Hadoop. Spark cung
cấp một mô hình lập trình đơn giản và hiệu quả hỗ trợ cho các ứng dụng về học máy,
tính toán đồ thị,…
- Sqoop: Dùng để chuyển đổi dữ liệu từ các cơ sở dữ liệu quan hệ sang HDFS.


×