Thuật tốn 5. 3 Thuật tốn tìm kiếm K hàng xĩm gần nhất MIH_KNN
Thuật tốn: MIH Đầu vào:
- n đặc trưng được biểu diễn bằng mã nhị phân H = {hi} với i = 1,.., n
- tham số m
Đầu ra: m bảng băm con
1. For j=1 to m do
2. Khởi tạo bảng băm thứ j 3. For i = 1 to n do
4. Chèn hi vào bảng băm thứ j 5. End for
6. End for
Đầu vào: MIH_KNN
- Truy vấn g ={gj} với j= 1, m
- Tham số k’ = phần nguyên của k/m, và a = k – mk’
Đầu ra: tập k-hàng xĩm gần nhất của truy vấn g
1. For j=1 to a+1 do 2. Tìm k’ hàng xĩm gần nhất của gj từ bảng băm thứ j 3. End for 4. For j= a+2 to m do 5. Tìm (k’-1) hàng xĩm gần nhất của gj từ bảng băm thứ j 6. End for
5.2.4. Thực nghiệm và kết quả
Trong các thực nghiệm này, chúng tơi sử dụng 05 bộ dữ liệu tiếng nĩi đĩ là ISOLET, DIGITS, VNPLACES, TMW, và JVPD.
Bảng 5.1 và bảng 5.2 dưới đây so sánh độ chính xác phân lớp và thời gian chạy của thuật tốn LNBNN với các phương pháp tìm kiếm K-hàng xĩm gần nhất khác nhau. Trong Bảng 5.1, và Bảng 5.1 cột 1 là độ chính xác và thời gian chạy đối với đặc trưng SIFT gốc, cột 2, 3, 4 là kết quả phân lớp với đặc trưng SIFT nhị phân trong đĩ cột 2 là sử dụng phương pháp tìm kiếm tuyến tính, cột 3 là tìm kiếm với phương pháp phân cụm phân cấp, và cột 4 là sử dụng phương pháp đa chỉ số MIH.
Bảng 5. 1 So sánh độ chính xác phân lớp trên các bộ dữ liệu
Database Origin SIFT KD-TREE
Binary SIFT Linear Brute Force Binary SIFT Hierarchical Clustering Binary SIFT MIH ISOLET 56.3 56.3 56.3 56.3 EN DIGITS 95.4 95.8 95.3 96.2 VN PLACES 91.2 90.5 89.8 90.8 JVPD 95.1 94.6 93.7 95.0 TMW 83.1 89.9 89.9 89.9
Bảng 5.1 cho thấy trong các bộ dữ liệu thực nghiệm độ chính xác phân lớp trước và sau khi lượng tử hĩa SIFT hầu như khơng thay đổi trong khi kích thước của dữ liệu giảm được 8 lần từ 128 byte xuống cịn 16 byte cho mỗi điểm đặc trưng.
Bảng 5. 2 So sánh thời gian chạy trên các dữ liệu khác nhau (giây)
Databases Num descriptor Origin SIFT KD-TREE Binary SIFT Linear Brute Force Binary SIFT Hierarchical Clustering Binary SIFT MIH ISOLET 327,396 657 654 124 473 EN. DIGITS 581,134 1,584 3,848 643 2,331 VN PLACES 856,121 725 13,359 307 1,919 JVPD 489,998 11,144 1,613 228 901 TMW 3,605,234 25,364 73,595 1,892 43,295
Bảng 5.2 cho thấy trong các bộ dữ liệu thực nghiệm cho thấy đối với Binary SIFT, thời gian thực hiện giảm nhiều nhất đối với phương pháp tìm kiếm phân cấp, tiếp đến là phương pháp tìm kiếm đa chỉ số MIH.
5.3. Cài đặt phương pháp phân lớp LNBNN cho bài tốn nhận thức tiếng nĩi dữ liệu lớn nĩi dữ liệu lớn
5.3.1. Giới thiệu Framework Hadoop
Apache Hadoop là một framework dùng để chạy những ứng dụng trên một cụm máy tính được xây dựng bằng cách kết nối nhiều máy tính cĩ cấu hình phần cứng thơng thường. Hadoop cĩ hai thành phần chính là hệ thống quản lý dữ liệu phân tán HDFS (Hadoop Distributed File System) và hệ thống xử lý song song MapReduce.
HDFS là một hệ thống quản lý lưu trữ chính trong Hadoop. HDFS cho phép truy cập dữ liệu trên các cụm Hadoop một cách hiệu quả. HDFS thường được triển khai trên các phần cứng chi phí thấp, rất dễ xảy ra lỗi phần cứng. Vì vậy, HDFS được xây dựng để cĩ khả năng chịu lỗi cao với tốc độ truyền dữ liệu giữa các nốt trong HDFS là rất cao, dẫn đến giảm thiểu nguy cơ lỗi.
MapReduce là quy trình giúp xử lý tập hợp dữ liệu siêu lớn đặt tại các máy tính phân tán, cĩ thể xử lý được cả dữ liệu khơng cấu trúc và dữ liệu cấu trúc. Trong MapReduce, các máy tính chứa dữ liệu đơn lẻ được gọi là các nốt (node).
Ngồi hai thành phần chính là HDFS và MapReduce, Hadoop cịn cĩ một số thành phần hỗ trợ khác, đĩ là:
-Hadoop Streaming là một tiện ích để tạo nên mã MapReduce bằng bất kỳ ngơn ngữ nào như C, Perl, Python, C++, Bash,…;
-Hive và Hue là tiện ích cho phép chuyển đổi câu lệnh SQL thành một tác vụ MapReduce;
-Pig là một mơi trường lập trình mức cao hơn để viết mã MapReduce. Ngơn ngữ Pig được gọi là Pig Latin. Bạn cĩ thể thấy các quy ước đặt tên hơi khác thường một chút, nhưng bạn sẽ cĩ tỷ số giá-hiệu năng đáng kinh ngạc và tính sẵn sàng cao;
-Sqoop cung cấp việc truyền dữ liệu hai chiều giữa Hadoop và cơ sở dữ liệu quan hệ yêu thích của bạn;
-HBase là kho lưu trữ key-value cĩ thể mở rộng quy mơ rất lớn. Nĩ hoạt động rất giống như một hash-map để lưu trữ lâu dài;
-FlumeNG là trình nạp thời gian thực để tạo luồng dữ liệu của bạn vào Hadoop. Nĩ lưu trữ dữ liệu trong HDFS và HBase. Bạn sẽ muốn bắt đầu với FlumeNG, để cải thiện luồng ban đầu;
-Whirr cung cấp đám mây cho Hadoop.
-Mahout: Máy học dành cho Hadoop. Được sử dụng cho các phân tích dự báo và phân tích nâng cao khác.
-Fuse: Làm cho hệ thống HDFS trơng như một hệ thống tệp thơng thường.
- Zookeeper: Được sử dụng để quản lý đồng bộ cho hệ thống.
5.3.2. Cài đặt thuật tốn phân lớp LNBNN trên nền Hadoop
Để cài đặt được phương pháp phân lớp LNBNN trên nền Hadoop, chúng ta cần phải hiểu được cơ chế điều khiển dữ liệu vào ra của Hadoop. Hadoop sử dụng framework MapReduce để thực hiện các thao tác xử lý với dữ liệu.
MapReduce được chia thành hàm là Map và Reduce. Những hàm này được định nghĩa bởi người dùng và là hai giai đoạn liên tiếp trong quá trình xử lý dữ liệu.
+ Map nhận đầu vào là tập các cặp <khĩa, giá trị> và đầu ra là tập các cặp <khĩa, giá trị trung gian> ghi xuống đĩa cứng và thơng báo cho Reduce nhận dữ liệu để xử lý.
+ Reduce sẽ nhận khĩa trung gian I và tập các giá trị ứng với khĩa đĩ, ghép nối chúng lại để tạo thành một tập khĩa nhỏ hơn. Các cặp khĩa/giá trị trung gian sẽ được đưa vào cho hàm Reduce thơng qua một con trỏ vị trí (iterator). Điều này cho phép ta cĩ thể quản lý một lượng lớn danh sách các giá trị để phù hợp với bộ nhớ.
Thực chất giữa bước Map và Reduce cịn cĩ một bước phụ mà bước này thực hiện song song với bước reduce đĩ là sắp xếp (Shuffle). Tức là sau khi map thực hiện xong tồn bộ cơng việc của mình, kết quả của Map được đặt rải rác trên các cụm khác nhau nên Shuffle sẽ làm nhiệm vụ thu thập các cặp
<khĩa-giá trị trung gian> do Map sinh ra mà cĩ cùng khĩa, sắp xếp lại và chuyển cho Reduce thực hiện.
MapReduce thực hiện các thủ tục Map và Reduce song song và độc lập nhau. Tất cả thủ tục Map cĩ thể chạy song song và khi mỗi nốt hồn thành tác vụ thì chúng gửi trở về nốt chủ. Thủ tục này cĩ thể rất hiệu quả khi nĩ được thực hiện trên một số lượng rất lớn dữ liệu.
MapReduce cĩ 5 bước khác nhau:
Chuẩn bị dữ liệu đầu vào cho Map
Thực thi mã Map được cung cấp bởi người dùng
Trộn dữ liệu xuất của Map vào bộ xử lý Reduce
Thực thi mã Reduce được cung cấp bởi người dùng
Tạo dữ liệu xuất cuối cùng
MapReduce xử lý dữ liệu dưới dạng một cặp giá trị <key, value>, vì vậy để cài đặt phương pháp phân lớp LNBNN trên nền Hadoop, cần phải biểu diễn dữ liệu dưới dạng mà MapReduce cĩ thể nhận và xử lý được. Dữ liệu huấn luyện và dữ liệu kiểm tra được lưu trữ trong tệp dữ liệu cĩ cấu trúc như sau:
key: key1; value: 3; len: 2; 0:3; 1:4; trong đĩ:
- Key: key1 là khĩa xác định của điểm đặc trưng của dữ liệu
- Value: 3 là nhãn của điểm đặc trưng, 3 ở đây chỉ ra rằng nhãn của điểm đặc trưng này là thuộc lớp 3
- Len: 2 số chiều của véc tơ điểm đặc trưng, trong ví dụ này điểm đặc trưng cĩ 2 chiều
- các cặp số sau khĩa len là chỉ số và giá trị của các thành phần trong véc tơ điểm đặc trưng của dữ liệu.
Bước đầu tiên trong quy trình xử lý của Map là chuẩn bị dữ liệu, ở đây ta cung cấp các thơng tin cần thiết làm tham số đầu vào cho thủ tục Map sử dụng trong quá trình xử lý.