Netica [6]

Một phần của tài liệu hệ thống học thích nghi dựa trên kiến thức (Trang 41 - 43)

4. Cài đặt thử nghiệm

4.3.4.Netica [6]

a. Giới thiệu Netica

Netica là một chương trình linh hoạt, nhanh, thân thiện mà bạn có thể sử dụng để tìm các mẫu hình trong dữ liệu, tạo các biểu đồ mã hoá kiến thứ hoặc mô tả các vấn đề quyết định, sử dụng những cái này để trả lời truy vấn và tìm quyết định tối ưu, và tạo ra các hệ chuyên gia xác suất. Nó là phù hợp cho các ứng dụng trong các lĩnh vực chuẩn đoán, dự đoán, phân tích quyết định, mô hình xác suất, quản lý rủi ro, xây dựng hệ chuyên gia. Netica được xây dựng và phát triển bởi tập đoàn phần mềm Norsys (Norsys Software Corp.). Netica là hệ thống phát triển mạng Bayes được sử dụng rộng rãi nhất hiện nay.

Để thực hiện các thao tác với mạng Bayes, chúng ta sử dụng các API có sẵn được cung cấp bởi Netica. Có thể nói, Netica là trái tim của hệ thống. Không có nó, hệ thống chỉ là các trang PHP bình thường. Nhưng chúng ta có thể tạo mạng Bayes, thực hiện các thao tác trên mạng với Netica.

Netica-J là một thư viện đầy đủ của các lớp Java để làm việc với mạng Bayes và đồ thị ảnh hưởng. Nó chứa các hàm để xây dựng, học từ dữ liệu, thay đổi, chuyển đổi, thực hiện kiểm tra, lưu và đọc các mạng. Nó có thể quản lý các “trường hợp” và một tập các trường hợp, và có thể kết nối trực tiếp với hầu hết phần mềm cơ sở dữ liệu.

Ở đây, khoá luận không trình bày đầy đủ về các API của Netica mà chỉ những phần được sử dụng trong hệ thống.

b. Các thao tác với mạng Bayes của chương trình

Nếu chỉ tính riêng các thao tác liên quan đến mạng Bayes thì hệ thống có hai cái sau:

 Thao tác đầu tiên là chúng ta cần tạo một mạng Bayes.

 Thao tác thứ hai là cho vào các xác suất likelihood, chúng ta cần tính các giá trị xác suất cho tất cả các node trong mạng.

Đầu tiên, chúng ta tạo tạo một mạng Bayes với giao diện đồ hoạ của Netica. Bạn không cần phải viết một dòng code nào cả. Các thao tác đều là kéo thả.

Khi người dùng thực hiện các bài test sẽ nhận được các kết quả đánh giá. Đó chính là các “bằng chứng” cho mạng Bayes. Công việc đặt ra là cập nhật lại các xác suất cho các node của mạng. Sau đây là một giả mã để thực hiện công việc đó:

// Khởi tạo ban đầu.

Environ env = new Environ(null);

Net net = new Net(new Streamer(<tên của file chứa mạng>)); while (<vẫn còn bằng chứng>) {

Tìm node tương ứng, giả sử đó là biến n. Node n;

Cho các xác suất vào mảng a. float[] a = new float[2]; // Tạo bằng chứng.

n.finding().enterLikelihood(a); }

// Dịch mạng, cập nhật các xác suất. net.compile();

// Thao tác với các xác suất vừa tính được. NodeList list = net.getNodes();

for (int i = 0; i < list.size(); i++) { Node node = list.getNode(i); float[] a = node.getBeliefs();

// Bạn có thể làm gì đó, ví dụ in ra file hoặc cập nhật cơ sở dữ liệu. }

env.finalize();

Chú ý rằng hiện tại chúng ta chỉ có thể sử dụng Netica với các ngôn ngữ Java và C, không làm được trên PHP. Tuy nhiên từ file PHP, chúng ta có thể thực hiện thao tác mà được viết bằng Java hoặc C với hàm EXEC.

Một chú ý nữa là các bằng chứng ở đây thuộc kiểu likelihood. Trong trường hợp này, chúng ta nhận thông tin không chắc chắn về giá trị của một số node cụ thể. Nó có thể từ một bộ đo không hoàn hảo, hoặc từ một người nào đó người mà không phải luôn luôn đúng. Giả sử chúng ta có một cái cảm biến để đo nhiệt độ, và khi nhiệt độ cao thì nó sẽ bật sáng. Thực tế chúng ta thấy rằng khi nhiệt độ thấp, cảm biến không bao giờ sáng; khi nhiệt độ trung bình nó sáng 10% trong các lần như thế; và khi nhiệt độ cao nó luôn luôn sáng. Nếu trong một thời điểm cụ thể, chúng ta quan sát cảm biến đang sáng, và muốn nhập vào các bằng chứng cho node Temperature, thì chúng ta ta sử dụng bằng chứng likelihood. Một bằng chứng likelihood bao gồm một giá trị xác suất cho mỗi trạng thái của node. Đối với ví dụ của chúng ta, bằng chứng likelihood sẽ là (0, 0.1, 1). Một hiểu nhầm phổ biến là nghĩ rằng bằng chứng likelihood là xác suất của trạng thái được cho bởi quan sát (trong trường hợp đó tổng các giá trị sẽ bằng 1, nhưng tổng các bằng chứng likelihood không yêu cầu bằng 1).

Một phần của tài liệu hệ thống học thích nghi dựa trên kiến thức (Trang 41 - 43)