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

Ứng dụng mô hình học máy naivebayes trong môi trường spark cho bài toán dự báo khả năng hỏng của đĩa cứng máy tính

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.65 MB, 88 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC QUY NHƠN

VÕ CHÍ CƢỜNG

ỨNG DỤNG MƠ HÌNH HỌC MÁY NAIVE BAYES
TRÊN MƠI TRƢỜNG SPARK CHO BÀI TOÁN DỰ
BÁO KHẢ NĂNG HỎNG CỦA ĐĨA CỨNG MÁY TÍNH

Chun ngành: Khoa học máy tính
Mã số: 8480101

Ngƣời hƣớng dẫn: TS. Hồ Văn Lâm


LỜI CAM ĐOAN
Tôi xin cam đoan đề tài “Ứng dụng mơ hình học máy Nạve Bayes
trên mơi trƣờng Spark cho bài toán dự báo khả năng hỏng của đĩa cứng
máy tính” là kết quả của tự bản thân tơi tìm hiểu, nghiên cứu. Các số liệu,
dẫn chứng và tài liệu tham khảo đƣợc trích dẫn và chú thích đầy đủ. Tơi xin
chịu trách nhiệm về luận văn của mình.


LỜI CẢM ƠN
Qua quá trình học tập và thời gian nghiên cứu làm luận văn, trƣớc tiên
tôi xin gửi lời cảm ơn chân thành nhất đến các Thầy Cô giáo đã tham gia tổ
chức, chỉ đạo và trực tiếp giảng dạy trong suốt những khóa học vừa qua. Đặc
biệt, tơi xin gửi lời cảm ơn sâu sắc nhất đến Thầy giáo hƣớng dẫn TS. Hồ Văn
Lâm, ngƣời đã tận tình chỉ bảo, góp ý, giúp đỡ và tạo mọi điều kiện để tơi có
thể hồn thành luận văn.
Cũng qua đây, tôi xin gửi lời cảm ơn đến các anh chị là học viên lớp


cao học Khoa học máy tính khóa trƣớc đã giúp đỡ tơi rất nhiều trong q trình
học tập và nghiên cứu. Cuối cùng, tôi xin gửi lời cảm ơn đến gia đình và bạn
bè đã ln giúp đỡ, ủng hộ tơi trong suốt q trình học tập, nghiên cứu và
hồn thành luận văn.
Trong thời gian qua tơi đã cố gắng tập trung nghiên cứu và tìm hiểu để
hồn thành thật tốt luận văn của mình nhƣng chắc chắn cịn nhiều thiếu sót rất
mong đƣợc nhận sự chỉ bảo của các Thầy Cô giáo để luận văn đƣợc hoàn
thiện hơn.


MỤC LỤC
LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH VẼ
MỞ ĐẦU ........................................................................................................... 1
1.1 Lý do chọn đề tài................................................................................... 1
1.2 Tổng quan tình hình nghiên cứu đề tài ................................................. 2
1.3 Mục tiêu và nhiệm vụ nghiên cứu ........................................................ 3
1.4 Nhiệm vụ nghiên cứu ............................................................................ 3
1.5 Đối tƣợng và phạm vi nghiên cứu ........................................................ 4
CHƢƠNG 1: KIẾN THỨC TỔNG QUAN ................................................... 5
1.1 Giới thiệu về học máy ............................................................................... 5
1.1.1. Học máy là gì? .................................................................................. 5
1.1.2. Các thành phần của học máy ............................................................ 7
1.1.3. Phương thức hoạt động của học máy ............................................. 10
1.1.4. Ứng dụng của học máy ................................................................... 10
1.2 Mơ hình lập trình MapReduce ................................................................ 12
1.2.1 Tổng quan về mơ hình MapReduce................................................. 12

1.2.2 Ngun tắc hoạt động của mơ hình MapReduce ............................ 15
1.2.3 Một số bài tốn ứng dụng mơ hình MapReduce [6] ....................... 18
1.3 Giới thiệu về Spark ................................................................................. 18
1.3.1 Tổng quan ....................................................................................... 18
1.3.2 Thành phần của Apache Spark ....................................................... 20
1.3.3 Quản lý bộ nhớ của Apache Spark ................................................. 21
1.3.4 Ứng dụng......................................................................................... 23


v

1.4 Kết luận chƣơng 1 ................................................................................... 24
CHƢƠNG 2: THUẬT TOÁN NẠVE BAYES VÀ BÀI TỐN DỰ BÁO
KHẢ NĂNG HỎNG CỦA ĐĨA CỨNG MÁY TÍNH .................................... 25
2.1 Thuật tốn Nạve Bayes .......................................................................... 25
2.1.1. Khái niệm ........................................................................................ 25
2.1.2. Mơ hình phân lớp Nạve Bayes ....................................................... 27
2.1.3. Một số kiểu mơ hình Nạve Bayes ................................................... 28
2.1.4. Ứng dụng của thuật toán ................................................................ 29
2.2 Bài toán dự báo đĩa cứng hỏng ............................................................... 30
2.2.1 Tổng quan ....................................................................................... 30
2.2.2 Giới thiệu về S.M.A.R.T .................................................................. 31
2.2.3 Giám sát ổ đĩa cứng ........................................................................ 33
2.2.4 Naïve Bayes cho bài toán dự báo khả năng hỏng của đĩa cứng. ... 34
2.3 Nạve Bayes theo mơ hình lập trình MapReduce cho bài tốn dự báo..... 39
2.4 Thuật tốn Nạve Bayes thực hiện trên môi trƣờng Spark ....................... 41
2.5 Học máy trên môi trƣờng Spark.............................................................. 55
2.6 Kết luận chƣơng 2 ................................................................................... 57
CHƢƠNG 3: THỰC NGHIỆM ................................................................... 58
3.1 Cấu trúc dữ liệu thử nghiệm ................................................................... 58

3.2 Triển khai thực nghiệm ........................................................................... 62
3.2.1 Thực nghiệm 1................................................................................. 62
3.2.2 Thực nghiệm 2................................................................................. 68
3.3 Đánh giá thuật toán ................................................................................. 74
KẾT LUẬN ..................................................................................................... 76
1. Kết quả đạt đƣợc của luận văn .................................................................... 76
2. Kiến nghị và hƣớng nghiên cứu tiếp theo ................................................... 76
DANH MỤC TÀI LIỆU THAM KHẢO ........................................................ 78


DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Tên viết
Thuật ngữ
tắt
CSDL Cơ sở dữ liệu

Ý nghĩa
Cơ sở dữ liệu

CNTT

Công nghệ thơng tin

Cơng nghệ thơng tin

AI

Artificial Intelligence

Trí tuệ nhân tạo


RDD

Resilient Distributed DataSet

DAG

Directed Acyclic Graph

HDFS

Hadoop Distributed File System

Tập hợp các item đƣợc phân
tán trên các node.
Đồ thị khơng chu trình có
hƣớng
Hệ thống lƣu trữ tập tin của
Hadoop


DANH MỤC CÁC BẢNG
Bảng 3.1 Mô tả các thông số SMART từ thu thập dữ liệu ............................. 58
Bảng 3.2 Ví dụ tỉ lệ phần trăm của hai đĩa cứng thông qua số liệu thống kê
SMART ............................................................................................. 59
Bảng 3.3: So sánh kết quả thu đƣợc qua mơ hình thực nghiệm 1 và mơ hình
thực nghiệm 2.................................................................................... 75


DANH MỤC CÁC HÌNH VẼ

Hình 1.1 Mơ hình làm việc của một cơng việc MapReduce........................... 14
Hình 1.2. Quy trình xử lý của MapReduce [6] ............................................... 16
Hình 1.3 Tỉ lệ sử dụng ngơn ngữ lập trình trong 2 năm 2014 và 2015 .......... 19
Hình 1.4 Các thành phần của Apache Spark [11] ........................................... 20
Hình 2.1 Giai đoạn Training [3]...................................................................... 26
Hình 2.2 Giai đoạn phân loại [3]..................................................................... 26
Hình 2.3 Mơ tả tập dữ liệu theo định dạng file CSV ...................................... 35
Hình 2.4. Đọc dữ liệu. ..................................................................................... 36
Hình 2.5. Tính độ lệch chuẩn cho từng giá trị SMART. ................................ 36
Hình 2.6. Xử lý dữ liệu. .................................................................................. 37
Hình 2.7. Tính xác suất của từng biến theo phân phối Gausian ..................... 38
Hình 2.8. Dự đốn dựa vào xác suất ............................................................... 38
Hình 2.9 Giai đoạn phân loại [5]..................................................................... 42
Hình 3.1 Dữ liệu mẫu ...................................................................................... 59
Hình 3.2: Input thƣ viện và cho máy học dữ liệu training và dữ liệu test
trên mơi trƣờng Pandas. .................................................................. 60
Hình 3.3: Input thƣ viện và cho máy học dữ liệu training và dữ liệu test
trên mơi trƣờng Spark. .................................................................... 61
Hình 3.4: Tập dữ liệu kiểm tra ........................................................................ 61
Hình 3.5 Inport thƣ viện, mơi trƣờng và thuật tốn Nạve Bayes................... 62
Hình 3.6: Đọc và kiểm tra data training và data testing.................................. 63
Hình 3.7: Đếm tổng số data và số lƣợng data dự đốn lỗi ổ cứng bị thiếu. ... 63
Hình 3.8: Sắp xếp các giá trị SMART > 0. ..................................................... 63
Hình 3.9: Sắp xếp theo tổng các giá trị SMART trừ SMART 12................... 64
Hình 3.10: Sắp theo chu kỳ điện SMART 12. ................................................ 64


ix

Hình 3.11: Kết quả thu đƣợc từ đếm tổng số dữ liệu đầu vào và đếm số

lƣợng dự đoán lỗi ổ cứng bị thiếu dữ liệu....................................... 66
Hình 3.12: Kết quả thu đƣợc từ việc sắp xếp các giá trị SMART. ................. 68
Hình 3.13: Triển khai mơi trƣờng Spark bằng googlecolab ........................... 69
Hình 3.14: Import thƣ viện và mơi trƣờng spark ............................................ 69
Hình 3.15: Cho máy học training data và testing data .................................... 70
Hình 3.16: Triển khai áp dụng thuật tốn Nạve Bayes .................................. 70
Hình 3.17: Kết quả thu đƣợc từ đếm tổng số dữ liệu đầu vào và đếm số
lƣợng dự đoán lỗi ổ cứng bị thiếu dữ liệu trên Spark. .................... 72
Hình 3.18: Kết quả thu đƣợc từ việc sắp xếp các giá trị SMART trên môi
trƣờng Spark.................................................................................... 74


1

MỞ ĐẦU
1.1 Lý do chọn đề tài
Trong thế giới kỹ thuật số, cơ sở hạ tầng vật lý và thiết bị vẫn là xƣơng
sống của nhiều cơ quan, doanh nghiệp. Dự báo thiết bị hỏng từ lâu đã là mục
tiêu cho những ngƣời chịu trách nhiệm quản lý hiệu suất tài sản, những tiến
bộ trong công nghệ cảm biến, công nghệ truyền thơng, quản lý thơng tin và
phân tích hiện đang là một trong những hƣớng đi tích cực cho việc dự báo độ
hƣ hỏng của thiết bị.
Không phải tất cả các dữ liệu đều có giá trị nhƣ nhau khi nói đến việc
dự đốn thiết bị hỏng, vì vậy điều quan trọng là phải xác định dữ liệu cần thiết
để quản lý thiết bị hỏng. Dữ liệu đƣợc sử dụng bởi các cơng cụ phân tích tiên
tiến để dự đốn hƣ hỏng đó là, dịng thời gian sản xuất, điều kiện thiết bị và
dữ liệu sự kiện đƣợc sử dụng để kiểm sốt và theo dõi các quy trình vật lý.
Đầu tƣ vào khoa học dữ liệu và các kỹ năng phân tích tiên tiến với sự tập
trung vào quản lý thiết bị, dự đoán sẽ giúp hỗ trợ các nỗ lực cải tiến liên tục
cho các tổ chức cơng nghệ thơng tin, bất kể tình trạng đầu tƣ hiện tại của

doanh nghiệp, sau đó nó có thể giúp đảm bảo mỗi dự án thành công và quan
trọng hơn là xây dựng khả năng đáp ứng các yêu cầu cần thiết trong cơ quan,
doanh nghiệp. Với những tiến bộ trong các cơng cụ phân tích để dự báo thiết
bị hỏng, đó là sự khơng thể tránh khỏi rằng các tổ chức với thiết bị quan trọng
nhiệm vụ sẽ đầu tƣ và phân tích nâng cao để giúp đảm bảo hoạt động an toàn
và đáng tin cậy. Một trong những công cụ mà luận văn hƣớng đến nghiên cứu
là thuật tốn Nạve Bayes trên mơi trƣờng Spark.
Đề tài nghiên cứu “Ứng dụng mơ hình học máy Nạve Bayes trên
mơi trƣờng Spark cho bài toán dự báo khả năng hỏng của đĩa cứng máy
tính” nhằm cài đặt và ứng dụng mơ hình học máy Nạve Bayes để dự báo
việc đĩa cứng máy tính sẽ bị hỏng khi nào nhằm tránh khỏi việc bị động trong


2
việc quản lý đĩa cứng máy tính bị hƣ hỏng ngồi dự đốn của nhà quản lý. Đó
là mục tiêu then chốt để hƣớng đến nghiên cứu đề tài.
1.2 Tổng quan tình hình nghiên cứu đề tài
Nạve Bayes là một thuật toán dựa trên định luật Bayes về lý thuyết xác
suất để đƣa ra các phán đoán cũng nhƣ phân loại dữ liệu dựa trên các dữ liệu
đƣợc quan sát và thống kê. Thuật tốn Nạve Bayes đƣợc ứng dụng rất nhiều
trong lĩnh vực học máy dùng để đƣa các dự đốn chính xác nhất dựa trên một
tập dữ liệu đã đƣợc thu thập, vì nó dễ hiểu và có độ chính xác cao [8].
Định luật Bayes đƣợc phát biểu nhƣ sau:
P(A|B)=

P(B|A) P (A)
P(B)

Trong đó:
- P(A|B) là xác suất xảy ra của một sự kiện ngẫu nhiên A khi biết sự

kiện liên quan B đã xảy ra.
- P(B|A) là xác suất xảy ra B khi biết A xảy ra
- P(A) là xác suất xảy ra của riêng A mà không quan tâm đến B.
- P(B) là xác suất xảy ra của riêng B mà không quan tâm đến A.
Một số mơ hình áp dụng thuật tốn Nạve Bayes [5]
- Multinomial model (Mơ hình đa thức).
- Binary independence model (Mơ hình độc lập nhị phân).
- Poisson Naïve Bayes Model
- Connection between Poisson and Multinomial Model
- Multinomial word model
- Negative binomial Naïve Bayes Model
Để xây dựng các mơ hình này cho bài tốn dự báo việc hƣ hỏng của đĩa
cứng máy tính thì Spark là một dự án phần mềm mã nguồn mở đƣợc phát
triển bởi Apache, nhằm thu các giá trị có ích từ khối lƣợng, tốc độ và tính đa


3
dạng của dữ liệu (cấu trúc/phi cấu trúc). Ban đầu Spark đƣợc phát triển bởi
phịng thí nghiệm AMP Lab thuộc trƣờng Đại học California, Berkeley từ
năm 2009 với mục đích nhằm nâng cao tốc độ xử lý của các hệ thống
Hadoop. Sau đó nó trở thành một cơng cụ mã nguồn mở miễn phí từ năm
2010 và đƣợc chuyển giao cho Apache Software Foundation vào năm 2013.
Spark dần trở thành một trong những dự án trọng tâm của Apache Software
Foundation. Phiên bản đầu tiên đƣợc công bố vào tháng 5/2014 và phiên bản
2.0 đƣợc công bố tháng 7/2016. Phiên bản mới nhất hiện giờ (tính đến tháng
09/2020) là phiên bản 3.0.1.
Tốc độ xử lý của Spark có đƣợc do việc tính tốn đƣợc thực hiện cùng
lúc trên nhiều máy khác nhau. Đồng thời việc tính tốn đƣợc thực hiện ở bộ
nhớ trong (in-memories) hay thực hiện hoàn toàn trên RAM. Spark cho phép
xử lý dữ liệu theo thời gian thực, vừa nhận dữ liệu từ các nguồn khác nhau

đồng thời thực hiện ngay việc xử lý trên dữ liệu vừa nhận đƣợc (Spark
Streaming). Ứng dụng thuật tốn Nạve Bayes cho bài tốn dự báo đĩa cứng
hỏng trên mơi trƣờng Spark để có thể tăng tốc độ xử lý và cho ra kết quả có
độ chính xác cao từ lƣợng lớn dữ liệu đƣợc thu thập của các ổ đĩa máy tính và
đƣa ra dự báo khi nào thì ổ đĩa hỏng. Đó là hƣớng nghiên cứu cũng nhƣ mục
tiêu mà đề tài muốn hƣớng đến.
1.3 Mục tiêu và nhiệm vụ nghiên cứu
Tìm hiểu và ứng dụng thuật tốn Nạve Bayes trong việc dự báo khả
nẳng hỏng của đĩa cứng máy tính, triển khai trên nền tảng Spark. Thực
nghiệm và so sánh về tốc độ so với thuật tốn khi khơng chạy trên nền tảng
Spark.
1.4 Nhiệm vụ nghiên cứu
- Tìm hiểu thuật tốn Nạve Bayes


4
- Tìm hiểu về bài tốn dự báo đĩa cứng hỏng
- Tìm hiểu về lập trình trên mơi trƣờng Spark.
- Cài đặt thuật tốn Nạve Bayes trên mơi trƣờng Spark cho bài toán dự
báo đĩa cứng hỏng.
- Thực nghiệm và đánh giá
1.5 Đối tƣợng và phạm vi nghiên cứu
Đối tƣợng nghiên cứu:
- Thuật tốn Nạve Bayes.
- Bài tốn dự báo đĩa cứng hỏng
- Mơi trƣờng Spark.
- Phƣơng pháp lập trình thuật tốn Nạve Bayes trên mơi trƣờng Spark.
Phạm vi nghiên cứu:
- Thuật tốn Nạve Bayes theo mơ hình lập trình MapReduce và cài đặt
thuật tốn trên mơi trƣờng Spark cho bài toán dự báo đĩa cứng hỏng.



5

CHƢƠNG 1:

KIẾN THỨC TỔNG QUAN

1.1 Giới thiệu về học máy
1.1.1. Học máy là gì?
Học máy (Machine Learning) là một lĩnh vực của trí tuệ nhân tạo liên
quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống
"học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Ví dụ nhƣ các
máy có thể "học" cách phân loại thƣ điện tử xem có phải thƣ rác (spam) hay
không và tự động sắp xếp thƣ vào thƣ mục tƣơng ứng. Học máy rất gần với
suy luận thống kê (statistical inference) tuy có khác nhau về thuật ngữ.[8]
Học máy có mối liên hệ rất mật thiết với thống kê. Học máy sử dụng
các mơ hình thống kê để "ghi nhớ" lại sự phân bố của dữ liệu. Tuy nhiên,
không đơn thuần là ghi nhớ, học máy phải có khả năng tổng qt hóa những
gì đã đƣợc nhìn thấy và đƣa ra dự đốn cho những trƣờng hợp chƣa đƣợc nhìn
thấy.
Lấy ví dụ về xếp thƣ điện tử tự động nhƣ trên, một hệ thống tự động
sau khi trải qua quá trình học từ dữ liệu ("training") có thể suy diễn một số
nguyên tắc riêng (chẳng hạn nhƣ xem xét nội dung: nếu thƣ đƣợc viết bằng
tiếng Anh mà chứa một số từ nhƣ "porn", "sell", "good product" hoặc ngƣời
gửi đến từ Somalia trong khi ngƣời nhận ở Hà Nội không thân quen nhau) để
quyết định xem có phải là thƣ rác hay khơng. Tuy nhiên, nếu nhƣ trong dữ
liệu huấn luyện (training data) có ngơn ngữ khác trong thực tế (tiếng Việt thay
vì tiếng Anh) hoặc thậm chí khơng phải dạng thuần văn bản (dạng ảnh khiến
cho việc bóc tách nội dung khó hơn hoặc khơng thể) thì rất có thể máy sẽ dự

báo khơng chính xác nữa.
Một số hệ thống học máy nỗ lực loại bỏ nhu cầu trực giác của con
ngƣời trong việc phân tích dữ liệu, trong khi các hệ thống khác hƣớng đến
việc tăng sự cộng tác giữa ngƣời và máy. Khơng thể loại bỏ hồn tồn tác


6
động của con ngƣời vì các nhà thiết kế hệ thống phải chỉ định cách biểu diễn
của dữ liệu và những cơ chế nào sẽ đƣợc dùng để tìm kiếm các đặc tính của
dữ liệu. Học máy có thể đƣợc xem là một nỗ lực để tự động hóa một số hoạt
động trong phƣơng pháp khoa học.
Một số chƣơng trình có thể tự động cập nhật trong thời gian thực (ví dụ
nhƣ ngƣời sử dụng có chỉ ra rằng thƣ bị sắp xếp sai danh mục).
Dƣới góc nhìn của trí tuệ nhân tạo, động lực chính của học máy là nhu
cầu thu thập tri thức (knowledge acquisition). Trong nhiều trƣờng hợp ta cần
kiến thức chuyên gia, nhƣng kiến thức chuyên gia trong từng lĩnh vực cịn ít
(theo dõi từng trạng thái đèn tín hiệu trên thiết bị điện, phân tích sự biến động
của thị trƣờng chứng khoán, dự báo khả năng hỏng của đĩa cứng máy tính
trong một trung tâm DC, …) hoặc tìm đƣợc kiến thức chuyên gia bị chậm
trong một số nhiệm vụ cần đƣa ra quyết định nhanh chóng dựa trên xử lý dữ
liệu khổng lồ (trong mua bán chứng khoán phải quyết định trong khoảnh khắc
vài giây chẳng hạn) và thiếu ổn định thì buộc phải cần đến máy tính. Ngồi ra,
đại đa số dữ liệu đƣợc sinh ra ngày nay chỉ phù hợp cho máy đọc (computer
readable) tiềm tàng nguồn kiến thức quan trọng. Học máy nghiên cứu cách
thức để mơ hình hóa bài tốn cho phép máy tính tự động hiểu, xử lý và học từ
dữ liệu để thực thi nhiệm vụ đƣợc giao cũng nhƣ cách đánh giá giúp tăng tính
hiệu quả.
Hiện nay, học máy đang là lĩnh vực cho thấy sự tiến bộ trong tiến trình
của trí tuệ nhân tạo (AI) và có khả năng làm cho máy móc trở nên thơng minh
hơn. Học máy còn đƣợc áp dụng rộng rãi bao gồm máy truy tìm dữ liệu,

chuẩn đốn y khoa, phát hiện thẻ tín dụng giả, phân tích thị trƣờng chứng
khốn, phân loại các chuỗi ADN, nhận dạng tiếng nói và chữ viết, dịch tự
động, chơi trò chơi và cử động rô-bốt (robot locomotion).


7
Những năm gần đây, khi mà khả năng tính tốn của các máy tính đƣợc
nâng lên một tầm cao mới và lƣợng dữ liệu khổng lồ đƣợc thu thập bởi các
hãng công nghệ lớn, học máy đã tiến thêm một bƣớc dài và một lĩnh vực mới
đƣợc ra đời gọi là học sâu (Deep Learning). Nó đã giúp máy tính thực thi
những việc tƣởng chừng nhƣ không thể vào 10 năm trƣớc: phân loại cả ngàn
vật thể khác nhau trong các bức ảnh, tự tạo chú thích cho ảnh, bắt chƣớc
giọng nói và chữ viết của con ngƣời, giao tiếp với con ngƣời, hay thậm chí cả
sáng tác văn hay âm nhạc.[8]
1.1.2. Các thành phần của học máy
Học có giám sát (Supervised learning)
Q trình học có giám sát thực tế là chuyển dữ liệu đầu vào thành đầu
ra theo mong muốn. Trong các thuật toán học máy đầu vào đƣợc gọi là Input
và đầu ra là một kết quả tƣơng ứng đƣợc gán “nhãn” trƣớc trong tập dữ liệu
huấn luyện. Điểm cần quan tâm ở đây chính là mọi mẫu dữ liệu trong tập dữ
liệu huấn luyện cần phải biết trƣớc “nhãn” của nó.
Học có giám sát là một kĩ thuật của ngành học máy để xây dựng một
hàm (function) từ dữ liệu huấn luyện. Dữ liệu huấn luyện bao gồm các cặp
gồm đối tƣợng đầu vào (thƣờng dạng vec-tơ), và đầu ra mong muốn. Đầu ra
của một hàm có thể là một giá trị liên tục (gọi là hồi qui), hay có thể là dự
đốn một nhãn phân loại cho một đối tƣợng đầu vào (gọi là phân loại). Nhiệm
vụ của học có giám sát là dự đốn giá trị của hàm cho một đối tƣợng bất kì là
đầu vào hợp lệ, sau khi đã xem xét một số ví dụ huấn luyện (nghĩa là, các cặp
đầu vào và đầu ra tƣơng ứng). Để đạt đƣợc điều này, chƣơng trình học phải
tổng qt hóa từ các dữ liệu sẵn có để dự đốn đƣợc những tình huống chƣa

gặp phải theo một cách "hợp lý"
Học có giám sát có thể tạo ra hai loại mơ hình. Phổ biến nhất, học có
giám sát tạo ra một mơ hình tồn cục (global model) để ánh xạ đối tƣợng đầu


8
vào đến đầu ra mong muốn. Tuy nhiên, trong một số trƣờng hợp, việc ánh xạ
đƣợc thực hiện dƣới dạng một tập các mơ hình cục bộ (nhƣ trong phƣơng
pháp lập luận theo tình huống (case-based reasoning) hay giải thuật láng
giềng gần nhất).
Học khơng giám sát (Unsupervised Learning)
Trong thuật tốn này, chúng ta không biết trƣớc kết quả hay đƣợc gắn
nhãn trƣớc mà chỉ có dữ liệu đầu vào. Nó đƣợc sử dụng nhiều trong việc
khám phá cấu trúc và mối quan hệ của dữ liệu. Thuật toán học máy không
giám sát sẽ dựa vào cấu trúc của dữ liệu để thực hiện một cơng việc nào đó, ví
dụ nhƣ phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension
reduction) để thuận tiện trong việc lƣu trữ và tính tốn.
Một cách tốn học, học máy khơng giám sát là khi chúng ta chỉ có dữ
liệu vào X mà khơng biết nhãn Y tƣơng ứng.
Những thuật toán loại này đƣợc gọi là học máy khơng giám sát vì
khơng giống nhƣ học máy có giám sát, chúng ta khơng biết câu trả lời chính
xác cho mỗi dữ liệu đầu vào. Giống nhƣ khi ta học, khơng có thầy cơ giáo nào
chỉ cho ta biết đó là chữ A hay chữ B. Cụm không giám sát đƣợc đặt tên theo
nghĩa này.
Các bài tốn học máy khơng giám sát đƣợc tiếp tục chia nhỏ thành hai
loại:
Bài toán phân cụm (Clustering)
Một bài toán phân cụm tồn bộ dữ liệu X thành các nhóm nhỏ dựa trên
sự liên quan giữa các dữ liệu trong mỗi nhóm. Ví dụ: phân nhóm khách hàng
dựa trên hành vi mua hàng. Điều này cũng giống nhƣ việc ta đƣa cho một đứa

trẻ rất nhiều mảnh ghép với các hình thù và màu sắc khác nhau, ví dụ hình
tam giác, hình vng, hình trịn với màu xanh và đỏ, sau đó yêu cầu trẻ phân
chúng thành từng nhóm. Mặc dù không cho trẻ biết mảnh nào tƣơng ứng với


9
hình nào hoặc màu nào, nhiều khả năng chúng vẫn có thể phân loại các mảnh
ghép theo màu hoặc hình dạng.
Bài toán ràng buộc (Association)
Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều
dữ liệu cho trƣớc. Ví dụ: những khách hàng nam mua quần áo thƣờng có xu
hƣớng mua thêm đồng hồ hoặc thắt lƣng; những khán giả xem phim Spider
Man thƣờng có xu hƣớng xem thêm phim Bat Man, dựa vào đó tạo ra một hệ
thống gợi ý khách hàng (Recommendation System), thúc đẩy nhu cầu mua
sắm.
Học bán giám sát (Semi - Supervised learning)
Các bài tốn khi chúng ta có một lƣợng lớn dữ liệu X nhƣng chỉ một
phần trong chúng đƣợc gán nhãn đƣợc gọi là học bán giám sát (SemiSupervised Learning). Những bài tốn thuộc nhóm này nằm giữa hai nhóm
học có giám sát (Supervised learning) và học khơng có giám sát
(Unsupervised Learning).
Một ví dụ điển hình của nhóm này là chỉ có một phần ảnh hoặc văn bản
đƣợc gán nhãn (ví dụ bức ảnh về ngƣời, động vật hoặc các văn bản khoa học,
chính trị) và phần lớn các bức ảnh/văn bản khác chƣa đƣợc gán nhãn đƣợc thu
thập từ Internet. Thực tế cho thấy rất nhiều các bài tốn Học máy thuộc vào
nhóm này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian và có chi phí
cao. Rất nhiều loại dữ liệu thậm chí cần phải có chuyên gia mới gán nhãn
đƣợc (ảnh y học chẳng hạn). Ngƣợc lại, dữ liệu chƣa có nhãn có thể đƣợc thu
thập với chi phí thấp từ Internet.
Học củng cố (Reinforcement Learning)
Học củng cố (Reinforcement learning) là các bài toán giúp cho một hệ

thống tự động xác định hành vi dựa trên hoàn cảnh để đạt đƣợc lợi ích cao
nhất (maximizing the performance). Hiện tại, học củng cố (Reinforcement


10
learning) chủ yếu đƣợc áp dụng vào Lý Thuyết Trò Chơi (Game Theory), các
thuật toán cần xác định nƣớc đi tiếp theo để đạt đƣợc điểm số cao nhất.
1.1.3. Phương thức hoạt động của học máy
Từ một thuật toán để có thể cho ra kết quả nhƣ mong muốn từ một tập
dữ liệu ban đầu ta cần một quá trình huấn luyện sử dụng các dữ liệu huấn
luyện. Nó chính là kinh nghiệm mà ta dạy cho máy.
Một tập dữ liệu huấn luyện bao gồm nhiều mẫu huấn luyện. Mỗi mẫu
huấn luyện sẽ là một thể hiện của bài toán (có đầu vào và lời giải). Học máy
sẽ học từ các thể hiện đó để tìm ra lời giải phù hợp với từng đầu vào mới. Nó
giống nhƣ là bạn dạy 1 đứa trẻ cách ném 1 quả bóng; bạn sẽ ném quả bóng
vài lần cho đứa trẻ quan sát; Sau đó đứa trẻ sẽ bắt đầu học để tự ném quả
bóng [12].
Các ví dụ trong tập huấn luyện thƣờng có một tập thuộc tính/đặc trƣng
cố định. Đó là những thể hiện để mơ tả về đối tƣợng đó.
1.1.4. Ứng dụng của học máy
Hiện nay học máy đã đƣợc ứng dụng mạnh mẽ trong hầu hết các lĩnh
vực nhƣ: Nghiên cứu, y tế, xã hội, dự đoán …v.v. Một số những ứng dụng
thành công và đƣợc nhiều ngƣời biết đến nhƣ:
Khai phá dữ liệu thông qua các ứng dụng trong các mạng xã hội
Học máy đang đƣợc sử dụng trong một loạt các ứng dụng ngày nay.
Một trong những ví dụ nổi tiếng nhất là Facebook News Feed. Nguồn cấp tin
tức sử dụng học máy để cá nhân hóa từng nguồn cấp dữ liệu thành viên.
Nếu một thành viên thƣờng xuyên dừng lại để đọc hoặc thích một bài
đăng của một ngƣời bạn cụ thể, Facebook News Feed sẽ bắt đầu hiển thị
nhiều hơn về hoạt động của ngƣời bạn đó trƣớc đó trong nguồn cấp dữ liệu.

Đằng sau hệ thống ấy, phần mềm sử dụng phân tích thống kê và phân
tích dự đốn để xác định các mẫu trong dữ liệu ngƣời dùng và sử dụng các


11
mẫu đó để điền vào Facebook News Feed. Nếu thành viên khơng cịn dừng lại
để đọc, thích hoặc bình luận trên các bài đăng của bạn bè, dữ liệu mới đó sẽ
đƣợc bao gồm trong tập dữ liệu và Facebook News Feed sẽ điều chỉnh tƣơng
ứng.
Không chỉ riêng Facebook News Feed, ta có thể bắt gặp những tính
năng tƣơng tự đó qua các mạng xã hội khác nhƣ Google, Instagram, ...[12].
Xử lý hình ảnh
Nhận dạng hình ảnh là một trong những ví dụ về học máy và trí tuệ
nhân tạo phổ biến nhất. Về cơ bản, nó là một cách tiếp cận để xác định và
phát hiện các đặc trƣng của một đối tƣợng trong hình ảnh kỹ thuật số. Hơn
nữa, kỹ thuật này có thể đƣợc sử dụng để phân tích sâu hơn, chẳng hạn nhƣ
nhận dạng mẫu, nhận diện hình khn, nhận dạng khn mặt, nhận dạng ký
tự quang học và nhiều hơn nữa, ...
Trò chơi điện tử và robot
Trò chơi điện tử (Video games) và robot (Robotics) là lĩnh vực lớn có
sự góp mặt của học máy. Nếu ta có một nhân vật cần di chuyển và tránh các
chƣớng ngại vật trong game. Học máy có thể học và giải quyết công việc này
thay bạn. Một kỹ thuật phổ biến đƣợc áp dụng trong trƣờng hợp này là Học
tăng cƣờng (Reinforcement learning). Ở đó, máy sẽ học tăng cƣờng với mục
tiêu là giải quyết nhiệm vụ trên. Học tăng cƣờng là tiêu cực nếu nó va phải
chƣớng ngại vật, là tích cực nếu nó chạm tới đích.
Một thành tựu gần đây nhất là cỗ máy Alpha Go của Google DeepMind
đã đánh bại kỳ thủ cờ vậy số 1 thế giới. Trong khi cờ vây là một trò chơi có
khơng gian trạng thái cực kỳ lớn.
Phân tích văn bản



12
Phân tích văn bản (Text analysis) là cơng việc trích xuất hoặc phân loại
thông tin từ văn bản. Các văn bản ở đây có thể là các facebook posts, emails,
các đoạn chat, tài liệu, … Một số ví dụ phổ biến là:
Lọc spam (Spam filtering), là một trong những ứng dụng phân loại văn
bản đƣợc biết đến và sử dụng nhiều nhất. Ở đây, phân loại văn bản là xác định
chủ đề cho một văn bản. Bộ lọc spam sẽ học cách phân loại một email có phải
thƣ rác (spam) không dựa trên nội dung và tiêu đề của email.
Phân tích ngữ nghĩa (Sentiment Analysis), học cách phân loại một ý
kiến là tích cực, trung tính hay tiêu cực dựa trên nội dung văn bản của ngƣời
viết.
Khai thác thông tin (Information Extraction), từ một văn bản, học cách
để trích xuất các thơng tin hữu ích. Chẳng hạn nhƣ trích xuất địa chỉ, tên
ngƣời, từ khóa, …
1.2 Mơ hình lập trình MapReduce
1.2.1

Tổng quan về mơ hình MapReduce

MapReduce là một mơ hình lập trình (programming model), lần đầu
đƣợc giới thiệu trong bài báo của Jefferey Dean và Sanjay Ghemawat ở hội
nghị OSDI, năm 2004 ([6]). MapReduce chỉ là một mơ hình hay là một
framework để ngƣời lập trình xây dựng chƣơng trình. Để thực hiện chƣơng
trình theo mơ hình MapReduce thì cần có một nền tảng hay một cách triển
khai (implementation) cụ thể. Google có một nền tảng của MapReduce bằng
C++. Apache có Hadoop, một hiện thực mã nguồn mở khác trên Java (ngƣời
dùng dùng Hadoop qua một Java interface).
MapReduce là quy trình giúp xử lý tập hợp dữ liệu lớn đặt tại các máy

tính phân tán, có thể xử lý đƣợc dữ liệu khơng cấu trúc và dữ liệu có cấu trúc.
Trong MapReduce, các máy tính chứa dữ liệu đơn lẻ đƣợc gọi là các nút
(node).


13
Đơn giản thì MapReduce là một cách tiếp cận chia để trị, tức là chia
vấn đề lớn thành các vấn đề nhỏ, xử lý song song từng vấn đề nhỏ và tổng
hợp kết quả lại. Để thực hiện đƣợc công việc, mơ hình MapReduce chia cơng
việc thành hai phần chính là map và reduce. Trong đó, hàm map thƣờng rút
trích thông tin cần thiết các từng phần tử, qua một bƣớc trung gian để trộn và
sắp xếp lại kết quả, sau đó tại hàm reduce thì tổng hợp kết quả trung gian và
tính ra kết quả cuối cùng.
Ví dụ, trong bài toán đếm số lần xuất hiện của từng từ trong văn bản
(wordCount), công việc chủ yếu là đếm số lần xuất hiện của từng từ trong văn
bản. Công việc nhƣ vậy thì có thể phân chia thành hai phần nhƣ sau:
Mapper
• Đầu vào: Một dịng của văn bản
• Đầu ra: key: từ, value: 1

Reducer
• Đầu vào: key: từ, values: tập hợp các giá trị đếm đƣợc của mỗi từ
• Đầu ra: key: từ, value: tổng

Dữ liệu là văn bản, đƣợc chia thành nhiều dòng khác nhau, lƣu trữ ở
nhiều nơi khác nhau. Hàm map chạy song song tạo ra các giá trị trung gian
khác nhau từ tập dữ liệu khác nhau. Hàm reduce cũng chạy song song, mỗi
hàm reducer xử lý một tập khóa khác nhau. Tất cả các giá trị đƣợc xử lý một
cách độc lập. Và giai đoạn reduce chỉ bắt đầu khi giai đoạn map kết thúc.



14

Hình 1.1 Mơ hình làm việc của một cơng việc MapReduce

MapRedue định nghĩa dữ liệu (cấu trúc và không cấu trúc) dƣới dạng cặp
khóa/giá trị (key/value). Ví dụ, key có thể là tên của tập tin (file) và value nội
dung của tập tin, hoặc key là địa chỉ URL và value là nội dung của URL, …
Việc định nghĩa dữ liệu thành cặp key/value này linh hoạt hơn các bảng dữ
liệu quan hệ 2 chiều truyền thống (quan hệ cha – con hay cịn gọi là khóa
chính – khóa phụ).
Để xử lý khối dữ liệu này, lập trình viên viết hai hàm map và reduce.
Hàm map có input là một cặp (k1, v1) và output là một danh sách các cặp (k2,
v2). Chú ý rằng các input và output, keys và values có thể thuộc về các kiểu
dữ liệu khác nhau.
Nhƣ vập hàm map có thể đƣợc viết một cách hình thức nhƣ sau:
map (k1, v1) -> list (k2, v2)
MapReduce sẽ áp dụng hàm map (mà ngƣời dùng viết) vào từng cặp
(key, value) trong khối dữ liệu đầu vào, chạy cùng lúc nhiều cặp của hàm


15
map song song với nhau trên các máy tính của cụm (cluster). Sau giai đoạn
này thì chúng ta có một tập hợp rất nhiều cặp (key, value) thuộc kiểu (k2, v2)
gọi là các cặp (key, value) trung gian. MapReduce cũng sẽ nhóm các cặp này
theo từng key, nhƣ vậy các cặp (key, value) trung gian có cùng k2 sẽ nằm
cùng một nhóm trung gian.
Giai đoạn hai MapReduce sẽ áp dụng hàm reduce (mà ngƣời dùng viết)
vào từng nhóm trung gian. Một cách hình thức, hàm này có thể mơ tả nhƣ
sau:

reduce (k2, list (v2)) -> list (v3)
Trong đó k2 là key chung của nhóm trung gian, list(v2) là tập các values
trong nhóm, và list(v3) là một danh sách các giá trị trả về của reduce thuộc
kiểu dữ liệu v3.
Do reduce đƣợc áp dụng vào nhiều nhóm trung gian độc lập với nhau,
nên chúng lại một lần nữa có thể đƣợc chạy song song với nhau nêm rút ngắn
đƣợc thời gian về mặt tính tốn.
1.2.2

Ngun tắc hoạt động của mơ hình MapReduce


16

Hình 1.2. Quy trình xử lý của MapReduce [6]

MapReduce đƣợc xây dựng từ mơ hình lập trình hàm và lập trình song
song. Tăng tốc độ thực thi xử lý dữ liệu là mục đích quan trọng nhất của
MapReduce. Quy trình này gồm 2 phần:
- Map: Bắt đầu từ nút chủ (master node), công việc đƣợc chia nhỏ ra
thành các công việc với phạm vi nhỏ hơn, gọi là các split 0, split 1, split 2 …
- Reduce: Từ các đầu ra trung gian sẽ tổng hợp lại để đƣa ra các kết
quả cuối cùng.
(1): Thƣ viện MapReduce mà chƣơng trình ngƣời dùng (User Program)
sử dụng chia các tập tin đầu vào (dữ liệu cần xử lý) thành các phần nhỏ. Dung
lƣợng mỗi phần từ 16 MB đến 64 MB. Sau đó sao chép chƣơng trình thành
các tiến trình song song chạy trên các máy tính phân tán chứa dữ liệu.
(2): Chƣơng trình điều khiển Master sẽ gán mỗi phần dữ liệu cho một
hàm Map và một hàm Reduce.



×