Hướng dẫn bayesian network python library - thư viện mạng trăn bayesian

Các mạng Bayes có thể mô hình hóa các tương tác phi tuyến, đa phương thức sử dụng dữ liệu ồn ào, không nhất quán. Nó đã trở thành một công cụ nổi bật trong nhiều lĩnh vực mặc dù thực tế là việc nhận ra cấu trúc của các mạng này từ dữ liệu đã phổ biến. Để mô hình hóa dữ liệu phụ thuộc có điều kiện và suy luận từ nó, các mạng Bayes là những công cụ tốt nhất được sử dụng cho mục đích này. Trong bài đăng này, chúng tôi sẽ đi qua các nguyên tắc cơ bản của mạng Bayes và toán học đi kèm với nó. Ngoài ra, chúng tôi cũng sẽ học cách suy luận với nó thông qua việc thực hiện Python. Các điểm chính được đề cập trong bài viết này được liệt kê dưới đây.

Mục lục & nbsp; 

  1. Mạng Bayes là gì?
  2. Đồ thị acyclic được định hướng (DAG) là gì?
  3. Các toán học đằng sau mạng Bayesian
  4. Suy luận với mạng Bayes ở Python

Hãy bắt đầu cuộc thảo luận bằng cách hiểu mạng Bayesian là gì.

Mạng Bayes là gì?

Đồ thị acyclic được định hướng (DAG) là gì?

Các toán học đằng sau mạng Bayesian

Suy luận với mạng Bayes ở Python

Hãy bắt đầu cuộc thảo luận bằng cách hiểu mạng Bayesian là gì.

Đồ thị acyclic được định hướng (DAG) là gì?

Các toán học đằng sau mạng Bayesian

Hướng dẫn bayesian network python library - thư viện mạng trăn bayesian

Suy luận với mạng Bayes ở Python

Hãy bắt đầu cuộc thảo luận bằng cách hiểu mạng Bayesian là gì.

Mạng Bayes (cũng được đánh vần là Bayes Network, Bayes Net, Mạng niềm tin hoặc Mạng phán đoán) là một mô hình đồ họa xác suất mô tả một tập hợp các biến và các phụ thuộc có điều kiện của chúng bằng cách sử dụng biểu đồ acyclic có hướng (DAG). & NBSP;

Belamy

Đăng ký liều hàng tuần của bạn về những gì đang hoạt động trong công nghệ mới nổi.

Các mạng Bayes là hoàn hảo để tham gia một sự kiện được quan sát và dự báo khả năng bất kỳ nguyên nhân nào được biết đến đóng vai trò. Một mạng lưới Bayes, chẳng hạn, có thể phản ánh mối tương quan xác suất giữa các bệnh và triệu chứng. Với một tập hợp các triệu chứng, mạng có thể được sử dụng để tính toán khả năng sự hiện diện của một số bệnh.

Trong lý thuyết đồ thị và khoa học máy tính, biểu đồ acyclic có hướng (DAG) là một biểu đồ có hướng không có chu kỳ có hướng. Nói cách khác, nó được tạo thành từ các đỉnh và cạnh (còn được gọi là ARC), với mỗi cạnh chỉ từ đỉnh này sang đỉnh khác theo cách đi theo những hướng đó sẽ không bao giờ dẫn đến một vòng kín như được mô tả trong hình dưới đây.

Hướng dẫn bayesian network python library - thư viện mạng trăn bayesian

Nguồn

& nbsp; một biểu đồ có hướng là một trong đó tất cả các hướng cạnh đều phù hợp và các đỉnh có thể được sắp xếp về mặt cấu trúc theo thứ tự tuyến tính. DAG có các ứng dụng khoa học và điện toán khác nhau, bao gồm tiến hóa sinh học, cây gia đình và dịch tễ học và xã hội học.

Hãy cùng xem nhanh những gì là toán học cơ bản liên quan đến mạng Bayes.

  • Toán học đằng sau mạng lưới Bayes
  • Một biểu đồ theo hướng Acyclic được sử dụng để tạo ra một mạng Bayes, đây là mô hình xác suất. Nó được tính toán bằng cách sử dụng một phân phối xác suất có điều kiện duy nhất cho từng biến trong mô hình, có phân phối dựa trên cha mẹ trong biểu đồ. Nguyên tắc đơn giản về xác suất củng cố các mô hình Bayes. Vì vậy, trước tiên, hãy để xác định xác suất có điều kiện và phân phối xác suất chung.
  • Xác suất có điều kiện
  • Xác suất có điều kiện là thước đo khả năng của một sự kiện xảy ra với điều kiện là một sự kiện khác đã xảy ra (thông qua giả định, giả định, tuyên bố hoặc bằng chứng). Nếu A là sự kiện quan tâm và B được biết hoặc được coi là đã xảy ra, thì xác suất có điều kiện của A B thường được nêu là P (A | B) hoặc, ít thường xuyên hơn, PB (A) nếu A là sự kiện quan tâm và B được biết đến hoặc được cho là đã xảy ra. Điều này cũng có thể được thể hiện dưới dạng phần trăm của khả năng vượt qua B với A:

Xác suất chung

Cơ hội của hai (hoặc nhiều) sự kiện cùng nhau được gọi là xác suất chung. Tổng xác suất của hai hoặc nhiều biến ngẫu nhiên là phân phối xác suất chung.

Ví dụ, xác suất chung của các sự kiện A và B được thể hiện chính thức như:

Chữ P là chữ cái đầu tiên của bảng chữ cái (A và B).

Suy luận với mạng Bayes ở Python

Hãy bắt đầu cuộc thảo luận bằng cách hiểu mạng Bayesian là gì.

Vấn đề này đòi hỏi một cuộc thi trong đó một thí sinh phải chọn một trong ba cửa, một trong số đó che giấu giá. Người dẫn chương trình (Monty) mở khóa một cánh cửa trống và hỏi thí sinh rằng anh ta có muốn trao đổi vào cánh cửa khác sau khi thí sinh đã chọn một. & NBSP không;

Quyết định là liệu có nên giữ cửa hiện tại hay thay thế nó bằng một cái mới. Tốt hơn là vào cửa khác bởi vì giá có nhiều khả năng cao hơn. Để ra khỏi sự mơ hồ này, hãy để mô hình này với một mạng lưới Bayes.

Đối với cuộc biểu tình này, chúng tôi đang sử dụng gói PGMPY dựa trên Python là triển khai mạng Bayes được viết hoàn toàn bằng Python, tập trung vào tính mô-đun và tính linh hoạt. Học cấu trúc, ước tính tham số, gần đúng (dựa trên lấy mẫu) và suy luận chính xác và suy luận nguyên nhân đều có sẵn dưới dạng triển khai. & NBSP;

from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete import TabularCPD
import networkx as nx
import pylab as plt
 
# Defining Bayesian Structure
model = BayesianNetwork([('Guest', 'Host'), ('Price', 'Host')])
 
# Defining the CPDs:
cpd_guest = TabularCPD('Guest', 3, [[0.33], [0.33], [0.33]])
cpd_price = TabularCPD('Price', 3, [[0.33], [0.33], [0.33]])
cpd_host = TabularCPD('Host', 3, [[0, 0, 0, 0, 0.5, 1, 0, 1, 0.5],
                            [0.5, 0, 1, 0, 0, 0, 1, 0, 0.5],
                            [0.5, 1, 0, 1, 0.5, 0, 0, 0, 0]],
                  evidence=['Guest', 'Price'], evidence_card=[3, 3])
 
# Associating the CPDs with the network structure.
model.add_cpds(cpd_guest, cpd_price, cpd_host)

Bây giờ chúng tôi sẽ kiểm tra cấu trúc mô hình và phân phối xác suất có điều kiện liên quan bằng đối số get_cpds () sẽ trả về true nếu mọi điều này tốt khác thông qua tin nhắn lỗi.

model.check_model()

Hướng dẫn bayesian network python library - thư viện mạng trăn bayesian

Bây giờ, hãy để suy luận mạng, nếu chúng tôi muốn kiểm tra ở bước tiếp theo, cửa chủ nhà sẽ mở cửa bây giờ. Vì vậy, chúng tôi cần truy cập vào xác suất sau từ mạng và trong khi truy cập, chúng tôi cần chuyển bằng chứng cho chức năng. Bằng chứng là cần thiết để được đưa ra khi chúng tôi đang đánh giá xác suất sau, ở đây trong bằng chứng nhiệm vụ của chúng tôi không là gì ngoài cánh cửa nào được chọn và giá ở đâu. & NBSP;

# Infering the posterior probability
from pgmpy.inference import VariableElimination
 
infer = VariableElimination(model)
posterior_p = infer.query(['Host'], evidence={'Guest': 2, 'Price': 2})
print(posterior_p)
Phân phối xác suất của chủ nhà rõ ràng đang đáp ứng chủ đề của cuộc thi. Trong thực tế cũng vậy, trong tình huống này, người dẫn chương trình này chắc chắn sẽ không mở cánh cửa thứ hai, anh ta sẽ mở một trong hai cái đầu tiên và đó là những gì mô phỏng trên nói. & NBSP;
Hướng dẫn bayesian network python library - thư viện mạng trăn bayesian

The probability distribution of the Host is clearly satisfying the theme of the contest. In the reality also, in this situation host definitely not going to open the second door he will open either of the first two and that’s what the above simulation tells. 

Bây giờ, hãy để âm mưu mô hình trên của chúng tôi. Điều này có thể được thực hiện với sự trợ giúp của mạng và pylab. NetworkX là gói phần mềm dựa trên Python để xây dựng, thay đổi và nghiên cứu cấu trúc, động lực và chức năng của các mạng phức tạp. PYLAB là một giao diện thủ tục cho bộ công cụ biểu đồ hướng đối tượng matplotlib, và nó được sử dụng để kiểm tra các mạng phức tạp lớn được biểu thị dưới dạng đồ thị với các nút và cạnh.

nx.draw(model, with_labels=True)
plt.savefig('model.png')
plt.close()

Điều này cung cấp cho chúng ta biểu đồ acyclic có hướng (DAG) như dưới đây.

Hướng dẫn bayesian network python library - thư viện mạng trăn bayesian

Conclusion  

Thông qua bài đăng này, chúng tôi đã thảo luận về mạng lưới Bayes là gì. Ngoài ra, chúng tôi đã thảo luận về cách mạng Bayes có thể được biểu diễn bằng DAG và chúng tôi cũng đã thảo luận về các khái niệm toán học chung và đơn giản là gì được liên kết với mạng. Cuối cùng, chúng tôi đã thấy việc triển khai thực tế của mạng Bayes với sự trợ giúp của Python Tool PGMPy, và cũng đã vẽ một DAG của mô hình của chúng tôi bằng cách sử dụng NetWrokx và Pylab. & NBSP;

Người giới thiệu

  • Mạng Bayes
  • Đồ thị acyclic định hướng
  • Tài liệu chính thức PGMPY
  • Liên kết cho các mã trên