4.3 Phân lớp dữ liệu tập trung
4.4.1 Phân lớp phân tán
Như đã trình bày ở mục 1, trong phần cài đặt thử nghiệm này, tác giả chỉ thực hiện cài đặt phân lớp phân tán dựa trên mơ hình nguồn dữ liệu huấn luyện phân tán và nguồn dữ liệu kiểm thử tập trung. Như đã trình bày ở chương 1 dữ liệu thường được phân tán dưới hai dạng: phân tán phân mảnh ngang và phân tán phân mảnh dọc. Trong phạm vi luận văn này, tác giả thực hiện phân lớp dữ liệu với nguồn dữ liệu huấn luyện được lưu trữ ở dạng phân tán phân mảnh ngang.
Để thực hiện điều này, đối với mỗi nguồn dữ liệu, tác giả chia dữ liệu huấn luyện thành 2 phần theo phân mảnh ngang (mỗi phần đều cĩ chứa tồn bộ tập thuộc tính của cả nguồn dữ liệu đĩ). Mỗi phần dữ liệu sẽ được lưu trữ tại các máy khác nhau. Dữ liệu huấn luyện của các nguồn được chia như sau:
Nguồn ADULT được chia thành 2 phần: phần 1 chứa 6.500 bản ghi, phần 2 chứa 5.000 bản ghi.
Nguồn CARS được chia thành 2 phần: phần 1 chứa 576 bản ghi, phần 2 chứa 576 bản ghi.
Nguồn NURSERY được chia thành 2 phần: phần 1 chứa 4.320 bản ghi, phần 2 chứa 4.320 bản ghi.
Để hỗ trợ việc truyền thơng tin trong mơi trường phân tán, tác giả sử dụng RMI/JAVA như một cơng cụ hỗ trợ lập trình phân tán.
RMI/JAVA1
RMI – Remote Method Invoke là cách thức giao tiếp giữa các đối tượng Java cĩ mã lệnh cài đặt (bao gồm phương thức và thuộc tính) nằm trên các máy khác nhau. Đối tượng ở máy này cĩ thể gọi phương thức của các đối tượng được lưu trữ ở máy khác. Cách thức hoạt động của RMI cĩ thể được mơ hình hĩa như sau (Hình 4.8).
Một ứng dụng RMI thường gồm 2 chương trình, một dành cho server và một dành cho client. Chương trình server tạo ra các đối tượng cĩ thể truy cập từ xa và tạo ra các tham chiếu để truy cập đến các đối tượng này. Chương trình client thu thập các tham chiếu đến một hay nhiều đối tượng cĩ thể truy cập từ xa trên server và gọi các phương thức của các đối tượng này khi cần. RMI cung cấp cơ chế để server và client cĩ thể liên lạc và trao đổi thơng tin.
Hình 4.8. Mơ hình gọi các đối tượng từ xa (RMI).
Máy C C1 C2 C3 Máy B B1 B2 Máy A A
Hình 4.9. Sử dụng RMI registry nhận tham chiếu của một đối tượng từ xa. Server gọi registry để đăng kí tên cho một đối tượng từ xa. Client tìm đối Server gọi registry để đăng kí tên cho một đối tượng từ xa. Client tìm đối tượng từ xa trên registry của server theo tên đã được đăng kí, sau đĩ gọi phương thức của đối tượng đĩ. Hình vẽ trên cũng mơ tả việc hệ thống RMI sử dụng các máy chủ web để nạp các định nghĩa lớp cho các đối tượng khi cần.
Các phương thức, các giao diện, các đối tượng từ xa
Cũng giống như các ứng dụng khác của Java, một ứng dụng phân tán cũng cĩ các giao diện và các lớp. Phần cài đặt cho các phương thức được xây dựng bên trong các giao diện, và ta cĩ thể định nghĩa thêm các phương thức. Các đối tượng với các phương thức cĩ thể được gọi thơng qua các máy ảo Java được gọi là các đối tượng từ xa.
Một đối tượng cĩ thể trở thành một đối tượng từ xa bằng việc cài đặt một giao diện từ xa. Giao diện từ xa cĩ đặc điểm sau:
Giao diện từ xa là mở rộng của giao diện java.rmi.Remote
Mỗi phương thức của giao diện đều được định nghĩa
java.rmi.RemoteException trong phần throws.
RMI đối xử với các đối tượng từ xa khác với các đối tượng cục bộ. Khi các đối tượng được chuyển từ một máy ảo Java này đến một máy ảo Java khác thì thay vì việc tạo nên một bản copy của đối tượng trên máy nhận, RMI chuyển một stub
cho một đối tượng từ xa. Stub hoạt động như một đại diện cho đối tượng từ xa tại máy nhận. Máy client sẽ gọi phương thức thơng qua stub và stub cĩ nhiệm vụ sẽ chuyển các tham số từ máy client đến cho server và nhận kết quả trả về.
Mơ hình phân lớp phân tán
Yêu cầu cài đặt thử nghiệm phân tán cần 2 máy để lưu trữ các nguồn dữ liệu huấn luyện. Việc phân tán dữ liệu được thực hiện bằng cách xây dựng 2 nguồn dữ liệu độc lập và quá trình truy cập dữ liệu của hai nguồn là hồn tồn độc lập. Hệ thống thử nghiệm được xây dựng trong mạng LAN. Điều này vẫn đảm bảo được tính chất phân tán của nguồn dữ liệu.
Ý tưởng chính cho cài đặt thử nghiệm là xây dựng hai nguồn dữ liệu huấn luyện nhằm cung cấp các thơng tin thống kê cho việc phân lớp dữ liệu. Tại mỗi nguồn, tác giả xây dựng các phương thức cĩ thể truy cập từ xa. Một chương trình tại máy client sẽ gọi phương thức từ xa để thu thập các thơng tin thống kê từ nguồn dữ liệu. Sau đĩ, chương trình thực hiện phân lớp nguồn dữ liệu kiểm thử bằng việc sử dụng phương pháp Naive Bayes và các thơng tin thống kê thu thập được từ 2 nguồn dữ liệu huấn luyện. Sơ đồ hệ thống phân lớp Naive Bayes phân tán được biểu diễn như hình 4.10.
Xử lí vấn đề khơng thuần nhất ngữ nghĩa của các nguồn dữ liệu
Để xử lí việc khơng thuần nhất về ngữ nghĩa của các nguồn dữ liệu (ở đây là tính khơng thuần nhất về sử dụng tên – các nguồn dữ liệu khác nhau cĩ cách đặt tên các thuộc tính khác nhau) sử dụng các ánh xạ nhằm chỉ ra mối quan hệ giữa các tên gọi thuộc tính giữa các nguồn dữ liệu (xem Bảng 4.7).
Hình 4.10. Sơ đồ phân lớp Nạve Bayes cho dữ liệu phân tán
1 2 3
Tuoi Age Adult_age Age Age Age Congviec Workclass Adult_wc Workclass Workclass Workclass
Trongluong Fnlwgt Adult_fn Fnlwgt Fnlwgt Fnlwgt Trinhdo Education Adult_edu Education Education Education Sonamhoc E_number Adult_en E_number E_number E_number TTHN M_status Adult_ms M_status M_status M_status Nghenghiep Occupation Adult_oc Occupation Occupation Occupation
Quanhe Relationship Adult_rs Relationship Relationship Relationship Sactoc Race Adult_race Race Race Race
Gioitinh Sex Adult_sex Sex Sex Sex Thunhap Cap_gain Adult_cg Cap_gain Cap_gain Cap_gain
Chitieu Cap_loss Adult_cl Cap_loss Cap_loss Cap_loss Sogiolv HP_week Adult_hpw HP_week HP_week HP_week Quoctich N_country Adult_nc N_country N_country N_country
Bảng 4.7. Bảng dữ liệu ánh xạ dùng cho thuần nhất thuộc tính
Client
Thơng tin thống kê
Máy 1 Bản ghi đã được phân lớp Bản ghi chưa được phân lớp Phân lớp dữ liệu Nguồn dữ liệu huấn luyện Thu nhận TT thống kê
Dữ liệu kiểm thử Kết quả
Nguồn dữ liệu huấn luyện
Thu nhận TT thống kê
Thơng tin thống kê
Các tập ánh xạ 1, 2, 3được lưu trữ dưới dạng các bảng dữ liệu quan hệ. 1
là tập ánh xạ được xây dựng cho quan hệ của các thuộc tính của nguồn dữ liệu thứ nhất với tập thuộc tính chung. 2 là quan hệ của các thuộc tính nguồn dữ liệu thứ hai với tập thuộc tính chung. 3 là quan hệ của các thuộc tính nguồn dữ liệu kiểm thử với tập thuộc tính chung. Dựa trên 1, 2, 3, thành phần thu thập thơng tin thống kê cĩ thể truy vấn được các nguồn dữ liệu khơng thuần nhất cũng đơn giản như đối với nguồn dữ liệu thuần nhất. Ví dụ như khi hệ thống muốn tìm tần suất xuất hiện của giá trị a của thuộc tính Race của nguồn dữ liệu huấn luyện 2, hệ thống sẽ truy cập vào bảng dữ liệu ánh xạ 2và thấy rằng thay vì tìm tần suất xuất hiện của giá trị a của thuộc tính Race, hệ thống cần tìm tần suất xuất hiện của giá trị a của thuộc tính Adult_race.
4.4.2 Phân lớp dựa trên Naive Bayes
Để cĩ thể sử dụng RMI trong ứng dụng phân tán, cần phải khai báo như sau:
import java.rmi.*;
Đối với lớp server, cần khai báo việc sẽ sử dụng một số phương thức cho việc đăng kí đối tượng với rmiregistry.
import java.rmi.server.*;
Cách tiến hành thử nghiệm
Tại máy 1, máy 2.
SendData.class:
Định nghĩa lớp SendData và phương thức GetValue để truyền dữ liệu giữa server và client.
public interface SendData extends Remote{
public float GetValue(int id, String value, int row, int totalCols) throws RemoteException;
public void Init() throws RemoteException; }
GetStatistic.class
Thu thập các thơng tin thống kê tại nguồn dữ liệu huấn luyện.
SendDataImpl.class:
Cài đặt các phương thức được định nghĩa trong SendData.class.
public void Init();// gọi phương thức tính thống kê
public float GetValue(int id, String value, int row, int totalCols); trả về tần số xuất hiện của giá trị value
SendDataImpl_Stub.class, SendDataImpl_Skel.class:
Lớp giao tiếp được rmic sinh ra dùng để tạo cầu nối giữa các đối tượng từ xa và đối tượng cục bộ.
SendDataServer.class:
Tạo ra đối tượng và đăng kí đối tượng.
// Tao doi tuong
SendDataImpl sd = new SendDataImpl();
// Dang ki su hien dien cua doi tuong voi may ao Java UnicastRemoteObject.exportObject(sd);
// Dang ki voi RMI
Naming.rebind("rmi://localhost/server1",sd);
Tại máy client.
SendData.class: (được gửi đến từ máy server)
Định nghĩa lớp SendData và phương thức dùng để truyền dữ liệu.
NBClient.class: Gồm 1 phương thức Classify.
1. Thu thập tham chiếu về các đối tượng thơng qua tên đã được đăng kí với rmiregistry.
SendData dataSrv1 = (SendData)Naming.lookup("rmi://
localhost/server1");
SendData dataSrv2 = (SendData)Naming.lookup("rmi://
localhost/server2");
2. Kích hoạt thủ tục tính thơng tin thống kê ở các server
dataSrv1.Init(); dataSrv2.Init();
3. Kết nối cơ sở dữ liệu kiểm thử.
4. Với mỗi bản ghi thuộc dữ liệu kiểm thử.
Tính tần số suất hiện của từng giá trị thuộc tính và giá trị của lớp.
Tính giá trị xác suất của bản ghi với từng lớp trong tập các lớp cĩ thể cĩ của nguồn dữ liệu. Xác định lớp cĩ xác suất lớn nhất và lưu vào một mảng tạm thời (ResultList).
5. Cập nhập thuộc tính class trong cơ sở dữ liệu kiểm thử bằng các giá trị trong mạng tạm thời theo thứ tự tương ứng.
Evaluate.class: Đánh giá kết quả phân lớp.
Kết quả
Sau khi thực hiện phân lớp phân tán theo phương pháp dựa Nạve Bayes cho 3 nguồn dữ liệu ADULT, CARS, NURSERY, kết quả đạt được như sau (thơng tin chi tiết được mơ tả tại bảng 4.6):
Nguồn dữ liệu ADULT với 2 nguồn dữ liệu huấn luyện (nguồn 1 chứa 6.500 bản ghi, nguồn 2 chứa 5.000 bản ghi) thực hiện phân lớp trên 1.532 bản ghi, phân lớp đúng được 1.231 bản ghi, phân lớp khơng đúng 301
Nguồn dữ liệu NURSERY với 2 nguồn dữ liệu huấn luyện (nguồn 1 chứa 4.320 bản ghi, nguồn 2 chứa 4.320 bản ghi) thực hiện phân lớp trên 4.320 bản ghi, phân lớp đúng được 3.038 bản ghi, phân lớp khơng đúng 1.282 bản ghi. Đạt độ chính xác 70,32%.
Nguồn dữ liệu CARS với 2 nguồn dữ liệu huấn luyện (nguồn 1 chứa 576 bản ghi, nguồn 2 chứa 576 bản ghi) thực hiện phân lớp trên 576 bản ghi, phân lớp đúng được 380 bản ghi, phân lớp khơng đúng 196 bản ghi. Đạt độ chính xác 65,90%.
Tên nguồn
dữ liệu Nguồn 1 Nguồn 2 kiểm thử Dữ liệu Độ chính xác (%) Đúng Khơng đúng ADULT 6.500 5.000 1.532 80,29 1.231 301
CARS 576 576 576 65,90 380 196
NURSERY 4.320 4.320 4.320 70,32 3.038 1.282 Bảng 4.8. Kết quả phân lớp theo phương pháp Naive Bayes
4.4.3 Phân lớp dựa trên TANB
Về nguyên tắc, mơ hình phân lớp phân tán TANB dựa trên mơ hình phân lớp phân tán Naive Bayes (Hình 4.10). Dữ liệu huấn luyện được lưu trữ phân tán tại hai máy khác nhau. Dữ liệu kiểm thử được lưu trữ tập trung tại một máy. Tác giả dùng các đối tượng từ xa trong RMI để truyền thơng tin từ các nguồn dữ liệu huấn luyện đến phân lớp.
Kết quả thực hiện phân lớp phân tán theo phương pháp TANB cho 3 nguồn dữ liệu ADULT, CARS, NURSERY.
Tên nguồn
dữ liệu Nguồn 1 Nguồn 2
Dữ liệu kiểm thử Độ chính xác (%) Đúng Khơng đúng ADULT 6.500 5.000 1.532 78,39 1.200 332 CARS 576 576 576 69,21 399 177 NURSERY 4.320 4.320 4.320 61,00 2.635 1.685 Bảng 4.9. Kết quả phân lớp phân tán theo phương pháp TANB