SlideShare a Scribd company logo
1 of 84
ĐẠ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
2
MÃ TÀI LIỆU: 81240
ZALO: 0917.193.864
Dịch vụ viết bài điểm cao :luanvantrust.com
3
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.
4
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 …..
…..
5
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
6
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
7
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
8
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
9
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.
10
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
11
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
12
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...
13
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,
14
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
15
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
16
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ưutrữ
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ợplên
đến petabytes. Hiện nay, HBase được sử dụng để phục vụ một khối lượnglớ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)
17
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.
18
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.
19
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
20
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:
21
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ớ
22
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
23
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.
24
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ố
25
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ụ.
26
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.
27
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
28
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:
29
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
Mô hình
Thuật toán học
30
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
31
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
32
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.
33
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
34
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.
35
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},
36
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ư
37
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.
38
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.
39
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ácbản ghi
được chọn và tạo thành một tập con thuộc tính đặc trưng FSj, đượcbiểudiễn dưới
dạng:
40
𝖥
< 0, 𝑦0𝑗, 𝑦0(𝑀−1) >,
1
I
𝐹𝑠𝑗
= I
I
I
< 1, 𝑦1𝑗, 𝑦1(𝑀−1) >, I
… , I
< 𝑖, 𝑦𝑖𝑗, 𝑦𝑖(𝑀−1) >, I
… , I
[< (𝑁 − 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áccô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ủatập dữ
liệu đầu vào khi huấn luyện sẽ không bị ảnh hưởng tại mỗi node, trongkhi 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 …
41
… … … … … … … …
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
Mô
hình
huấn
luyện
PRF
Gain
Ratio
Tập
thuộc
tính
con
Feature
subset
42
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:
43
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:
44
𝐹𝑆𝑗
𝐹𝑆𝑗
𝐹𝑆𝑗
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.
45
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
46
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.
47
(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}.
48
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. ModuleTask-
Scheduler nhận các nhiệm vụ, phân bổ và thực thi thông qua các tiến trìnhxử lý
công việc phù hợp (Spark - executor). Căn cứ theo các loại công việc cầnthự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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

More Related Content

Similar to 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

Hệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdf
Hệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdfHệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdf
Hệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdfHanaTiti
 
bctntlvn (41).pdf
bctntlvn (41).pdfbctntlvn (41).pdf
bctntlvn (41).pdfLuanvan84
 
Giải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóa
Giải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóaGiải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóa
Giải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóasunflower_micro
 
03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdf03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdfNguyễn Thái
 
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424jackjohn45
 
Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...
Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...
Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...lamluanvan.net Viết thuê luận văn
 
Luận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàng
Luận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàngLuận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàng
Luận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàngViết Thuê Khóa Luận _ ZALO 0917.193.864 default
 
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiềuNhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiềuMan_Ebook
 
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...Viết Thuê Luận Văn Luanvanpanda.com
 

Similar to 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 (20)

Luận án: Phát triển một số phương pháp xây dựng hệ tư vấn
Luận án: Phát triển một số phương pháp xây dựng hệ tư vấnLuận án: Phát triển một số phương pháp xây dựng hệ tư vấn
Luận án: Phát triển một số phương pháp xây dựng hệ tư vấn
 
Đề tài: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnh, HOT
Đề tài: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnh, HOTĐề tài: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnh, HOT
Đề tài: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnh, HOT
 
Luận văn: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnh
Luận văn: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnhLuận văn: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnh
Luận văn: Học bán giám sát trên đồ thị với ứng dụng tra cứu ảnh
 
Hệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdf
Hệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdfHệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdf
Hệ thống xử lý tín hiệu điện não tự động phát hiện gai động kinh.pdf
 
Luận văn: Hệ thống quản lý, hỗ trợ yêu cầu phần mềm, HAY
Luận văn: Hệ thống quản lý, hỗ trợ yêu cầu phần mềm, HAYLuận văn: Hệ thống quản lý, hỗ trợ yêu cầu phần mềm, HAY
Luận văn: Hệ thống quản lý, hỗ trợ yêu cầu phần mềm, HAY
 
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
 
Luận án: Nghiên cứu phát hiện mẫu chất liệu trong ảnh, HAY
Luận án: Nghiên cứu phát hiện mẫu chất liệu trong ảnh, HAYLuận án: Nghiên cứu phát hiện mẫu chất liệu trong ảnh, HAY
Luận án: Nghiên cứu phát hiện mẫu chất liệu trong ảnh, HAY
 
bctntlvn (41).pdf
bctntlvn (41).pdfbctntlvn (41).pdf
bctntlvn (41).pdf
 
Giải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóa
Giải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóaGiải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóa
Giải pháp đảm bảo an toàn dữ liệu trên nền tảng ảo hóa
 
Luận văn: Xây dựng hệ thống dịch tự động giúp dự báo thời tiết, HAY
Luận văn: Xây dựng hệ thống dịch tự động giúp dự báo thời tiết, HAYLuận văn: Xây dựng hệ thống dịch tự động giúp dự báo thời tiết, HAY
Luận văn: Xây dựng hệ thống dịch tự động giúp dự báo thời tiết, HAY
 
Đề tài: Hệ thống cung cấp chứng chỉ số theo mô hình sinh khóa
Đề tài: Hệ thống cung cấp chứng chỉ số theo mô hình sinh khóaĐề tài: Hệ thống cung cấp chứng chỉ số theo mô hình sinh khóa
Đề tài: Hệ thống cung cấp chứng chỉ số theo mô hình sinh khóa
 
03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdf03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdf
 
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
 
Luận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, 9đ
Luận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, 9đLuận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, 9đ
Luận văn: Nghiên cứu hệ thống trợ lý thông minh ảo, 9đ
 
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Sự Thỏa Mãn Công Việc Của Bác Sĩ
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Sự Thỏa Mãn Công Việc Của Bác SĩLuận Văn Các Yếu Tố Ảnh Hưởng Đến Sự Thỏa Mãn Công Việc Của Bác Sĩ
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Sự Thỏa Mãn Công Việc Của Bác Sĩ
 
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
 
Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...
Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...
Một số giải pháp tạo động lực làm việc cho người lao động trong công ty trách...
 
Luận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàng
Luận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàngLuận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàng
Luận văn: Phân tích các yếu tố ảnh hưởng đến lòng trung thành của khách hàng
 
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiềuNhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
 
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...
Luận Văn Các Yếu Tố Ảnh Hưởng Đến Ý Định Mua Thiết Bị Gia Dụng Tiết Kiệm Năng...
 

More from luanvantrust

Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...
Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...
Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...luanvantrust
 
Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...
Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...
Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...luanvantrust
 
Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...
Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...
Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...luanvantrust
 
Phân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang Chile
Phân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang ChilePhân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang Chile
Phân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang Chileluanvantrust
 
Phân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải Nam
Phân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải NamPhân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải Nam
Phân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải Namluanvantrust
 
Phân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt Nam
Phân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt NamPhân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt Nam
Phân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt Namluanvantrust
 
Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...
Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...
Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...luanvantrust
 
Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...
Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...
Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...luanvantrust
 
Đẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXM
Đẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXMĐẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXM
Đẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXMluanvantrust
 
Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...
Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...
Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...luanvantrust
 
Tối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tử
Tối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tửTối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tử
Tối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tửluanvantrust
 
Ứng Dụng Seo Vào Website Bán Đồng Hồ Watchkingdom
Ứng Dụng Seo Vào Website Bán Đồng Hồ WatchkingdomỨng Dụng Seo Vào Website Bán Đồng Hồ Watchkingdom
Ứng Dụng Seo Vào Website Bán Đồng Hồ Watchkingdomluanvantrust
 
Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...
Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...
Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...luanvantrust
 
Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...
Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...
Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...luanvantrust
 
Ngôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh Viên
Ngôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh ViênNgôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh Viên
Ngôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh Viênluanvantrust
 
Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...
Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...
Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...luanvantrust
 
Hoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ Conando
Hoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ ConandoHoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ Conando
Hoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ Conandoluanvantrust
 
Văn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn Lang
Văn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn LangVăn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn Lang
Văn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn Langluanvantrust
 
Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...
Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...
Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...luanvantrust
 
Chiến lược định vị sản phẩm cà phê hữu cơ của Highlands Coffee
Chiến lược định vị sản phẩm cà phê hữu cơ của Highlands CoffeeChiến lược định vị sản phẩm cà phê hữu cơ của Highlands Coffee
Chiến lược định vị sản phẩm cà phê hữu cơ của Highlands Coffeeluanvantrust
 

More from luanvantrust (20)

Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...
Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...
Xác định số cụm tối ưu vào bài toán phân khúc khách hàng sử dụng dịch vụ di đ...
 
Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...
Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...
Phát triển tín dụng phân khúc khách hàng Bán lẻ tại Ngân hàng TMCP Công thươn...
 
Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...
Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...
Phân Tích Chiến Lược Cạnh Tranh Của Một Công Ty Trong Ngành Công Nghiệp Phôi ...
 
Phân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang Chile
Phân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang ChilePhân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang Chile
Phân Tích Lợi Thế Cạnh Tranh Mặt Hàng Giày Dép Việt Nam Xuất Khẩu Sang Chile
 
Phân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải Nam
Phân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải NamPhân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải Nam
Phân tích năng lực cạnh tranh của Công Ty TNHH Sản Xuất Tủ Bảng Điện Hải Nam
 
Phân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt Nam
Phân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt NamPhân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt Nam
Phân tích cạnh tranh trong hệ thống ngân hàng thương mại Việt Nam
 
Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...
Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...
Phân tích cạnh tranh ngành và đòn bẩy tài chính tác động lên hiệu quả hoạt độ...
 
Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...
Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...
Thúc đẩy hoạt động bán hàng cá nhân trong quá trình tiêu thụ sản phẩm ở công ...
 
Đẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXM
Đẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXMĐẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXM
Đẩy mạnh bán hàng cá nhân trong hoạt động tiêu thụ ở Công ty VTKTXM
 
Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...
Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...
Quản Trị Hoạt Động Bán Hàng Cá Nhân Và Giải Pháp Nhằm Nâng Cao Hiệu Quả Hoạt ...
 
Tối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tử
Tối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tửTối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tử
Tối ưu hoá công cụ tìm kiếm (SEO) cho báo điện tử
 
Ứng Dụng Seo Vào Website Bán Đồng Hồ Watchkingdom
Ứng Dụng Seo Vào Website Bán Đồng Hồ WatchkingdomỨng Dụng Seo Vào Website Bán Đồng Hồ Watchkingdom
Ứng Dụng Seo Vào Website Bán Đồng Hồ Watchkingdom
 
Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...
Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...
Ứng dụng mô hình truyền thông hội tụ (PESO) cho hoạt động quan hệ công chúng ...
 
Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...
Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...
Ảnh hưởng của yếu tố “duy tình” trong mối quan hệ giữa nhân viên QHCC và nhà ...
 
Ngôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh Viên
Ngôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh ViênNgôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh Viên
Ngôn Ngữ “Thời @” Trên Mạng Và Trên Điện Thoại Di Động Của Học Sinh, Sinh Viên
 
Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...
Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...
Quản Lý Quan Hệ Công Chúng Trong Giáo Dục Của Ban Tuyên Giáo Các Tỉnh, Thành ...
 
Hoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ Conando
Hoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ ConandoHoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ Conando
Hoàn thiện hoạt động PR cho Công ty Cổ phần Truyền thông và Công nghệ Conando
 
Văn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn Lang
Văn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn LangVăn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn Lang
Văn hoá đọc trong đời sống sinh viên Khoa PR,Trường đại học Văn Lang
 
Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...
Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...
Định vị sản phẩm thẻ American Express tại ngân hàng thương mại cổ phần Ngoại ...
 
Chiến lược định vị sản phẩm cà phê hữu cơ của Highlands Coffee
Chiến lược định vị sản phẩm cà phê hữu cơ của Highlands CoffeeChiến lược định vị sản phẩm cà phê hữu cơ của Highlands Coffee
Chiến lược định vị sản phẩm cà phê hữu cơ của Highlands Coffee
 

Recently uploaded

60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docxasdnguyendinhdang
 
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...lamluanvan.net Viết thuê luận văn
 
Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...
Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...
Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...lamluanvan.net Viết thuê luận văn
 
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025lamluanvan.net Viết thuê luận văn
 
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdfGiáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf4pdx29gsr9
 
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...songtoan982017
 
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...lamluanvan.net Viết thuê luận văn
 
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...Nguyen Thanh Tu Collection
 
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...Nguyen Thanh Tu Collection
 
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...lamluanvan.net Viết thuê luận văn
 
Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp haiBài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp haingTonH1
 
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...lamluanvan.net Viết thuê luận văn
 
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhàBài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhàNguyen Thi Trang Nhung
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnGiới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnKabala
 
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa họcChương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa họchelenafalet
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...Nguyen Thanh Tu Collection
 
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...Nguyen Thanh Tu Collection
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
 
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
 
Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...
Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...
Luận văn 2024 Tạo động lực lao động tại khối cơ quan Tập đoàn Viễn thông Quân...
 
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
 
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdfGiáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
 
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
 
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
 
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
 
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
 
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
 
Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp haiBài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
 
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
 
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhàBài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Luận Văn: HOÀNG TỬ BÉ TỪ GÓC NHÌN CẢI BIÊN HỌC
Luận Văn: HOÀNG TỬ BÉ TỪ GÓC NHÌN CẢI BIÊN HỌCLuận Văn: HOÀNG TỬ BÉ TỪ GÓC NHÌN CẢI BIÊN HỌC
Luận Văn: HOÀNG TỬ BÉ TỪ GÓC NHÌN CẢI BIÊN HỌC
 
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnGiới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
 
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa họcChương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
 
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 

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

  • 1. ĐẠ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
  • 2. 2 MÃ TÀI LIỆU: 81240 ZALO: 0917.193.864 Dịch vụ viết bài điểm cao :luanvantrust.com
  • 3. 3 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.
  • 4. 4 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 ….. …..
  • 5. 5 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
  • 6. 6 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
  • 7. 7 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
  • 8. 8 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
  • 9. 9 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.
  • 10. 10 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
  • 11. 11 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
  • 12. 12 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...
  • 13. 13 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,
  • 14. 14 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
  • 15. 15 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
  • 16. 16 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ưutrữ 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ợplên đến petabytes. Hiện nay, HBase được sử dụng để phục vụ một khối lượnglớ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)
  • 17. 17 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.
  • 18. 18 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.
  • 19. 19 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
  • 20. 20 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:
  • 21. 21 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ớ
  • 22. 22 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
  • 23. 23 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.
  • 24. 24 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ố
  • 25. 25 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ụ.
  • 26. 26 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.
  • 27. 27 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
  • 28. 28 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:
  • 29. 29 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 Mô hình Thuật toán học
  • 30. 30 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
  • 31. 31 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
  • 32. 32 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.
  • 33. 33 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
  • 34. 34 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.
  • 35. 35 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},
  • 36. 36 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ư
  • 37. 37 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.
  • 38. 38 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.
  • 39. 39 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ácbản ghi được chọn và tạo thành một tập con thuộc tính đặc trưng FSj, đượcbiểudiễn dưới dạng:
  • 40. 40 𝖥 < 0, 𝑦0𝑗, 𝑦0(𝑀−1) >, 1 I 𝐹𝑠𝑗 = I I I < 1, 𝑦1𝑗, 𝑦1(𝑀−1) >, I … , I < 𝑖, 𝑦𝑖𝑗, 𝑦𝑖(𝑀−1) >, I … , I [< (𝑁 − 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áccô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ủatập dữ liệu đầu vào khi huấn luyện sẽ không bị ảnh hưởng tại mỗi node, trongkhi 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 …
  • 41. 41 … … … … … … … … 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 Mô hình huấn luyện PRF Gain Ratio Tập thuộc tính con Feature subset
  • 42. 42 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:
  • 43. 43 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:
  • 44. 44 𝐹𝑆𝑗 𝐹𝑆𝑗 𝐹𝑆𝑗 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.
  • 45. 45 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
  • 46. 46 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.
  • 47. 47 (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}.
  • 48. 48 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. ModuleTask- Scheduler nhận các nhiệm vụ, phân bổ và thực thi thông qua các tiến trìnhxử lý công việc phù hợp (Spark - executor). Căn cứ theo các loại công việc cầnthự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