3.2.1. Cài đặt
Trong phần này, các tính toán chủ yếu dựa trên khung dữ liệu spark hơn là RDD. Dự liệu đầu vào .Csv đƣợc đọc qua trình đọc spark csv và nó tạo Dataframe với nhãn và 784 cột đặc trƣng.
Hình 3.1. Đƣa bộ dữ liệu vào chƣơng trình
Sau đó, các khung dữ liệu này sẽ đi qua VectorAssember để tự định dạng.
Hình 3.2. Định dạng các khung dữ liệu
Bƣớc tiếp theo, kích thƣớc của các đặc trƣng sẽ đƣợc giảm bớt với sự trợ giúp của thuật toán PCA để đẩy nhanh quá trình chạy.
Trƣớc khi sử dụng KNN kết hợp với thuật toán điểm biêm nhƣ đã giới thiệu trong chƣơng 2, chúng tôi trích xuất pca_feature và nhãn của dữ liệu huấn luyện và tính toán chúng thành một mảng và quảng bá đến mỗi nút.
Hình 3.3. Trích xuất đặc trƣng và quảng bá đến mỗi nút.
Tiếp theo là tính toán KNN. Sau đó, sắp xếp ma trận theo hàng và trả về nhãn K đầu tiên. Nhãn xuất hiện nhiều nhất là nhãn dự đoán của điểm dữ liệu kiểm tra.
Hình 3.4. Tiến hành tính toán KNN 3.2.2. Các tham số và kết quả đạt đƣợc
Với cấu hình các thông số nhƣ sau: 8 trình thực thi, 2 lõi, PCA = 50, D = 5. Kết quả đạt đƣợc của chƣơng trình mô phòng đƣợc thể hiện ở hình 3.4. Để có thể đánh giá đƣợc các giá trị này, chúng ta sử dụng một ma trận đƣợc gọi là confusion matrix.
Hình 3.5. Kết quả đạt đƣợc
Cách tính sử dụng độ chính xác (accuracy) nhƣ ở trên chỉ cho chúng ta biết đƣợc bao nhiêu phần trăm lƣợng dữ liệu đƣợc phân loại đúng mà không chỉ ra đƣợc cụ thể mỗi loại đƣợc phân loại nhƣ thế nào, lớp nào đƣợc phân loại đúng nhiều nhất, và dữ liệu thuộc lớp nào thƣờng bị phân loại nhầm vào lớp khác.
3.2.3. So sánh và đánh giá kết quả đạt đƣợc
Ở lần chạy đầu tiên, chúng tôi sƣ dụng thuật toán KNN cổ điển để tiến hành phân lớp các điểm dữ liệu, đã tính toán chúng từng hàng một. Trong trƣờng hợp này, sẽ mất rất nhiều thời gian để hoàn thành tất cả các bƣớc thƣờng không hiệu quả. Cụ thể thời gian chạy với các thông số đã nêu là mất khoảng hơn 1 giờ để hoàn thành.
Ở các lần chạy tiếp theo chúng tôi tiến hành sử dụng thuật toán KNN kết hợp với bài toán điểm biên để tính toán dƣờng nhƣ tiết kiệm rất nhiều thời gian vì nó sẽ chỉ cần ánh xạ 10000 lần thay vì 600 triệu. Nó giúp tôi cắt giảm thời gian hoàn thành xuống chỉ còn 3 phút.
Sắp xếp luôn là công đoạn mất nhiều thời gian. Tôi đã sử dụng để sắp xếp một mảng hai chiều với nhãn trong một cột và khoảng cách trong các cột khác. Với sự trợ giúp của Argsort, tôi chỉ cần sắp xếp danh sách khoảng cách và nó sẽ trả về chỉ mục của danh sách theo thứ tự tăng dần. Sau đó, chúng ta chỉ cần sử dụng chỉ mục để ánh xạ danh sách nhãn và nó sẽ trả về nhãn theo thứ tự khoảng cách tăng dần. Theo cách này, trƣớc đây nó tốn 0,02 giây cho mỗi đầu ra và bây giờ nó tốn 0,0075 giây cho mỗi đầu ra, nhanh hơn 3 lần.
Broadcast - nó là một chức năng tích hợp của ngữ cảnh Sparkđể truyền các giá trị đến các nút khác nhau. Trong trƣờng hợp này, nút sẽ tiết kiệm thời gian thu thập ngữ cảnh mỗi lần từ nút chính. Tuy nhiên, trong những trƣờng hợp khác nhau, kết quả sẽ ngƣợc lại. Khi tôi chạy chƣơng trình với K = 5 và PCA = 50, chƣơng trình có phát chậm hơn chƣơng trình không có sóng 20 giây. Đối với chƣơng trình có K = 10 và PCA = 100, với sự trợ giúp của việc phát sóng, nó cắt giảm tổng thể hơn 70s. Do đó, nó có thể phụ thuộc vào tần suất hỏi ngữ cảnh từ nút chính. Nếu tần số đủ cao và việc phát sóng có thể giúp giảm tần suất. Ngƣợc lại, nếu tần số thấp, thời lƣợng phát sóng có thể lấn át thời gian hỏi tổng thể. Do đó, với đầu vào lớn hơn, việc sử dụng phát sóng sẽ trở nên cần thiết.
KẾT LUẬN
Luận văn đã tìm hiểu, nghiên cứu kết hợp thuật toán KNN và bài toán điểm biên trong Spark để giải quyết vấn đề dữ liệu hơn. Sau đó, chúng tôi tiến hình một chƣơng trình cài đặt mô phỏng cho KNN kết hợp với bài toan điểm biên dựa trên Spark. Kết quả cài đặt bƣớc đầu tƣơng đối khả quan đối với bộ dữ liệu thu thập đƣợc.
Một số hƣớng phát triển của đề tài:
Trong nghiên cứu tƣơng lai, chúng tôi sẽ đánh giá cách tiếp cận của chúng tôi trên các bộ dữ liệu lớn hơn với cùng dữ liệu và thông số đƣợc sử dụng trong luận văn này. Và chúng ta dự định tiếp tục nghiên cứu, cải tiến để triển khai cài đạt trên nhiều bộ dữ liệu hơn, tạo ra nhiều kết quả có giá trị hơn, hỗ trợ các truy vấn phức tạp hơn.
Chúng tôi có kế hoạch thực hiện các thử nghiệm mở rộng hơn cũng nhƣ sử dụng các công nghệ mới hơn nhƣ Spark để làm cho quá trình tính toán thậm nhanh.
TÀI LIỆU THAM KHẢO
[1].Usama Fayyad, Gregory Piatetsky-Shapiro, and Padhraic Smyth; From data mining to knowledge discovery in databases.
[2]. Hastie, Trevor; Tibshirani, Robert; Friedman, Jerome (2009). “The Elements of Statistical Learning: Data Mining, Inference, and Prediction”.
[3]. Hoàng Kiếm; Giáo trình nhập môn trí tuệ nhân tạo; NXB ĐHQGTPHCM 2000.
[4].Mehmed Kantardzic; Data mining concepts, models, methods, and algorithms; John Wiley & Sons, 2003.
[5]. Đỗ Phúc; Giáo trình khai thác dữ liệu; NXB ĐHQG TPHCM 2008.
[6]. Anchalia, P.P.; Roy, K. The k-Nearest Neighbor Algorithm Using MapReduce Paradigm. In Proceedings of the 2014 5th International Conference on Intelligent Systems, Modelling and Simulation, Langkawi, Malaysia, 27–29 January 2014; pp. 513–518.
[7]. Deng, Z.; Zhu, X.; Cheng, D.; Zong, M.; Zhang, S. Efficient kNN classification algorithm for big data. Neurocomputing 2016, 195, 143–148. [8]. Neeb, H.; Kurrus, C. Distributed K-Nearest Neighbors; Stanford
University Publishing: Stanford, CA, USA, 2016.
[9]. Yong, Z.; Youwen, L.; Shixiong, X. An improved KNN text classification algorithm based on clustering.J. Comput. 2009, 4, 230–237.
[10]. Deng, Z.; Zhu, X.; Cheng, D.; Zong, M.; Zhang, S. Efficient kNN classification algorithm for big data.Neurocomputing 2016, 195, 143–148.