Ận vĂn thẠc sĨ cÔng nghỆ thÔng tin

81
ĐẠI HC QUC GIA HÀ NI TRƯỜNG ĐẠI HC CÔNG NGHHOÀNG ANH DŨNG PHÂN TÍCH HÀNH VI SDNG DCH VVIN THÔNG CA KHÁCH HÀNG DA TRÊN THUT TOÁN PHÂN CỤM ĐƯA RA CHÍNH SÁCH KHUYN MI VSN PHM VÀ THEO PHÂN KHÚC KHÁCH HÀNG Ngành: Công NghThông Tin Chuyên ngành: Khoa Hc Máy Tính Mã S: 8480101.01 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DN KHOA HC: TS. TRN TRÚC MAI TS. NGUYỄN ĐÌNH HÓA Hà ni 2020

Upload: others

Post on 03-Nov-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

HOÀNG ANH DŨNG

PHÂN TÍCH HÀNH VI SỬ DỤNG DỊCH VỤ VIỄN THÔNG

CỦA KHÁCH HÀNG DỰA TRÊN

THUẬT TOÁN PHÂN CỤM ĐƯA RA CHÍNH SÁCH

KHUYẾN MẠI VỀ SẢN PHẨM VÀ THEO PHÂN KHÚC

KHÁCH HÀNG

Ngành: Công Nghệ Thông Tin

Chuyên ngành: Khoa Học Máy Tính

Mã Số: 8480101.01

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. TRẦN TRÚC MAI

TS. NGUYỄN ĐÌNH HÓA

Hà nội – 2020

Page 2: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

2

LỜI CẢM ƠN

Trước tiên tôi xin dành lời cảm ơn chân thành và sâu sắc đến thầy giáo,

TS Trần Trúc Mai, người đã định hướng về mục tiêu và cách thức thực hiện đề

tài. TS Nguyễn Đình Hóa – người đã hướng dẫn, khuyến khích, chỉ bảo và tạo

cho tôi những điều kiện tốt nhất từ khi bắt đầu cho tới khi hoàn thành nhiệm

vụ và đề tài của mình.

Tôi xin dành lời cảm ơn chân thành tới các thầy cô giáo khoa Công nghệ

thông tin, trường Đại học Công nghệ, ĐHQGHN đã tận tình đào tạo, cung cấp

cho tôi những kiến thức vô cùng quý giá và đã tạo điều kiện tốt nhất cho tôi

trong suốt quá trình học tập, nghiên cứu tại trường.

Đồng thời tôi xin cảm ơn tất cả những người thân yêu trong gia đình tôi

cùng toàn thể bạn bè những người đã luôn giúp đỡ, động viên tôi những khi

vấp phải những khó khăn, bế tắc.

Cuối cùng, tôi xin chân thành cảm ơn các đồng nghiệp của tôi tại Trung

Tâm Phân Tích Dữ Liệu – Viettel, đã giúp đỡ, tạo điều kiện thuận lợi cho tôi

học tập và nghiên cứu chương trình thạc sĩ tại Đại học Công nghệ, Đại học

Quốc Gia Hà Nội.

Page 3: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

3

LỜI CAM ĐOAN

Tôi xin cam đoan rằng luận văn thạc sĩ công nghệ thông tin “PHÂN

TÍCH HÀNH VI SỬ DỤNG DỊCH VỤ VIỄN THÔNG CỦA KHÁCH

HÀNG DỰA TRÊN THUẬT TOÁN PHÂN CỤM ĐƯA RA CHÍNH

SÁCH KHUYẾN MẠI VỀ SẢN PHẨM VÀ THEO PHÂN KHÚC

KHÁCH HÀNG” là công trình nghiên cứu của riêng tôi, không sao chép lại

của người khác. Trong toàn bộ nội dung của luận văn, những điều đã được

trình bày hoặc là của chính cá nhân tôi hoặc là được tổng hợp từ nhiều nguồn

tài liệu. Tất cả các nguồn tài liệu tham khảo đều có xuất xứ rõ ràng và hợp

pháp.

Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo

quy định cho lời cam đoan này.

Hà Nội, ngày …. tháng … năm …..

…..

Page 4: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

4

Mục Lục

LỜI CẢM ƠN ....................................................................................................................... 2

LỜI CAM ĐOAN ................................................................................................................. 3

Chương 1: Giới thiệu ....................................................................................................... 7

Chương 2: Công cụ, nền tảng, thuật toán sử dụng và ứng dụng Phân tích dữ liệu .......... 9

2.1. Các công cụ nền tảng .............................................................................................. 9

2.1.1. Big Data ......................................................................................................... 9

2.1.2. Giới thiệu về Hadoop ................................................................................... 13

2.1.3. Các ứng dụng trên nền tảng Apache Hadoop .............................................. 14

2.1.4. HDFS ........................................................................................................... 16

2.1.5. Đọc ghi dữ liệu trên HDFS .......................................................................... 17

2.1.6. Map-Reduce ................................................................................................. 19

2.1.7. SPARK, nền tảng công cụ và ứng dụng ...................................................... 20

2.2. Giới thiệu về học máy ........................................................................................... 26

2.2.1. Một số khái niệm cơ bản .............................................................................. 27

2.2.2. Các vấn đề trong quá trình thực hiện đề tài ................................................. 30

Chương 3: Spark và giải thuật rừng ngẫu nhiên song song (Parallel Random Forest -

PRF) ..................................................................................................................... 32

3.1. Thuật toán rừng ngẫu nhiên .................................................................................. 33

3.2. Giải thuật xử lý song song rừng ngẫu nhiên cho dữ liệu lớn trong nền tảng Spark ..

............................................................................................................................... 36

3.2.1. Tối ưu hóa xử lý dữ liệu đồng thời. ............................................................. 37

3.2.2. Tối ưu hóa xử lý tiến trình đồng thời ........................................................... 44

3.2.3. Phân tích phương pháp xử lý task đồng thời ............................................... 49

3.3. Kmeans, tối ưu hóa xử lý Kmeans với Spark. ...................................................... 52

Chương 4: Triển khai thực nghiệm ................................................................................ 57

4.1. Cơ sở dữ liệu Khách hàng 360 độ ......................................................................... 57

4.2. Mô hình ứng dụng ................................................................................................. 60

4.2.1. Quá trình Phân cụm dữ liệu huấn luyện: ..................................................... 63

4.2.2. Lựa chọn ngẫu nhiên các thuộc tính và đánh giá: ........................................ 67

4.2.3. Thực hiện huấn luyện dữ liệu với mô hình Parallel RandomForest ............ 67

4.3. Đánh giá hiệu suất: ................................................................................................ 73

4.3.1. Đánh giá thời gian xử lý với nhóm dữ liệu .................................................. 73

4.3.2. Đánh giá thời gian xử lý với từng cụm ........................................................ 73

4.4. Đánh giá hiệu quả thực tế: .................................................................................... 74

KẾT LUẬN VÀ ĐỊNH HƯỚNG NGHIÊN CỨU TIẾP THEO ........................................ 77

TÀI LIỆU THAM KHẢO ................................................................................................... 80

Page 5: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

5

DANH MỤC HÌNH VẼ

Hình 2.1. Kiến trúc HDFS .............................................................................. 16

Hình 2.2. Luồng đọc dữ liệu trên HDFS ........................................................ 18

Hình 2.3. Luồng ghi dữ liệu trên HDFS ......................................................... 18

Hình 2.4. Mô hình Map-Reduce...................................................................... 19

Hình 2.5. Cơ chế Map-Reduce ........................................................................ 20

Hình 2.6. thành phần của Spark ..................................................................... 22

Hình 2.7. Cơ chế hoạt động của Spark ........................................................... 23

Hình 2.8. Cơ chế hoạt động của Spark và RDD ............................................. 25

Hình 2.9. Zeppelin và phương thức hoạt động ............................................... 26

Hình 2.10. Mô hình học có giám sát ............................................................... 28

Hình 2.11. Mô hình học bán giám sát ............................................................ 30

Hình 3.1. Đồ thị vòng DAG được hình thành khi xử lý dữ liệu song song trên

Spark UI. ......................................................................................................... 32

Hình 3.2. Quá trình xây dựng thuật toán rừng ngẫu nhiên RandomForest ... 34

Hình 3.3. Quá trình phân chia dữ liệu theo chiều dọc của các RDDs trong

Spark ............................................................................................................... 38

Hình 3.4. Quá trình xử lý ghép dữ liệu đồng thời của PRF ........................... 40

Hình 3.5. Ví dụ về 3 kịch bản khi phân chia dữ liệu....................................... 42

Hình 3.6. Ví dụ của task DAG cho một cây quyết định của PRF ................... 46

Hình 3.7. Hình dạng cụm dữ liệu được khám phá bởi k-means ..................... 53

Hình 3.8. Thuật toán Kmeans trong Spark ..................................................... 54

Hình 4.1. Quá trình kết hợp K-Means và RandomForest .............................. 60

Hình 4.2. Tỷ lệ độ đo theo ROC của các tập train, test và validation ........... 69

Hình 4.3. Important Feataures v1 .................................................................. 70

Hình 4.4. ROC - Receiver operating characteristic ....................................... 71

Hình 4.5. Cumulative Gain ............................................................................. 71

Hình 4.6. Tỷ lệ độ chính xác trung bình của các mô hình cây khác ............... 72

Hình 4.7. Phương pháp đo lường kết quả trong thực tế ................................. 74

Hình 4.8. So sánh tỷ lệ triển khai thực tế TG và MHO .................................. 75

Hình 4.9. So sánh tỷ lệ triển khai thực tế MHO và HO .................................. 76

Page 6: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

6

DANH MỤC BẢNG

Bảng 3-1: Ví dụ về DSI của PRF .................................................................... 40

Bảng 4-1: Danh mục thuộc tính đánh giá xây dựng C360 ............................. 59

Bảng 4-2: Danh mục thuộc tính được sử dụng ............................................... 63

Bảng 4-3: Giá trị DaviesBouldin .................................................................... 64

Bảng 4-4: Kết quả phân cụm .......................................................................... 64

Bảng 4-5: Phân nhóm khách hàng trên 40 tuổi và dưới 40 tuổi ..................... 66

Bảng 4-6: So sánh tỷ lệ Accuracy giữa Precision, Recall .............................. 69

Bảng 4-7: So sánh thời gian chạy giữa KNN và PRF. ................................... 70

Page 7: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

7

Chương 1: Giới thiệu

Trong thời đại ngày nay, để phát triển một doanh nghiệp, ngoài vốn và

nhân lực, “dữ liệu” (data) được coi là nguồn lực không thể thiếu được. Ai cũng

đã từng ngạc nhiên nhận thấy khi mua sắm trực tuyến trên các trang thương

mại điện tử như eBay, Amazon, Sendo hay Tiki, các trang thương mại điện tử

sẽ gợi ý một loạt các sản phẩm có liên quan và phù hợp với nhu cầu của bạn.

Ví dụ khi xem điện thoại, trang mua sắm trực tuyến sẽ gợi ý cho bạn mua thêm

ốp lưng, pin dự phòng; hoặc khi mua áo thun thì sẽ có thêm gợi ý quần jean và

thắt lưng…

Bí ẩn đằng sau các trang web thông minh này là mọi sự chào mời sản

phẩm đều dựa trên các nghiên cứu về sở thích, thói quen của khách hàng cũng

như phân loại được các nhóm khách hàng khác nhau... Vậy những thông tin để

phân tích này có được từ đâu và có tác động thế nào đến việc sản xuất kinh

doanh của doanh nghiệp? Thứ nhất, dữ liệu khổng lồ về khách hàng có thể có

từ các thông tin mà các doanh nghiệp thu thập trong lúc khách hàng ghé thăm,

tương tác hay mua sắm trên website của mình; dữ liệu này cũng có thể được

mua lại từ các công ty chuyên cung cấp dữ liệu khách hàng. Các thông tin này

không chỉ giúp nhà cung ứng hàng hóa, dịch vụ tăng lợi nhuận cho chính họ

mà còn tăng trải nghiệm mua sắm của người dùng. Một mặt, nhờ quá trình tìm

hiểu, phân tích khách hàng, doanh nghiệp có thể tạo ra các sản phẩm đáp ứng

nhu cầu của khách hàng, cũng như xây dựng chính sách phân phối và bán sản

phẩm đến tay người tiêu dùng một cách có hiệu quả nhất. Mặt khác, bản thân

người tiêu dùng có thể tiết kiệm thời gian và yên tâm trong trải nghiệm mua

sắm của mình. Hơn thế nữa, ở tầm ngành và vĩ mô, ứng dụng dữ liệu lớn (Big

Data) có thể giúp các tổ chức và chính phủ dự đoán được tỉ lệ thất nghiệp, xu

hướng nghề nghiệp của tương lai để đầu tư cho những hạng mục đó, hoặc cắt

giảm chi tiêu, kích thích tăng trưởng kinh tế... thậm chí là ra phương án phòng

ngừa trước một dịch bệnh nào đó.

Việc xây dựng và ứng dụng nền tảng Big Data nếu được khai thác hiệu

quả sẽ đem lại những lợi thế cạnh tranh và hiệu quả to lớn trong nhiều lĩnh vực,

đặc biệt trong bối cảnh thị trường dịch vụ tài chính đang bão hòa, trên cơ sở đó

phân tích những ứng dụng của Big Data và các điều kiện nhằm ứng dụng Big

Data cùng với phân tích dữ liệu để sử dụng nguồn tài nguyên hợp lý và tối đa

hóa doanh thu cũng như đưa các mục tiêu kinh doanh gắn liền với hành vi

Page 8: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

8

khách hàng, nhằm mang lại cho doanh nghiệp phương án kinh doanh hiệu quả

nhất.

Việc sử dụng và khai thác dữ liệu lớn như một nguồn tài nguyên tương

tự như dầu khí, hay các nguồn tài nguyên khác là phương án để đưa doanh

nghiệp tiếp cận đến người dùng một cách hiệu quả nhất, kết hợp với mục tiêu

kinh doanh để hoàn thiện hơn các chính sách, tối đa hóa lợi ích cho người dùng

và tăng trưởng doanh thu bền vững cho doanh nghiệp.

Với đề tài “Phân Tích Hành Vi Sử Dụng Dịch Vụ Viễn Thông

Của Khách Hàng Dựa Trên Thuật Toán Phân Cụm Đưa Ra Chính

Sách Khuyến Mại Về Sản Phẩm Và Theo Phân Khúc Khách Hàng”

nhằm mục tiêu đưa ứng dụng Phân tích dữ liệu lớn vào khai thác nguồn tài

nguyên đặc biệt – Big Data. Sử dụng các công cụ khai thác Big Data, các công

cụ được sử dụng để lưu trữ và vận hành hệ thống Big Data - Hadoop, các công

cụ xử lý học máy, xử lý dữ liệu lớn như Spark, Zeppelin (Spark ML), ứng dụng

hệ khuyến nghị, học máy và các kỹ thuật phân tích hành vi khách hàng nhằm

đưa ra kết quả phù hợp nhất với từng nhóm đối tượng khách hàng sử dụng dịch

vụ.

Phần còn lại của luận văn được trình bày theo cấu trúc như sau.

Chương 2 trình bày các khái niệm cơ bản phục vụ cho nghiên cứu của

đề tài, Big Data, các công cụ được sử dụng trong quá trình thực hiện đề tài,

phương thức xây dựng hệ cơ sở dữ liệu khách hàng 360 – là bộ khung dữ liệu

sử dụng xuyên suốt quá trình xây dựng các mô hình học máy và sử dụng để

đánh giá các mô hình học máy, các thuật toán sẽ sử dụng trong quá trình thực

hiện. Tính ứng dụng khi sử dụng thư viện Spark ML và các điểm ưu việt của

Spark khi sử dụng để xây dựng và ứng dụng cho giải thuật rừng ngẫu nhiên

song song.

Chương 3 sẽ trình bày về quá trình thực hiện, các phiên bản xây dựng

mô hình và kết quả thực nghiệm.

Cuối cùng sẽ là phần kết luận, ý nghĩa phương pháp triển khai, các kết

quả đạt được và định hướng nghiên cứu tiếp theo.

Page 9: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

9

Chương 2: Công cụ, nền tảng, thuật toán sử dụng

và ứng dụng Phân tích dữ liệu

2.1. Các công cụ nền tảng

Với sự xuất hiện liên tục của nhiều phương thức phổ biến thông tin mới,

cùng sự gia tăng của công nghệ điện toán đám mây và Internet vạn vật (IoT),

dữ liệu không ngừng tăng lên với tốc độ cao. Quy mô dữ liệu toàn cầu liên tục

tăng với tốc độ 2 lần sau mỗi hai năm [1]. Giá trị ứng dụng của dữ liệu trong

mọi lĩnh vực đang trở nên quan trọng hơn bao giờ hết. Tồn tại một lượng lớn

thông tin đáng giá trong dữ liệu có sẵn. Sự xuất hiện của thời đại dữ liệu lớn

cũng đặt ra những vấn đề và thách thức nghiêm trọng bên cạnh những lợi ích

rõ ràng. Do nhu cầu kinh doanh và áp lực cạnh tranh, hầu hết mọi doanh nghiệp

đều có yêu cầu cao về xử lý dữ liệu theo thời gian thực và hợp lệ [2]. Do đó,

vấn đề đầu tiên là làm thế nào để khai thác thông tin có giá trị từ dữ liệu khổng

lồ một cách hiệu quả và chính xác. Đồng thời, dữ liệu lớn nắm giữ các đặc

điểm như số chiều cao, độ phức tạp và nhiễu. Dữ liệu khổng lồ thường chứa

các thuộc tính được tìm thấy trong các biến đầu vào khác nhau ở hàng trăm

hoặc hàng nghìn cấp, trong khi mỗi một trong số chúng có thể chứa một ít

thông tin. Vấn đề thứ hai là chọn các kỹ thuật thích hợp có thể dẫn đến hiệu

suất phân loại tốt cho tập dữ liệu chiều nhiều chiều. Xem xét các sự kiện nói

trên, khai thác và phân tích dữ liệu cho dữ liệu quy mô lớn đã trở thành một

chủ đề nóng trong học thuật và nghiên cứu công nghiệp. Tốc độ khai thác và

phân tích dữ liệu đối với dữ liệu quy mô lớn cũng đã thu hút nhiều sự quan tâm

của cả giới học thuật và công nghiệp. Các nghiên cứu về khai thác dữ liệu phân

tán và song song dựa trên nền tảng điện toán đám mây đã đạt được nhiều thành

tựu thuận lợi [3],[4]. Hadoop [5] là một nền tảng đám mây nổi tiếng được sử

dụng rộng rãi trong khai thác dữ liệu.

2.1.1. Big Data

Khái niệm Big Data

Big Data (Dữ liệu lớn) là thuật ngữ mô tả quá trình xử lý dữ liệu trên

một tập dữ liệu lớn bao gồm cả dữ liệu có cấu trúc hay không có cấu trúc. Big

Data rất quan trọng với các tổ chức, doanh nghiệp thì dữ liệu ngày một lớn và

càng nhiều dữ liệu sẽ giúp các phân tích càng chính xác hơn. Việc phân tích

Page 10: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

10

chính xác này sẽ giúp doanh nghiệp đưa ra các quyết định giúp tăng hiệu quả

sản xuất, giảm rủi ro và chi phí.

Những dữ liệu này tới từ mọi nơi – ví dụ như từ những chiếc cảm biến

để thu thập thông tin thời tiết, những thông tin được cập nhật trên các trang

web mạng xã hội, những bức ảnh và video kỹ thuật số được đưa lên mạng, dữ

liệu giao dịch của các hoạt động mua sắm trên mạng... – dưới mọi hình thức

khác nhau (có cấu trúc, phi cấu trúc, bán cấu trúc). Đó chính là dữ liệu lớn.

Big Data là thuật ngữ dùng để chỉ một tập hợp dữ liệu rất lớn và hỗn tạp

đến nỗi những công cụ, ứng dụng xử lí dữ liệu truyền thống khó có thể nào

đảm đương được. Bằng việc tổng hợp một lượng thông tin lớn từ các nguồn

khác nhau khiến cho Big Data trở thành một công cụ rất mạnh cho việc ra các

quyết định kinh doanh, nhận diện hành vi và xu hướng nhanh hơn và tốt hơn

rất nhiều so với cách thức truyền thống. Big Data được nhận diện trên ba khía

cạnh chính: Dữ liệu (Data), Công nghệ (Technology), Quy mô (Size). Thứ

nhất, dữ liệu (data) bao gồm các dữ liệu thuộc nhiều định dạng khác nhau như

hình ảnh, video, âm nhạc… trên Internet [6]; gồm các dữ liệu thu thập từ các

hệ thống cung ứng dịch vụ công nghệ thông tin có kết nối với hệ thống máy

chủ; dữ liệu của khách hàng ở các ứng dụng thông minh và các thiết bị có kết

nối mạng; dữ liệu của người dùng để lại trên các nền tảng của mạng xã hội,

việc ứng dụng khai phá dữ liệu lớn sẽ tạo thành quy trình khép kín, việc bổ

sung dữ liệu và huấn luyên được diễn ra liên tục [7]. Do các dữ liệu được cập

nhật qua các thiết bị kết nối mạng từng giờ, từng phút, từng giây và đến từ

nhiều nguồn khác nhau nên khối lượng dữ liệu này là rất lớn (Big). Hiện nay,

Big Data được đo lường theo đơn vị Terabytes (TB), Petabytes (PB) và

Exabytes (EB). Có thể dễ dàng lấy một vài ví dụ như Walmart xử lý hơn 1 triệu

giao dịch của khách hàng mỗi giờ, dữ liệu nhập vào ước tính hơn 2,5 PB;

Facebook có hơn 1.9 tỷ người dùng đồng thời, có hàng trăm server xử lý và

lưu trữ dữ liệu [8]. Twitter là một hệ thống mạng xã hội với 1,3 tỷ người dùng

đang hoạt động và trong giai đoạn đầu [9]. Yếu tố nhận diện thứ hai của Big

Data là công nghệ (technology). Công nghệ thường được thiết kế và hình thành

một hệ sinh thái từ dưới đi lên để có khả năng xử lý các dữ liệu lớn và phức

tạp. Một trong những hệ sinh thái mạnh nhất hiện nay phải kể đến Hadoop với

khả năng xử lý dữ liệu có thể được tăng lên cùng mức độ phức tạp của dữ liệu,

năng lực này là một công cụ vô giá trong bất kỳ ứng dụng Big Data nào. Yếu

tố nhận diện thứ ba của Big Data là quy mô dữ liệu. Hiện nay vẫn chưa có câu

Page 11: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

11

trả lời chính xác cho câu hỏi dữ liệu thế nào gọi là lớn. Theo ngầm hiểu thì khi

dữ liệu vượt quá khả năng xử lý của các hệ thống truyền thống thì sẽ được xếp

vào Big Data.

Việc bản thân các doanh nghiệp cũng đang sở hữu Big Data của riêng

mình đã trở nên phổ biến. Chẳng hạn, như trang bán hàng trực tuyến eBay thì

sử dụng hai trung tâm dữ liệu với dung lượng lên đến 40 petabyte để chứa

những truy vấn, tìm kiếm, đề xuất cho khách hàng cũng như thông tin về hàng

hóa của mình. Hay nhà bán lẻ online Amazon.com phải xử lí hàng triệu hoạt

động mỗi ngày cũng như những yêu cầu từ khoảng nửa triệu đối tác bán hàng.

Tương tự, Facebook cũng phải quản lí 50 tỉ bức ảnh từ người dùng tải lên [10],

YouTube hay Google thì phải lưu lại hết các lượt truy vấn và video của người

dùng cùng nhiều loại thông tin khác có liên quan. Theo kết quả khảo sát được

thực hiện bởi Qubole - công ty hàng đầu về cung cấp giải pháp, nền tảng quản

lí dữ liệu hạ tầng đám mây phục vụ phân tích - và bởi Dimensional Research -

một tổ chức nghiên cứu thị trường công nghệ, lĩnh vực chăm sóc khách hàng,

kế hoạch công nghệ thông tin, quy trình bán hàng và hoạt động tài chính là các

lĩnh vực thu lợi nhiều nhất từ Big Data. Qua đó, thấy được là mục đích khai

thác Big Data của các nhà cung ứng hàng hóa, dịch vụ toàn cầu là hướng đến

chăm sóc khách hàng, phân tích dữ liệu khách hàng để phát triển sản phẩm,

dịch vụ; ứng dụng thông minh để tăng trải nghiệm của khách hàng và giữ chân

khách hàng khi sự cạnh tranh ngày càng gay gắt giữa các nhà cung ứng ở hầu

hết các lĩnh vực kinh doanh. Với các công cụ phân tích, đặc biệt là công cụ

phân tích dự báo (Predictive Analytics) và khai thác dữ liệu (Data mining) [19],

Big Data giúp các doanh nghiệp đo lường, phân tích các vấn đề liên quan đến

sản phẩm, phát hiện các cơ hội và nguy cơ rủi ro, đồng thời, dự báo doanh thu

từ hoạt động kinh doanh hàng ngày.

Big Data có thể bao gồm những kiểu dữ liệu sau:

Dữ liệu của các hệ thống doanh nghiệp truyền thống bao gồm các dữ

liệu từ hệ thống quản lý khách hàng, các giao dịch của hệ thống tài chính doanh

nghiệp, các dữ liệu kế toán, thông tin giao dịch của khách hàng và doanh

nghiệp...

Page 12: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

12

Dữ liệu sinh tự động hoặc do cảm biết: Bao gồm dữ liệu thông tin khách

hàng sử dụng dịch vụ, lịch sử truy cập các trang web, các dữ liệu ghi lịch sử

thiết bị sử dụng…

Dữ liệu mạng xã hội- bao gồm các dữ liệu được sinh ra từ quá trình sử

dụng mạng xã hội của người dùng như ảnh, video, thông tin trên Facebook,

Twitter, Instagram…

Đặc điểm của Big Data

Ba đặc điểm chính của Big Data bao gồm Dung lượng (volume), Tốc độ

(velocity), Tính đa dạng (variety). Dung lượng của Dữ liệu lớn đang tăng lên

mạnh mẽ từng ngày [10].Theo thông tin được Google công bố, cứ mỗi 1 giây,

87000 từ khóa tìm kiếm được thực hiện, hàng petabyte dữ liệu được tạo ra trên

toàn thế giới. Về Tốc độ (Velocity) phản ánh tốc độ mà tại đó dữ liệu được

phân tích bởi các công ty để cung cấp một trải nghiệm người dùng tốt hơn. Với

sự ra đời của các kỹ thuật, công cụ, ứng dụng lưu trữ, nguồn dữ liệu liên tục

được bổ sung với tốc độ nhanh chóng. Về Tính đa dạng (Variety) của dữ liệu,

việc đa dạng hóa các nguồn dữ liệu đầu vào, từ dữ liệu có cấu trúc, bán cấu

trúc cho đến dữ liệu không có cấu trúc, từ các loại dữ liệu dạng giao dịch cho

đến các dữ liệu dạng văn bản sinh ngẫu nhiên trên internet.

Độ lớn dữ liệu (volume): Dữ liệu sinh ra tự động (machine-generated

data) có số lượng nhiều hơn rất nhiều so với dữ liệu truyền thống. Dữ liệu có

thể sinh ra hàng TB trong thời gian ngắn và dữ liệu lưu trữ có thể lên đến

Petabytes. Cách đây vài năm, việc lưu trữ dữ liệu lớn là một vấn đề khó khăn.

Tuy nhiên hiện nay, với việc phần cứng ngày càng rẻ cộng thêm công nghệ lưu

trữ đám mây thì việc xác định giá trị cần thiết từ tập dữ liệu lớn mới là vấn đề

cốt yếu.

Tốc độ xử lý dữ liệu (velocity): Dữ liệu lớn không đồng nghĩa với xử lý

chậm. Ngày nay các hệ thống media cần xử lý nhanh và có phản hồi chấp nhận

được với người dùng. Trong việc xử lý dữ liệu lớn ta luôn cần quan tâm đến

Tốc độ xử lý dữ liệu

Tính đa dạng dữ liệu (variety): Với việc thu thập từ nhiều nguồn dữ liệu

khác nhau (web, mobile…), Big Data không chỉ có dữ liệu kiểu truyền thống

dạng schema mà ngày nay còn có nhiều loại dữ liệu khác như dạng image,

Page 13: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

13

video, cấu trúc dữ liệu phức tạp khác… Big Data có thể xử lý dữ liệu có cấu

trúc, phi cấu trúc và bán cấu trúc.

Để đáp ứng được về các tính chất đó của Big Data, các công ty lớn trên

thế giới như Amazon, Google, FaceBook đều sử dụng nền tảng Hadoop làm

công cụ lưu trữ và xử lý dữ liệu.

2.1.2. Giới thiệu về Hadoop

Apache Hadoop [11] là một framework cho phép xử lý phân tán một tập

dữ liệu lớn qua cụm (cluster) các máy tính bằng việc sử dụng mô hình lập trình

đơn giản. Được thiết kế để có thể giãn nở thực hiện trên một đến hàng nghìn

máy tính là nơi tính toán và lưu trữ cục bộ. Một điểm mới của Apache Hadoop

là thay vì thiết đặt cơ chế sẵn sàng cao (High Availability - HA) bằng phần

cứng thì bản thân Hadoop được thiết kế để phát hiện và quản lý lỗi tại tầng ứng

dụng, do đó sẽ đưa ra dịch vụ có tính sẵn sàng cao HA tại cụm các máy tính

nơi có thể xảy ra lỗi bằng cách thiết đặt thêm một ứng dụng (node) dưới dạng

hoạt động hoặc chế độ chờ (active/standby).

Apache Hadoop được tạo bởi 2 thành phần bao gồm một hệ thống file

phân tán Hadoop Distributed Filesystem (HDFS) và một layer để tính toán theo

mô hình xử lý Map Reduce. Hadoop là một open source cho phép xử lý dữ liệu

theo lô và có khả năng xử lý khối lượng dữ liệu cực lớn.

Hadoop sử dụng một cụm các server thông thường để lưu trữ, tính toán.

Việc tính toán trên Hadoop Distributed Filesystem (HDFS) được thực hiện một

cách song song và trừu tượng với các developer giúp họ tránh được việc lập

trình mạng và xử lý bài toán đồng bộ phức tạp. Không giống như nhiều hệ

thống phân tán khác, Hadoop cung cấp việc xử lý logic trên nơi lưu dữ liệu mà

không phải lấy dữ liệu từ các máy khác giúp tăng hiệu năng một cách mạnh

mẽ.

Hadoop bao gồm những module sau:

Hadoop Common: Các tiện ích cơ bản hỗ trợ Hadoop

Hadoop Distributed File System (HDFS™): Hệ thống file phân tán

cung cấp khả năng truy vấn song song tối đa hóa theo đường truyền truy cập

bởi ứng dụng

Page 14: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

14

Hadoop YARN: Framework quản lý lập lịch tác vụ và tài nguyên trên

cụm.

Hadoop MapReduce: Hệ thống YARN-based để xử lý tập dữ liệu lớn.

2.1.3. Các ứng dụng trên nền tảng Apache Hadoop

Apache phát triển một số ứng dụng để việc sử dụng MapReduce một

cách dễ dàng hơn đồng thời hỗ trợ việc ghi và lấy dữ liệu trên HDFS được đơn

giản. Sau đây là một số ứng dụng thông dụng chúng ta cần quan tâm đến:

Apache Hive

Hive tạo ra một cơ sở dữ liệu quan hệ dạng trừu tượng cho phép các

developer có thể truy vấn dữ liệu bằng SQL. Thực chất đây là việc thi hành

một hoặc nhiều job MapReduce trên các cụm.

Hive thực hiện việc tạo ra một schema dạng bảng trên tập các file đang

tồn tại trên HDFS và quản lý các bản ghi được trích xuất khi chạy một query.

Bản thân dữ liệu trên đĩa không thay đổi mà chỉ được lấy ra tại thời điểm query.

Các câu lệnh HiveQL được dịch và thực thi trên các lớp map và reduce có sẵn

tương ứng với câu lệnh SQL đó.

Apache Pig

Giống như Hive, Apache Pig được tạo ra để đơn giản việc sử dụng

MapReduce job, mà không cần thiết phải viết Java Code. Thay vào đó, người

dùng sẽ viết các job xử lý dữ liệu trên ngôn ngữ high-level script mà Pig đã

xây dựng. Trong trường hợp cần thao tác xử lý dữ liệu đặc biệt mà Pig chưa hỗ

trợ chúng ta có thể hoàn toàn mở rộng Pig script bằng Java.

Apache Sqoop

Việc chuyển đổi dữ liệu từ dữ liệu quan hệ sang dữ liệu trên Hadoop là

một trong vấn đề quan trọng và phổ biến hiện nay. Sqoop viết tắt của “SQL to

Hadoop” thực hiện chuyển đổi dữ liệu 2 chiều giữa Hadoop và hầu hết các cơ

sở dữ liệu sử dụng JDBC driver. Sử dụng MapReduce, Sqoop thực hiện các

hoạt động một cách song song mà không cần phải viết code. Sqoop hỗ trợ các

plugin cho từng loại database cụ thể cung cấp các đặc tính cơ bản của hệ quản

trị cơ sở dữ liệu quan hệ đó. Hiện nay Sqoop có hỗ trợ sẵn các khai kết nối

Page 15: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

15

connectors (hỗ trợ trực tiếp) cho MySQL và PostgreSQL và kèm theo một số

connector free cài đặt thêm để hỗ trợ Teradata, Netezza, SQL server và Oracle.

Apache Flume

Apache Flume là một hệ thống để tập hợp các dữ liệu streaming được

thiết kế để truyền khối lượng lớn dữ liệu vào hệ thống ví dụ như Hadoop. Nó

hỗ trợ kết nối và ghi dữ liệu trực tiếp tới HDFS.

Apache Oozie

Trong thực tế, sẽ có rất nhiều job Map Reduce được chạy do đó Apache

Oozie được sinh ra với mục đích trở thành một workflow engine để điều phối

các job này trên các Hadoop cluster. Workflow có thể hoạt động dựa trên cơ

chế thời gian hoặc cơ chế sự kiện. Oozie là một REST service để quản lý

workflow và trạng thái hoạt động của luồng.

Apache Whirr

Apache Whirr được xây dựng để đơn giản hóa việc tạo và deploy các

clusters trên môi trường cloud ví dụ như Amazon’s AWS.

Apache HBase

Apache HBase là cơ sở dữ liệu phân tán (non relational), độ trễ thấp

được xây dựng trên nền HDFS. HBase đưa ra một mô hình dữ liệu linh hoạt

có các thuộc tính scale-out với API rất đơn giản. Dữ liệu trên HBase được lưu

trữ dưới dạng bán cột (semi-columnar) phân chia bởi các hàng trong các region.

Các bảng trên HBase có thể lên tới hàng trăm terabyte hoặc một số trường hợp

lên đến petabytes. Hiện nay, HBase được sử dụng để phục vụ một khối lượng

lớn dữ liệu trong các hệ thống real-time.

Apache ZooKeeper

Apache ZooKeeper hỗ trợ các tính năng của hệ thống phân tán. Trong

thực tế nhiều dự án sử dụng Hadoop có sử dụng ZooKeeper để hỗ trợ các tính

năng cần thiết cho hệ thống phân tán (leader election, locking, group

membership, service location, config-uration services)

Page 16: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

16

Apache HCatalog

Apache HCatalog là một dịch vụ cung cấp khả năng chia sẻ schema và

các dịch vụ truy cập dữ liệu giữa các ứng dụng trong cùng một hệ thống. Về

lâu dài, HCatalog sẽ cung cấp việc kết hợp các tool ví dụ như Hive và Pig để

chúng có thể chia sẻ các thông tin về dataset và metadata.

2.1.4. HDFS

Hadoop Distributed File System (HDFS) [12] là một hệ thống file phân

tán được thiết kế để chạy trên phần cứng thông thường. HDFS cũng tương tự

những hệ thống file phân tán hiện có. Tuy nhiên, sự khác biệt ở đây là HDFS

có khả năng chịu lỗi cao (fault-tolerant) và được thiết kế để deploy trên các

phần cứng rẻ tiền. HDFS cung cấp khả năng truy cập high throughput từ ứng

dụng và thích hợp với các ứng dụng có tập dữ liệu lớn.

Hình 2.1. Kiến trúc HDFS

HDFS có kiến trúc master-worker, (Hình 2.1). Một cụm HDFS (HDFS

cluster) bao gồm các Namenode và Datanode. Dữ liệu được lưu trên các block.

Page 17: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

17

Một cụm HDFS bao gồm hai loại nút (node) hoạt động theo mô hình nút chủ -

nút thợ (master-worker):

Một cụm HDFS có 1 namenode (master – nút chủ)

Một cụm HDFS có một hoặc nhiều các datanode (worker - nút thợ)

Namenode quản lý các namespace filesystem. Nó quản lý một filesystem

tree và các metadata cho tất cả các file và thư mục trên tree. Thông tin này

được lưu trữ trên đĩa vật lý dưới dạng không gian tên ảnh và nhật ký (edit log).

Namenode còn quản lý thông tin các khối (block) của một tập tin được lưu trên

những datanodes nào.

HDFS đưa ra một không gian tên cho phép dữ liệu được lưu trên tập tin.

Trong đó một tập tin được chia ra thành một hay nhiều khối (block) và các

block được lưu trữ trên một tập các DataNode. Namenode thực thi các hoạt

động trên hệ thống quản trị không gian tên tập tin như mở, đóng, đổi tên tập

tin và thư mục. Namenode còn quyết định việc kết nối các khối với các

DataNode. Các DataNode có tính năng xử lý các yêu cầu về đọc ghi từ máy

khách. Ngoài ra các DataNode còn thực hiện việc tạo, xóa, lặp các khối theo

sự hướng dẫn của DataNode

Một phần mềm được thiết kế bao gồm NameNode và DataNode có thể

chay trên những máy tính thông thường. Yêu cầu duy nhất chỉ là chạy hệ điều

hành GNU/Linux. HDFS được xây dựng trên ngôn ngữ Java nên bất kỳ máy

nào hỗ trợ Java đều có thể chạy phần mềm thực thi NameNode và DataNode.

2.1.5. Đọc ghi dữ liệu trên HDFS

a. Đọc dữ liệu

Với khối dữ liệu (block) ID và địa chỉ IP đích máy chủ (host) của

Datanode, máy khách (client) có thể liên lạc với các Datanode còn lại để đọc

các khối (block) cần thiết. Quá trình này lặp lại cho đến khi tất cả các khối

trong file được đọc và máy khách đóng luồng đọc file trực tuyến.

Page 18: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

18

Hình 2.2. Luồng đọc dữ liệu trên HDFS

Hình 2.2 mô tả quá trình đọc dữ liệu của NameNode từ DataNode thông

qua các API của Hadoop.

b. Ghi dữ liệu

Hình 2.3. Luồng ghi dữ liệu trên HDFS

Page 19: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

19

Việc ghi dữ liệu sẽ phức tạp hơn việc đọc dữ liệu đối với hệ thống HDFS.

Trong Hình 2.3 ban đầu, máy khách gửi yêu cầu đển tạo một file bằng việc sử

dụng Hadoop FileSystem APIs. Một yêu cầu được gửi đến namenode để tạo

tập tin metadata nếu user có quyền tạo. Thông tin Metadata cho tập tin mới đã

được tạo; tuy nhiên lúc này chưa có một block nào liên kết với tập này. Một

tiến trình trả kết quả được gửi lại cho máy khách xác nhận yêu cầu tạo file đã

hoàn thành và bắt đầu có thể ghi dữ liệu. Ở mức API, một đối tượng Java là

stream sẽ trả về. Dữ liệu của máy khách sẽ ghi vào luồng này và được chia ra

thành các gói, lưu trong queue của bộ nhớ. Một tiến trình riêng biệt sẽ liên hệ

với namenode để yêu cầu một tập datanode phục vụ cho việc sao lưu dữ liệu

vào các khối (block). Máy khách sẽ tạo một kết nối trực tiếp đến datanode đầu

tiên trong danh sách. Datanode đầu tiên đó sẽ kết nối lần lượt đến các datanode

khác. Các gói dữ liệu được ghi dần vào các datanode. Mỗi datanode sẽ phản

hồi dữ liệu ghi thành công hay không. Quá trình này kết thúc khi toàn bộ các

gói dữ liệu đã được lưu tại các khối (block) của datanode

2.1.6. Map-Reduce

Map-reduce [13] là mô hình dùng để xử lý dữ liệu. Trong quá trình xử

lý dữ liệu, MapReduce sẽ chia ra 2 giai đoạn: giai đoạn Map và giai đoạn

Reduce. Cả hai giai đoạn này đều có đầu vào và đầu ra ở dạng key, value.

Người lập trình cần viết 2 hàm chức năng để có thể xử lý dữ liệu đó là hàm

chức năng Map và hàm chức năng Reduce.

Hình 2.4. Mô hình Map-Reduce

Về mặt định nghĩa thuật toán, ta có thể mô tả Map-Reduce như sau:

Page 20: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

20

Input: dữ liệu dưới dạng Key → Value

Lập trình viên viết 2 thủ tục:

Map(k, v) → <k', v'>*

Reduce(k', <v'>*) → <k', v''>*

Map biến mỗi key k thu được bằng thành cặp <k', v'>. Reduce nhận đầu vào là

khoá k' và danh sách cách giá trị v' và trả về kết quả là cặp <k', v''>.

Hình 2.5. Cơ chế Map-Reduce

Ví dụ với hình mô tả ở trên thì Map trả về danh sách: <Bear, 1>, <Bear, 1> còn

Reduce nhận kết quả trên và trả về <Bear, 2>.

2.1.7. SPARK, nền tảng công cụ và ứng dụng

Hadoop là một nền tảng đám mây nổi tiếng được sử dụng rộng rãi trong

khai thác dữ liệu. Trong phạm vi ứng dụng khai phá dữ liệu, khai thác tiềm

năng dữ liệu lớn, một số thuật toán học máy đã được đề xuất dựa trên mô hình

MapReduce. Tuy nhiên, khi các thuật toán này được triển khai dựa trên

MapReduce, các kết quả trung gian thu được trong mỗi lần lặp được ghi vào

Hệ thống tệp phân tán Hadoop (HDFS) và được tải từ đó. Điều này tốn nhiều

thời gian cho các hoạt động I / O của đĩa và cũng tốn nhiều tài nguyên để truyền

thông và lưu trữ. Apache Spark[24] là một nền tảng đám mây tốt khác phù hợp

cho khai thác dữ liệu lớn. So với Hadoop, mô hình Tập dữ liệu phân tán linh

hoạt (RDD) và mô hình Đồ thị vòng có hướng (DAG) được xây dựng trên

khung tính toán bộ nhớ được hỗ trợ cho Spark. Cho phép lưu trữ một bộ nhớ

Page 21: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

21

cache dữ liệu trong bộ nhớ và thực hiện tính toán và lặp lại cho cùng một dữ

liệu trực tiếp từ bộ nhớ. Nền tảng Spark tiết kiệm một lượng lớn thời gian hoạt

động I / O của đĩa. Do đó, Spark phù hợp hơn cho việc khai thác dữ liệu với

tính toán lặp đi lặp lại. Thuật toán Rừng ngẫu nhiên (RF) [14] là một thuật toán

khai thác dữ liệu phù hợp cho dữ liệu lớn. RF là một thuật toán học tập hợp sử

dụng không gian con đặc trưng để xây dựng mô hình. Hơn nữa, tất cả các cây

quyết định có thể được đào tạo đồng thời, do đó nó cũng thích hợp cho việc xử

lý song song hóa. Apache Spark Mllib[22] đã song song hóa thuật toán RF

(được gọi là Spark-MLRF) dựa trên tối ưu hóa song song dữ liệu để cải thiện

hiệu suất của thuật toán.

a. Khái niệm Apache Spark

Theo [24], Spark là một ứng dụng mã nguồn mở được xây dựng được

xây dựng để xử lý dữ liệu phân tán, nhằm tăng tốc độ xử lý, dễ sử dụng và linh

hoạt. Sử dụng để xử lý dữ liệu lớn một cách nhanh chóng, bằng cách cho phép

thực hiện tính toán trên cụm tạo ra khả năng phân tích dữ liệu tốc độ cao khi

đọc và ghi dữ liệu. Tốc độ xử lý của Spark có được do việc tính toá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 toán được thực

hiện ở bộ nhớ trong (in-memories) hay thực hiện hoàn toàn trên RAM. Spark

hỗ trợ nhiều ngôn ngữ lập trình được sử dụng rộng rãi (Python, Java, Scala và

R), bao gồm các thư viện cho các tác vụ đa dạng khác nhau, từ SQL đến phát

trực tuyến và học máy, và chạy ở mọi nơi từ máy tính xách tay đến một cụm

hàng nghìn máy chủ. Điều này hỗ trợ cho Spark trở thành một hệ thống dễ dàng

bắt đầu và mở rộng quy mô để xử lý dữ liệu lớn hoặc quy mô cực kỳ lớn..

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).

Spark không có hệ thống file của riêng mình, nó sử dụng hệ thống file

khác như: HDFS, Cassandra, S3,…. Spark hỗ trợ nhiều kiểu định dạng file

khác nhau (text, csv, json…) đồng thời nó hoàn toàn không phụ thuộc vào bất

cứ một hệ thống file nào.

Để chạy nhanh hơn, Spark cung cấp: Mô hình tối ưu các tính toán đồ thị

một cách tùy ý (optimize arbitrary operator graphs). Hỗ trợ tính toán tại bộ nhớ

trong. Spark cung cấp bộ API hỗ trợ các ngôn ngữ Scalar, Java, Python. Spark

Page 22: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

22

hỗ trợ các thư viện ứng dụng cơ bản của học máy như Rừng ngẫu nhiên

(Random Forest), cây quyết định (Decision Tree)… hay các thư viện phân cụm

(KMeans).

b. Resilient Distributed Datasets - RDD

Resilient Distributed Datasets (RDD) [25] là một cấu trúc dữ liệu cơ bản

của Spark. Nó là một tập hợp bất biến phân tán của một đối tượng, hỗ trợ tính

toán xử lý trong bộ nhớ. Mỗi nhóm dữ liệu đối tượng trong RDD được chia ra

thành nhiều phần vùng vật lý. Có thể được tính toán trên các nút khác nhau của

một cụm máy chủ (cluster).

RDDs có thể chứa bất kỳ kiểu dữ liệu nào của Python, Java, hoặc đối

tượng Scala, bao gồm các kiểu dữ liệu do người dùng định nghĩa. Thông

thường, RDD chỉ cho phép đọc, phân mục tập hợp của các bản ghi. RDDs có

thể được tạo ra qua điều khiển xác định trên dữ liệu trong bộ nhớ hoặc RDDs,

RDD là một tập hợp có khả năng chịu lỗi mỗi thành phần có thể được tính toán

song song.

c. Thành phần của Spark

Hình 2.6. thành phần của Spark

Hình 2.6 mô tả các thành phần cơ bản của Spark, cụ thể:

Spark Core: là lõi ứng dụng (engine) thực thi chung làm nền tảng cho Spark.

Tất cả các chức năng khác được xây dựng dựa trên nền tảng là Spark Core.

Page 23: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

23

Cung cấp khả năng tính toán trên bộ nhớ RAM và cả bộ dữ liệu tham chiếu

trong các hệ thống cho phép mở rộng bộ nhớ vật lý (external storage).

Spark SQL: là một thành phần nằm trên Spark Core, giới thiệu một khái niệm

trừu tượng hóa dữ liệu mới gọi là SchemaRDD, cung cấp hỗ trợ cho dữ liệu có

cấu trúc và bán cấu trúc.

Spark Streaming: tận dụng khả năng lập lịch memory-base của Spark Core

để thực hiện streaming analytics. Nó lấy dữ liệu theo mini-batches và thực hiện

các phép biến đổi RDD (Bộ dữ liệu phân tán có khả năng phục hồi) trên các

mini-batches dữ liệu đó.

MLlib (Machine Learning Library): là một framework machine learning

phân tán trên Spark tận dụng khả năng tính toán tốc độ cao nhờ distributed

memory-based của kiến trúc Spark.

GraphX: là một framework xử lý đồ thị phân tán. Nó cung cấp một API để

thực hiện tính toán biểu đồ có thể mô hình hóa các biểu đồ do người dùng xác

định bằng cách sử dụng API đã được tối ưu sẵn.

Hoạt động

Hình 2.7. Cơ chế hoạt động của Spark

Chương trình Spark chạy như một bô process độc lập trên mỗi cluster. Các

process này được điều khiển bởi SparkContext trong chương trình điều khiển

(Driver program), được thể hiện trong Hình 2.7. SparkContext sẽ kết nối với

một số loại Cluster Manager (các trình quản lý cụm chạy standalone của Spark

hoặc YARN hoặc MESOS) trình quản lý việc phân bố tài nguyên cho các ứng

dụng để xác định các nút sẽ làm việc. Sau đó, Spark sẽ kết nối tới một số

Page 24: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

24

Executor trên các nút này (thực chất là các tiến trình chạy các tác vụ tính toán,

lưu trữ dữ liệu cho ứng dụng), sau đó sẽ gửi mã của ứng dụng (được gửi từ

SparkContext) tới các Executor này. Cuối cùng SparkContext sẽ gửi các tác vụ

tới các Executor để chạy.

Ưu điểm:

Mỗi ứng dụng sẽ được chạy trong một executor riêng biệt, các tác vụ sẽ

được chạy đa luồng multithread. Các task của các ứng dụng khác nhau sẽ được

chạy trong các JVM khác nhau, tách biệt được việc lập lịch chạy ứng dụng và

việc thực thi ứng dụng. Nhược điểm ở đây là dữ liệu của các ứng dụng khác

nhau không được chia sẻ trừ khi ghi vào một bộ nhớ bên ngoài.

Spark độc lập với các trình quản lý cụm (chỉ cần nó có thể liên hệ được

với tiến trình executor), có thể tích hợp được với nhiều trình quản lý cụm khác

nhau (YARN, MESOS …).

Các trình điều khiển lập lịch được đặt trên các cụm được đặt trong cùng

mạng LAN với các Nút (Nodes), giúp cho quá trình điều khiển sẽ nhanh và tin

cậy hơn.

d. Các cơ chế quản lý cụm mà Spark hỗ trợ:

Theo [26], các cơ chế quản lý cụm dữ liệu sẽ có một số cơ chế như sau:

Standalone – cơ chế quản lý cụm đơn giản được tích hợp ngay trong chính

Spark.

Apache Mesos – cơ chế quản lý cụm cơ bản hỗ trợ chạy Spark, Hadoop

MapReduce và các ứng dụng giao tiếp ngầm.

Hadoop YARN – quản lý tài nguyên trên Hadoop.

e. Spark vs Hadoop MapReduce

Theo [27], Về cơ chế hoạt động của Map-Reduce: dữ liệu đầu vào được

đọc từ HDFS (ứng dụng phụ trách việc lưu trữ trong Hadoop), xử lý bằng các

thao tác chỉ định, dữ liệu đầu ra được ghi vào HDFS, dữ liệu tiếp tục được đưa

lên, thao tác tiếp theo được thực hiện, dữ liệu đầu ra tiếp tục ghi vào HDFS …

chuỗi các bước [đọc - xử lý - ghi] đó được lặp cho đến khi hoàn thành tác vụ.

Page 25: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

25

Vì dữ liệu đầu vào được chia thành các khối (block) độc lập với nhau, các tiến

trình map-reduce được thực hiện song song, nên về cơ bản nó hữu ích để xử lí

những bộ dữ liệu lớn. Tuy nhiên, map-reduce vẫn còn những tồn tại là quá trình

xử lý không thực sự hiệu quả trong trường hợp phải lặp lại nhiều step, vì mỗi

step cần thiết phải ghi đầu ra dữ liệu vào HDFS trước khi bước tiếp theo được

thực hiện, việc này tạo ra các vấn đề trong việc lưu trữ và cơ chế tạo lặp các

vùng lưu trữ, tăng độ trễ xử lý do phần lớn thực hiện trên Disk vốn có hiệu suất

I/O không cao. Bên cạnh đó là việc thực hiện viết code với Map-Reduce có

phần khó khăn vì viết lệnh giao tiếp khá dài dòng.

Hình 2.8. Cơ chế hoạt động của Spark và RDD

Cơ chế hoạt động của Spark: khắc phục những tồn tại của Hadoop

MapReduce, Spark đưa ra một khái niệm mới RDD - Resilient Distributed

Dataset đóng vai trò như 1 cấu trúc dữ liệu cơ bản trong Spark, RDD được định

nghĩa là trừu tượng cho một tập hợp các phần tử bất biến (bản chất là được lưu

trên các ô nhớ chỉ đọc readOnly), được phân vùng có thể được chia sẻ, tác động

song song, theo Hình 2.8. Qua đó, dữ liệu vào từ hệ thống lưu trữ chỉ cần đẩy

lên lần duy nhất, các bước thực hiện biến đổi, xử lý dữ liệu đầu vào được lên

kế hoạch, tối ưu hóa và thực hiện một cách liên tục cho đến khi dữ liệu đầu ra

được trả khi kết thúc công việc. Toàn bộ quá trình đó được diễn ra trên bộ nhớ

RAM (khi hết RAM sẽ được chuyển sang xử lý trên Disk) tận dụng được hiệu

suất I/O cao từ đó có thể giảm thời gian thực thi nhỏ hơn 10-100 lần Hadoop

MapReduce.

Page 26: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

26

f. Apache Zeppelin trên nền tảng Spark

Là một loại trình thông dịnh chú có thể chạy trên nhiều nền ứng dụng

khác nhau như Spark Core; Python hay NoSQL. Việc sử dụng Spark MLib

Machine Learning cùng với Zeppelin (Spark Interpreter for Zeppelin), cho

phép thực thi các thư việc Machine Learning một cách tối đa hóa thời gian, sử

dụng cơ chế hoạt động của Spark để tăng hiệu quả khi xây dựng và huấn luyện

các mô hình học máy cũng như giảm thời gian huấn luyện.

Hình 2.9. Zeppelin và phương thức hoạt động

Việc sử dụng Apache Zeppelin sẽ nâng cao tốc độ xử lý các mô hình học

máy và gia tăng được hiệu quả khi phải xử lý với dữ liệu lớn, Zeppelin cũng

hỗ trợ tối đa cho các chuyên viên khoa học máy tính thực thi và xử lý các

model. Hình 2.9 mô tả thành phần và các phân đoạn hoạt động của Zeppelin,

lưu lại các thành phần và phân loại từng nhóm code. Ngoài ra, Zeppelin cũng

có một số API cho phép cài đặt để huấn luyện các mô hình một cách tự động.

Sử dụng cho quá trình tự động hóa các mô hình huấn luyện trong quá trình ứng

dụng học máy vào triển khai thực tế, và vận hành khai thác. Cung cấp các ứng

dụng nền tảng (service) cho các ứng dụng ngoài có thể gọi, thực thi câu lệnh

cũng như trả về kết quả thông qua các ứng dụng ngầm này.

2.2. Giới thiệu về học máy

Page 27: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

27

Học máy (machine learning) là một ngành khoa học nghiên cứu, xây

dựng các kĩ thuật trên nền tảng của trí tuệ nhân tạo giúp cho máy tính có thể

suy luận (dự đoán) kết quả tương lai thông qua quá trình huấn luyện (học) từ

dữ liệu lịch sử.

Do việc xây dựng mô hình học máy và ứng dụng vào thực tế cần nhiều

mô hình học máy và mô hình ứng dụng, việc sử dụng mô hình tổng hợp để cho

ra kết quả tối ưu là điều cần thiết. Việc sử dụng và lựa chọn một mô hình đủ

nhanh, mạnh và hiệu quả về chi phí và tài nguyên là cần thiết, theo [20], các

loại học máy có thể phân chia thành 3 nhóm: Học có giám sát supervised, học

không giám sát unsupervised, học bán giám sát semisupervised và học tăng

cường Reinforcement Learning.

Trong số những mô hình đó, cây quyết định với những ưu điểm của mình

được đánh giá là một công cụ mạnh, phổ biến và đặc biệt thích hợp cho khai

thác dữ liệu lớn nói chung và phân lớp dữ liệu nói riêng. Có thể kể ra những

ưu điểm của cây quyết định như: xây dựng tương đối nhanh; đơn giản, dễ hiểu.

Hơn nữa các cây có thể dễ dàng được chuyển đổi sang các câu lệnh SQL để có

thể được sử dụng để truy nhập cơ sở dữ liệu một cách hiệu quả. Cuối cùng,

việc phân lớp dựa trên cây quyết định đạt được sự tương tự và đôi khi là chính

xác hơn so với các phương pháp phân lớp khác.

Ngoài ra trong quá trình đề tài, các thuật toán được sử dụng nhằm mục

tiêu kiểm định và phân lớp theo rừng ngẫu nhiên (random forest), phân cụm

(K-Means) khách hàng để có thể tương tác tới tập khách hàng chính xác và

mang lại tỷ lệ cao nhất.

Mô hình toán học:

Cho một tập dữ liệu X:

Một tập mẫu T X

Một hàm mục tiêu f: X → {đúng, sai}

Một tập huấn luyện D = {(x, y) | x T, y = f(x)}

Tính toán một hàm f’: X → {đúng, sai} sao cho f’(x) f(x), x X.

2.2.1. Một số khái niệm cơ bản

Không gian biểu diễn là một tập hợp:

Page 28: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

28

Ký hiệu là X, mỗi phần tử thuộc X có thể được gọi là các dữ liệu, các

thể hiện, các đối tượng hay các ví dụ.

Mỗi phần tử S X được biểu diễn bởi một tập gồm n thuộc tính:

S = (S1, S2 …, Sn)

Một đối tượng S cũng có thể được biểu diễn kết hợp với lớp liên thuộc

của nó hay nói cách khác có thể được biểu diễn dưới dạng nhãn: z = (s, c).

a. Học có giám sát

Học có giám sát (supervised learning) là một kỹ thuật của ngành học

máy nhằm mục đích xây dựng một hàm f từ dữ tập dữ liệu huấn luyện (Training

data). Dữ liệu huấn luyện bao gồm các cặp đối tượng đầu vào và đầu ra mong

muốn. Đầu ra của hàm f có thể là một giá trị liên tục hoặc có thể là dự đoán

một nhãn phân lớp cho một đối tượng đầu vào

Hình 2.10. Mô hình học có giám sát

Nhiệm vụ của chương trình học có giám sát là dự đoán giá trị của hàm f

cho một đối tượng đầu vào hợp lệ bất kì, sau khi đã xét một số mẫu dữ liệu

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 quát hóa từ các dữ liệu sẵn có để dự đoán được

những tình huống chưa gặp phải theo một cách hợp lý, Hình 2.10.

Các mô hình mẫu

Các bước giải bài toán học có giám sát

Ứng dụng các giải thuật sử dụng trong đề tài:

Rừng ngẫu nhiên (RandomForest)

Phân lớp nhị phân (BinaryClassification)

Cây quyết định (Decision Tree)

Dữ liệu gán

nhãn Thuật toán học Mô hình

Page 29: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

29

b. Học không có giám sát

Học không có giám sát (unsupervised learning) [20] là một phương pháp

học máy mà dữ liệu huấn luyện là dữ liệu hoàn toàn chưa được gán nhãn, nhằm

tìm ra một mô hình phù hợp với các quan sát. Học không có giám sát khác với

học có giám sát ở chỗ, là đầu ra đúng tương ứng cho mỗi đầu vào là chưa biết

trước. Trong học không có giám sát, một tập dữ liệu đầu vào thường được thu

thập một cách ngẫu nhiên, và sau đó một mô hình mật độ kết hợp sẽ được xây

dựng cho tập dữ liệu đó.

Ta có thể kết hợp học không có giám sát với suy diễn Bayes để tạo ra

xác suất có điều kiện cho bất kỳ biến ngẫu nhiên nào khi biết trước các biến

khác. Hay nói cách khác khi đó ta đã chuyển từ việc học không có giám sát

sang học có giám sát. Mọi giải thuật nén dữ liệu, về cơ bản hoặc là dựa vào

một phân bố xác suất trên một tập đầu vào một cách tường minh hay không

tường minh. Thuật toán Clustering sẽ phân tích và tìm các đặc trưng của dữ

liệu rồi đưa vào thành các cụm khác nhau theo từng đặc trưng tìm được, sau

đó, phân chia các cụm đầu vào mới vào từng cụm đã có sẵn theo từng loại đặc

trưng của đầu vào.

Thuật toán này có 3 loại điển hình:

K-Means Clustering: Phân nhóm dữ liệu vào một số K cụm với quy luật

nhất định.

Hierarchical Clustering: Phân loại theo thứ bậc.

Probabilistic Clustering: Phân loại theo xác suất

c. Học bán giám sát

Học nửa giám sát (semi-supervised learning) là một phương pháp học

máy mà dữ liệu huấn luyện là sự kết hợp của dữ liệu được gán nhãn và dữ liệu

chưa được gán nhãn

Page 30: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

30

Hình 2.11. Mô hình học bán giám sát

Như chúng ta đã biết khi áp dụng học có giám sát thì các dữ liệu huấn

luyện đã được gán nhãn. Do đó sẽ thu được kết quả có độ chính xác rất cao.

Tuy nhiên, khi đó ta sẽ gặp một vấn đề rất khó khăn là khi lượng dữ liệu lớn,

thì công việc gán nhãn cho dữ liệu sẽ tốn rất nhiều thời gian và tài nguyên. Hay

nói cách khác những dữ liệu được gán nhãn là rất đắt và việc tạo ra nhãn cho

những dữ liệu đòi hỏi những nỗ lực rất lớn của con người.

Đối với mô hình học không có giám sát thì ngược lại, các dữ liệu huấn

luyện không được gán nhãn. Do đó kết quả thu được có độ chính xác không

cao. Tuy nhiên dữ liệu chưa được gán nhãn, có thể dễ dàng thu thập được rất

nhiều. Hay nói cách khác là dữ liệu chưa gán nhãn có chi phí rất rẻ.

Học nửa giám sát đã khắc phục được các nhược điểm, và phát huy được

ưu điểm của học có giám sát và học không có giám sát. Bằng cách kết hợp giữa

học có giám sát và học không có giám sát, với một lượng lớn dữ liệu chưa gán

nhãn và một lượng nhỏ những dữ liệu đã được gán nhãn, bằng các giải thuật

học nửa giám sát sẽ thu được kết quả vừa có độ chính xác cao vừa mất ít thời

gian công sức. Do đó, học nửa giám sát là một phương pháp học đạt được hiệu

quả rất tốt trong lĩnh vực học máy.

Trong quá trình thực hiện đề tài, việc đưa ứng dụng các mô hình học

máy và phân tích dữ liệu kết hợp nhằm đạt hiệu quả cao nhất và phù hợp nhất

với khối lượng dữ liệu lớn.

2.2.2. Các vấn đề trong quá trình thực hiện đề tài

Page 31: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

31

Trong quá trình thực hiện đề tài, vướng mắc cơ bản khi thực hiện cũng

là vướng mắc tồn tại và thường xuyên gặp phải của các bài toán về học máy là

chọn ra một thuật toán phù hợp và huấn luyện trên một tập dữ liệu xác định, sẽ

có hai tình huống xấu nhất có thể xảy ra, tình huống đầu tiên, giải thuật không

tốt, và tình huống thứ hai là dữ liệu chưa đủ tốt. Ngay cả khi dữ liệu đã được

làm sạch, việc bị gây nhiễu bởi những yếu tố ngoại vi hoặc ảnh hưởng bởi

thuộc tính đặc thù do các tình huống thực tế tạo nên là không thể tránh khỏi.

Theo [23], các vấn đề vướng mắc như: Không đủ dữ liệu đào tạo, dữ liệu

đào tạo không mang đủ tính đại diện đặc trưng cho tập huấn luyện, dữ liệu chất

lượng kém, các thuộc tính dữ liệu không liên quan, Overfitting dữ liệu huấn

luyện, Underfitting dữ liệu huấn luyện. Qua thời gian thực hiện, việc xây dựng

và bổ sung dữ liệu để loại bỏ các thuộc tính dữ liệu dư thừa, đưa thêm dữ liệu

huấn luyện để giảm Underfitting, tách tập huấn luyện và tập test nhiều lần để

tránh Overfitting. Và chọn tập dữ liệu có đặc thù phù hợp mang tính đại diện

đặc trưng với nhóm dữ liệu huấn luyện để tăng hiệu quả mô hình. Kết hợp với

việc lựa chọn giải thuật phù hợp, hướng xử lý tối ưu để mô hình, kết hợp với

thử nghiệm nhiều lần để cho ra một mô hình phù hợp nhất để giải quyết mục

bài toán. Sử dụng kết hợp giữa cơ chế xử lý của Spark, giải thuật Rừng Ngẫu

Nhiên kết hợp với giải thuật Phân Cụm. Các giải thuật sử dụng chi tiết sẽ được

giới thiệu trong phần 2.3, và 2.4 sẽ cụ thể hóa về thuộc tính dữ liệu sau khi loại

bỏ các thuộc tính dư thừa, không mang tính khái quát hóa và gây nhiễu cho mô

hình.

Page 32: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

32

Chương 3: Spark và giải thuật rừng ngẫu nhiên

song song (Parallel Random Forest - PRF) Với điểm mạnh là xây dựng và ứng dụng xử lý dữ liệu phân tán song

song của Spark, đưa vào xử lý các giải thuật và xây dựng các mô hình học máy

ứng dụng, cần tối ưu về mặt thời gian, độ chính xác và phương án xử lý dữ

liệu, sao cho đạt kết quả nhanh và có hiệu quả cao nhất. Theo đó, đề xuất ứng

dụng xử lý song song giải thuật rừng ngẫu nhiên trên nền tảng Spark (Parallel

Random Forest - PRF) nhằm đáp ứng nhu cầu đó, với khả năng xử lý phân tán,

giúp giảm thời gian huấn luyện, tăng hiệu năng xử lý, và cho ra hiệu quả cao

nhất.

Hình 3.1. Đồ thị vòng DAG được hình thành khi xử lý dữ liệu song song trên

Spark UI.

Giải thuật xử lý song song rừng ngẫu nhiên được tối ưu hóa dựa trên

phương pháp kết hợp giữa tối ưu hóa xử lý dữ liệu song song và phân chia xử

lý đồng thời các luồng giao việc. Đối với khả năng tối ưu hóa xử lý dữ liệu

Page 33: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

33

song song, cơ chế xử lý dữ liệu theo chiều dọc, cơ chế map – reduce được sử

dụng để tối đa hóa hiệu quả và tái sử dụng dữ liệu, giảm được chi phí về tài

nguyên do sử dụng dữ liệu phân nhóm nhỏ và lưu trên ram, cho phép sử dụng

lại tập dữ liệu huấn luyện và tối ưu hóa kết quả nhờ vào việc giảm khối lượng

dữ liệu trên mỗi máy. Đối với khả năng tối ưu hóa xử lý song song các luồng

tiến trình, cho phép mỗi tiến trình xử lý song song đa luồng được thực thi trong

quá trình huấn luyện mô hình RF, một luồng giao việc dạng đồ thị vòng có

hướng (Directed Acyclic Graph - DAG) được tạo theo trình tự huấn luyện song

song của PRF và các đối tượng dữ liệu phân tán RDD (Resilient Distributed

Datasets - RDD). Sau đó, các tiến trình sẽ thực thi theo trình tự của DAG. Thêm

nữa, việc cải thiện độ chính xác của thuật toán xử lý dữ liệu lớn, với dữ liệu

nhiều chiều và nhiễu, đề xuất phương án sử lý giảm chiều dữ liệu trong quá

trình huấn luyện mô hình và gán trọng số cho thuộc tính trong quá trình dự

đoán trước khi đưa vào huấn luyện và xử lý song song. Kết quả thử nghiệm và

ứng dụng mô hình chỉ ra tính ưu việt, những điểm tối ưu đáng chú ý so với các

thuật toán khác liên quan được thực hiện bởi thư viện Spark ML và các nghiên

cứu khác khi so sánh về độ chính xác, khả năng phân loại và khả năng mở rộng.

3.1. Thuật toán rừng ngẫu nhiên

Thuật toán rừng ngẫu nhiên là một thuật toán phân loại tập hợp dựa trên

mô hình cây quyết định. Nó tạo ra k tập hợp con dữ liệu huấn luyện khác nhau

từ tập dữ liệu ban đầu bằng cách sử dụng phương pháp lấy mẫu bootstrap

(bootstrap sampling), và sau đó, k cây quyết định được xây dựng bằng cách

huấn luyện các tập con này. Một tập hợp rừng ngẫu nhiên được xây dựng từ

những cây quyết định này. Mỗi mẫu của tập dữ liệu thử nghiệm được dự đoán

bởi tất cả các cây quyết định và kết quả phân loại cuối cùng được trả về tùy

thuộc vào kết quả đánh giá của các cây này.

Page 34: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

34

Hình 3.2. Quá trình xây dựng thuật toán rừng ngẫu nhiên RandomForest

Tập dữ liệu huấn luyện ban đầu: S = {f (xi; yj); i=1;2;…;N; j=1;2;…;M},

với x là một mẫu đại diện và y là một thuộc tính(feautre) đại diện của S. Cụ thể,

tập dữ liệu đào tạo ban đầu chứa N mẫu và có M biến đặc trưng trong mỗi mẫu.

Quy trình chính của việc xây dựng thuật toán RF được trình bày trong hình.

Các bước xây dựng thuật toán rừng ngẫu nhiên như sau:

Bước 1: lấy k mẫu con huấn luyện.

Trong bước này, k tập con huấn luyện được lấy mẫu từ tập dữ liệu huấn

luyện ban đầu S theo phương pháp lấy mẫu bootstrap (bootstrap sampling). Cụ

thể, N bản ghi được chọn từ S bằng phương pháp lấy mẫu và thay thế ngẫu

nhiên trong mỗi lần lấy mẫu. Sau bước hiện tại, k tập con huấn luyện được xây

dựng tạo thành một tập hợp các tập con huấn luyện STrain:

STrain = {S1; S2;…; Sk}.

Đồng thời, các bản ghi không được chọn trong mỗi giai đoạn lấy mẫu

được tạo thành tập dữ liệu Out-Of-Bag (OOB). Theo cách này, k tập OOB được

xây dựng tạo thành một tập hợp SOOB :

SOOB = {OOB1; OOB; …;OOBk},

Page 35: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

35

Với k≪ N , Si ∩ OOBi = 𝜙 và Si ∪ OOBi = S. Để có được độ chính xác

phân loại của từng cây, các bộ OOB này được sử dụng làm bộ kiểm tra sau quá

trình huấn luyện.

Bước 2: Xây dựng mô hình cây quyết định.

Trong mô hình RF, mỗi cây quyết định (meta decision tree) được tạo bởi

thuật toán C4.5 từ mỗi tập huấn luyện nhỏ Si. Trong quá trình sinh trưởng mỗi

cây, m thuộc tính của tập Si sẽ được chọn ngẫu nhiên từ tập M. Trong quá trình

phân tách mỗi nút (node) của cây, thuật toán xét tất cả các phép thử có thể để

phân chia tập dữ liệu đã cho và chọn ra một phép thử có giá trị Gain Ratio tốt

nhất. Gain Ratio là một đại lượng để đánh giá độ hiệu quả của thuộc tính dùng

để thực hiện phép tách trong thuật toán để phát triển cây quyết định. Giá trị tốt

nhất sẽ được chọn làm nút phân tách. Quá trình này lặp lại cho đến khi tạo ra

nút lá. Cuối cùng, k cây quyết định được hình thành từ k tập con huấn luyện

theo cùng một phương thức.

Bước 3: thu thập k cây vào trong một mô hình RF

Toàn bộ k cây huấn luyện được thu thập vào một mô hình RF:

𝐻(𝑋,𝛩𝑖) = ∑ ℎ𝑖(𝑥, 𝛩𝑗), (𝑗 = 1,2,… ,𝑚),

𝑘

𝑖=1

Với hj(x, Θj) là số cây quyết định đại diện, X là là các vectơ thuộc tính

đặc trưng đầu vào của tập dữ liệu huấn luyện, và Θj là một vectơ ngẫu nhiên

độc lập và được phân phối giống hệt nhau để xác định quá trình tăng trưởng

của cây.

Độ phức tạp của thuật toán

Độ phức tạp của thuật toán RF ban đầu là O(kMNlogN), với k là số lượng

cây quyết định trong RF, M là số lượng thuộc tính, N là số lượng mẫu, và logN

là ngưỡng trung bình độ sâu cây của toàn bộ các cây trong mô hình. Trong

thuật toán cải tiến PRF, với phương pháp giảm chiều dữ liệu (có độ phức tạp

là O(MN)), việc phân tách quá trình xử lý song song và phân chia các task trên

Spark sẽ được thực hiện đồng thời trên các node. Quá trình phân chia và xử lý

trên mỗi nút được gộp làm một, trong đó bao gồm các hàm tính toán như

Page 36: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

36

entropy(), gain(), và gainratio() với mỗi không gian thuộc tính con đặc trưng.

Theo đó, việc tính toán giảm chiều dữ liệu, sẽ giảm từ M xuống còn m (m <<

M). theo đó, độ phức tạp của quá trình huấn luyện phân lớp là

𝑂(𝑘(𝑀𝑁 + 𝑚𝑁𝑙𝑜𝑔𝑁)).

3.2. Giải thuật xử lý song song rừng ngẫu nhiên cho dữ

liệu lớn trong nền tảng Spark

Để xử lý dữ liệu với giải thuật Rừng ngẫu nhiên, đầu tiên, Spark sử dụng

bộ dữ liệu phân tán linh hoạt (RDD) để đưa dữ liệu lên, phân chia và tạo một

mô hình Đồ thị vòng có hướng (DAG) với để định hướng trình tự các bước xử

lý trên bộ nhớ ram, sau đó các tiến trình xử lý được lập lịch và thực hiện các

bước theo độ thị. Nền tảng Spark cho phép lưu trữ một bộ nhớ cache dữ liệu

trong bộ nhớ và thực hiện tính toán và lặp lại cho cùng một dữ liệu trực tiếp từ

bộ nhớ, tiết kiệm một lượng lớn thời gian hoạt động I / O của đĩa. Spark sẽ phù

hợp hơn cho việc khai thác dữ liệu với tính toán lặp đi lặp lại. Thuật toán Rừng

ngẫu nhiên (RF) là một thuật toán khai thác dữ liệu phù hợp cho dữ liệu lớn, là

một thuật toán học được huấn luyện sử dụng không gian con đặc trưng để xây

dựng mô hình. Hơn nữa, tất cả các cây quyết định đều có thể được huấn luyện

đồng thời, thích hợp cho việc xử lý song song hóa, đặc biệt phù hợp với cơ chế

xử lý đồng thời của Spark ML.

Ứng dụng giải thuật Rừng ngẫu nhiên xử lý song song (Parallel Random

Forest) cho dữ liệu lớn được triển khai trên nền tảng Apache Spark. Thuật toán

PRF được tối ưu hóa dựa trên phương pháp kết hợp kết hợp giữa tối ưu hóa xử

lý dữ liệu song song và phân chia xử lý đồng thời các luồng giao việc. Để cải

thiện độ chính xác khả năng phân loại của PRF, một phương pháp tối ưu hóa

được đề xuất trước quá trình song song. Kết quả thử nghiệm mở rộng cho thấy

tính ưu việt của PRF và lợi thế đáng kể so với các thuật toán khác về độ chính

xác và hiệu suất phân loại cũng được cải thiện.

Các nội dung chi tiết trong phần này được tóm tắt như sau:

Phương pháp ứng dụng giảm chiều dữ liệu trong quá trình huấn luyện

và phương pháp gán trọng số trong quá trình trong quá trình dự đoán nhãn.

Page 37: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

37

Phương pháp tiếp cận và xử lý song song của PRF, kết hợp tối ưu hóa

xử lý dữ liệu song song và các tiến trình xử lý thuật toán đồng thời. Xử lý dữ

liệu theo chiều dọc và phương pháp đánh giá cân bằng trọng số (weighted vote).

Cách thức hoạt động của Spark khi xử lý dữ liệu, tối ưu khi ứng dụng để

xử lý. Cách thức xử lý dữ liệu của Spark, các bước huấn luyện theo DAG của

PRF dựa theo các bước xử lý mô hình dữ liệu – sử dụng RDDs, các tiến trình

được thực lập lịch và thực thi trong các bước đã được lập sẵn theo biểu đồ

DAG. Việc thực hiện trên song song trên ram giữa các cụm Spark, xử lý đồng

thời các tác vụ giúp giảm thiểu chi phí đường truyền, chi phí đọc ghi dữ liệu

giữa các cụm của Spark, giúp cho cân bằng dữ liệu và tối ưu hóa thời gian xử

lý.

3.2.1. Tối ưu hóa xử lý dữ liệu đồng thời.

Spark áp dụng Phương pháp tối ưu hóa xử lý dữ liệu đồng thời cho thuật

toán PRF, bằng cách sử dụng phương pháp phân chia các vùng dữ liệu theo

chiều dọc và phương pháp ghép dữ liệu đồng thời – chia và gộp.

Đầu tiên, căn cứ theo thuộc tính của thuật toán RF với các thuộc tính

(features) đặc trưng độc lập và yêu cầu về tài nguyên của các tiến trình xử lý

dữ liệu, một phương pháp về phân chia dữ liệu theo chiều dọc được sử dụng

cho tập dữ liệu huấn luyện. Tập dữ liệu huấn luyện được chia nhỏ làm nhiều

tập dữ liệu con với các thuộc tính độc lập, mỗi tập thuộc tính đó được phân bổ

lại theo các cụm Spark để xử lý đồng thời theo phương pháp phân bổ dữ liệu

tĩnh. Thứ hai, để giải quyết vấn đề về sự tăng trưởng khối lượng dữ liệu tuyến

tính với sự gia tăng quy mô của RF, phương pháp ghép dữ liệu đồng thời được

sử dụng thay cho phương pháp lấy mẫu thông thường. Phương pháp tối ưu hóa

xử lý dữ liệu đồng thời cho thấy việc giảm khối lượng dữ liệu cần xử lý nhờ

vào phân chia ra các cụm và việc Spark xử lý trên ram tối ưu hóa quá trình đọc

ghi và không làm giảm độ chính xác của giải thuật. Việc gia tăng quy mô của

PRF không làm thay đổi về kích thước và các vùng nhớ lưu trữ dữ liệu.

a. Phương pháp phân chia dữ liệu chiều dọc.

Trong quá trình xử lý PRF, quá trình xử lý các thuộc tính (features) dữ

liệu chiếm phần lớn thời gian huấn luyện.

Page 38: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

38

Tập dữ liệu huấn luyện

Hình 3.3. Quá trình phân chia dữ liệu theo chiều dọc của các RDDs trong

Spark

Tuy nhiên, quá trình này chỉ sử dụng giá trị thuộc tính của tập huấn luyện

và giá trị thuộc tính của tập mục tiêu. Do đó, để giảm khối lượng dữ liệu và

giảm chi phí đọc ghi, truyền dữ liệu trong môi trường phân tán, phương pháp

phân chia dữ liệu theo chiều dọc cho PRF sử dụng tính độc lập của các thuộc

tính và yêu cầu về tài nguyên khi xử lý đồng thời tại các cụm Spark. Các tập

dữ liệu với các thuộc tính ban đầu sẽ được chia thành các tập dữ liệu nhỏ hơn

với các thuộc tính độc lập.

Giả sử kích thước của tập dữ liệu huấn luyện S là N, có M thuộc tính

(features) với mỗi bản ghi. y0 ~ yM-2 là số lượng thuộc tính đầu vào, yM-1 là

thuộc tính mục tiêu. Với mỗi thuộc tính yi và biến thuộc tính yM-1 của tất cả các

bản ghi được chọn và tạo thành một tập con thuộc tính đặc trưng FSj, được biểu

diễn dưới dạng:

Page 39: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

39

𝐹𝑠𝑗=

[

< 0, 𝑦0𝑗 , 𝑦0(𝑀−1) >,

< 1, 𝑦1𝑗 , 𝑦1(𝑀−1) >,… ,

< 𝑖, 𝑦𝑖𝑗 , 𝑦𝑖(𝑀−1) >,… ,

< (𝑁 − 1), 𝑦(𝑁−1)𝑗 , 𝑦(𝑁−1)(𝑀−1) >]

Trong đó, i là chỉ số của mỗi bản ghi của tập dữ liệu huấn luyện S, và j

là chỉ số của các thuộc tính hiện tại. Theo cách đó, tập S được phân tách thành

( M-1 ) tập con với thuộc tính đặc trưng trước khi đưa vào xử lý giảm chiều dữ

liệu. Với mỗi tập dữ liệu con, sẽ được Spark đưa vào một đối tượng dạng RDD

và độc lập với các tập dữ liệu con khác. Quá trình phân chia các vùng dữ liệu

theo chiều dọc được mô tả theo hình 2.14.

b. Phương pháp ghép dữ liệu đồng thời.

Việc tăng trưởng dữ liệu về cả khối lượng và thuộc tính đầu vào luôn là

vấn đề lớn đối với mọi thuật toán bao gồm cả thuật toán rừng ngẫu nhiên, việc

tăng trưởng dữ liệu dẫn đến việc thuật toán RF cũng sẽ tăng trưởng về độ sâu,

độ rộng của rừng. Để giải quyết vấn đề tăng trưởng về khối lượng dữ liệu mẫu

khi huấn luyện, Spark sử dụng cơ chế ghép dữ liệu đồng thời để xử lý thay cho

phương pháp lấy mẫu truyền thống. Trong mỗi chu kỳ lấy mẫu, thay vì sao

chép lại toàn bộ dữ liệu mẫu, tiến trình xử lý sẽ lưu lại chỉ mục của tập dữ liệu

mẫu vào bảng Data-Sampling-Index (DSI). Sau đó bảng DSI sẽ phân bổ lại

cho tất cả các nút phụ (slave node) cùng với tập con thuộc tính (features). Các

công việc tính toán xử lý trong quá trình huấn luyện của mỗi cây quyết định sẽ

tải dữ liệu tương ứng từ một tập con thuộc tính thông qua bảng DSI. Do đó,

với mỗi tập con thuộc tính sẽ được sử dụng lại một cách hiệu quả và độ lớn của

tập dữ liệu đầu vào khi huấn luyện sẽ không bị ảnh hưởng tại mỗi node, trong

khi quy mô của RF vẫn được mở rộng.

Chỉ mục dữ liệu của tập dữ liệu huấn luyện

Số

lần

lấy

mẫu

Mẫui 1 3 8 5 10 0 …

Mẫu1 2 4 1 9 7 8 …

Mẫu2 9 1 12 92 2 5 …

Mẫu3 3 8 87 62 0 2 …

Page 40: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

40

… … … … … … … …

Mẫuk-1 9 1 4 43 3 5 …

Bảng 3-1: Ví dụ về DSI của PRF

Đầu tiên, một bảng DSI được tạo để lưu các chỉ mục dữ liệu được tạo

trong tất cả các lần lấy mẫu. Như đã đề cập trong Phần 2.3.1, số cây của mô

hình RF là k. Cụ thể, sẽ có k lần lấy mẫu cho tập dữ liệu huấn luyện và N chỉ

mục dữ liệu được ghi lại trong mỗi lần lấy mẫu. Một ví dụ về bảng DSI của

PRF được trình bày trong Bảng sau:

Thứ hai, bảng DSI được sử dụng đồng thời cho tất cả các nút phụ (slave

node) của cụm Spark với toàn bộ các thuộc tính con. Trong quá trình huấn

luyện tiếp sau, độ đo Gain Ratio được sử dụng để tính toán và đánh giá sự khác

biệt giữa các cây có cùng thuộc tính, sau đó chuyển lại giá trị đó cho các slaves

nơi đang lưu trữ các tập dữ liệu con.

Hình 3.4. Quá trình xử lý ghép dữ liệu đồng thời của PRF

Thứ ba, mỗi Gain Ratio sẽ được tiến trình Spark sử dụng để truy cập các

chỉ mục dữ liệu liên quan từ bảng DSI và lấy các bản ghi thuộc tính từ cùng

Tập

th

uộ

c tí

nh

con

Fea

ture

su

bse

t

Gai

n R

atio

M

ô h

ình

hu

ấn

luy

ện P

RF

Page 41: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

41

một nhóm các thuộc tính theo các chỉ mục này. Quá trình ghép dữ liệu đồng

thời này được mô tả trong hình 15.

Trong hình trên, mỗi RDDFS được đưa vào một đối tượng thuộc tính con

RDD, và với mỗi TGR được để tính gain-ratio. VD, Spark phân bổ các công

việc (tasks) {TGR1.1, TGR1.2, TGR1.3} vào node Slave1 với tập thuộc tính con

RDDFS1, phân bổ công việc {TGR2.1, TGR2.2, TGR2.3} vào node Slave2 với tập thuộc

tính con RDDFS2 và phân bổ công việc {TGR3.1, TGR3.2, TGR3.3} vào node Slave3

với tập thuộc tính con RDDFS3. Theo thuật toán cây quyết định, các công việc

thực thi trên cùng một nút phụ sẽ thuộc về các cây khác nhau. VD: các công

việc thực thi trên Slave1 là TGR1.1, TGR1.2 và TGR1.3 sẽ thuộc về “Decision Tree1”,

“Decision Tree2”, và “Decision Tree3” theo một cách tương đối. Các đầu

công việc này (tasks) thực hiện thu thập từ tập con các thuộc tính (features

subset) theo các chỉ số tương ứng trong bảng DSI và tính toán gain-ratio của

tập thuộc tính cho các cây quyết định khác nhau. Sau đó kết quả trung gian của

các đầu công việc (tasks) này được chuyển sử dụng làm đầu vào cho các công

việc tiếp theo tương ứng để xây dựng, tạo nên xu thế cây chung của các quyết

định. Kết quả của các đầu công việc tasks {TGR1.1, TGR2.1, TGR3.1} được kết hợp

và sử dụng cho quá trình phân nhánh của cây quyết định “Decision Tree1”, và

kết quả của các đầu công việc tasks {TGR1.1, TGR2.2, TGR3.2} được kết hợp và sử

dụng cho quá trình phân nhánh của cây quyết định “Decision Tree2”.

c. Cơ chế phân bổ dữ liệu tĩnh

Để đạt được một cơ chế cân bằng khi lưu trữ và xử lý các đầu công việc,

sau khi phân bổ dữ liệu theo chiều dọc, một cơ chế phân bổ dữ liệu tĩnh được

sử dụng cho các tập thuộc tính con. Cụ thể, các tập con được lưu trữ vào một

cụm Spark phân tán trước khi được đưa vào xử lý huấn luyện cho mô hình

PRF. Hơn nữa, do sự khác nhau về kiểu dữ liệu và dung lượng của mỗi nhóm

thuộc tính con, số lượng các tiến trình xử lý, khối lượng công việc xử lý tiếp

sau cũng sẽ khác nhau. Như đã biết, cụm Spark được cấu thành bởi một nốt

chính – master node và các node phụ - slave node. Spark ML sẽ sử dụng chức

năng phân chia dữ liệu thành các tập con và giao lại cho từng nodes dựa theo

khối lượng và độ lớn dữ liệu. Hình dưới sẽ trình bày về cơ chế phân bổ dữ liệu

trong Spark:

Page 42: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

42

Hình 3.5. Ví dụ về 3 kịch bản khi phân chia dữ liệu

Trong hình trên, trường hợp (a) kho khối lượng dữ liệu của tập thuộc

tính con lớn hơn dung lượng đang có hiện tại của nút phụ, tập dữ liệu con này

sẽ được phân chia vào nhiều slaves có đường dẫn tương tự. (b) Khi dung lượng

của tập thuộc tính con tương đương với dung lượng đang có của nút phụ, thì

tập con sẽ được cấp phát và lưu trữ trong một node. (c) Khi kích thước của một

tập con nhỏ hơn dung lượng lưu trữ của một nút, nút đó sẽ được phân bổ chứa

nhiều tập thuộc tính con. Trong trường hợp (a), việc tính toán gain-ratio sẽ

được thực thi tại các nút phụ lưu trữ dữ liệu các tập thuộc tính con. Việc xử lý

dữ liệu này là cục bộ trên toàn bộ các nút phụ có cùng một tập con thuộc tính

dữ liệu lưu trữ, nhưng không phải là xử lý toàn bộ. Trong trường hợp (b) và

(c), không có hoạt động giao tiếp của các tiến trình giữa các nút phụ khác nhau

trong khi xử lý tính toán gain-ratio. Các bước phân chia dữ liệu theo chiều dọc

và lưu trữ dữ liệu tính được trình bày trong mục 2.3.1.

Trong quá trình xử lý ứng dụng đã giới thiệu ở trên, đầu tiên, RDD0 được

chia thành (M-1) đối tượng RDDFS thông qua xử lý phân chia dữ liệu theo chiều

dọc – sử dụng key và các thuộc tính con. Sao đó, mỗi RDDFS được phân chia

về các nút phụ với dung lượng để lưu trữ và xử lý tùy thuộc vào độ phù hợp

của dữ liệu và nút phụ. Để sử dụng lại tập dữ liệu huấn luyện đã qua xử lý, mỗi

đối tượng RDD của tập các thuộc tính con sẽ được phân bổ và cấp phát cho

cụm Spark thông qua một hàm dataAllocation() và một hàm xử lưu trữ kết quả

xử lý tạm thời persist().

Giải thuật 1: Phân vùng dữ liệu theo chiều dọc và phân bổ dữ liệu tĩnh

của PRF:

Page 43: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

43

Input:

RDDo: một đối tượng RDD nguyên thủy của bộ dữ liệu ban đầu S

Output:

LFS: một danh sách các chỉ số danh mục của mỗi nhóm đối tượng thuộc

tính con RDD và các nút phụ đã được phân bổ.

1: for j=0 to (M-2) do

2: RDDFSj RDDo.map

3: <𝑖, 𝑦𝑖𝑗 , 𝑦𝑖(𝑀−1)> RDDo.verticalPartition(j);

4: end map.collect()

5: slaves findAvailableSlaves().sortbyIP();

6: if RDDFSj.size < slaves[0].availablesize then

7: dataAllocation(RDDFSj , slaves[0]);

8: slaves[0].availablesize slaves[i]. availablesize -

RDDFSj.size;

9: LFS < RDDFSj.id, slaves[0]:nodeid >;

10: else

11: while RDDFSj ≠ null do

12: (𝑅𝐷𝐷𝐹𝑆𝑗′ , 𝑅𝐷𝐷𝐹𝑆𝑗

′′ ) dataPartition(RDDFSj,

slaves[i].availablesize));

13: dataAllocation(RDDFSj , slaves[i]);

14: 𝑅𝐷𝐷𝐹𝑆𝑗′ .persist();

15: slaves[i].availabelsize slaves[i]. availablesize -

𝑅𝐷𝐷𝐹𝑆𝑗′ .size;

16: slavesids slaves[i]:nodeid;

17: RDDFSj 𝑅𝐷𝐷𝐹𝑆𝑗′′

18: i i+1

19: end while

20: LFS <RDDFSj:id; slavesids>

21: else if

22: end for

23: return LFS.

Page 44: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

44

3.2.2. Tối ưu hóa xử lý tiến trình đồng thời

Mỗi cây quyết định PRF dược xây dựng độc lập với nhau và mỗi nút con

trong cây quyết định cũng được phân tách độc lập. Kiến trúc của mô hình PRF

và cây quyết định giúp cho quá trình tính toán các đầu công việc trở nên đồng

thời. Dựa trên kết quả của việc tối ưu hóa xử lý dữ liệu đồng thời, đề xuất

phương án ứng dụng xử lý đồng thời các đầu việc của PRD và triển khai thông

qua nền tảng Spark. Một tiến trình song song đồng thời được sử dụng trong

quá trình huấn luyện PRF, và giản đồ công việc DAG cũng được khởi tạo theo

các bước một cách song song hóa đồng thời các tiến trình xử lý và phụ thuộc

vào các đối tượng RDD. Sau đó các tiến trình lập lịch được gọi để thực hiện

các bước đã được tạo thành trên giản đồ DAG.

a. Quá trình xử lý đồng thời của PRF

Trong quá trình tối ưu các công việc xử lý đồng thời (task-parallel),

SparkML sử dụng một phương pháp xử lý song song đồng thời để huấn luyện

trong quá trình xây dựng PRF. Trong quá trình huấn luyện và xây dựng nhánh

cây quyết định, ở mức đầu tiên, k cây quyết định của mô hình PRF được xây

dựng cùng lúc. Và trong quá trình huấn luyện mô hình tiếp theo, (M-1) thuộc

tính đặc trưng trong mỗi cây quyết định tiếp tục được tính toán đồng thời để

tạo thêm ra các nút phân nhánh ở mức thứ hai.

Các task được tính toán xây dựng cây quyết định trong quá trình huấn

luyện PRF. Căn cứ theo yêu cầu về tài luyện càn thiết và chi phí thực thi tính

toán, các task thực thi sẽ được chia làm hai loại, các tác vụ tính toán gain-ratio

và các task phân chia node, và được định nghĩa dưới đây.

Định nghĩa: Các tác vụ tính toán gain – ratio (Gain-ratio-computing

task: TGR) là một tập hợp các tác vụ được sử dụng để tính toán gain-ratio từ các

thuộc tính của một tập con các thuộc tính tương ứng, bao gồm một chuỗi các

phép toán thực thi với mỗi thuộc tính đặc trưng, bao gồm tính entropy, quá

trình tự phân tách thông tin, mức tăng trưởng bội quá thông tin và tỷ lệ tăng

trưởng thông tin. Kết quả thực thi tác vụ TGR được gửi đến các nút con tương

ứng.

Định nghĩa: các tác vụ phân chia nút (Node-splitting task: TNS) là một

nhóm các tác vụ được sử dụng và thu thập kết quả của các tác vụ TGR và tách

Page 45: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

45

ra thành các nodes của cây quyết định, bao gồm các phương thức tính toán cho

mỗi nút của cây quyết định, như việc lựa chọn giá trị biến tốt nhất với gain-

ratio cao nhất và sử dụng biến đó để phân tách nút cho cây. Sau quá trình phân

chia node, kết quả của task TNS sẽ được phân chia cho từng nút phụ (slave) để

bắt đầu bước tiếp theo của quá trình huấn luyện của PRF.

Các bước trong quá trình huấn luyện đồng thời của mô hình PRF được

diễn giải giải thuật sau:

Giải thuật 2: quá trình huấn luyện đồng thời của mô hình PRF.

Input:

k: số cây quyết định của mô hình PRF;

TDSI: bảng đồ thị các bước thực hiện DSI của PRF;

LFS: danh sách các chỉ mục tập hợp các thuộc tính con của đối

tượng RDD và các nút phụ được phân chia.

Đầu ra:

PRFtrained: mô hình PRF sau khi huấn luyện1.

1: for i = 0 to (k - 1) do

2: for j = 0 to (M - 2) do

3: load features subset RDDFSj loadData(LFS[i])

//TGR:

4: RDD(GR;best) sc.parallelize(RDDFSj).map

5: load dữ liệu mẫu RDD(i;j) (TDSI[i], RDDFSj);

6: tính toán gain-ratio GR(i;j) GR(RDD(i;j));

7: end map

//TNS:

8: RDD(GR;best).collect().sorByKey(GR).top(1);

9: for với mỗi giá trị y(j,v) in RDD(GR;best) do

10: tách node cây Nodej < y(j;v); Value >;

11: gắn thêm Nodej vào Ti;

12: end for

13: end for

14: PRF

15: end for

16: return PRFtrained.

Page 46: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

46

(a) Giản đồ DAG của một cây quyết định trong PRF (b) một mô hình cây quyết định.

Hình 3.6. Ví dụ của task DAG cho một cây quyết định của PRF

Trong quá trình huấn luyện của mô hình PRF, phụ thuộc vào mỗi đối

tượng RDD, mỗi job của quá trình huấn luyện PRF sẽ được chia nhỏ thành các

bước, và sinh ra một giản đồ DAG phụ thuộc vào các bước đó. Đánh giá ví dụ

của cây quyết định PRF, một giản đồ DAG của quá trình huấn luyện dữ liệu

được hình thành, theo hình 2.17.

Trong một số task thực thi theo các bước của DAG, tương ứng với các

phân cấp của mô hình cây quyết định. Trong bước 1, sau khi giảm chiều dữ

liệu, có (m-1) TGR task được tạo (TGR1.0 ~ TGR1.(m-2)) cho (m-1) thuộc tính

(features) đầu vào. Các TGR này sẽ tính toán gain ratio của biến thuộc tính, và

đưa kết quả cho TNS1. TNS1 sẽ tìm các biến phân tách tốt nhất và thực hiện phân

chia ra nút đầu tiên của nhánh cây quyết định. Giả sử với y0 là biến phân tách

tốt nhất tại bước hiên tại, và giá trị của y0 nằm trong khoảng của {v01, v02,

v03}, do đó, nút cây đầu tiên sẽ được xây dựng bởi y0 và 3 nút con được tách

ra từ nhóm các node, theo hình 2.17(b). Sau khi phân tách các nút của cây, các

kết quả trung gian của TNS1 sẽ được phân bổ về toàn bộ các nút phụ của Spark.

Kết quả bao gồm thông tin của các biến phân tách và dữ liệu chỉ mục của danh

sách {v01, v02, v03}.

Page 47: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

47

Trong bước 2, vì y0 là một thuộc tính phân tách, nên sẽ không có task

TGR cho FS0. Quá trình phân chia công việc ẩn sau vấn đề này sẽ được thảo

luận trong phần thực hành. Một task TGR được tạo thành cho toàn bộ các thuộc

tính con khác theo kết quả của TNS1. Do danh sách chỉ mục của nhóm nút này

là {v01, v02, v03}, không tồn tại quá 3 tasks TGR cho mỗi nhóm thuộc tính con.

Ví dụ, task TGR2:11, TGR2:12, và TGR2:13 được tính toán cho dữ liệu FS1 với dach

sách chỉ mục tương ứng với v01, v02 và v03. Và điều kiện tương tự trong task

cho FS2 ~ FS(m-2). Sau đó kết quả của tasks {TGR2.11, TGR2.21, TGR2.(m-2)1} được

chuyển cho task TNS2.1 cho các cây con được phân tách giống nhau. Tasks của

các nodes cây khác và các bước khác được thực hiện tương tự. Theo cách này,

với mỗi giản đồ DAG của quá trình huấn huyện của mỗi cây mô hình quyết

định được xây dựng. Thêm vào đó, có k giản đồ DAGs được xây dựng tương

ứng với k cây quyết định trong mô hình PRF.

b. Lập lịch xử lý đồng thời

Sau khi xây dựng được biểu đồ task DAG của tất cả các cây quyết định,

các bước tác vụ thực hiện (tasks) trong giảm đồ DAGs được đưa vào tiến trình

lập lịch Spark. Có hai loại tác vụ tính toán trong DAG, một để xử lý trao đổi

thông tin lấy tài nguyên theo yêu cầu, và một để xử lý song song hóa. Và để

cải thiện hiệu năng của PRF một cách hiệu quả và giảm thiểu chi phí tài nguyên

truyền dữ liệu của các task trong môi trường phân tán, Spark sử dụng hai bộ

lập lịch đồng thời để thực hiện các task này, được gọi là nhóm các tiến trình

lập lịch xử lý đồng thời. Tiến trình lập lịch xử lý đồng thời danh sách chỉ mục

của mỗi nhóm các thuộc tính (features) con của đối tượng RDD và phân chia

về các nút phụ.

Trong Spark, module Task-Scheduler-Listener giám sát các công việc

đã được gửi lên, chia công việc thành các bước thực hiện với các nhiệm vụ

khác nhau, sau đó gửi các nhiệm vụ này cho module Task-Scheduler. Module

Task-Scheduler nhận các nhiệm vụ, phân bổ và thực thi thông qua các tiến trình

xử lý công việc phù hợp (Spark - executor). Căn cứ theo các loại công việc cần

thực hiện, Task-Scheduler bao gồm 3 module con là LocalScheduler (xử lý dữ

liệu tại một nút có 1 driver – 1 executor), ClusterScheduler (module với cơ chế

xử lý phân tán; lưu trữ vật lý theo từng nút của cụm và có 1 driver và 1 nút

chứa nhiều executor), và MessosScheduler (module với cơ chế sử dụng cho

PTDL lớn – mỗi cụm có nhiều executor và mỗi nút được chia 1 executor, trong

Page 48: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

48

đó có 1 executor được sử dụng làm nút driver), với các phân bổ khác nhau,

module Task-Scheduler sẽ xử lý khác nhau sử dụng các module con. Và sẽ có

5 cơ chế xử lý trong Spark như sau PROCESS LOCAL, NODE LOCAL, NO

PREF, PACK LOCAL, và ANY. Quá trình sử dụng LocalScheduler cho các task

TGR và ClusterScheduler thực hiện task TNS được trình bày sau đây.

(1) LocalScheduler với các task TGR.

Module LocalScheduler là một luồng tiến trình hoạt động cục bộ trên

một máy, toàn bộ các task được đưa lên bởi DAGScheduler được thực thi trong

các luồng tiến trình, và kết quả sẽ được trả về cho DAGScheduler. Việc gán

thuộc tính cục bộ cho mỗi TGR là NODE_LOCAL và đưa chúng cho một module

LocalScheduler. Trong LocalScheduler, toàn bộ TGR task của PRF sẽ được

phân cho các nút phụ (slave nodes) nơi chứa các tập thuộc tính con tương ứng.

Các task này là độc lập với nhau và không có sự đồng bộ phức tạp nào giữa

các tiến trình. Và nếu một tập con thuộc tính được phân bổ cho nhiều nút phụ,

task TGR tương tự với quá trình của mỗi cây quyết định phân chia các nút của

cây. Và các tác vụ sẽ thực thi các hoạt động giao tiến về dữ liệu cục bộ xung

quanh các nút này. Nếu một hoặc nhiều thuộc tính con được phân bổ cho một

nút phụ, và các tác vụ TGR sẽ tăng lên tương ứng tại các nút hiện tại. Và sẽ

không có hoạt động giao tiếp dữ liệu nào giữa các nút đang thực thi và các nút

khác trong quá trình tính toán tiếp theo.

(2) ClusterScheduler với các task TNS.

Module ClusterScheduler giám sát quá trình cấp phát tài nguyên máy và

các task trong toàn bộ cụm Spark và phân chia các task phù hợp cho các

workers. Như đã đề cập ở trên, task TNS sẽ thu thập kết quả của các tác vụ TGR

tương ứng và phân tách các nút của cây quyết định. Task TNS là độc lập với

toàn bộ các tập con thuộc tính và có thể lập lịch và phân bổ các thuộc tính cho

toàn bộ cụm Spark. Ngoài ra, các tác vụ TNS căn cứ theo kết quả của các tác vụ

TGR tương ứng, do đó, sẽ có quá trình đợi và đồng bộ kết quả dữ liệu của các

task này. Vì vậy module ClusterScheduler được sử dụng để thực thi tác vụ TNS.

Đặt giá trị thuộc tính cục bộ của mỗi TNS là ANY và đưa lên một module

ClusterScheduler. Lược đồ task lập lịch đồng thời (task-parallel) được mô tả

trong Giải thuật 3. Sơ đồ lập lịch cho các task trong DAG được thể hiện trong

hình 17.

Page 49: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

49

Giải thuật 3: Lập lịch Task-parallel cho các task TNS.

Input:

TSNS: một tập các nhiệm vụ của TNS được đưa lên thông qua

DAGScheduler.

Output:

ERTS: kết quả thực thi của TSNS.

1: khởi tạo manager new TaskSetManager(TSNS);

2: thêm vào trình quản lý task activeTSQueue manager;

3: if hasReceivedTask == false then

4: create starvationTimer scheduleAtFixedRate(newTimerTask);

5: đánh thứ tự độ ưu tiên của TS2 activeTSQueue.FIFO();

6: for each task Ti in TS2 do

7: lấy thông tin về worker executora đang khả dụng từ workers;

8: ERTS executora.launchTask(Ti.taskid);

9: end for

10: end if

11: return ERTS.

3.2.3. Phân tích phương pháp xử lý task đồng thời

Nội dung phần này sẽ đánh giá về phương pháp tối ưu hóa các mô hình

đồng thời với 5 khía cạnh được đề cập theo 5 phần dưới. Khi so sánh Spark-

MLRF với các phương pháp xử lý đồng thời khác, mô hình lai tối ưu hóa đồng

thời kết hợp PRF đạt kết quả về hiệu suất, cân bằng tải, và có khả năng mở

rộng.

Page 50: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

50

Hình 2.17b. Quá trình lập lịch và thực thi task đồng thời dựa theo hình 2.17

a. Đánh giá độ phức tạp tính toán

Độ phức tạp khi tính toán đồng thời được với giải thuật PRF cải tiến sử

dụng cơ chế giảm chiều dữ liệu có độ phức tạp ban đầu là O(k(MN+mNlogN)).

Sau khi thực hiện song song hóa giải thuật PRF trên Spark, M thuộc tính của

tập dữ liệu huấn luyện được tính toán đồng thời trong quá trình thực hiện giảm

chiều dữ liệu, và k cây được huấn luyện đồng thời.

Theo đó, độ phức tạp tính toán theo lý thuyết của thuật toán PRF là:

𝑂 (𝑘(𝑀𝑁+𝑚𝑁𝑙𝑜𝑔𝑁)

𝑘 × 𝑀) ≈ 𝑂(𝑁(𝑙𝑜𝑔𝑁 + 1))

Page 51: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

51

b. Đánh giá khối lượng dữ liệu

Tận dụng phương pháp ghép kênh dữ liệu (data-multiplexing), dữ liệu

sử dụng cho quá trình huấn luyện được sử dụng lại một cách hiệu quả. Giả sử

khối lượng dữ liệu ban đầu là (N x M) và thang đo của mô hình RF là k, khối

lượng của tập dữ liệu mẫu ban đầu của RF và Spark-MLRF khi xử lý theo

phương pháp thông thường là (N x M x k). Trong quá trình huấn luyện đồng

thời PRF, với khối lượng dữ liệu mẫu giữ nguyên, khối lượng dữ liệu cần xử

lý trong quán trình huấn luyện là (𝑁 × 2 × (𝑀 − 1)) ≈ (2𝑁𝑀). Hơn nữa,

việc tăng trưởng quy mô của PRF không làm thay đổi về kích thước dữ liệu

hay bộ nhớ lưu trữ. Do đó, so với việc lấy mẫu của phương pháp RF cơ bản,

phương pháp ứng dụng PRF giúp giảm tổng khối lượng cần xử lý trong quá

trình huấn luyện cho PRF.

c. Đánh giá hiệu năng đường truyền dữ liệu

Trong PRF có một số tiến trình truyền tải dữ liệu phục vụ cho quá trình cấp

phát tài nguyên và quá trình huấn luyện mô hình, hoạt động trong cụm dữ liệu

Spark và giữa các slave. Giả sử có n slave trong cụm Spark, và khối lượng dữ

liệu huấn luyện mẫu là (2NM). Trong quá trình cấp phát tài nguyên, chi phí cho

đường truyền trung bình sẽ là 2𝑀𝑁

𝑛 . Trong quá trình huấn luyện mô hình PRF,

nếu một tập con thuộc tính được phân chia cho các nút trong cụm, sẽ có quá

trình giao tiếp dữ liệu cục bộ của các task tính toán giữa các nút trong cụm.

Nếu một hoặc vài tập thuộc tính con được phân chia vào cùng một nút, sẽ

không có tiến trình giao tiếp của các task tính toán giữa các nút. Sẽ có một

lượng nhỏ chi phí tài nguyên đường truyền được sử dụng để truyền tải thông

tin cho các kết quả trung gian trong mỗi bước của quá trình huấn luyện cây

quyết định. Việc phân vùng dữ liệu theo chiều dọc và phân chia dữ liệu tĩnh

giúp tối ưu hóa đường truyền, giảm lượng dữ liệu cần truyền tải trong môi

trường của cụm Spark, và khắc phục tình trạng nghẽn cổ chai của phương pháp

xử lý song song truyền thống.

d. Đánh giá cân bằng tải và tài nguyên

Cơ chế huấn luyện của PRF trên toàn cụm Spark, sử dụng phương pháp tối ưu

hóa đồng thời đã đạt được sự cân bằng về xử lý tài nguyên trong quá trình lưu

trữ và phân chia công việc. Một lý do là đối với tập con các thuộc tính có kích

thước khác nhau, sẽ có các task TGR với từng tập con. Sau đó việc phân phối

công việc cho cụm Spark tùy thuộc vào khối lượng dữ liệu của từng tập con

Page 52: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

52

thuộc tính. Một tập con thuộc tính với khối lượng dữ liệu lớn hơn khối lượng

dữ liệu cho phép theo cấu hình của Spark executor sẽ được phân chia ra xử lý

trên nhiều nút phụ (slave nodes). Và sẽ có TGR task tương đồng được lập lịch

song song với các nút này. Một tập con thuộc tính với khối lượng dữ liệu nhỏ

sẽ được phân bổ vào một nút phụ. Và cũng sẽ có TGR task tương đồng được lập

lịch trên nút đó.

Một lý do khác nữa là với việc phân tách các nút của cây, tại các nút phụ (slave

nodes) phân tách thuộc tính con sẽ đưa vào trạng thái chờ. Mỗi tập con thuộc

tính được chia sẻ và sử dụng lại giữa các nút bởi tất cả các cây quyết định. Việc

phân chia dữ liệu từ các cây quyết định cũng được chia đều cho các slave để

thực thi, cho phép lưu trữ và dùng lại. Giúp cho việc cân bằng tải và tối ưu hóa

về tài nguyên và thời gian trong quá trình xử lý.

e. Đánh giá khả năng mở rộng của thuật toán

Tính ổn định và khả năng mở rộng của giải thuật PRF được đánh giá

theo 3 khía cạnh. (1) Việc xử lý dữ liệu với phương pháp ghép kênh dữ liệu

của PRF giúp cho quá trình huấn luyện có thể sử dụng lại tối đa và hiệu quả.

Khi PRF mở rộng, cụ thể là tăng trưởng về số lượng cây quyết định, dữ liệu và

vùng lưu trữ không tăng lên. Sẽ chỉ có sự tăng trưởng về số task tính toán cho

các cây mới và chi phí cho một lượng dữ liệu nhỏ để sử dụng cho quá trình

tổng hợp và truyền dữ liệu giữa các bước trung gian của các task. (2) khi cụm

Spark mở rộng, chỉ có một số tập con thuộc tính chiếm nhiều dung lượng cần

san sang các nút (nodes) máy tính mới để đảm bảo cân bằng tải về tiến trình

xử lý và lưu trữ. (3) khi quy mô của tập dữ liệu tăng lên, chỉ cần tách các tập

thuộc tính con đặc trưng từ dữ liệu mới theo cùng một cách phân vùng dữ liệu

theo chiều dọc và đưa thêm vào tập dữ liệu ban đầu tương ứng. Do vậy, PRF

tối ưu hóa khi xử lý song song, có độ ổn định và khả năng mở rộng tốt.

3.3. Kmeans, tối ưu hóa xử lý Kmeans với Spark.

Thuật toán K-means cũng là một thuật toán quan trọng và được sử dụng

phổ biến trong kỹ thuật phân cụm. Tư tưởng chính của nó là tìm cách phân

nhóm các đối tượng ( objects ) cho trước vào K cụm ( K là số cụm và được xác

định trước ) sao cho tổng bình phương khoảng cách giữa các đối tượng đến

tâm nhóm ( centroid ) là nhỏ nhất.

Page 53: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

53

Hình 3.7. Hình dạng cụm dữ liệu được khám phá bởi k-means

Nội dung thuật toán cụ thể như sau:

Cho trước mạng lưới gồm N nút và số cụm k.

Bước 1. Khởi tạo: Chọn ra ngẫu nhiên k nút làm trọng tâm {ci} i = 1, ..., k.

Bước 2. Với mọi nút, tính khoảng cách giữa nó với các trọng tâm của các cụm.

Gán nó vào cụm có trọng tâm gần nó nhất.

Bước 3. Cập nhật lại các trọng tâm mới.

𝑐𝑖(𝑡+1)

=1

|𝑆𝑖(𝑡)|

∑ 𝑥𝑗𝑥𝑗∈𝑆𝑖

(𝑡)

Bước 4. Lặp lại bước 2 và 3 cho đến khi không có sự thay đổi giữa các cụm

Thuật toán k-means trên được chứng minh là hội tụ và có độ phức tạp tính

toán là: 𝑂((3𝑛𝑘𝑑)τ𝑇𝑓𝑙𝑜𝑝)

Trong đó, n là số đối tượng dữ liệu, k là số cụm dữ liệu, d là số chiều, τ là

số vòng lặp, Tflop là thời gian để thực hiện một phép tính cơ sở như phép tính nhân,

chia,... Như vậy, do k-means phân tích phân cụm đơn giản nên có thể áp dụng đối

với tập dữ liệu lớn.Tuy nhiên, nhược điểm của k-means là chỉ áp dụng với dữ liệu

có thuộc tính số và khám phá ra các cụm có dạng hình cầu, k-means còn rất nhạy

cảm với nhiễu và các phần tử ngoại lai trong dữ liệu. Hơn nữa, chất lượng phân

cụm dữ liệu k của thuật toán k-means phụ thuộc nhiều vào các tham số đầu vào

như: số cụm k và k trọng tâm khởi tạo ban đầu. Trong trường hợp các trọng tâm

khởi tạo ban đầu mà quá lệch so với các trọng tâm cụm tự nhiên thì kết quả phân

cụm của k-means là rất thấp, nghĩa là các cụm dữ liệu được khám phá rất lệch so

với các cụm trong thực tế. Trên thực tế chưa có một giải pháp tối ưu nào để chọn

các tham số đầu vào, giải pháp thường được sử dụng nhất là thử nghiệm với các

giá trị đầu vào k khác nhau rồi sau đó chọn giải pháp tốt nhất.

Page 54: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

54

Hình 3.8. Thuật toán Kmeans trong Spark

Khi xử lý phân cụm, dữ liệu đầu vào được đưa lên các RDDs , các RDDs

này tương ứng được phân chia đồng thời vào các tasks và xử lý. Sau đó tính

toán độc lập các tâm cụm với nhau và cập nhật lại tâm cụm. Việc cập nhật lại

tâm của k cụm được thực hiện đồng thời và riêng biệt giữa các RDDs, sau đó,

sẽ có một giản đồ DAGs được hình thành, với các bước cần thực hiện, khi có

có quả tổng hợp, dữ liệu được xáo trộn và tính toán lại giữa các cụm được

chuyển về cho Spark master, Spark master thực hiện tính toán lại tâm cụm và

chuyển lại các task tính toán dữ liệu cho các Spark slave, quá trình này lặp lại

tương ứng cho đến khi không còn thay đổi giữa các tâm cụm và trả ra dữ liệu

kết quả.

Việc tối ưu các bước thực thi trong việc song song hóa quá trình xử lý

và ghép dữ liệu trên Spark, hỗ trợ trong quá trình xử lý đồng thời dữ liệu lớn.

Theo [17] và [18], các độ đo chất lượng phân cụm được phân thành 3

loại là:

Page 55: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

55

Đánh giá trong (internal evaluation): Kết quả phân cụm được đánh giá

dựa trên chính dữ liệu được phân cụm bằng cách sử dụng các đại lượng đánh

giá sự gắn kết cụm như mật độ ( density), khoảng cách giữa các phần tử bên

trong cụm hay khoảng cách giữa các cụm với nhau, ... Hướng tiếp cận của loại

này dựa trên tiêu chí: các thuật toán phân cụm tốt là các thuật toán tạo ra các

cụm mà các phần tử bên trong mỗi cụm có độ tương tự với nhau lớn và độ

tương tự với các phần tử bên ngoài nhỏ.

Đánh giá ngoài (external evaluation): Kết quả phân cụm được đánh giá

dựa tập dữ liệu chuẩn(mẫu) đã được phân từ trước đó, còn được gọi là tập

benchmark. Hướng tiếp cận của loại này đánh giá mức độ tương đồng giữa

việc phân cụm bởi thuật toán với tập dữ liệu benchmark.

Đánh giá quan hệ (relative evalution): Đánh giá việc phân cụm bằng

cách so sánh nó với các kết quả phân cụm khác được sinh ra bởi cùng thuật

toán nhưng với các giá trị tham số khác nhau.

Việc đánh giá số cụm tốt nhất có thể kể đến một số chỉ số như Độ đo

bóng (Silhouette), độ đo Davies – Bouldin, độ đo Dunn, độ đo Modularity...

Trong quá trình thực hiện đề tài này, sẽ chỉ sử dụng độ đo Davies – Bouldin.

Độ đo Davies – Bouldin (DB)

Độ đo Davies-Bouldin được tính theo công thức theo [15]:

𝐷𝐵 =1

𝑛∑ 𝑀𝑎𝑥𝑖≠𝑗

𝑛

𝑖=1

𝜎𝑖 + 𝜎𝑗

𝑑(𝑐𝑖 , 𝑐𝑗)

Trong đó:

n là số cụm.

cx là trọng tâm của cụm x

σx là trung bình khoảng cách của tất cả các phần tử trong cụm x tới trọng tâm cx

d(ci , cj) là khoảng cách giữa hai trọng tâm của cụm i và j.

Giá trị DB càng nhỏ thì chất lượng phân cụm càng tốt.

Nhận xét: Do k-means phân tích phân cụm đơn giản nên có thể áp dụng đối

với tập dữ liệu lớn. Nhưng k-means còn nhiều mặt hạn chế như: k-means chỉ áp dụng

với dạng dữ liệu có thuộc tính số và có dạng hình cầu, k-means còn rất nhạy cảm với

nhiễu và các phần tử ngoại lai trong dữ liệu. Ngoài ra, chất lượng phân cụm của thuật

toán k-means phụ thuộc nhiều vào các tham số đầu vào như: số cụm k và k trọng tâm

khởi tạo ban đầu. Trong trường hợp, các trọng tâm khởi tạo ban đầu mà quá lệch so

Page 56: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

56

với các trọng tâm cụm tự nhiên thì kết quả phân cụm của k-means là rất thấp, cụm

dữ liệu được khám phá rất lệch so với các cụm trong thực tế.

Page 57: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

57

Chương 4: Triển khai thực nghiệm

Chương 2 và Chương 3 đã trình bày các kiến thức cơ bản về các phương

pháp học máy, nền tảng cơ sở dữ liệu ứng dụng. Giới thiệt về việc việc ứng

dụng sử dụng Spark để triển khai Parallel Random Forest và Kmeans, đánh giá

về giải thuật và tối ưu hóa. Giới thiệu về cơ sở dữ liệu khách hàng 360 độ, được

sử dụng làm nền tảng cho quá trình thực hiện đề tài, kèm theo là giới thiệu về

các thuật toán sử dụng trong quá trình thực hiện đề tài. Chương 4 sẽ giới thiệu

chi tiết hơn về quá trình thực hiện đề tài;

4.1. Cơ sở dữ liệu Khách hàng 360 độ

Các công ty sử dụng và xây dựng nền tảng Cơ sở dữ liệu quy mô lớn –

kho dữ liệu lưu trữ BigData nhằm mục tiêu nắm bắt và có cái nhìn tổng thể về

hành trình của khách hàng. Mục tiêu của nền tảng dữ liệu là để hiểu hành vi

của khách hàng và ảnh hưởng đến sự hài lòng của khách hàng, thúc đẩy khách

hàng tương tác nhiều hơn. Do hành vi khách hàng tại từng thời điểm là khác

nhau, từ thời điểm khách hàng mới sử dụng dịch vụ cho đến khi khách hàng

rời bỏ dịch vụ, hay từ khi khách hàng mua sản phẩm đầu tiên cho đến khi khách

hàng sử dụng sản phẩm phụ kiện thứ hai… dữ liệu theo đó trải rộng khắp các

nơi, rải rác ở nhiều dịch vụ và lưu trữ ở nhiều hệ thống khác nhau và không có

sự liên kết rõ rệt. Do đó, thách thức là liên kết thông tin khách hàng của nhiều

dịch vụ, tại nhiều địa điểm và thông qua các chuỗi chu kỳ thời gian khác nhau

để có thể nắm bắt được thông tin, hành vi khách hàng, đưa ra các sản phẩm

điều hướng hoặc sản phẩm theo mong muốn dịch vụ của khách hàng. Cần có

cái nhìn 360 độ về toàn bộ hành trình khách hàng thông qua các thuộc tính

được xây dựng từ hiểu biết của nhà cung cấp dịch vụ về khách hàng. Việc xây

dựng cơ sở dữ liệu này phải đảm bảo linh hoạt, nhanh và có thể mở rộng để hỗ

trợ các mẫu mới khi có thay đổi về bối cảnh dữ liệu của bạn phát triển.

Dữ liệu đầu vào của cơ sở dữ liệu khách hàng 360 được tổng hợp từ các

nguồn: Server logs, Web pages, Web hyperlink, dữ liệu thị trường trực tuyến

và các thông tin khác...

Web logs(dữ liệu đăng nhập Web): Khi người dùng duyệt Web, dịch vụ

sẽ phân ra 3 loại dữ liệu đăng nhập: sever logs(dữ liệu đăng nhập trên server),

error logs(dữ liệu đăng nhập lỗi), và cookie logs(thông số của từng người dùng

Page 58: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

58

truy cập Wepsite). Thông qua việc phân tích các tài liệu đăng nhập này ta có

thể khám phá ra những thông tin truy cập.

Web pages: Hầu hết các phương pháp KPDL Web được sử dụng trong

Web pages là theo chuẩn HTML.

Web hyperlink structure: Các trang Web được liên kết với nhau bằng các

siêu liên kết, điều này rất quan trọng để khai phá thông tin. Do các siêu liên kết

Web là nguồn tài nguyên rất xác thực.

Dữ liệu thị trường trực tuyến: Như lưu trữ thông tin thương mại điện tử

trong các site thương mại điện tử.

Các thông tin khác: Chủ yếu bao gồm các đăng ký người dùng, nó có

thể giúp cho việc khai phá tốt hơn.

Giải pháp Kho dữ liệu Khách hàng 360 độ được xây dựng qua việc thu

thập dữ liệu từ hành trình của khách hàng trong thời gian quá khứ. Cho phép

nhà cung cấp dịch vụ có được các hành vi chi tiết nhất về khách hàng của mình,

hỗ trợ tối đa hóa dịch vụ và cung cấp cho khách hàng dịch vụ tốt nhất theo

mong muốn của khách hàng.

Việc xây dựng được bắt đầu từ khâu đánh giá các số liệu của đơn vị kinh

doanh và từ các nguồn dữ liệu đang có hiện tại. Xây dựng và đánh giá bộ giả

thiết, từ đó tạo nên các thuộc tính dữ liệu để đưa vào phân tích và đưa vào

model.

STT Giả thuyết

Tính sẵn

có dữ liệu

1

Khách hàng sử dụng trên 12 tháng có tỉ lệ rời mạng

thấp hơn Có

2

Khách hàng từng đóng cước trước lớn hơn 1 tháng có

tỉ lệ rời mạng thấp hơn Có

3

Khách hàng có hành vi truy cập truy cập web của đối

thủ tháng cuối trước khi bị chặn 1 chiều Có

4

Khách hàng có hành vi truy cập Hotline của đối thủ

tháng cuối trước khi bi chặn 1 chiều Có

5

Khách hàng giảm lưu lượng truy cập Internet tại

tháng cuối trước khi bị chặn 1 chiều Có

Page 59: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

59

6

Khách hàng nhận được cuộc gọi CSKH của đối thủ

tháng cuối trước khi bị chặn 1 chiều Có

7

Khách hàng có lưu lượng sử dụng 3G/4G nhiều tại

một địa điểm vào buổi tối Có

8 Số lượng thiết bị truy cập vào Modem thay đổi Có

9 Số lượng ngày Modem bật máy bị giảm Chưa có

10

Khách hàng có gọi điện cho CSKH tháng cuối trước

khi bị chặn 1 chiều Có

11

Khách hàng có gọi điện cho nhân viên phụ trách

tháng cuối trước khi bị chặn 1 chiều Có

12 Khách hàng Internet đơn lẻ, có tivi hiện đại

13

Khách hàng Internet có số lượng IP thiết bị truy cập

modem trong ngày lớn (đặc biệt thời điểm 20h-0h)

14

Khách hàng Internet có phát sinh lưu lượng data lớn

(thời điểm 20h -0h)

15

Khách hàng Internet có lưu lượng sử dụng của đường

truyền theo khung giờ thường xuyên đạt max tốc độ

gói

16

HGĐ >2 người, có dùng di động, Internet đơn lẻ,

thường xuyên gọi điện cho nhau, có sử dụng nhiều

data có bán them được gói FMC hay không?

17

Địa chỉ thiết bị có nhiều máy truy cập cùng lúc và là

quán cafe/nhà hàng/ văn phòng ... Có

18 Hộ gia đình đã có TH bán thêm gói FMC

19

Khách hàng truy cập vào URL liên quan đến dịch vụ

Internet của Viettel và đối thủ Có

20

Khách hàng liên hệ/ được liên hệ từ hotline dịch vụ

FTTH của Viettel và đối thủ Có

21 Khách hàng sử dụng data và mất phí ngoài gói cao Có

22

Khách hàng sử dụng dịch vụ của đối thủ đến hạn

đóng cước Chưa có

23

Khách hàng đang sử dụng dịch vụ ADSL có khả năng

phát triển thành thuê bao FTTH

Bảng 4-1: Danh mục thuộc tính đánh giá xây dựng C360

Việc xây dựng bộ cơ sở dữ liệu với 160 features thuộc tính và có hơn

400 features chi tiết (tham khảo phụ lục 1), giúp định hình rõ đối tượng khách

hàng và củng cố kết quả tốt hơn cho các mô hình học máy. Hỗ trợ củng cố kết

quả đầu ra. Với dữ liệu chi tiết khoảng 15 triệu bản ghi dữ liệu đầu vào, việc

sử dụng nền tảng cơ sở dữ liệu C360 để khai thác và ứng dụng là điều thiết yếu

Page 60: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

60

trong quá trình ứng dụng Phân tích dữ liệu vào thực tế. Chi tiết dữ liệu sử dụng

và quá trình huấn luyện mô hình sẽ được trình bày trong Chương 3

4.2. Mô hình ứng dụng

Hình 4.1. Quá trình kết hợp K-Means và RandomForest

Phần này sẽ giới thiệu về quá trình huấn luyện và quá trình kiểm định,

theo hình 3.1. Trong quá trình huấn luyện ban đầu, một tập lớn dữ liệu được

phân nhóm bằng cách đưa vào quá trình phân cụm sử dụng K-Means. Sau đó,

từ k cụm dữ liệu Kmeans này sẽ được sử dụng làm k nhóm đầu vào sử dụng

huấn luyện cho mô hình PRF. PRF sẽ thực hiện việc lựa chọn ngẫu nhiên các

tập thuộc tính (features) con để huấn luyện và đánh trọng số, sau đó tạo thành

n tập mẫu con có đặc trưng riêng, tương ứng với k cụm dữ liệu được tạo. Tiếp

theo đến quá trình kiểm định và đánh giá mô hình, PRF sẽ thực hiện đồng thời

hóa việc xây dựng các cây quyết định con tương ứng, sau đó tạo ra các phân

lớp theo thứ tự trọng số của các tập thuộc tính con, chọn ngẫu nhiên ra tập

thuộc tính con để đánh giá tỷ lệ nhãn so với các tập con còn lại. Trong quá trình

Page 61: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

61

này, đối với mỗi cây quyết định, các giá trị ngẫu nhiên được tạo ra, và cho đến

bước cuối cùng, phân lớp dữ liệu tốt nhất sẽ được đưa ra căn cứ theo thuộc tính

đa số.

Việc lựa chọn giải thuật PRF và Kmeans cho phép tối ưu hóa tài nguyên

khi sử dụng nền tảng SparkML, tối ưu hóa thời gian xử lý cũng như giảm thiểu

chi phí khi xử lý dữ liệu lớn phân tán. Với bộ dữ liệu đầu vào hơn 15 triệu bản

ghi và hơn 684 thuộc tính tương ứng của một ID định danh. Không bao gồm

các thuộc tính thông tin cơ bản – là các thuộc tính định danh của khách hàng.

Các thuộc tính cơ bản trong được thể hiện trong bảng dưới, với mỗi

thuộc tính hành vi trong bảng dưới sẽ được xử lý và tạo ra các thuộc tính dạng:

Chuỗi thời gian theo tháng:

tháng n-1; tháng n-2; tháng n-3; 3 tháng gần nhất;

Theo delta tăng giảm:

delta tháng n-1 = (tháng n-1) - (tháng n-2);

delta tháng n-2 = (tháng n-2) - (tháng n-3);

delta tháng n-3 = (tháng n-3) - (tháng n-4)

Theo từng Quý

Quý_n = tổng số lần/giao dịch trong 3 tháng gần nhất = (tháng n-1 +

tháng n-2+tháng n-3)

Quý_n_1 = tổng số lần/giao dịch trong 3 tháng gần nhất = (tháng n-4

+ tháng n-5+tháng n-6)

Quý_n_2 = tổng số lần/giao dịch trong 3 tháng gần nhất = (tháng n-7

+ tháng n-8+tháng n-9)

Delta giữa các Quý

Delta Quý = Quý_n - Quý n_1

Delta Quý_n_1 = Quý n_1 - Quý n_2

Tính độ lệch chuẩn STD theo chu kỳ từng tháng và quý.

Nhóm

trường Tên trường Chú thích

Kiểu dữ

liệu

Định

danh

khách

hàng

Mã thuê bao sub_id Numeric

ISDN isdn Numeric

Mã khách hàng cust_id Nominal

Mã account gline account_gline Numeric

Mã account ftth account_ftth Numeric

Tên khách hàng name Nominal

Tuổi khách hàng customer_age Nominal

Page 62: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

62

Giới tính sex Numeric

Ngày đăng kí sử dụng sta_datetime Nominal

Ngày đầu tiên kết nối first_connect Nominal

Ngày kết thúc end_datetime Nominal

Tháng cắt kết nối end_month Nominal

Tháng bị chặn 1 chiều block_month Nominal

Địa điểm lắp đặt register_province Nominal

Loại sản phẩm sử dụng product_code Nominal

Dịch vụ sử dụng telecom_service_name Nominal

Tuổi thuê bao sub_age Nominal

Số tháng sử dụng num_usage_month Nominal

Tình trạng hợp đồng contract_status Nominal

Loại thuê bao sub_type Nominal

Hành

vi Sử

dụng

dịch

vụ cơ

bản

usage_day_n Số ngày phát sinh lưu lượng trong tháng Numeric

non_usage_day_n Số ngày không phát sinh lưu lượng trong

tháng lớn nhất Numeric

non_usage_day_n Số ngày liên tục không phát sinh lưu

lượng trong tháng lớn nhất Numeric

no_prepaid_payment Số lần đóng cước trước Numeric

avg_amt_prepaid_payment Trung bình số tháng đóng cước trước Numeric

no_month_last_prepaid_payment Số tháng đóng cước trước gần nhất Numeric

amt_last_prepaid_paymnet Số tiền đóng cước trước gần nhất Numeric

reserve_prepaid_charge Số tháng tiền đóng cước trước còn lại Numeric

no_month_prom_last_payment Số tháng khuyến mại cho lần đóng cước

trước gần nhất Numeric

Hành

vi

CSKH

phản

ánh

reserve_days_to_block Số ngày nợ cước đến ngày bị chặn 1

chiều Numeric

no_days_to_churn Số ngày nợ cước đến ngày bị cắt dịch vụ Numeric

no_report_cskh_n Số lần phản ánh tới hệ thống CSKH

trong tháng Numeric

no_call_cskh_n Số lần gọi điện tới CSKH trong tháng Numeric

no_staff_n Số lần gọi điện tới nhân viên phát triển

khách hàng trong tháng Numeric

no_reason_n Nội dung phản ánh nhiều nhất Numeric

Hành

vi sử

dụng

hạ tầng

flag_change_province flag đã từng thay đổi địa chỉ lắp đặt Binominal

flag_change_techonology flag đã từng nâng cấp hạ tầng Binominal

flag_change_ftth_product flag đã từng thay đổi gói sản phẩm ftth

đang sử dụng Binominal

flag_change_th_product flag đã từng thay đổi gói sản phẩm th

đang sử dụng Binominal

flag_fmc_product flag đang sử dụng sản phẩm FMC Binominal

Page 63: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

63

flag_churn_order flag yêu cầu hủy dịch vụ Binominal

reason_id_churn Lí do hủy dịch vụ. Numeric

fmc_product Sản phẩm FMC sử dụng Numeric

flag_use_duration_12month flag khách hàng đã sử dụng trên 12 tháng Binominal

no_modem_active Số ngày Modem bật trong tháng Numeric

Hành

vi

đóng

cước

prepaid_last_datetime Tháng hết hạn đóng cước Numeric

prepaid_last_datetime_prom Tháng hết hạn đóng cước trước + tháng

được khuyến mại Numeric

flag_prepaid_1month flag đã từng đóng trước chu kì 1 tháng Binominal

flag_prepaid_3month flag đã từng đóng trước chu kì 3 tháng Binominal

flag_prepaid_6month flag đã từng đóng trước chu kì 6 tháng Binominal

flag_prepaid_12month flag đã từng đóng trước chu kì 12 tháng Binominal

flag_sms_prepaid Flag có nhận được tin nhắn báo hết cước

dịch vụ Binominal

flag_call_prepaid Flag có nhận được cuộc gọi báo hết cước

dịch vụ Binominal

flag_nv_prepaid Flag có nhân viên đến thu cước dịch vụ Binominal

Bảng 4-2: Danh mục thuộc tính được sử dụng

Trong đó, mã thuê bao là id định danh của 1 bản ghi. Với mục tiêu tìm

ra tập khách hàng có nguy cơ rời mạng, đánh giá và đưa ra chính sách phù hợp

với từng phân nhóm khách hàng.

4.2.1. Quá trình Phân cụm dữ liệu huấn luyện:

Toàn bộ quá trình thực hiện thử nghiệm được thực hiện trên nền tảng

Spark, với một cụm Spark gồm 1 nút (node) chính (Master) và 100 nút (node)

phụ (Slaves). Cấu hình tại mỗi nút:

Hệ điều hành: Ubuntu 12.04.4 và Mỗi nút thực thi được cấu hình một

CPU Pentium (R) Dual-Core 3,20GHz và bộ nhớ Ram 8GB. Tất cả các nút

được kết nối bằng mạng Gigabit tốc độ cao và được cấu hình với Hadoop 2.5.0

và Spark 2.0.2. Thuật toán và giải thuật được thực hiện xây dựng trên nền tảng

Scala 2.10.4. Sử dụng Zeppelin để tạo viết code, script và lấy thuộc tính, tăng

tính linh hoạt trong quá trình xây dựng, sử dụng và tái sử dụng dữ liệu.

Page 64: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

64

a. Phân nhóm/cụm khách hàng

Trong quá trình thực hiện phân nhóm khách hàng sử dụng KMeans, sử

dụng độ đo DaviesBouldin để đánh giá số cụm phù hợp nhất, với số cụm tối

thiểu là 4 (do nhóm khách hàng cơ bản ban đầu cần đánh giá nằm ở 4 phân

khúc khách hàng). Với E là số cụm tối ưu.

E = evalclusters(X,'kmeans','DaviesBouldin','klist',[1:12])

Các thuộc tính sẽ căn cứ theo kinh nghiệm để lựa chọn ra các thuộc

tính cho lần đầu tiên khi phân cụm, sau khi có thuộc tính lần đầu tiên; ta sử

dụng thuộc tính được xếp hạng từ các cụm chạy mô hình rừng ngẫu nhiên để

đánh giá.

Căn cứ theo đánh giá khi sử dụng độ đo Davies – Bouldin (DB), thực

hiện thử nghiệm lần lượt với số cụm và sử dụng độ đo DB đã nêu ở chương 3

ta có bảng sau:

K 2 3 4 5 6 7 8 9 10 11 12

Davies–Bouldin 0.63 0.74 0.89 0.91 0.88 0.94 1.00 0.99 0.88 1.09 1.09

Bảng 4-3: Giá trị DaviesBouldin

Sau khi sử dụng độ đo DaviesBouldin đánh giá với các giá trị thuộc tính

dữ liệu đầu vào, thử nghiệm lần lượt từng số cụm, kết quả số cụm phù hợp nhất

ứng dụng giải thuật K-Means là 10. Với việc đánh giá số lượng cụm và số

lượng dữ liệu cần đánh giá – là số bản ghi của KH phát triển mới trong tháng

tại mỗi cụm được chia như sau:

Cụm 0 1 2 3 4 5 6 7 8 9

Số

lượng

thuê bao

rời

mạng

34876 1201 2107 1769 517 101 2337 4947 704 416

SLTB

đang sử

dụng

dịch vụ

2583267 32302 82032 61519 11711 1725 106359 281188 20002 21584

Bảng 4-4: Kết quả phân cụm

b. Đánh giá kết quả phân cụm:

Page 65: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

65

Việc đánh giá kết quả phân cụm sẽ căn cứ theo các thuộc tính đã sử dụng

để phâm cụm, sau đó hỗ trợ đưa ra các đặc điểm chung giữa các cụm để có các

chính sách gắn tương ứng với các cụm. Đánh giá ngẫu nhiên các thuộc tính có

tại mỗi cụm bằng cách so sánh các tâm cụm và độ tuổi trung bình, ta tạm chia

độ tuổi ra làm 2 nhóm KH.

Nhóm KH dưới 40 tuổi:

Giá trị trung bình các

thuộc tính ngẫu nhiên: Cluster_0 Cluster_1 Cluster_2 Cluster_3 Cluster_9

usage_day_n 3.48 0.35 5.33 4.03 4.57

non_usage_day_n 1.18 0.62 0.35 1.43 0.97

usage_night_n 2.59 6.34 4.3 1.25 7.15

no_prepaid_payment 6.49 2.67 2.03 3.38 1.08

avg_amt_prepaid_payment 7,799.01 1.38 1.99 5,141.49 7,015.60

no_month_last_prepaid_payment 15.04 0.74 0.38 13.23 20.13

amt_last_prepaid_paymnet 60,003.98 65,645.89 76,525.54 120,106.92 134,622.28

reserve_prepaid_charge 60,268.09 65,782.48 76,731.32 118,093.22 133,608.60

no_month_prom_last_payment 5.01 4.74 5.65 3.13 6.02

reserve_days_to_block 1.10 0.01 0.01 7.91 1.10

no_days_to_churn 47.27 45.61 52.92 57.87 62.27

no_report_cskh_n 63.28 32.23 24.72 35.44 73.28

no_call_cskh_n 34.98 0.17 0.68 1.65 25.68

flag_change_province 0.96 0.04 0.41 0.02 0.05

flag_change_techonology 0.39 0.21 0.14 0.08 0.07

flag_change_ftth_product 0.05 0.01 0.01 0.05 0.05

flag_change_th_product 0.02 0.04 0.04 0.01 0.02

flag_fmc_product 0.01 0.00 0.00 0.01 0.01

flag_churn_order 0.74 0.28 0.21 0.75 0.77

no_modem_active 2.36 1.47 1.54 4.92 1.24

age 28.50 29.24 36.40 32.70 32.90

SL bản ghi 2618143 33503 84139 63288 22000

Nhóm KH có độ tuổi trên 40 tuổi

Page 66: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

66

Giá trị trung bình các

thuộc tính ngẫu nhiên: Cluster_4 Cluster_5 Cluster_6 Cluster_7 Cluster_8

usage_day_n 2.63 3.44 3.05 3.18 2.71

non_usage_day_n 1.20 0.82 1.56 0.71 1.91

non_usage_day_n 1,527.45 7,954.27 1.29 1,401.84 5.12

no_prepaid_payment 5,938.54 23,788.83 224.35 2,727.05 14.33

avg_amt_prepaid_payment 270.19 159.32 261.83 74.32 98.01

no_month_last_prepaid_payment

8.38 2.47 6.20 2.01 6.34

amt_last_prepaid_paymnet 68,504.44 69,128.46 69,802.66 12,822.42 72,465.80

reserve_prepaid_charge 68,600.89 69,144.72 69,938.38 1.02 72,878.50

no_month_prom_last_payment 44,698.14 46,532.31 43,894.30 0.00 48,446.43

reserve_days_to_block 16 47 10 70 10

no_days_to_churn 55.65 90.13 95.63 124.22 55.84

no_report_cskh_n 5,834.13 23,586.71 258.35 2,670.96 0.65

no_call_cskh_n 1,680.95 14,147.57 0.06 1,435.56 0.98

no_staff_n 3,695.27 4,495.25 3,643.28 690.90 4,300.80

no_reason_n 40,672.46 38,309.58 35,767.14 8,197.68 46,575.51

flag_change_province 4,908.36 10,200.93 12,944.46 1,555.15 18.07

flag_change_techonology 14,360.23 11,546.19 12,296.76 1,418.13 14,332.91

flag_change_ftth_product 0.25 0.05 0.05 0.02 0.03

flag_change_th_product 0.24 0.04 0.04 0.04 0.07

flag_fmc_product 0.03 0.01 0.01 0.01 0.01

flag_churn_order 0.02 0.54 0.75 0.32 0.70

no_modem_active 6,221.33 12,953.91 16,688.80 1,952.86 3.24

age 44.50 54.80 58.60 46.70 42.50

SL bản ghi 12228 1826 108696 286135 20706

Bảng 4-5: Phân nhóm khách hàng trên 40 tuổi và dưới 40 tuổi

Các thuộc tính trong Bảng 4-5: Phân nhóm khách hàng trên 40 tuổi và

dưới 40 tuổi là kết quả các thuộc tính đến hiện tại khi đưa vào đánh giá phân

Page 67: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

67

cụm và thực hiện lặp lại nhiều lần mô hình ứng dụng kết hợp giữa K-Means và

rừng ngẫu nhiên xử lý song song

Các cụm cơ bản cho thấy nhóm hành vi phân bổ theo độ tuổi và phân

nhóm theo hành vi người dùng. Đánh giá thêm về số tháng đóng trước và đánh

giá sự liên quan đến hành vi đóng trước của KH theo từng tháng.

4.2.2. Lựa chọn ngẫu nhiên các thuộc tính và đánh giá:

Việc sử dụng ngẫu nhiên các thuộc tính đánh giá nội dung thực hiện sẽ

bao gồm việc đánh giá các đặc trưng mỗi cụm, đánh giá các thuộc tính

(features) ảnh hưởng đến kết quả dữ liệu đầu ra đầu ra của việc phân nhóm

khách hàng.

VD: khách hàng có độ tuổi lớn hơn hoặc bằng 58 (thuộc nhóm 6) tuổi

sẽ có ít khả năng rời bỏ dịch vụ hơn các nhóm còn lại, có hành vi ổn định theo

thời gian, sử dụng dịch vụ và đóng cước dài hạn, ít các dịch vụ phát sinh như

đăng ký phim ngoài hoặc mua thêm các chương trình như K+.

Việc đánh giá các cụm dữ liệu đưa vào cây quyết định cần rõ ràng về

nhãn sử dụng, rõ ràng về ngữ nghĩa dữ liệu và không bị mất cân bằng nhãn. Cụ

thể - loại bỏ cụm dữ liệu cụm 0 do cụm này đang chưa thể hiện rõ rệt về thuộc

tính dữ liệu.

Thực hiện đánh giá các thuộc tính có ảnh hưởng trên cụm 4 (12228),

cụm 5 (1826), cụm 8 (20706) và cụm 9 (22000) do có số lượng bản ghi ít, thuộc

tính hành vi khá rõ ràng, có thể đưa ra chính sách trực tiếp khi căn cứ vào kinh

nghiệm triển khai thực tiễn. VD: Độ tuổi trung bình của cụm cụm 8 là độ tuổi

42, với số tháng đóng trước thấp, nhỏ hơn 6 tháng, số tháng đóng trước trung

bình là 6 tháng. Với cụm 4, cụm 5, đã hết cước, cần đưa cho kinh doanh đánh

giá hình thức tác động, đánh giá thêm một số thuộc tính có trọng số cao để hỗ

trợ đưa ra quyết định.

Tiếp tục ứng dụng mô hình học máy và cắt ngưỡng triển khai với các

cụm 2, cụm 3, cụm 6 và cụm 7.

4.2.3. Thực hiện huấn luyện dữ liệu với mô hình Parallel

RandomForest

Page 68: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

68

Việc huấn luyện dữ liệu sẽ được thực hiện đồng thời với toàn bộ các

cụm dữ liệu đầu vào, sử dụng ma trận - confusion matrix để đánh giá và biểu

đồ ROC để thể hiện.

Kết quả huấn luyện với các cụm như sau:

Cụm 2:

Cụm 3:

Cụm 6

Cụm 7

Page 69: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

69

Hình 4.2. Tỷ lệ độ đo theo ROC của các tập train, test và validation

Các biểu đồ thể hiện độ ROC theo hình 3.2. Cho thấy tỷ lệ giữa Precision

và Recall của mỗi cụm.

Tổng thời gian huấn luyện là 1.5 tiếng cho toàn bộ quá trình, bao gồm

quá trình huấn luyện, kiểm định và đánh giá lại mô hình, sau đó ghi kết quả

đầu ra tổng hợp.

Giải thuật Accuracy Precision Recall

Mạng Neural 75.61% 81.86% 88.89%

PRF 74.22% 78.30% 88.45%

KNN 72.21% 76.80% 86.74%

Bảng 4-6: So sánh tỷ lệ Accuracy giữa Precision, Recall

Việc đánh giá thời gian huấn luyện sẽ đánh giá theo 2 chiều, đầu tiên,

đánh giá về thời gian huấn luyện một mô hình chạy đơn lẻ, sau đó đo thêm

trung bình thời gian huấn luyện đồng thời toàn bộ các mô hình, và độ chênh

lệch thời gian giữa các mô hình.

Các mô hình KNN và PRF được thực hiện trên cùng một môi trường có

cài đặt Spark, đối với mạng Neural, cài đặt Python trên một máy có cấu hình

tương đương: Ram 32GB; CPU 3.2 ghz trên một máy. Việc so sánh về thời

gian và cấu hình tương đương với Mạng Neuron là không hợp lý, do việc xây

dựng, cài đặt và cấu hình cho giải thuật không tương đồng, môi trường không

tương đồng, do mạng Neural xử lý trên một máy. Với Mạng Neural, chạy trên

một máy với 1 cụm là 3240s, đồng thời toàn bộ các cụm là 24486s, độ chênh

lệch giữa các lần thử là 190s.

Giải thuật

Chạy 1

cụm

Chạy

toàn bộ

các cụm

Độ

chênh

lệch

Page 70: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

70

PRF 2378s 4898s 358s

KNN 2488s 6898s 482s

Bảng 4-7: So sánh thời gian chạy giữa KNN và PRF.

Việc xử lý dữ liệu của cụm Spark tính theo khả năng xử lý đồng thời có

thể lên đến 800GB (100 nút phụ - slave node, 8GB Ram/node). Giúp cho quá

trình tính toán cũng như đảm bảo đầu ra sản phẩm khi đưa vào triển khai thực

tế.

Kết quả thực hiện lần 1 với mô hình học máy sử dụng rừng ngẫu nhiên

để đánh giá mức độ cắt ngưỡng phù hợp chung với toàn bộ các mô hình:

Tỷ lệ nhãn 0/1: 21.693/15.917.905

Sử dụng toàn bộ thuộc tính của C360 để huấn luyện và đưa ra tập kết

quả. Tương đương 1,2T dữ liệu xử lý đồng thời.

Hình 4.3. Important Feataures v1

Hình 3.3 cho thấy kết quả huấn luyện phân loại thuộc tính ban đầu; được

sử dụng để phân loại thuộc tính và đánh giá nhóm các cụm thuộc tính. Gồm

nhóm 30 thuộc tính có điểm trọng số ảnh hưởng lớn nhất đối với mỗi Key Id.

Page 71: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

71

Hình 4.4. ROC - Receiver operating characteristic

Biểu đồ theo hình 3.4 đánh giá độ chính xác theo biểu đồ ROC thể hiện

độ phù hợp tập dữ liệu đầu ra sau quá trình huấn luyện.

Hình 4.5. Cumulative Gain

Biểu đồ AUROC – Cumulative Gain hình 3.5 cho thấy tính hiệu quả và

độ phủ của model. Biểu đồ này sử dụng để đánh giá hiệu năng triển khai và

đánh giá độ phủ sau triển khai. Sử dụng đánh giá về độ phủ và đánh giá về

nhóm tiềm năng.

3.1. Đánh giá độ chính xác phân loại cho mô hình cây

khác nhau.

Page 72: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

72

Để minh họa cho độ chính xác phân loại (accuracy) của PRF, các thí

nghiệm được thực hiện cho các thuật toán khác nhau, bao gồm 3 thuật toán

được so sánh: PRF,DRF (Dinamic Random Forest) [16], và RF, SparkLib

MLRF [22]. Mỗi trường hợp liên quan đến độ đo khác nhau của cây quyết định.

Kết quả thử nghiệm được trình bày trong hình 26.

Hình 4.6. Tỷ lệ độ chính xác trung bình của các mô hình cây khác

Hình 3.6 cho thấy độ chính xác phân loại trung bình của tất cả các thuật

toán so sánh không cao khi số lượng cây quyết định bằng 10. Khi số lượng cây

quyết định tăng lên, độ chính xác phân loại trung bình của các thuật toán này

tăng dần và có xu hướng hướng tới một sự hội tụ. Độ chính xác phân loại của

PRF trung bình cao hơn RF 8,9% và cao hơn 10,6% trong trường hợp tốt nhất

khi số lượng cây quyết định bằng 1500. Cao hơn DRF trung bình 6,1% và cao

hơn 7,3% trong trường hợp tốt nhất khi số lượng cây quyết định bằng 1300.

Độ chính xác phân loại của PRF cao hơn so với Spark-MLRF trung bình 4,6%

và 5,8% trong trường hợp tốt nhất khi số lượng cây quyết định bằng 1500. Do

đó, so với RF, DRF và Spark-MLRF, PRF cải thiện độ chính xác phân loại

đáng kể.

Độ chính xác phân loại của PRF trong tất cả các trường hợp đều cao hơn

so với RF, DRF và Spark-MLRF rõ ràng cho từng quy mô dữ liệu. Độ chính

xác phân loại của PRF cao hơn DRF trung bình 8,6% và cao hơn 10,7% trong

trường hợp tốt nhất khi số lượng mẫu bằng 3.000.000. Độ chính xác phân loại

của PRF cao hơn trung bình là 8,1% của Spark-MLRF và cao hơn 11,3% trong

trường hợp tốt nhất khi số lượng mẫu bằng 3.000.000. Đối với Spark-MLRF,

do phương pháp lấy mẫu cho từng phân vùng của tập dữ liệu, khi kích thước

0

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16

0.18

0.2

10 30 50 70 90 200 400 600 800 1000 1200 1400 1600 1800 2000 2200 2400

PRF SpartLib DRF RF

Decision tree

Av

erag

e A

ccu

racy

Page 73: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

73

của tập dữ liệu tăng lên, tỷ lệ lựa chọn ngẫu nhiên của tập dữ liệu tăng và độ

chính xác của Spark-MLRF chắc chắn sẽ giảm. Do đó, so với RF, DRF và

Spark-MLRF, PRF cải thiện độ chính xác phân loại đáng kể cho các quy mô

khác nhau của bộ dữ liệu

4.3. Đánh giá hiệu suất:

Nhiều thí nghiệm khác nhau được xây dựng để đánh giá hiệu suất của

PRF bằng cách so sánh với các thuật toán RF và Spark-MLRF về thời gian

thực hiện, tốc độ xử lý, khối lượng dữ liệu và chi phí đường truyền trong quá

trình huấn luyện dữ liệu.

4.3.1. Đánh giá thời gian xử lý với nhóm dữ liệu

Khi kích thước dữ liệu nhỏ (ví dụ: dưới 1,0GB), thời gian thực thi của

PRF và Spark-MLRF cao hơn của RF. Lý do là cần có một thời gian cố định

để gửi các thuật toán đến cụm Spark và cấu hình các chương trình. Khi kích

thước dữ liệu lớn hơn 1,0GB, thời gian thực thi trung bình của PRF và Spark-

MLRF nhỏ hơn của RF trong bốn trường hợp. Ví dụ: trong trường hợp dữ liệu

lấy mẫu có tính rải rác, khi kích thước dữ liệu tăng từ 1,0 lên 500,0 GB, thời

gian thực thi trung bình của RF tăng từ 19,9 lên 517,8 giây, trong khi của Spark-

MLRF tăng từ 24,8 lên 186,2 giây và thời gian thực thi của PRF tăng từ 23,5

đến 101,3 giây. Do đó, thuật toán PRF trong quá trình thử nghiệm đạt được tốc

độ xử lý nhanh hơn RF và Spark-MLRF. Khi kích thước dữ liệu tăng lên, hiệu

quả càng dễ nhận thấy, đặc biệt là chi phí huấn luyện về dữ liệu và thời gian.

Tận dụng tối ưu hóa việc xử lý đồng thời kết hợp song song, PRF đạt được

những điểm mạnh đáng kể so với Spark-MLRF và RF về hiệu suất và thời gian

xử lý.

4.3.2. Đánh giá thời gian xử lý với từng cụm

Hiệu suất của PRF trên nền tảng Spark đối với các quy mô khác nhau

của các nút phụ được xem xét. Số lượng nút phụ (slave nodes) được tăng dần

từ 10 lên 100. Do kích thước dữ liệu và nội dung dữ liệu huấn luyện khác nhau,

thời gian Xử lý PRF trong mỗi trường hợp là khác nhau. Khi số lượng nút phụ

tăng từ 10 lên 50, thời gian thực thi trung bình của PRF trong mọi trường hợp

giảm đi một cách rõ rệt. Ví dụ, thời gian thực hiện trung bình của PRF giảm từ

405,4 xuống 182,6 giây trong trường hợp của cụm 7 và từ 174,8 xuống 78,3

giây trong trường hợp cụm 6. Để so sánh, thời gian thực thi trung bình của PRF

Page 74: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

74

trong các trường hợp khác giảm ít rõ ràng hơn khi số lượng nút phụ (slave

nodes) tăng từ 50 lên 100. Ví dụ: thời gian thực thi trung bình của PRF giảm

từ 182,4 xuống 76,0 giây trong trường hợp cụm 3 và từ 78,3 xuống 33,0 giây

trong trường hợp cụm 2. Điều này là do khi số lượng Spark Slaves lớn hơn số

lượng thuộc tính của tập dữ liệu huấn luyện, mỗi tập hợp con tính năng có thể

được phân bổ cho nhiều nút phụ, dẫn đến việc xử lý dữ liệu và trao đổi thông

tin giữa các nút phụ tăng lên, ảnh hưởng đến thời gian thực thi PRF cũng tăng.

4.4. Đánh giá hiệu quả thực tế:

Việc sử dụng kết quả triển khai ứng dụng vào thực tế là điều cần thiết,

thay vì chỉ đo dựa trên các chỉ số precision, hay recall.

Hình 4.7. Phương pháp đo lường kết quả trong thực tế

Theo [21], thực hiện chia các tập thử nghiệm ra làm 4 nhóm TB từ tập

sau khi huấn luyện, Tiếp tục phân chia thành các nhóm như hình 3.7:

MODEL HOLD OUT

CONTROL

HOLD OUT

Thực hiện

truyền

thông

Có huấn luyện

Chọn ngẫu nhiên; nhận được tin

nhắn truyền thông

Đánh giá tỷ lệ phản hồi truyền

thông không có mô hình

Không huấn luyện

Chọn bởi mô hình; nhận được

tin nhắn truyền thông

Đánh giá tỷ lệ phản hồi truyền

thông qua mô hình

Chọn ngẫu nhiên; không nhận

được tin nhắn truyền thông

Sử dụng đánh giá tỷ lệ phản hồi

tự nhiên.

Chọn bởi mô hình; không nhận

được tin nhắn truyền thông

Sử dụng đánh giá tỷ lệ phản hồi

tự nhiên của tập được chọn bởi

mô hình.

Không

truyền

thông

TARGET

Page 75: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

75

Lấy ra hai tập Control Group và Hold Out: sử dụng để triển khai, theo

dõi tỷ lệ tự nhiên, so sánh giữa việc áp dụng model vào triển khai so với chỉ số

thực tế:

• Tập CG (Control Group): Tập lấy ngẫu nhiên số lượng 10% các cụm

triển khai để thử nghiệm

• Tập HO (hold out): lấy ra khối lượng ngẫu nhiên với cụm 2 – lấy ra

mẫu 10% từ các cụm triển khai để đánh giá hiệu quả chương trình

triển khai so với tỷ lệ tự nhiên

Với 2 tập Target và tập Model hold out: là tập tối ưu nhất của cụm –

sử dụng 3 nhóm dữ liệu đánh giá tiềm năng là cụm 3, cụm 6, cụm 7 có chỉ số

ROC tốt nhất để triển khai sau khi có phân tích và đánh giá, lấy theo tỷ lệ phản

hồi (TakeUpRate) cắt ngưỡng theo lift charge – hình 24; cắt ngưỡng triển khai

là 28%, tương đương với 896 nghìn, không bao gồm nhóm đã cắt bỏ riêng:

• Tập TG (target): sử dụng top 90% của tập 896 nghìn để đánh giá hiệu

quả mô hình trong thực tế.

• Tập MHO (model hold out): sử dụng top 10% của tập 896 nghìn để tách

riêng theo dõi tỷ lệ tự nhiên.

Hình 4.8. So sánh tỷ lệ triển khai thực tế TG và MHO

Page 76: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

76

Hình 4.9. So sánh tỷ lệ triển khai thực tế MHO và HO

So sánh MHO và TG: Đánh giá hiệu quả của chương trình truyền thông

với nhóm có điểm cao được chọn bởi mô hình.

So sánh Control và TG: Đánh giá hiệu quả mô hình giữa việc thực hiện

truyền thông và không truyền thông.

Tỷ lệ triển khai trong thực tế đã chứng minh hiệu quả của mô hình kết

hợp, theo Hình 4.8. So sánh tỷ lệ triển khai thực tế TG và MHO và Hình 4.9.

So sánh tỷ lệ triển khai thực tế MHO và HO; hỗ trợ và đánh giá được kết quả

của mô hình ứng dụng, kết quả triển khai khi áp dụng vào thực tế và hiệu quả

khi thực hiện một chương trình. Tỷ lệ triển khai hơn so với nhóm không triển

khai 1.7 lần. Ngoài ra cũng cho thấy việc đưa thông tin về nhóm thuộc tính

quan trọng có hiệu quả, giúp cho việc triển khai trong thực tế đạt kết quả tốt.

Page 77: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

77

KẾT LUẬN VÀ ĐỊNH HƯỚNG NGHIÊN CỨU

TIẾP THEO

Trong luận văn đã đề xuất mô hình kết hợp giữa thuật toán phân cụm và

rừng ngẫu nhiên song song. Với mục tiêu xử lý các vấn đề gặp phải trong quá

trình khai phá dữ liệu lớn trong điều kiện thực tế, giải quyết vướng mắc gặp

phải khi ứng dụng học máy vào quá trình sản xuất kinh doanh. Quá trình thực

hiện ứng dụng mô hình học máy vào triển khai được lặp lại, trước tiên, thực

hiện phân dữ liệu ra các cụm, sau đó, đưa dữ liệu các cụm vào mô hình PRF,

kết hợp tối ưu hóa song song dữ liệu và xử lý đồng thời được thực hiện với nền

tảng Apache Spark. Tận dụng lợi thế của việc tối ưu hóa song song dữ liệu, tập

dữ liệu huấn luyện được sử dụng lại và khối lượng dữ liệu xử lý tại mỗi bước

được giảm đáng kể. Kết quả mang lại từ việc tối ưu hóa xử lý đồng thời, chi

phí đường truyền dữ liệu được giảm xuống một cách hiệu quả và hiệu suất của

thuật toán được cải thiện rõ rệt. Sau khi thử nghiệm cho thấy tính ưu việt và

điểm mạnh đáng chú ý của mô hình kết hợp giữa xử lý phân cụm và phân nhóm

PRF so với các thuật toán khác về độ chính xác phân loại, hiệu suất và khả

năng mở rộng.

1) Tính sáng tạo và khoa học:

Sử dụng các mô hình, giải thuật học máy để giải quyết các vấn đề gặp

phải trong thực tế. Kết hợp các mô hình để đưa ra mô hình học máy ứng dụng

kết hợp giữa phân cụm và phân lớp dữ liệu, tìm ra nhóm dữ liệu có đặc trưng

tương đồng, đánh giá dữ liệu dựa vào thuộc tính sau khi sử dụng kết hợp các

mô hình học máy, nhằm nâng cao kết quả khi triển khai ứng dụng thực tế.

2) Tính ứng dụng:

Sau khi có kết quả huấn luyện các mô hình, phân loại được nhóm dữ liệu

tối ưu, từ đó ứng dụng vào quá trình thử nghiệm. Việc sử dụng kết quả mô hình

ứng dụng vào thực tế đã được đánh giá, việc ứng dụng triển khai sẽ được lặp

lại qua mỗi chu kỳ để đánh giá và nâng cao hiệu quả mô hình, loại bỏ các thuộc

tính dữ liệu dư thừa không cần thiết, bổ sung dữ liệu và phân cụm khách hang

chính xác hơn. Tìm ra nhóm khách hàng tiềm năng và đưa ra các nhóm dữ liệu

tiềm năng để triển khai.

3) Tính hiệu quả:

Page 78: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

78

Sau khi triển khai, mô hình được đánh giá là mang lại được kết quả rõ

rệt, đặc biệt là việc tìm ra nhóm dữ liệu tiềm năng để triển khai, trả lời được

thuộc tính của nhóm dữ liệu ít tiền năng, bổ sung vào phân tích và đánh giá,

đưa dữ liệu cho nhóm kinh doanh để đánh giá và phân tích, bổ sung được thuộc

tính dữ liệu mới để tối ưu hóa kết quả triển khai trong các chu kỳ sau. Tính

hiệu quả của mô hình được trả lời bằng kết quả triển khai thực tế khi so sánh

tỷ lệ phản hồi của mỗi nhóm: Target; Model Hold Out; Control; Hold Out được

đề cập đến trong chương 3, mục 3.4.

4) Tính hoàn thiện:

Việc hoàn thiện giải thuật nâng cao hiệu quả triển khai trong thực tế,

được lặp đi lặp lại, quá trình thực hiện đề tài có thể đánh giá là toàn trình phát

triển, xây dựng, tối ưu cho đến việc đánh giá kết quả. Cho phép tối ưu kết quả

qua mỗi chu kỳ, các nhóm dữ liệu căn cứ theo tỷ lệ triển khai thực tế tốt, và

các nhóm chưa tốt, đưa ra được phương án tối ưu cho các lần triển khai tiếp

sau.

5) Nhược điểm:

Các mô hình ứng dụng chưa phải là tối ưu, do vẫn có một số bước chưa

sử dụng được mô hình và vẫn phải dựa vào ý kiến chủ quan của người có kinh

nghiệm. Việc ứng dụng cũng chưa phủ được toàn bộ các nhóm dữ liệu và cần

có nhân sự tham gia. Cần tối ưu hóa kết quả và nâng cao hiệu năng hơn.

Đối với giải thuật, việc tối ưu giải thuật khi sử dụng KMeans và

RandomForest vẫn chưa thực sự đạt kết quả tốt khi chia nhóm, khi xây dựng

ra bộ thuộc tính tối ưu. Cần đề xuất ra một giải thuật để lựa chọn thuộc tính có

trọng số thay cho phương án lựa chọn bởi số đông, đặc biệt khi dữ liệu bị mất

cân bằng. Chưa tái sử dụng được dữ liệu của các cây quyết định, và phải huấn

luyện lại ở mỗi cụm dẫn đến chưa tối ưu được thời gian triển khai trong thực

tế.

Chưa sử dụng được các mô hình học sâu để tối ưu kết quả triển khai

cũng là một nhược điểm. Việc trả lời khi sử dụng mô hình ứng dụng được đánh

giá bằng hiệu năng về thời gian, xử lý dữ liệu lớn và liên tục, tối ưu kết quả

trong thực tế.

6) Định hướng phát triển:

Page 79: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

79

Đối với công việc trong tương lai, việc nghiên cứu sẽ tập trung vào thuật

toán rừng ngẫu nhiên song song gia tăng cho các luồng dữ liệu trong môi

trường đám mây và cải thiện cơ chế phân bổ dữ liệu và lập lịch tác vụ cho thuật

toán trên môi trường phân tán và xử lý đồng thời. Tự động hóa quá trình huấn

luyện và gán nhãn để tăng hiệu suất trong thực tế. Đánh giá và bổ sung phương

án lựa chọn có trọng số, đánh giá phương thức tối ưu dùng lại dữ liệu theo cơ

chế cache trong khi huấn luyện và đánh giá thuộc tính nhằm tối ưu thời gian

xử lý trong quá trình huấn luyện đồng thời. Xa hơn nữa, đánh giá việc ứng

dụng học sâu và triển khai các mô hình học sâu, nhằm tối đa hóa được hiệu

năng, ứng dụng và nâng cao kết quả và phải cân bằng được chi phí thời gian

và hiệu suất khi đưa ứng dụng vào thực tế.

Page 80: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

80

TÀI LIỆU THAM KHẢO

Tiếng Anh

[1] U. Sivarajah, M. Kamal, Z. Irani and V. Weerakkody, "Critical analysis of Big

Data challenges and analytical methods", Journal of Business Research, vol.

70, no.1, pp.263-286, Jan 2017.

[2] A. Azar and A. Hassanien, "Dimensionality reduction of medical big data using

neural-fuzzy classifier", Soft Computing, vol. 19, no. 4, pp. 1115-1127, June

2014.

[3] A. Nega and A. Kumlachew, "Data Mining Based Hybrid Intelligent System

for Medical Application", International Journal of Information Engineering

and Electronic Business, vol. 9, no. 4, pp. 38-46, 2017.

[4] P. K. Ray, S. R. Mohanty, N. Kishor, and J. P. S. Catalao, “Optimal feature and

decision tree-based classification of power quality disturbances in distributed

generation systems,” Sustainable Energy, IEEE Transactions on, vol. 5, no. 1,

pp. 200–208, January 2014.

[5] T. White, “Hadoop: The Definitive Guide.” O’Reilly Media Inc./Yahoo

Press, 2012.

[6] J. Corbett, P. Hochschild, W. Hsieh, S. Kanthak, E. Kogan, H. Li, A. Lloyd,

et al., “Spanner: Google’s globally distributed database,” ACM Transactions

on Computer Systems, vol. 31, no. 3, pp. 1-22, 2013.

[7] Gordon S. Linoff, Michael J. A. Berry (2011): “Data Mining Techniques - For

Marketing, Sales, and Customer Relationship Management 3rd”. pp. 23-29.

[8] L. Abraham, S. Subramanian, J. Wiener, O. Zed, J. Allen, O. Barykin, et al.,

“Scuba: Diving into data at FaceBook,” Proceedings of the VLDB

Endowment, vol. 6, no. 11, pp. 1057-1067, 2013.

[9] G. Lee, J. Lin, C. Liu, A. Lorek, and D. Ryaboy, “The unified logging

infrastructure for data analytics at Twitter,” Proceedings of the VLDB

Endowment, vol. 5, no.12, pp.1771-1780, 2012

[10] Sam B. Siewert: “Big data in the cloud - Data velocity, volume, variety and

veracity”. pp. 2-8 (2013).

[11] Eric Sammer: “Hadoop Operations”, CHAPTER 1, pp.1 – 6. September 2012.

[12] Eric Sammer: “Hadoop Operations”, CHATER 2. HDFS, pp.7 – 23. September

2012.

[13] Eric Sammer: “Hadoop Operations”, CHATER 3. MAPREDUCE, pp.25 – 37.

September 2012.

[14] L. Breiman, “Random forests,” Machine Learning, vol. 45, no. 1, pp. 5–32,

October 2001.

Page 81: ẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

81

[15] Eréndira Rendón, Itzel Abundez, Alejandra Arizmendi and Elvia M. Quiroz

(2011): Internal versus External cluster validation indexes. Issue 1, Volume 5.

27-33.

[16] S. Bernard, S. Adam, and L. Heutte (September 2012): “Dynamic random

forests,” Pattern Recognition Letters, vol. 33, no. 12, pp. 1580–1586.

[17] Darius Pfitzner, Richard Leibbrandt, David M. W. Powers (2009):

Characterization and evaluation of similarity measures for pairs of clusterings.

Knowl. Inf. Syst. 19(3): 361-394.

[18] Maria Halkidi, Yannis Batistakis, Michalis Vazirgiannis (2001): “On

Clustering Validation Techniques.”, J. Intell. Inf. Syst. 17(2-3): 107-145.

[19] Frank, Eibe Hall, Mark A. Pal, Christopher J. Witten, Ian H (2017): “Data

mining, practical machine learning tools and techniques”. pp.7-9.

[20] Aurélien Géron (2017): “Hands-On Machine Learning with Scikit-Learn &

TensorFlow - Concepts, Tools, And Techniques To Build Intelligent Systems”,

Chapter 1. The Machine Learning Landscape, pp 7-14.

[21] Gordon S. Linoff, Michael J. A. Berry (2011): “Data Mining Techniques: For

Marketing, Sales, and Customer Relationship Management 3rd”, Figure 5.13,

pp. 137-141

[22] A. Spark, “Spark mllib - random forest,” Website, June 2016,

http://spark.apache.org/docs/latest/mllib-ensembles.html.

[23] Aurélien Géron (2017): “Hands-On Machine Learning with Scikit-Learn &

TensorFlow - Concepts, Tools, And Techniques To Build Intelligent Systems”,

Chapter 1. The Machine Learning Landscape, Overfitting the Training Data,

Underfitting the Training Data, pp 26-28.

[24] Holden Karau, Andy Konwinski, Patrick Wendell, and Matei Zaharia:

“Learning Spark: Lightning-Fast Big Data Analysis”, pp 1 - 7.

[25] Hien Luu: “Beginning Apache Spark 2: With Resilient Distributed Datasets,

Spark SQL, Structured Streaming and Spark Machine Learning library”,

Chapter 3 Resilient Distributed Datasets, pp 51-55.

[26] Bill Chambers and Matei Zaharia: “Spark: The Definitive Guide”, pp 20 – 28

[27] Hien Luu: “Beginning Apache Spark 2: With Resilient Distributed Datasets,

Spark SQL, Structured Streaming and Spark Machine Learning library”,

Chapter 1: Introduction to Apache Spark, pp 1-11.