(Luận văn) đề xuất cải tiến thuật toán k phần tử gần nhất trong khai phá dữ liệu lớn với mô hình mapreduce

59 1 0
(Luận văn) đề xuất cải tiến thuật toán k phần tử gần nhất trong khai phá dữ liệu lớn với mô hình mapreduce

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC QUY NHƠN NGUYỄN QUANG QUYỀN lu an n va tn to ĐỀ XUẤT CẢI TIẾN THUẬT TOÁN K PHẦN TỬ gh GẦN NHẤT TRONG KHAI PHÁ DỮ LIỆU LỚN VỚI p ie oa nl w MƠ HÌNH MAPREDUCE d Chun ngành: 8480101 fu n va an lu Mã ngành: Khoa học máy tính oi m ll nh at Ngƣời hƣớng dẫn: TS HỒ VĂN LÂM z z om l.c gm @ Lu an n va ac th si LỜI CAM ĐOAN Tôi xin cam đoan: Luận văn cơng trình nghiên cứu thực cá nhân, thực hướng dẫn khoa học TS Hồ Văn Lâm Các số liệu, kết luận nghiên cứu trình bày luận văn trung thực chưa cơng bố hình thức Tôi xin chịu trách nhiệm nghiên cứu lu an n va tn to gh p ie oa nl w d fu n va an lu oi m ll nh at z z om l.c gm @ Lu an n va ac th si LỜI CẢM ƠN Tôi xin chân thành cảm ơn hướng dẫn dạy giúp đỡ tận tình Thầy Cô giảng dạy Sau Đại Học – Trường Đại Học Quy Nhơn Đặc biệt, xin cảm ơn thầy Hồ Văn Lâm, giảng viên khoa Công Nghệ Thông Tin, Trường Đại Học Quy Nhơn tận tình hướng dẫn truyền đạt kiến thức kinh nghiệm quý báu giúp có đầy đủ kiến thức hồn thành luận văn lu Và xin cảm ơn bạn bè, người thân gia đình tin an n va tưởng, động viên tơi q trình học tập nghiên cứu đề tài tn to Mặc dù cố gắng việc thực luận văn, song đề tài khơng gh thể tránh khỏi thiếu sót chưa hoàn chỉnh Tối mong nhận ý p ie kiến đóng góp Thầy, Cơ bạn để đề tài hoàn thiện nl w Một lần nữa, xin chân thành cảm ơn! Học viên oa d lu fu n va an Nguyễn Quang Quyền oi m ll nh at z z om l.c gm @ Lu an n va ac th si MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH MỞ ĐẦU 1 Tính cấp thiết đề tài lu Mục đích nghiên cứu an n va Đối tượng nghiên cứu Phạm vi nghiên cứu to tn Phương pháp nghiên cứu gh p ie CHƢƠNG 1: TỔNG QUAN KHAI PHÁ DỮ LIỆU LỚN nl w 1.1 Big Data 1.2 Data Mining oa d 1.2.1 Khái niệm an lu 1.2.2 Quá trình khai phá tri thức sở liệu n va 1.2.3 Các kỹ thuật tiếp cận khai phá liệu fu 1.2.4 Kiến trúc hệ thống khai phá liệu m ll oi 1.2.5 Ứng dụng khai phá liệu 10 nh 1.3 Apache Hadoop 10 at z 1.3.1 HDFS gì? 10 z gm @ 1.3.2 Mapreduce 12 1.4 Apache Spark 15 l.c 1.4.1 Giới thiệu 15 om 1.4.2 Kiến trúc Spark 17 Lu an 1.4.3 Quản lý nhớ Apache Spark 18 n va ac th si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 1.4.4 Tại nên sử dụng Apache Spark 19 CHƢƠNG 2: GIỚI THIỆU THUẬT TOÁN K-NEAREST NEIGHBORS 23 2.1 Thuật toán K – phần tử gần 23 2.1.1 Khái niệm 23 2.1.2 Phương thức làm việc K phần tử gần 24 2.1.3 Phương pháp chọn K 25 2.1.4 Khoảng cách không gian vectơ 25 lu 2.2 Ứng dụng K phần tử gần 27 an 2.3 Ưu nhược điểm K phần tử gần 30 n va CHƢƠNG 3: ĐỀ XUẤT CẢI TIẾN TRONG MƠ HÌNH MAPREDUCE tn to 31 gh ie 3.1 Môi trường xử lý song song 31 p 3.2 Thuật toán Secondary Sorting (sắp xếp thứ cấp) 32 nl w 3.3 Kết hợp K phần tử gần Spark xếp liệu đầu vào 35 oa CHƢƠNG 4: CÀI ĐẶT THỬ NGHIỆM 46 d an lu 4.1 Kết 47 n va 4.2 Đánh giá 48 fu 4.3 Kết luận 48 m ll oi DANH MỤC TÀI LIỆU THAM KHẢO nh QUYẾT ĐỊNH GIA0 ĐỀ TÀI LUẬN VĂN (bản sao) at z z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an DANH MỤC CHỮ VIẾT TẮT lu an STT Ký hiệu Diễn giải K-NN K-Nearest Neighbors KDD Khai phá tri thức CSDL Cơ sở liệu - Knowledge Discovery in Databases HDFS Hadoop Distributed File System RDD Resilient Distributed Dataset DAG Directed Acyclic Graph n va tn to gh p ie oa nl w d fu n va an lu oi m ll nh at z z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an DANH MỤC CÁC BẢNG Bảng 2.1: Bộ liệu hoa Iris 28 Bảng 2.2: Bộ liệu hoa Iris mã hóa 29 Bảng 2.3: Khoảng cách liệu loại hoa 29 Bảng 2.4: Khoảng cách trung bình 30 Bảng 4.1: So sánh kết chạy thuật toán thể bên dưới: 47 lu an n va tn to gh p ie oa nl w d fu n va an lu oi m ll nh at z z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an DANH MỤC CÁC HÌNH Hình 1.1: Khai phá liệu bước trình khai phá tri thức [8] Hình 1.2: Kiến trúc hệ thống khai phá liệu [5] Hình 1.3: Kiến trúc HDFS 11 Hình 1.4: Sơ đồ tổng quan hoạt động Mapreduce 13 Hình 1.5: Sơ đồ hoạt động trình Mapreduce 14 Hình 1.6: Các thành phần sử dụng Apache Spark [6] 16 lu Hình 1.7: Kiến trúc Apache Spark [6] 17 an n va Hình 1.8: Thành phần Apache Spark [6] 19 Hình 1.9: Sự khác Hadoop Spark 21 tn to Hình 1.10: So sánh Hadoop Spark 21 gh p ie Hình 1.11: Thành phần thư viện Spark 22 Hình 1.12: Các ngơn ngữ Spark năm 2014 -2015 22 oa nl w Hình 2.1: Ví dụ minh họa K phần tử gần 24 d Hình 2.2: Ví dụ minh họa K phần tử gần 24 an lu Hình 3.1: Mơ hình hoạt động K-NN Spark 31 n va Hình 3.2: Mơ hình hoạt động huấn luyện liệu đầu vào 35 fu Hình 4.1: Biểu đồ thời gian thực nghiệm thuật toán K-NN 48 oi m ll nh at z z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an MỞ ĐẦU Tính cấp thiết đề tài Thời đại cách mạng công nghiệp thứ tư, với phát triển công nghệ thông tin thông tin gia tăng bùng nổ liệu từ mức độ terabytes đến mức độ petabytes Chúng ta hoàn toàn bị tràn ngập liệu, liệu quan trọng bị bỏ thừa không dược tận dụng hết Do nhu cầu khai phá, phân tích liệu để tìm kiếm thơng tin từ nguồn tài nguyên quý giá điều cấp thiết lu an Bài toán phân loại liệu toán thường gặp n va khai phá liệu Có nhiều cách tiếp cận giải thuật đưa tn to để giải tốn phân loại Một số thuật toán K phần tử gần gh (K-Nearest Neighbors) p ie K phần tử gần phương pháp phân loại biết đến nhiều nhất, nl w hiệu tính đơn giản mà khơng cần nhiều điều chỉnh Xây oa dựng mô hình thường nhanh dễ sử dụng, nhiên nhu cầu tính tốn d cao tốn nhớ làm cho K phần tử gần cổ điển không khả thi cho việc an lu n va khai phá liệu lớn ngày Để khắc phục hạn chế, số phương fu pháp kết hợp môi trường phân tán đề xuất oi m ll Mục đích nghiên cứu nh Trong luận văn này, tác giả tập trung vào việc đưa số giải pháp at cải tiến thuật toán K phần tử gần khai phá liệu lớn với mơ hình z z Mapreduce om Lu an  Thuật toán xếp thứ cấp l.c  Mơ hình xử lý Mapreduce gm  Thuật toán K phần tử gần @ Đối tƣợng nghiên cứu n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Phạm vi nghiên cứu Áp dụng thuật toán K phân tử gần cải tiến khai phá liệu với mơ hình Mapreduce Phƣơng pháp nghiên cứu Từ kiến thức học máy, liệu lớn, tốn lập trình áp dụng nghiên cứu, cài đặt thuật toán K phần tử gần cổ điển sau áp dụng phương pháp cải tiến xử lý song song thu gọn khơng gian tìm kiếm nghiệm, sau so sánh hai mơ hình đánh giá lu an n va tn to gh p ie oa nl w d fu n va an lu oi m ll nh at z z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 37 Ví dụ 3.3: kết nối máy master final JavaSparkContext ctx = new JavaSparkContext(); Bƣớc 4: tạo JavaRDD Bước này, đọc file từ HDFS tạo JavaRDD Ví dụ 3.4: tạo JavaRDD JavaRDD lines = ctx.textFile(inputPath, 1); Bƣớc 5: Tạo cặp key_value từ JavaRDD Bước này, thực trình ánh xạ Mỗi ghi chuyển đổi thành cặp lu giá trị khóa, khóa tên giá trị Tuple2 (thời gian, giá trị) an Ví dụ 1.5: tạo key_value n va JavaPairRDD pairs = to tn lines.map(new PairFunction() { ie p public Tuple2 call(String nl w s) { String[] tokens = s.split(","); // x,2,5 oa d System.out.println(tokens[0] + "," + tokens[1] + "," + an lu tokens[2]); n va Integer time = new Integer(tokens[1]); fu Integer value = new Integer(tokens[2]); m ll Tuple2 timevalue = new Tuple2(time, value); nh at return new Tuple2(tokens[0],timevalue); z }); Bƣớc 6: Xác thực bước om l.c gm @ } Mục đích bước để gỡ lỗi xác thực bước, sử dụng Lu an JavaRDD.collect() JavaPairRDD.collect() n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 38 Ví dụ 3.6: xác thực bước List output = pairs.collect(); for (Tuple2 t : output) { Tuple2 timevalue = (Tuple2) t._2; System.out.println(t._1 + "," + timevalue._1 + "," + timevalue._1); } lu Bƣớc 7: Nhóm giá trị JavaPairRDD theo khóa an n va Ta thực Pha Reduce việc sử dụng groupBykey() Ví dụ 3.7: nhóm giá trị JavaPairRDD tn to JavaPairRDD gh groups = pairs.groupByKey(); ie p Bƣớc 8: Xác thực bước nl w Bước này, xác nhận bước trước cách sử dụng hàm collect() oa Ví dụ 3.8: xác thực bước d an lu System.out.println("===DEBUG1==="); n va List output2 = groups.collect(); fu oi output2) { m ll for (Tuple2 t : nh Iterable list = t._2; at z System.out.println(t._1); z @ for (Tuple2 t2 : list) { } Lu } om System.out.println("====="); l.c gm System.out.println(t2._1 + "," + t2._2); an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 39 Bƣớc 9: Sắp xếp giá trị Pha Reduce Bước này, sử dụng phương thức Spark mạnh mẽ khác, mapValues(), để xếp giá trị tạo Reduce Phương thức mapValues() cho phép ta chuyển đổi (K, V1) thành (K, V2), V2 V1 xếp Ví dụ 3.9: xếp giá trị JavaPairRDD sorted = groups.mapValues( new Function< Iterable, // input lu Iterable // output an n va >() { public Iterable tn to call(Iterable s) { gh List newList = new ie p ArrayList(s); nl w Collections.sort(newList, new TupleComparator()); return newList; oa } d an lu }); n va Bƣớc 10: Kết đầu fu Ta sử dụng hàm collect() để thu thập tất phần tử RDD sau lặp m ll lại qua Danh sách để có tất kết cuối oi nh Ví dụ 3.10: cho kết đầu at System.out.println("===DEBUG2="); z z List gm @ output3 = sorted.collect(); for (Tuple2 t : l.c output3) { Lu System.out.println(t._1); om Iterable list = t._2; an for (Tuple2 t2 : list) { n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 40 System.out.println(t2._1 + "," + t2._2); } System.out.println("====="); } Bƣớc 11: Xử lý liệu đầu vào Dữ liệu sau xếp đem xử lý Bước này, truyền bốn tham số đầu vào: lu an n va  k số nguyên cho K-Nearest Neighbors  d số nguyên cho kích thước vectơ R S  Dữ liệu truy vấn đặt R (dưới dạng tệp HDFS)  Tập liệu huấn luyện S (dưới dạng tệp HDFS if (args.length < 4) { tn to Ví dụ 3.11: xử lý liệu gh System.err.println("Usage: kNN ie p "); System.exit(1); oa nl w } d Integer k = Integer.valueOf(args[0]); // k for kNN an lu Integer d = Integer.valueOf(args[1]); // d-dimension n va String datasetR = args[2]; String datasetS = args[3]; fu m ll Bƣớc 12: Tạo đối tượng Spark context oi Bước này, tạo đối tượng JavaSparkContext để tạo RDDs nh at Ví dụ 3.12: tạo Spark context z JavaSparkContext ctx = createJavaSparkContext("knn"); z gm @ Bƣớc 13: truyền liệu Để cho phép truy cập vào đối tượng cấu trúc liệu chia sẻ từ tất l.c nút cụm, Spark cung cấp lớp Broadcast mà bạn đăng ký om đối tượng Sau bạn đọc chúng từ nút Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 41 Ví dụ 3.13: truyền liệu final Broadcast broadcastK = ctx.broadcast(k); final Broadcast broadcastD = ctx.broadcast(d); Bƣớc 14: Tạo RDDs cho liệu truy vấn huấn luyện bước tạo hai RDD (một cho R cho S) Các RDDs biểu thị liệu thơ dạng đối tượng chuỗi Ví dụ 3.14: tạo RDD dạng chuỗi JavaRDD R = ctx.textFile(datasetR, 1); R.saveAsTextFile("/output/R"); lu JavaRDD S = ctx.textFile(datasetS, 1); an n va S.saveAsTextFile("/output/S"); Bước tạo đầu cho tập liệu truy vấn (R) tn to 1000;3.0,3.0 gh 1001;10.1,3.2 ie p 1003;2.7,2.7 nl w 1004;5.0,5.0 1005;13.1,2.2 oa 1006;12.7,12.7 d oi nh 103;c1;1.6,1.5 m ll 102;c1;1.2,1.0 fu 101;c1;1.1,1.2 liệu đào tạo ( ) n va 100;c1;1.0,1.0 an lu đầu cho at 104;c1;1.3,1.7 z Lu an 210;c2;9.2,9.0 om 209;c2;9.1,9.2 l.c 208;c2;9.0,9.0 gm 107;c1;2.3,2.3 @ 106;c1;2.0,2.2 z 105;c1;2.0,2.1 n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 42 211;c2;10.6,10.5 212;c2;10.3,10.7 213;c2;9.6,9.1 214;c2;9.4,10.4 215;c2;10.3,10.3 300;c3;10.0,1.0 301;c3;10.1,1.2 302;c3;10.2,1.0 303;c3;10.6,1.5 304;c3;10.3,1.7 lu an 305;c3;10.0,2.1 n va 306;c3;10.0,2.2 307;c3;10.3,2.3 tn to Bƣớc 15: Tính khoảng cách Cartesian (R, S) gh ie Bước này, tìm khoảng cách Cartesian tập liệu truy vấn (R) với tập p liệu huấn luyện (S) Nó tạo RDD sau: nl w {(r,s)/r Є R, s Є S} oa Ví dụ 3.15: tính tích hai tập liệu d an lu JavaPairRDD cart = R.cartesian(S); ước cho n va cart.saveAsTextFile("/output/cart"); t qu đầu fu m ll (1000;3.0,3.0,100;c1;1.0,1.0) oi (1000;3.0,3.0,101;c1;1.1,1.2) nh at (1000;3.0,3.0,306;c3;10.0,2.2) z Lu an (1001;10.1,3.2,307;c3;10.3,2.3) om (1001;10.1,3.2,306;c3;10.0,2.2) l.c gm (1001;10.1,3.2,101;c1;1.1,1.2) @ (1001;10.1,3.2,100;c1;1.0,1.0) z (1000;3.0,3.0,307;c3;10.3,2.3) n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 43 (1006;12.7,12.7,306;c3;10.0,2.2) (1006;12.7,12.7,307;c3;10.3,2.3) Bƣớc 16: Tìm khoảng cách (r, s) cho r R s S Bước này, tìm thấy khoảng cách Euclidian cặp (R, S) Dựa liệu u cầu tốn mình, ta chọn sử dụng thuật toán khoảng cách khác (chẳng hạn Minkowski) Việc lựa chọn thuật toán khoảng cách ảnh hưởng đến độ lệch phân loại K-Nearest Neighbors lu Bước tạo RDD sau: an n va {(r, (distance, classification)} tn to Ví dụ 3.16: tìm khoảng cách r,s JavaPairRDD knnMapped = gh p ie cart.mapToPair(new PairFunction() { nl w public Tuple2 call( oa Tuple2 cartRecord) { d String rRecord = cartRecord._1; lu an String sRecord = cartRecord._2; n va String[] rTokens = rRecord.split(";"); fu String rRecordID = rTokens[0]; m ll String r = rTokens[1]; // r.1, r.2, , r.d oi nh String[] sTokens = sRecord.split(";"); at // sTokens[0] = s.recordID z String sClassificationID = sTokens[1]; z Integer d = broadcastD.value(); l.c gm @ String s = sTokens[2]; // s.1, s.2, , s.d double distance = calculateDistance(r, s, d); om String K = rRecordID; // r.recordID Lu Tuple2 V = new Tuple2( an distance, sClassificationID); n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 44 return new Tuple2(K, V); } }); knnMapped.saveAsTextFile("/output/knnMapped"); ước cho t qu đầu (1000,(2.8284271247461903,c1)) (1000,(2.6172504656604803,c1)) (1000,(7.045565981523415,c3)) lu an (1000,(7.333484846919642,c3)) n va (1001,(9.362157870918434,c1)) tn to gh (1001,(0.9219544457292893,c3)) p ie nl w (1006,(10.84158659975559,c3)) (1006,(10.673331251301065,c3)) oa d Bƣớc 17: Nhóm khoảng cách theo r R lu an Sau tìm khoảng cách cho {(r, s)}, để tìm k hàng xóm gần nhất, ta nhóm n va liệu theo r Khi liệu nhóm theo r, sau ta quét giá trị nhóm fu tìm k khoảng cách gần Bước tạo RDD sau: oi m ll {(r, {(distance, classification)}} nh Ví dụ 3.17: nhóm khoảng cách theo r at z JavaPairRDD z @ knnGrouped = knnMapped.groupByKey(); l.c gm Bƣớc 18: Tìm K phần tử gần phân loại r Bước này, ta quét giá trị nhóm để tìm K phần tử gần Để tìm om phần tử k có khoảng cách nhỏ nhất, ta sử dụng SortedMap, giữ k lân Lu cận gần Ở lần lặp, ta đảm bảo giữ phần tử k gần an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 45 Khi k phần tử gần tìm thấy, ta phân loại liệu truy vấn theo quy tắc đa số Ví dụ 3.18: tìm k phân loại r JavaPairRDD knnOutput = knnGrouped.mapValues(new Function< Iterable, String >() { public String call(Iterable neighbors) { Integer k = broadcastK.value(); lu SortedMap nearestK = an findNearestK(neighbors,k); n va Map majority = tn to buildClassificationCount(nearestK); gh String selectedClassification = p ie classifyByMajority(majority); } }); oa nl w return selectedClassification; d knnOutput.saveAsTextFile("/output/knnOutput"); nh at (1003,c1) oi (1006,c2) m ll (1004,c1) fu (1000,c1) đầu n va (1001,c3) t qu an lu ước cho z z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 46 CHƢƠNG 4: CÀI ĐẶT THỬ NGHIỆM Tác giả tiến hành thực nghiệm thuật toán K-NN hệ thống máy tính liệu Ta có hai file csv file liệu huấn luyện, file kiểm thử:  DLYT_train.csv : tập huấn luyện 1,141,123 bytes (48760 mẫu)  DLYT_test.csv : tập kiểm thử 19,289 bytes (1000 mẫu) Chuyển hai file csv thành file txt theo định dạng đầu vào K-NN Spark lu  Train.txt: Tập huấn luyện 1,141,123 bytes 48760 mẫu an n va  Test.txt: Tập kiểm thử 19,289 bytes 1000 mẫu tn to Dùng tất 48760 mẫu để train gh Tạo test tách từ file Test.txt, để so sánh hai thuật toán: p ie  Test10.txt: 191 bytes, 10 mẫu nl w  Test50.txt: 984 bytes, 50 mẫu oa  Test100.txt: 1893 bytes, 100 mẫu d  Test200.txt: 3800 bytes, 200 mẫu lu n va an  Test500.txt: 9955 bytes, 500 mẫu K-NN cổ điển fu m ll Thuật toán cài đặt PC với cấu hình: oi  Intel® Core™ i3-3240U CPU @ 3.4GHz nh at  GB Ram z z  Hệ điều hành Window 8.1 64bit @ Lu Được triển khai GCP (Google Cloud Platform) om K-NN cải tiến l.c số k = 5, d = 568 gm  Thuật toán K-NNcổ điển cài đặt ngôn ngữ Python, tham an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 47 Masternode:  Cores: 4vCPUs  Menory: 15GB  Primary disk size: 32GB Workernodes: Nodes với cấu hình node  Cores: 4vCPUs  Menory: 25GB  Primary disk size: 32GB lu Tổng cấu hình cluster an n va YARN cores: 20 Hệ điều hành môi trường: Ubuntu 14.04, Hadoop 2.7, Spark 2.2 tn to YARN memory: 105 GB gh p ie Thuật toán K-NN Spark cài đặt ngôn ngữ Java, tham số k nl w = 5, d = 568 4.1 Kết oa d Bảng 4.1: So sánh kết chạy thuật toán đƣợc thể bên dƣới: K-NN (giây) K-NN cải tiến (giây) 10 249 59 1394 334 2764 697 oi nh 5849 1468 at 15009 3649 z 500 m ll 200 fu 100 n va 50 an lu Số mẫu test z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 48 lu an n va tn to Hình 4.1: Biểu đồ thời gian thực nghiệm thuật toán K-NN gh 4.2 Đánh giá p ie Từ kết thực nghiệm ta thấy rằng, việc sử dụng K phần tử gần nl w cổ điển liệu lớn điều không khả thi Đối với liệu hàng oa Terebyte, Petabyte, K phần tử gần cải tiến cho ta hiệu suất, thời gian, d kết tốt nhiều lu n va an Điểm hạn chế nghiên cứu chưa tận dụng hết lợi ích việc xếp, giai đoạn tính tích thực node nên nhiều thời fu m ll gian oi Nghiên cứu đặc biệt làm tiền đề cho việc cải tiến thuật toán K nh at phần tử gần tốt nữa, thuật tốn khác có khai thác z xếp liệu z gm @ 4.3 Kết luận l.c Nhu cầu khai thác liệu lớn ngày tăng Với hệ thống truyền om thống, liệu lớn hồn tồn khó có khả đáp ứng thời gian Lu nhận dạng phải đối mặt với giới hạn tài nguyên nhớ an khả xử lý máy tính Do đó, xử lý hiệu liệu lớn bước n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an 49 quan trọng để phân tích phân loại liệu Điều chứng tỏ tầm quan trọng việc sử dụng mơ hình MapReduce tảng xử lý phân tán để xử lý khối lượng liệu lớn Trong nghiên cứu này, tác giả đề xuất phương pháp hiệu mặt thời gian thực gán nhãn liệu với việc ứng dụng mơ hình MapReduce xếp liệu mơi trường Spark để xử lý lượng lớn liệu Hệ thống hỗ trợ tính tốn trực tiếp nhớ làm cho trình truy vấn liệu nhanh so với hệ thống dựa đĩa cứng Hadoop Việc lu xếp liệu giúp cho việc tính tốn nghiệm đơn giản Thuật tốn K an phần tử gần dựa mơ hình MapReduce đáp ứng yêu cầu n va hiệu suất xử lý Kết thực nghiệm cho thấy độ xác tn to thời gian thực giảm rõ rệt so với phương pháp gh p ie truyền thống sử dụng kỹ thuật tính tốn song song xếp liệu oa nl w d fu n va an lu oi m ll nh at z z om l.c gm @ Lu an n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an DANH MỤC TÀI LIỆU THAM KHẢO Hoàng Trọng Hiếu, 2017, “Tổng quan Apache Spark cho hệ thống [1] Big Data” ThS Trần Hùng Cường, ThS Ngô Đức Vĩnh, (2011), “Tổng quan [2] phát tri thức khai phá liệu” [3] Ge Song, Justine Rochas, Lea Beze, Fabrice Huet, Frederic Magoules, 2017, ”K Nearest Neighbour Joins for Big Data on MapReduce: A lu Theoretical and Experimental Analysis” an n va [4] Annapoorna P S, K Aafreen, Preethi J D, Dr Jitendranath Mungara, tn to 2017, “Survey on K-Nearest Neighbour Joins for Big Data on gh MapReduce”, International Journal of Innovative Research in p ie Computer and Communication Engineering, Vol.5, Special Issue 5, [5] nl w June 2017 Thilina Gunarathme, Srinath Perena, 2013, “Hadoop Mapreduce oa d cookbook” lu Jon Lentz, Jonathan R Owens, Brian Femiano, 2013, “Hadoop Real- an [6] fu n va World Solutions Cookbook” Databricks, 2017, “The Data Engineer’s Guide to Apache Spark”, [8] Aishwarya M R, Debaswini Khuntia, Preethi J D, 2017, “Data oi m ll [7] nh at Classification by KNN using Mapreduce In Hadoop“, International z Journal of Scientific Research in Computer Science, Engineering and z gm Kauser Ahmed P, D.P Acharjya, 2016, “A survey on Big Data Journal Open of Advanced Computer Science Issues Tools”, and an Applications, Vol 7, No 2, 2016 and Research Lu International Challenges, om Analytics: l.c [9] @ Information Technology n va ac th Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn si C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn

Ngày đăng: 24/07/2023, 03:04

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan