MỞ DAU
Ngày nay, người dùng Internet gặp phải vấn đề dữ liệu tăng trưởng quá nhanh về số lượng
cũng như độ đa dạng, điều này dẫn đến khó khăn là người dùng khó lựa chọn những thông tin hữu ich từ rất nhiều thông tin đó Những van đề thực tế này dẫn đến sự ra đời và phát triển của
hệ tư vấn.
Với sự tăng trưởng nhanh chóng của dit liệu, van đề mở rộng và độ hiệu quả của hệ thống
tư vấn cũng như công việc tính toán ở tầng dưới trở thành vấn đề chính được quan tâm Việc
thực hiện tính toán trên một máy duy nhất yêu cầu cau hình phần cứng phải nâng cấp liên tục
dé đáp ứng hiệu năng va ràng buộc về thời gian, thậm chí việc nâng cấp phan cứng không thé theo kịp sự tăng trưởng dữ liệu một cách chóng mặt Do những bắt lợi này, giải pháp chỉ dùng một máy duy nhất là rất dat đỏ và khó điều khiến.
Để giải quyết van đề này, rất nhiều công nghệ đã ra đời nhắm thực hiện tính toán và mở rộng việc xử lý dữ liệu theo mô hình song song và khả năng chịu lỗi cao trên một số lượng lớn
máy tính Các máy tính thực hiện tính toán độc lập với nhau và không ảnh hưởng bởi việc xảy
ra lỗi ở máy khác, điều này giúp tăng hiệu năng tính toán so với việc chỉ ding một máy, ngoài
ra sử dụng mô hình tính toán song song còn g1úp giảm giá thành.
Khi áp dụng phương pháp này cho hệ tư van, cần phải sắp xếp lại các thuật toán dé tối ưu việc tính toán song song Một trong các công nghệ được sử dụng phổ biến dé tối ưu hóa việc
tính toán song song là Hadoop — MapReduce Luận văn trình bay phương pháp áp dụng
framework này vào việc xây dựng hệ tư vấn, cụ thể là bằng phương pháp lọc cộng tác dựa vào người dùng và lọc cộng tác dựa vào sản phẩm.
Nội dung của luận văn gồm:
© Chương I: Tổng quan về Hadoop MapReduce.
e_ Chương II: Phát triển hệ tư vấn trên Hadoop MapReduce.
e Chương II: Thử nghiệm và đánh gia
Trang 2CHUONG 1- TONG QUAN VE HADOOP MAPREDUCE
1.1 Giới thiệu chung về Hadoop
Hadoop là một phần mềm mã nguồn mở, được viết bởi Doug Cutting (người đã viết Apache Lucene — thư viện tìm kiếm được sử dụng rộng rãi) Hadoop cho phép lưu trữ và truy cập dữ
liệu, xử lí, phân tích cũng như hỗ trợ học máy trên tập dữ liệu lớn một cách phân tán thông qua
các cụm server (cluster)[3, 4, 5, 14].
Hadoop gồm 2 framework chính là: HDFS và MapReduce.
- HDFS (Hadoop Distributed File System) là hệ thong file phân tán, có nhiệm vụ lưu trữ
dữ liệu phân tán, thông qua nhiều node khác nhau, mỗi node này là một Hadoop cluster.
- MapReduce là một framework cung cấp cho lập trình viên các API để xử lý và phân tích
dữ liệu trên các Hadoop cluster.
1.2 Các thành phần cơ bản của Hadoop Ecosystem
- Framework chính của Hadoop: HDES, MapReduce.
- Quan lý siêu dữ liệu: HCatalog.
- Luu trữ dữ liệu và truy vấn: Pig, Hive, HBase.
- Xuat nhập đữ liệu: Flume, Sqoop.
- Hoc máy va phân tích dữ liệu: Mahout.
- _ Điều chỉnh hệ thống phân tán: Zookeeper.
- Quan ly cluster: Ambari.
- Lwuu trữ dữ liệu và hệ thống tuần tự: Avro.
1.3 Hệ thống file phân tán của Hadoop
Định nghĩa HDFS
Khái niệm block trong HDFS
Kiến trúc của HDES Tố chức dữ liệu
pose
Trang 31.4 Mô hình tính toán MapReduce
1.4.1 Định nghĩa MapReduce
1.4.2 Mô hình làm việc và luồng dữ liệu của MapReduce 1.4.3 Luồng điều khiến khi thực thi một MapReduce Job 1.5 Kết luận chương
Chương 1 đã trình bày các khái niệm về Hadoop các thành phần cơ bản của Hadoop MapReduce, kiến trúc và cách làm việc của Hadoop — MapReduce Chương 2 của luận văn tập trung vào phương pháp xây dựng hệ tư vấn trên Hadoop — MapReduce.
Trang 4Chương 2 - PHÁT TRIEN HỆ TU VAN TREN HADOOP MAPREDUCE
2.1 Phat biểu bai toán
2.2 Các phương pháp xây dựng hệ tư van bằng lọc cộng tác
2.2.1 Phương pháp lọc cộng tác dựa vào người dùng
Kỹ thuật lọc cộng tác dựa vào người dùng được thực hiện theo 3 bước:
- _ Bước 1: Biểu diễn tập dữ liệu
Biểu diễn đánh giá của người dùng và sản phẩm thành ma trận đánh
Ny 2 ¬
Trt Fam
Ma trận đánh giá trên gồm có n người dùng, đánh giá trên m san phẩm Mỗi phan tử rxy của ma trận thể hiện đánh giá của người dùng ux với sản phẩm iy, rxy = 0 nếu người dùng ux chưa đánh giá sản phẩm iy.
- Bước 2: Tính toán độ tương tự giữa các cặp người dùng
Kí hiệu suv là độ tương tự giữa người dùng u và người dùng v.Luận văn tính độ tương tự sử dụng độ tương quan Pearson:
giá bởi cả người dùng u và người dùng v.
tui, rụ lần lượt là đánh giá của người dùng u và v với sản phẩm i.
là trung bình đánh giá của người dùng u.là trung bình đánh giá của người dùng v.
- _ Bước 3: Tính toán dự đoán của người dùng đó với sản phẩm
Sau khi tính được độ tương tự giữa các người dùng, một tập con gồm k
Trang 5người dùng có độ tương tự lớn nhất với người dùng đang xét sẽ được chọn và đánh giá của người dùng đang xét với sản phẩm sẽ được tính toán dựa
vào đó theo công thức:
Trong đó:
pu là đánh giá của người dùng u với sản phâm i.
kNN là tập k hàng xóm gần nhất của người dùng u 2.2.2 Phương pháp tư van dựa vào sản phẩm
Kỹ thuật lọc cộng tác dựa vào sản phâm được thực hiện theo các bước
- Bước 1: biểu diễn dữ liệu
Tương tự như kỹ thuật lọc cộng tác dựa vào người dùng, kỹ thuật lọc
cộng tác dựa vào sản phẩm cũng thực hiện biểu diễn đánh giá của người dùng và sản phẩm thành ma trận đánh giá:
hi Hạ ` Tìm
R= "21
My 1 " Rim
Ma trận đánh giá trên gồm có n người dùng, đánh giá trên m san phẩm Mỗi phan tử rxy của ma trận thể hiện đánh giá của người dùng ux với sản phẩm iy, rxy = 0 nếu người dùng ux chưa đánh giá sản phẩm iy.
- Bước 2: tính toán độ tương tự
Kí hiệu suy là độ tương tự giữa sản phẩm¡ và sản phẩm j.
Phương pháp lọc cộng tác dựa vào sản phẩm sử dụng công thức tính
Trang 6Do đó U¡ Uj là tập các người dùng đánh giá cả hai sản phâm i và j.
Tui, ru lần lượt là đánh giá của người dùng u với sản phẩm i và sản phẩm j.
Độ tương quan Pearson cũng được đề xuất dé tính độ tương tự giữa hai sản phẩm, tuy nhiên nó không hiệu quả băng phương pháp tính độ tương
tự Cosine[®!'
- Bước 3: tính cơ sở dự đoán của người dùng với sản phẩm (baseline
Cơ sở dự đoán là phương pháp làm tăng độ chính xác khi dự đoán
đánh giá của người dùng và sản phẩm, cơ sở dự đoán có thể được sử dụng dé dự đoán cho người dùng mới[7].
Trường hợp đơn giản, cơ sở dự đoán có thê được tính băng cách: bu = uy (2.4)
Dé chính xác hơn, cơ sở dự đoán được tinh theo công thức tông quát:
bụi = u + bu + bị (2.5)
Trong đó:
bụi là cơ sở dự đoán của người dùng u đối với sản phẩm i ụ là trung bình đánh giá của tat cả người dùng.
bu, bị tương ứng là cơ sở đánh giá của người dùng u và sản phẩm i.
bu và bị được tính theo công thức:
tui là đánh giá của người dùng u đối với sản phẩm i.
- _ Bước 4: dự đoán đánh giá của người dùng với sản phẩm
Sau khi tính toán độ tương tự giữ các cặp sản phẩm và tính cơ sở dự
đoán giữa người dùng và sản phẩm, bước thực hiện tiếp theo là dự đoán
Trang 7đánh giá của người dùng với sản phẩm Trong luận văn này, phương pháp dự đoán đánh giá bằng cách tính tổng trọng số được sử dụng Tập gồm k sản phẩm tương tự nhất với sản phẩm đang xét sẽ được chon ra và sử dụng dé tính toán tổng trọng số theo công thức:
Pụi là đánh giá dự đoán của người dùng u với sản pham i Bụi là cơ sở dự đoán của người dùng u với sản phẩm ¡.
Bu; là cơ sở dự đoán của người dùng u với sản phẩm j Ry; là đánh giá của người dùng u với sản phẩm j.
S là tập gồm k sản phâm tương tự nhất với sản pham i.
2.2.3 Vấn đề dữ liệu lớn đối với hệ tư van 2.3 Áp dụng MapReduce cho hệ tư van
2.3.1 Áp dụng MapReduce cho hệ tư vấn dựa vào người dùng
Bước 1:Xử lý tập dữ liệu đầu vào (Job 1)
Dữ liệu vào ra tương ứng của bước này được mô tả như sau:
e KI là thứ tự của dòng dữ liệu trong tập dữ liệu.
e VỊ là I dòng trong tập dữ liệu.e K2 1a itemid.
e V2 la userid va rating tương ứng.e K3 1a itemid.
e V3 là danh sách userid va rating tương ứng với itemid ở K3.
Dữ liệu đầu ra của Job 1 được lưu trong thư mục pair_user.
DataSplitMapper thực hiện công viéc:
e Đọc từng dong dit liệu trong tập dữ liệu tạo ra giá trị V1.e Tach VI thành giá tri itemid va userid, rating.
e Gán itemid cho K2, gan userid, rating cho V2.
Trang 8DataSplitReducer thực hiện công việc:
e Nhận đầu vào là một danh sách userid và rating tương ứng (list(V2)) của một itemid (K2).
° Sắp xếp danh sách V2 theo userid tăng dần.
e Gan K3 1a itemid (giống K2), gan V3 là list(V2).
Bước 2: Tính độ tương tự giữa hai người dùng (Job 2)
Dữ liệu vào ra tương ứng của bước này được mô tả như sau:e KI là thứ tự dòng dữ liệu trong thư mục pair_user.
e VỊ là I dòng dữ liệu đọc từ thư mục pair_user.
e K2 là cặp userid.
e V2 là itemid va rating của cả hai người dùng đối với sản phẩm đó e K3 là cặp userid.
e V3 là độ tương tự giữa cặp người dùng đó.
Dữ liệu đầu ra của Job 2 được lưu trong thư mục similarity.
SimilarityMapper thực hiện công việc:
e Đọc từng dòng dữ liệu trong các file trong thư mục pair_user, đó là giá trị V1.e Tach VI thành itemid và danh sách các cặp userid và rating.
e Lặp và tách danh sách userid và rating thành tập các cap userid va cặp ratingtương ứng Gán K2 là cặp userid, V2 là cặp rating tương ứng.
SimilarityReducer thực hiện các công việc:
e Nhận đầu vào là danh sách cap rating (list(V2)) của một cặp userid (K2).
e Với mỗi V2, tách thành hai giá tri rating.
e Sau khi duyệt hết danh sách các giá trị V2, nhận được hai vector chứa đánh giá của hai người dùng với các sản phẩm chung của họ.
e Áp dụng công thức 2.1 dé tính độ tương tự.
Y Tinh giá trị đánh giá trung bình của mỗi người dùng bằng cách tính trung bình
cộng các giá trị của mỗi vector người dùng Với mỗi cặp người dùng khác
nhau thì giá trị đánh giá trung bình của người dùng đó cũng khác nhau vì nó
phụ thuộc vào những sản phâm chung của hai người dùng đó.
Trang 9* Áp dụng công thức dé tính độ tương tự với các tham số đã có và đã tính được
ở trên.
e©_ Sau khi tính được độ tương tự của hai sản phẩm, gán cặp userid cho K3, gan giá
trị độ tương tự và đánh giá trung bình của hai người dùng cho V3.
Bước 3: Chọn ra tập k hàng xóm với mỗi người dùng u
Dữ liệu đầu vào và đầu ra của bước này có dạng như sau:
e KI là thứ tự dòng dữ liệu trong thư mục similarity.e VỊ là 1 dòng dữ liệu đọc từ thư mục similarity.
e K2 là một userid tách ra từ K1.
e V2 là userid còn lại và độ tương tự giữa hai userid đó.
e K3 1a userid từ K2.
e V3 là danh sách gồm userid và độ tương tự giữa userid đó với userid ở K3.
Dữ liệu đầu ra của bước này được lưu trong thư mục kNeighbor.
Lớp FindKNeighborMapper thực hiện các công việc:
e Đọc vào từng dòng dữ liệu từ thư mục similarity là giá trị V1.e Tach VI thành hai userid và độ tương tự giữa hai userid đó.
e Với mỗi userid, gan K2 là userid đó, V2 là userid còn lại và độ tương tự.
Lớp FindKNeighborReducer thực hiện các công việc:
e Nhận vào K2 là userid và danh sách V2 là userid và độ tương tự.
e Gan K3 là userid từ K2 Từ danh sách V2, chọn ra k giá tri có độ tương tự lớn
nhất và gan V3 là danh sách k giá tri này.
Bước 4: Dự đoán đánh giá của người dùng u với sản phẩm i (Driver)
e Đọc tập dữ liệu từ thư mục kNeighbor, với mỗi dòng dữ liệu, tách ra thành các
giá trị: hai userid, độ tương tự giữa hai người dùng đó Các giá trị này được lưutrong một HashMap với key là một userid, value là userid còn lại và độ tương tự.
e Doc tập dữ liệu kiểm nghiệm, duyệt các cặp userid và itemid trong tap kiểm
nghiệm và tính dự đoán đánh giá cho mỗi cặp đó sử dụng công thức 2.2.
2.3.2 Áp dụng MapReduce cho hệ tư vấn dựa vào sản phẩm
Bước 1: Xử lý tập dữ liệu đầu vào (Job 1)
Trang 10Dữ liệu vào ra tương ứng của bước này được mô tả như sau:
e KI là thứ tự của dòng đỡ liệu trong tập dữ liệu.
e VỊ là l dòng trong tập dữ liệu.
e K2 1a userid.
e V2 là itemid va rating tương ứng.e K3 1a userid.
e V3 là tập các cặp itemid va rating tương ứng với userid đó.
Dữ liệu đầu ra của Job 1 được lưu trong thư mục pair_item.
DataSplitMapper thực hiện công việc:
e Đọc tùng dòng dữ liệu trong tập dữ liệu tao ra giá trị V1.e Tach VI thành giá tri userid và itemid rating.
e Gan userid cho K2, gan itemid rating cho V2.e DataSplitReducer thực hiện công việc:
e Nhận đầu vào là một danh sách itemid và rating tương ứng (list(V2)) của một
userid (K2).
e Sắp xếp danh sách V2 theo itemid tăng dan Gan K3 bằng K2 và gan V3 là danh sách V2 đã sắp xếp.
Bước 2: Tính độ tương tự giữa các cặp sản phẩm (Job2)
Dữ liệu vào ra tương ứng của bước này được mô tả như sau:e KI là thứ tự dòng dữ liệu trong thư mục pair_item.
e V1 là I dòng dữ liệu đọc từ thư mục pair_item.e K2 là cặp itemid.
e V2 là userid va rating của userid đối với cả 2 item đó.
e K3 là cặp itemid.
e V3 là độ tương tự giữa cặp itemid đó.
Dữ liệu đầu ra của Job 2 được lưu trong thư mục similarity.
SimilarityMapper thực hiện công việc:
e Đọc từng dòng dữ liệu trong các file trong thư mục pair_item, đó là giá trị V1.e Tach VI thành userid và tập các cặp itemid va rating.
Trang 11e Lap và tách tập itemid va rating thành các cặp itemid và cặp rating.e Gán cặp itemid cho K2, gan cặp rating cho V2.
e SimilarityReducer thực hiện các công việc:
e Nhận đầu vào là danh sách cap rating (list(V2)) của một cặp itemid (K2).
e Với mỗi V2, tách thành hai giá tri rating.
e Ap dụng công thức tính độ tương tự Cosine 2.3 dé tính độ tương tự, trong đó:
v Tử số là tích vô hướng của hai vector sản phẩm, chính là tổng của tích của hai
giá trị rating tách được với mỗi V2.
VY Mẫu số là tích độ dài của hai vector sản phẩm.
e©_ Sau khi tính được độ tương tự của hai sản phẩm, gán cặp itemid cho K3, gan giá
trị độ tương tự cho V3.
Bước 3: Tính cơ sở dự đoán của người dùng u (Job 3)
Dữ liệu vào ra tương ứng của bước này được mé tả như sau:
e KI là thứ tự dòng trong tap dit liệu ban đầu.
e VI là 1 dòng dữ liệu trong tập dữ liệu ban dau.
e K2 1a userid.
e V2 la itemid va rating tương ứng.e K3 1a userid.
e V3 là giá trị của co sở dự đoán của người dùng tương ứng.
Dữ liệu đầu ra của bước 3 được lưu trong thư mục user_bias.
UserBiasMapper thực hiện các công việc:
e Nhận vào giá trị V1 tương ứng với một dòng dữ liệu trong tập dữ liệu ban đầu.
e Tach VI thành các giá tri userid, itemid va rating.e Gan userid cho K2, gan itemid va rating cho V2.UserBiasReducer thực hiện các công việc:
e Nhận vào danh sách itemid va rating (list(V2)) cua một userid (K2).
e Với mỗi V2, tách thành giá trị itemid và giá tri rating.
e Tính cơ sở dự đoán của người dùng theo công thức 2.6.
Bước 4: Tính cơ sở dự đoán của sản phẩm i(Job4)
Trang 12Dữ liệu vào ra của bước này được mô tả như sau:
e KI là thứ tự dòng trong tập dữ liệu ban đầu.
e VI là I dòng dữ liệu trong tập dữ liệu ban dau.
e K2 1a itemid.
e V2 là userid va rating tương ứng.e K3 1a itemid.
e V3 là giá tri của cơ sở dự đoán của san phẩm tương ứng.
Dữ liệu đầu ra của bước này được lưu trong thư mục item_bias.
ItemBiasMapper thực hiện các công việc:
e_ Nhận vào giá trị V1 tương ứng với một dòng dữ liệu trong tập dữ liệu ban đầu.
e Tach VI thành các giá trị itemid, userid và rating.e Gan itemid cho K2, gan userid và rating cho V2.
ItemBiasReducer thực hiện các công viéc:
e Nhận vào danh sách userid va rating (list(V2)) của một itemid (K2).
e Với mỗi V2, tách thành giá trị itemid và giá tri rating.
e_ Đọc từ tập dữ liệu user_bias dé lấy các giá trị cơ sở dự đoán của người dùng e_ Tính cơ sở dự đoán của sản phẩm theo công thức 2.7.
Bước 5: Chọn k hàng xóm có độ tương tự lớn nhất
Dữ liệu đầu vào và dau ra của bước này có dạng như sau:
e KI là thứ tự dòng dữ liệu trong thư mục similarity.e VỊ là 1 dòng dữ liệu đọc từ thư mục similarity.
e K2 là một itemid tách ra từ K1.
e V2 là itemid còn lại và độ tương tự giữa hai itemid đó.e K3 làitemid từ K2.
e _ V3 là danh sách gồm itemid và độ tương tự giữa itemid đó với itemid ở K3.
Dữ liệu đầu ra của bước này được lưu trong thư mục kNeighbor.
Lớp FindKNeighborMapper thực hiện các công việc:
e Đọc vào từng dòng dữ liệu từ thư mục similarity là giá trị V1.e Tach VI thành hai itemid và độ tương tự giữa hai itemid đó.