Tải bản đầy đủ (.docx) (16 trang)

Tiểu luận môn Điện toán lưới và đám mây TÌM HIỂU GIẢI THUẬT PHÂN LỚP SONG SONG CHO DỮ LIỆU QUY MÔ LỚN

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 (285.88 KB, 16 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
o0o
BÀI THU HOẠCH MÔN HỌC
ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY
ĐỀ TÀI:
TÌM HIỂU GIẢI THUẬT PHÂN LỚP SONG SONG
CHO DỮ LIỆU QUY MÔ LỚN
GIÁO VIÊN HƯỚNG DẪN:
PGS.TS NGUYỄN PHI KHỨ
HỌC VIÊN: VƯƠNG ĐỨC HIỀN
MSHV: CH1301087
TP HỒ CHÍ MINH - THÁNG 6, NĂM 2014
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Mục lục
Mở đầu
Bài thu hoạch này trình bày các vấn đề lý thuyết về điện toán đám mây, ứng
dụng trong bài toán phân lớp dữ liệu quy mô lớn với thuật toán phân loại Naïve
Bayes được cải tiến xử lí trên nền tảng song song Hadoop MapReduce. Nội dung
của bài thu hoạch này chủ yếu được dịch từ bài báo “Research on Parallel
Classification Algorithms for Large-scale Data” của các tác giả Lijuan Zhou, Hui
Wang, Wenbo Wang [1].
Các phần theo sau đây trong bài thu hoạch có cấu trúc tương ứng với các
phần trong bài báo [1] nói trên, bao gồm: phần 1: tóm tắt nội dung bài báo; phần 2:
trình bày giới thiệu tổng quan về Điện toán đám mây và nền tảng Hadoop
MapReduce; phần 3 trình bày về kiến trúc Hadoop MapReduce, bao gồm một
phần về hệ thống tập tin phân tán HDFS (Hadoop Distributed File System) và một
phần giới thiệu về mô hình lập trình MapReduce; phần 4 trình bày thuật toán phân
loại Naïve Bayes truyền thống và thuật toán Naïve Bayes được cải tiến để sử dụng
cho phân loại song song trong môi trường điện toán đám mây; phần 5 là các kết
Bài thu hoạch môn Điện toán lưới và đám mây Trang 2


GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
quả mà nhóm tác giả đã thực hiện thử nghiệm trên các tập dữ liệu UCI; phần 6
tổng kết những kết quả đã đạt được của bài báo.
1. Tóm tắt
Với khối lượng ngày càng tăng của dữ liệu và các yêu cầu cá nhân hóa cho
việc khai phá dữ liệu, phương pháp khai phá dữ liệu tập trung truyền thống không
thể thích ứng với loại nhu cầu này. Điện toán đám mây cung cấp một giải pháp giá
rẻ cho việc lưu trữ, phân tích và xử lí dữ liệu lớn. Để đạt được mục đích của khai
phá dữ liệu song song trong môi trường điện toán đám mây, một thuật toán cải tiến
dựa trên thuật toán Naïve Bayes đã được đề xuất trong bài báo này. Đầu tiên, đề
xuất các ý tưởng thiết kế của thuật toán cải tiến trong mô hình lập trình
MapReduce. Sau đó sử dụng các dữ liệu thực tế để kiểm tra thuật toán. Kết quả
thử nghiệm xác nhận rằng các thuật toán mới có hiệu suất cao hơn và khả năng mở
rộng tốt hơn.
2. Giới thiệu
Điện toán đám mây là một thuật ngữ thương mại cho các công nghệ có khả
năng cung cấp tài nguyên tính toán, phần mềm, truy cập và lưu trữ dữ liệu. Nó
không đòi hỏi người dùng cuối biết về vị trí và cấu hình của hệ thống cung cấp các
dịch vụ. Điện toán đám mây là việc cung cấp các tài nguyên tính toán như một
dịch vụ hơn là một sản phẩm, theo đó các tài nguyên được chia sẻ, các phần mềm
và các thông tin được cung cấp cho máy tính và các thiết bị khác như một tiện ích
qua mạng.
Bài thu hoạch môn Điện toán lưới và đám mây Trang 3
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Những dịch vụ này thường được chia thành ba loại: cơ sở hạ tầng như một
dịch vụ, nền tảng như một dịch vụ và các phần mềm như một dịch vụ. Điện toán
đám mây là việc thực hành sử dụng các mạng và Internet để cung cấp tài nguyên
tính toán ảo cho người dùng. Nó cho phép chúng ta sử dụng các khả năng phần
cứng và bản quyền phần mềm khi cần mà không phải trả phí cho các tài nguyên
tính tính nhàn rỗi. Với công nghệ của SaaS , PaaS , IaaS và mô hình cao cấpkhác,

điện toán đám mây phân phối sức mạnh của máy tính đến tay của người dùng
cuối.
Amazon EC2, giống như Google App Engine, Windows Azure và Hadoop,
là những kiến trúc điện toán đám mây tương đối hoàn thiện hiện nay. Hadoop
được tạo ra bởi Doug Cutting, ông ấy đặt tên Hadoop dựa theo tên con voi đồ chơi
của con trai mình. Apache Hadoop là một nền tảng phần mềm hỗ trợ các ứng dụng
phân phối dữ liệu chuyên sâu miễn phí. Nó cho phép các ứng dụng làm việc với
hàng ngàn các nodes và các dữ liệu petabyte. Hadoop đã được lấy cảm hứng từ các
bài báo về Google’s MapReduce và Google FileSystem. Hadoop được phát triển
ban đầu để hỗ trợ phân phối cho dự án công cụ tìm kiếm Nutch. Hadoop bây giờ
bao gồm nhiều dự án nhỏ ngoài các cốt lõi cơ bản, MapReduce và hệ thống tập tin
phân tán HDFS. Các dự án nhỏ này cung cấp khả năng xử lý ứng dụng nâng cao
cho việc thực hiện các cơ bản Hadoop bao gồm Avro, Pig, HBase, Zookeeper,
Hive và Chukwa.
Ngày nay, sự phát triển nhanh chóng của Internet và World Wide Web đã
dẫn đến một lượng lớn các thông tin trực tuyến có sẵn được coi là Big Data. Ngoài
ra, các tổ chức kinh doanh và chính phủ tạo ra một lượng lớn các thông tin có cấu
trúc và phi cấu trúc mà cần phải được xử lý, phân tích và liên kết. Một bài báo
IDC được tài trợ bởi EMC đã ước tính số lượng thông tin được lưu trữ trong một
dạng kỹ thuật số trong năm 2007 là khoảng 281 Exabyte và tỉ lệ tăng trưởng kép
khoảng 57%, với các thông tin trong các tổ chức tỉ lệ này còn cao hơn. Việc lưu
trữ, quản lý, truy cập và xử lý số lượng lớn các dữ liệu này mô tả một nhu cầu cơ
bản và một thách thức lớn để đáp ứng nhu cầu tìm kiếm, phân tích, khai phá, và
Bài thu hoạch môn Điện toán lưới và đám mây Trang 4
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
mô hình hóa dữ liệu này làm thông tin. Ngoài ra, một tính năng hiện tại của những
dữ liệu lớn là khó khăn làm việc với nó bằng cách sử dụng các thuật toán khai thác
dữ liệu truyền thống, đòi hỏi thay vì "phần mềm song song chạy trên hàng chục,
hàng trăm, thậm chí hàng ngàn máy chủ" . Xử lý song song phân rã quá trình xử lí
của ứng dụng tổng thể thành các công vụ riêng biệt, mà sau đó có thể được thực

hiện song song trên một nền tảng điện toán thích hợp để đạt được hiệu suất tổng
thể cao hơn so với xử lí tuần tự. Và nó thường liên quan đến phân vùng hoặc phân
chia các dữ liệu vào nhiều phân đoạn có thể được xử lý một cách độc lập bằng
cách sử dụng chương trình ứng dụng thực thi song song trên một nền tảng điện
toán thích hợp , sau đó lắp lại kết quả để đưa ra các dữ liệu đầu ra hoàn chỉnh.
Kiến trúc điện toán đám mây có thể hỗ trợ các ứng dụng dữ liệu song song là một
giải pháp tiềm năng cho các yêu cầu xử lý dữ liệu quy mô petabyte và terabyte của
tính toán Big data. Và một số giải pháp đã xuất hiện bao gồm các kiến trúc
MapReduce đi tiên phong bởi Google và bây giờ đã có trong một sự thực hiện mã
nguồn mở gọi là Hadoop được sử dụng bởi Yahoo, Facebook, và những người
khác.
3. Kiến trúc Hadoop và MapReduce
3.1 Hệ thống tập tin phân tán HDFS
HDFS (Hadoop Distributed File System), được viết bằng Java, là một
hệ thống tập tin phân tán mở rộng cho nền tảng Hadoop. HDFS được lấy cảm
hứng từ bài báo về Google File System. Nó có tính chịu lỗi cao và được thiết
kế để triển khai trên phần cứng chi phí thấp .
HDFS là có kiến trúc master/slave. Một cụm HDFS bao gồm một
NameNode duy nhất và một số các DataNode quản lí việc lưu trữ các tập tin.
Server NameNode tổ chức hệ thống tập tin và một NameNode thứ hai có thể
tạo ra những bức ảnh của cấu trúc bộ nhớ của NameNode, để ngăn chặn hệ
thống tập tin bị sập và giảm sự mất mát dữ liệu. Các hoạt động không gian tên,
như mở, đóng tập tin, và đổi tên tập tin, thư mục được thực hiện bởi các
Bài thu hoạch môn Điện toán lưới và đám mây Trang 5
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
NameNode. Và việc map của các khối cho DataNodes cũng được xác định bởi
NameNode. HDFS là một hệ thống tập tin có cấu trúc khối, các tập tin riêng lẻ
được chia thành các khối có kích thước cố định. Các khối này được lưu trữ trên
DataNodes với khả năng lưu trữ dữ liệu. Do đó, các DataNodes chấp nhận yêu
cầu từ client của hệ thống tập tin. Các DataNodes cũng thực hiện việc tạo các

khối, xóa, sao chép theo các chỉ dẫn từ NameNode. Hệ thống tập tin sử dụng
các lớp giao thức TCP/IP để giao tiếp; và các client sử dụng RPC để giao tiếp
với nhau.
Để mở một tập tin, client liên lạc với các NameNode bằng cách gọi hàm
open() trên đối tượng FileSystem và lấy được một danh sách các vị trí các khối
mà bao gồm tập tin. Các vị trí này xác định được DataNodes giữ mỗi khối đó.
Client sau đó đọc tập tin dữ liệu trực tiếp từ các DataNode server bằng cách
gọi hàm read() trên FSDataInputStream, có thể song song. Khi client đã đọc
xong, nó gọi hàm close() trên FSDataInputStream.
HDFS được thiết kế để trở nên mạnh mẽ hơn với một số vấn đề mà các
hệ thống tập tin phân tán khác như NFS gặp phải. Đặc biệt:
1) HDFS được thiết kế để lưu trữ một số lượng rất lớn thông tin. Điều này
đòi hỏi việc lan rộng dữ liệu trên một số lượng lớn máy móc. Nó cũng hỗ
trợ các kích thước tập tin lớn hơn nhiều so với NFS.
2) HDFS lưu trữ dữ liệu một cách đáng tin cậy. Nếu một máy cá nhân trong
nhóm bị crash, dữ liệu vẫn có sẵn. Vì các tập tin được lưu trữ trong một chế
độ dự phòng trên nhiều máy tính để đảm bảo độ bền của chúng khi có lỗi
và tính sẵn có cho các ứng dụng song song.
3) HDFS cung cấp khả năng truy cập mở rộng và nhanh chóng với những
thông tin được lưu trong Hadoop. Nó phục vụ một số lượng lớn khách hàng
hơn bằng cách đơn giản là bổ sung thêm máy vào một nhóm.
4) HDFS tích hợp tốt với Hadoop MapReduce, cho phép dữ liệu được đọc
và tính toán cục bộ khi có thể.
3.2 Mô hình lập trình của MapReduce
Bài thu hoạch môn Điện toán lưới và đám mây Trang 6
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Kiến trúc MapReduce cho phép các lập trình viên sử dụng một kiểu lập
trình hàm để tạo ra một hàm “map” để xử lí một cặp key-value kết hợp với các
dữ liệu đầu vào để tạo ra một tập hợp các cặp key-value trung gian, và một
hàm “reduce” trộn tất cả các value trung gian kết hợp với cùng key trung gian

tương ứng. Động cơ bao gồm một JobTracker và một số TaskTrackers. Client
gửi các công việc MapReduce cho JobTracker Node. Với một hệ thống file
rack-aware, JobTracker đẩy việc ra các nút TaskTracker đang có sẵn, có chứa
các dữ liệu hoặc gần đó dữ liệu. Bởi vì hệ thống quản lý các chi tiết như phân
vùng dữ liệu đầu vào, lập kế hoạch và thực hiện nhiệm vụ trên một cụm xử lý,
và quản lý các thông tin liên lạc giữa các nút một cách tự động, các lập trình
viên không có kinh nghiệm trong lập trình song song có thể dễ dàng sử dụng
một môi trường xử lý phân tán lớn.
MapReduce là một mô hình lập trình được thiết kế để xử lý khối lượng
lớn dữ liệu song song bằng cách chia công việc thành một tập hợp các nhiệm
vụ độc lập. Dưới đây sẽ giải thích nó có thể được sử dụng như thế nào để viết
các chương trình chạy trong môi trường Hadoop.
MapReduce là một nền tảng phần mềm được giới thiệu bởi Google vào
năm 2004 để hỗ trợ tính toán phân tán trên các tập dữ liệu lớn trên các cụm
máy tính. Framework được lấy cảm hứng từ các hàm map và reduce được sử
dụng trong lập trình hàm, mặc dù mục đích của chúng trong nền tảng
MapReduce không giống như hình thức ban đầu của chúng. Dữ liệu được đọc
từ tập tin vào Mappers, được phân phối bởi mappers đến Reducers, và gửi ra
Reducers vào các file đầu ra được lưu trữ trong HDFS. Chế độ lập trình
MapReduce được thiết kế để tính toán khối lượng lớn dữ liệu một cách song
song. Mô hình phân chia khối lượng công việc trên các nhóm (cluster). Và nó
phân chia đầu vào thành các mảnh đầu vào nhỏ được biểu diễn bởi các giao
diện Java của InputSplit. Khi client gửi một công việc để framework, một map
đơn xử lý một mảnh đầu vào. Và từng phần được chia thành các bản ghi; map
xử lí mỗi bản ghi lần lượt. Một InputFormat chịu trách nhiệm cho việc tạo các
Bài thu hoạch môn Điện toán lưới và đám mây Trang 7
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
mảnh đầu vào và phân chia chúng thành các bản ghi. Và framework sẽ gán một
mảnh cho mỗi hàm map. Các JobTracker đẩy việc ra các nút TaskTracker có
sẵn trong các cụm, cố gắng để giữ cho các công việc gần với dữ liệu càng tốt.

Với hệ thống tập tin rack-aware, JobTracker biết nút nào có chứa dữ liệu và
những máy nào khác gần đó. TaskTracker sẽ xử lý các bản ghi lần lượt.
MapReduce đảm bảo rằng các đầu vào cho mỗi reducer đã được sắp xếp theo
key. Quá trình thực hiện sắp xếp và chuyển các kết quả map như là đầu vào
của reducer được gọi là shuffle. Chức năng map không chỉ đơn giản là ghi
output của nó vào đĩa.
Hình 1. Mô hình MapReduce
Hình 1.1 cho thấy những gì xảy ra. Mỗi nhiệm vụ map có một bộ nhớ
đệm xoay vòng để ghi kết quả đầu ra. Khi các nội dung của bộ nhớ đệm đạt
đến một ngưỡng nhất định, chúng sẽ được sắp xếp và ghi vào đĩa trong khi
Bài thu hoạch môn Điện toán lưới và đám mây Trang 8
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
map tiếp tục output các bản ghi. Trước khi sự cố tràn ghi vào đĩa, dữ liệu được
chia thành các phân vùng tương ứng với các reducer sẽ được tối ưu hóa để gửi
đến các tiến trình chạy nền. Trong mỗi phân vùng, các tiến trình chạy nền thực
hiện được sắp xếp theo key. Trước khi công việc kết thúc, các tập tin tràn được
sáp nhập vào một phân vùng và được sắp xếp theo tập tin đầu ra duy nhất. Vì
vậy tập tin đầu ra vẫn nằm trên đĩa local của tasktracker thực hiện nhiệm vụ
map để giảm lưu lượng của mạng.
Khi hàm map được hoàn thành, TaskTracker sẽ thông báo cho
JobTacker. Sau đó mỗi hàm reduce nhận output được giao từ một số nhiệm vụ
map thông qua HTTP vào bộ nhớ và định kỳ trộn các kết quả vào đĩa. Và điều
này được gọi là giai đoạn sao chép của nhiệm vụ reduce. Khi tất cả các kết quả
đầu ra map đã được sao chép, hàm reduce được gọi cho mỗi key trong đầu ra
đã được sắp xếp. Và đầu ra của giai đoạn này được ghi trực tiếp vào hệ thống
tập tin đầu ra, thường là HDFS.
4. Thuật toán Naïve Bayes trong môi trường điện toán đám mây
Naïve Bayes là một phương pháp phân loại dựa trên thống kê. Nó là một
thuật toán xác suất được nghiên cứu mà thường được sử dụng trong phân loại. Nó
sử dụng các kiến thức về xác suất và thống kê để phân loại. Các nghiên cứu so

sánh các thuật toán phân loại đã nhận thấy Naïve Bayes có thể so sánh về hiệu suất
với bộ phân lớp cây quyết định và phân loại mạng nơ ron. Naïve Bayes cũng đã
cho thấy độ chính xác cao và nhanh khi áp dụng cho các cơ sở dữ liệu lớn.
4.1 Thuật toán Naïve Bayes truyền thống
Bộ phân lớp Naïve Bayes giả định rằng sự hiện diện của một đặc tính
đặc biệt của một lớp là không liên quan đến sự hiện diện của bất kỳ đặc tính
khác trên một biến phân loại cho trước. Giả định này được gọi là phân lớp độc
lập có điều kiện. Nhưng nó xuất hiện để làm việc tốt trong thực tế ngay cả khi
giả định độc lập là không hợp lệ. Nó phân loại dữ liệu theo hai bước:
Bài thu hoạch môn Điện toán lưới và đám mây Trang 9
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
- Bước huấn luyện: Sử dụng các mẫu đào tạo, phương pháp ước tính các
thông số của một phân bố xác suất, giả sử đặc tính này là độc lập điều kiện
trong lớp nhất định.
- Bước dự đoán: Đối với một mẫu thử nghiệm chưa có nhãn, phương pháp
tính toán xác suất hậu nghiệm của mẫu đó thuộc mỗi lớp. Phương pháp này
sau đó phân loại các mẫu thử nghiệm tùy theo xác suất hậu nghiệm lớn
nhất.
Để chứng minh khái niệm phân loại Naïve Bayes, xem xét các kiến thức
về thống kê. Cho Y là thuộc tính phân loại và X {x1, x2, , xk } là mảng véc
tơ giá trị của các thuộc tính đầu vào, bài toán phân loại làm đơn giản để ước
tính xác suất có điều kiện P(Y|X) từ một tập các mẫu huấn luyện. P(Y|X) là
xác suất hậu nghiệm, và P(Y) là xác suất cho trước.
Giả sử có m lớp, Y1, Y2, , Ym . Cho một bộ X, bộ phân loại sẽ dự đoán X
thuộc về lớp có xác suất hậu nghiệm cao nhất. Bộ phân loại Naïve Bayes dự
đoán bộ X thuộc về lớp Yi khi và chỉ khi:
P(Yi | X) >= P(Yj | X). (1)
Quy tắc Bayes nói rằng xác suất này có thể được biểu diễn dạng công thức:
P(Yi | X) = P(X | Yi).P(Yi) / P(X). (2)
Như P(X) là hằng số cho tất cả các lớp, chỉ

P(X | Yi )P(Yi ) (3)
cần được tối đa hóa. Xác suất trước được tính bằng cách xác suất của Yi trong
tập huấn luyện.
Để giảm bớt việc tính toán trong việc đánh giá P(X | Yi), giả định Naïve Bayes
của lớp độc lập có điều kiện được thực hiện. Vì vậy,
P(X | Yi) = Π P(Xk | Yi). (4)
Và chúng ta dễ dàng tính toán được xác suất P(X1 | Yi), P(X2 | Yi), , P(Xk |
Yi) từ các bộ huấn luyện. Nhãn lớp được dự đoán là lớp Yi mà xác suất P(X |
Yi )P(Yi ) là lớn nhất.
4.2 Thuật toán Naïve Bayes cải tiến
Điện toán đám mây có thể được định nghĩa là một sự cung cấp thông
qua Internet của tất cả các dịch vụ điện toán. Nó là phiên bản tiên tiến nhất của
kiến trúc client-server và có hệ thống để một mức độ rất cao của nguồn tài
nguyên được chia sẻ và nhân rộng. Trong chế độ này, các ứng dụng, dữ liệu và
Bài thu hoạch môn Điện toán lưới và đám mây Trang 10
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
các nguồn lực có sẵn để người dùng thông qua mạng. Các nguồn lực bao gồm
một số lượng lớn các tài nguyên tính toán được sử dụng để tạo ra các nguồn tài
nguyên ảo hóa cao tự động cho người dùng. Nhưng đối với các nhiệm vụ phân
tích dữ liệu lớn, nền tảng đám mây thiếu thực hiện song song các thuật toán
khai thác và phân tích dữ liệu lớn. Do đó, một mô hình điện toán đám mây mới
của khai thác dữ liệu lớn bao gồm tiền xử lý đối với một số lượng rất lớn của
dữ liệu, điện toán đám mây cho các thuật toán lớn song song khai thác dữ liệu,
các phương pháp khai thác dữ liệu khổng lồ mới,
Vấn đề quan trọng của việc khai thác dữ liệu lớn là sự song song hóa
thuật toán khai thác dữ liệu. Điện toán đám mây sử dụng mô hình điện toán
mới được gọi là MapReduce, có nghĩa là các thuật toán khai thác dữ liệu hiện
có và các chiến lược song song hóa không thể được áp dụng trực tiếp đến nền
tảng điện toán đám mây cho khai thác dữ liệu lớn, do đó một số sự chuyển đổi
phải được thực hiện. Vì vậy, chiến lược thuật toán khai thác dữ liệu song song

phải được nghiên cứu thêm, để thực hiện các thuật toán khai thác dữ liệu song
song lớn hiệu quả mà đang chạy trong môi trường điện toán đám mây . Khai
thác dữ liệu tại song song các thuật toán đã bao gồm các song song các thuật
toán tương quan; các thuật toán phân loại song song, các thuật toán phân nhóm
song song. Các thuật toán sử dụng để phân loại hoặc dự đoán mô hình, tóm tắt
hoặc gom cụm dữ liệu, phát hiện các bất thường và các xu hướng, Trên cơ sở
này, cho các đặc tính của các thuật toán khai thác dữ liệu khổng lồ, mô hình
điện toán đám mây đã được tối ưu hóa và mở rộng để làm cho nó phù hợp hơn
cho khai thác dữ liệu lớn. Vì vậy, bài viết này thông qua các Hadoop cơ sở hạ
tầng hệ thống phân phối, cung cấp dung lượng lưu trữ của HDFS và khả năng
tính toán của MapReduce, để thực hiện các thuật toán Naïve Bayes phân phối.
Ý tưởng cơ bản của thuật toán cải thiện sẽ được mô tả dưới đây.
Việc thực hiện các mô hình MapReduce với Naïve Bayes song song
được chia thành các giai đoạn huấn luyện và dự đoán. Hình sau cho thấy kiến
trúc của thuật toán.
Bài thu hoạch môn Điện toán lưới và đám mây Trang 11
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Hình 1. Kiến trúc của giải thuật
4.2.1 Giai đoạn huấn luyện
Tính toán phân tán của Hadoop được chia thành hai giai đoạn được gọi
là Map và Reduce .
Đầu tiên, InputFormat tải dữ liệu đầu vào thành các khối dữ liệu nhỏ
được gọi là phân mảnh dữ liệu, và kích thước của mỗi phân mảnh dữ
liệu là 5M, và chiều dài của tất cả chúng là bằng nhau, và từng phần
được chia thành các bản ghi. Mỗi pha map xử lí một mảnh đơn, và
nhiệm vụ map truyền mảnh đó đến hàm getRecordReader() trên
InputFormat để đạt được một RecordReader cho mảnh đó. Các
RecordReader là vòng lặp của các bản ghi. Sau đó nhiệm vụ map sử
dụng một RecordReader để tạo cặp key-value của bản ghi.
Thứ hai, hàm map thống kê các loại và các thuộc tính của dữ liệu đầu

vào, bao gồm các giá trị của các loại và thuộc tính. Các thuộc tính và
loại của các bản ghi đầu vào được phân cách bằng một dấu phẩy, và
thuộc tính cuối cùng là thuộc tính phân loại .
Bài thu hoạch môn Điện toán lưới và đám mây Trang 12
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Cuối cùng, hàm reduce tổng hợp số lượng giá trị của từng thuộc tính thể
loại, mà kết quả trong các hình thức (thể loại, index1 : count1 , index2 :
count2 , Index3 : count3 , , Indexn : CountN ), và sau đó output các
mô hình huấn luyện . Thực hiện của nó được mô tả như sau:
Algorithm: Produce training
Input: tập dữ liệu huấn luyện
Output: cặp key-value thống kê của mỗi giá trị loại và giá trị thuộc
tính.
Map(Object key, Text values, OutputCollector<Text,IntWritable>
output, Reporterreporter){
1) itr: =new StringTokenizer(values.toString(),”,”); /** lấy các giá
trị thuộc tính **/
2) count:=itr.countTokens(); /**số lượng thuộc tính **/
3) FOR each attributein values Do
4) EmitIntermediate(w,”1”);
}
Reduce(Text _keys, Iterator<IntWritable> values,
OutputCollector<Text,IntWritable> output,
Reporter reporter){
1) sum: =0; /**thống kê số lượng của mỗi giá trị thuộc tính**/
2) FOR eachvin valuesDO BEGIN
3) sum:+=ParseInt(v);
4) END
5) output.collect(_keys,sum); /** đặt kết quả mô hình vào một
dictionary dữ liệu**/

}
4.2.2 Giai đoạn dự đoán
Dự đoán bản ghi dữ liệu với đầu ra của mô hình huấn luyện. Việc
thực hiện thuật toán được quy định như sau: đầu tiên, sử dụng các giá trị
thống kê của các giá trị thuộc tính và thể loại để huấn luyện các bản ghi
chưa gán nhãn. Ngoài ra, sử dụng bộ nhớ cache phân tán để nâng cao
hiệu quả của thuật toán trong quá trình thực hiện thuật toán. Thực hiện
của nó được mô tả như sau:
Algorithm: Produce Testing
Bài thu hoạch môn Điện toán lưới và đám mây Trang 13
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Map(Object key,Text values,OutputCollectot<Text,DoubleWritable>
output,Reporter reporter){
1) modeltype:=new ModelType(); /**lấy mô hình từ dictionary dữ
liệu**/
2) categories: =modeltype.getCategorys(); /**truy cập thuộc
tính**/
3) data:=values.toString().split(“,”); /**lấy mỗi giá trị thuộc tính
từ bản ghi **/
4) pcts: =new double[];
5) count:=0;
6) pctsResutl:=0;
7) FOR the value of the attributenot NULL DO BEGIN
8) category:=categories[0]; /**lấy một giá trị loại từ các loại **/
9) END
10) FOR each value of the attributeDO BEGIN
11) FOR each value of the categoryDO BEGIN
12) pct: =Counter(attribute,category)/Counter(category)
13) result:=result*pct;
14) END

15) pcts[count++]=formula 2;
16) END
17) pctsResult:=the max of the pcts
18) Emit(category,pctsResult);
}
5. Phân tích thực nghiệm
Để phân tích hiệu quả của việc phân loại được thực hiện bởi các nền tảng
MapReduce, chúng tôi sử dụng các bộ dữ liệu UCI để kiểm tra kết quả. Các bộ dữ
liệu thực nghiệm được trình bày trong bảng 1.
Bảng 1. Các tập dữ liệu thí nghiệm
Các bộ dữ liệu Nguồn Số lượng mẫu Số chiều Số loại
PokerHand Robert Cattral 1000000 11 10
Adult Ronny Kohavi 32561 14 2
Abalone Sam Waugh 4177 8 28
Car Marko Bohanec 1728 6 4
Yeast Kenta Nakai 1484 8 10
Bank-data WEKA Web site 600 11 2
Vertebral Guilherme 310 6 2
Bài thu hoạch môn Điện toán lưới và đám mây Trang 14
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Wine Forina 178 13 3
Đầu tiên, tiền xử lí đối với các tập hợp dữ liệu trên phải được thực hiện, tất
cả các loại thuộc tính được chuẩn hóa các thuộc tính nominal. Sau đó, bộ phân loại
Naïve Bayes thực hiện bởi MapReduce huấn luyện dữ liệu huấn luyện để tạo ra
các mô hình phân loại và sử dụng mô hình để phân loại các mẫu đã được gỡ bỏ.
Thí nghiệm được chạy trên cụm gồm có ba máy, và kết quả được thể hiện trong
Bảng 2, so với kết quả kiểm tra của phương pháp Naïve Bayes bình thường được
thể hiện trong Bảng 3.
So sánh thí nghiệm cho thấy hiệu quả của các thuật toán được cải thiện là
cao hơn so với các phương pháp bình thường với tập dữ liệu lớn. Và điều này xác

minh chạy thuật toán Bayesian trên môi trường điện toán đám mây là hiệu quả hơn
các thuật toán Bayesian truyền thống. Tuy nhiên, do kích thước của kích thước dữ
liệu, các thuộc tính , và số lượng các loại khác nhau, thời gian mà các thuật toán
đã không được xuất hiện một mối quan hệ tuyến tính. Kể từ khi công việc đang
chạy Hadoop, bắt đầu cụm đầu tiên mà phải mất một ít thời gian, vì vậy khi kích
thước của tập dữ liệu nhỏ hơn, thời gian xử lý dữ liệu là tương đối dài. Và điều
này cũng xác nhận các Hadoop là hoàn hảo để xử lý lượng lớn dữ liệu.
Bảng 2. Kết quả của phương thức cải tiến
Bộ dữ liệu
Thời gian huấn
luyện (s)
Thời gian thử
nghiệm (s)
Wine 2 1
Vertebral 2 1
Bank-data 2 1
Yeast 2 1
Car 2 1
Abalone 2 3
Adult 4 13
PokerHand 28 660
Bảng 3. Kết quả của phương pháp thường
Bài thu hoạch môn Điện toán lưới và đám mây Trang 15
GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Vương Đức Hiền – CH1301087
Bộ dữ liệu Thời gian thử nghiệm (s)
Wine 1
Vertebral 1
Bank-data 1
Yeast 1
Car 1

Abalone 2
Adult 18
PokerHand 980
6. Kết luận
Dựa trên các giải pháp chi phí thấp mà điện toán đám mây cung cấp cho
việc khai thác dữ liệu lớn, bài viết này giới thiệu các khái niệm về điện toán đám
mây, nền tảng của Hadoop, mô hình lập trình MapReduce và thuật toán Naïve
Bayes truyền thống. Và sau đó chúng tôi đề xuất một thuật toán cải tiến của Naïve
Bayes được thực hiện bởi mô hình lập trình MapReduce. Cung cấp cho các ý
tưởng cơ bản của thuật toán được cải tiến và code chính của quá trình thực hiện.
Và sử dụng các tập dữ liệu khác nhau đặt ra để xác minh tính hiệu quả của các
thuật toán được cải tiến. Kết quả thực nghiệm cho thấy rằng với bộ dữ liệu ngày
càng tăng, các thuật toán Bayesian chạy trên môi trường điện toán đám mây là
hiệu quả hơn so với thuật toán Naïve Bayes truyền thống.
7. Tài liệu tham khảo
[1] Lijuan Zhou, Hui Wang, Wenbo Wang, “Research on Parallel Classification
Algorithms for Large-scale Data”
Bài thu hoạch môn Điện toán lưới và đám mây Trang 16

×