Почему байесовская сеть может узнать структуру из моих данных?

Я пытаюсь изучить пакет pgmpy и использовать его для изучения структуры DAG моего имитированного набора данных с помощью поиска hillclimb по баллу BIC. Я создал два набора данных:

import pandas as pd
import numpy as np
from pgmpy.estimators import BdeuScore, K2Score, BicScore
from pgmpy.models import BayesianModel
from pgmpy.estimators import HillClimbSearch


# [1] create some data with dependencies
data1 = pd.DataFrame(np.random.randint(0, 3, size=(2500, 8)), columns=list('ABCDEFGH'))
data1['A'] += data1['B'] + data1['C']
data1['H'] = data1['G'] - data1['A']

# [2] create some data with dependencies
data2 = pd.DataFrame(np.random.randint(10, 100, size=(2500, 8)), columns=list('ABCDEFGH'))
data2['A'] += data2['B'] + data2['C']
data2['H'] = data2['G'] - data2['A']

Затем я выполнил поиск Hillclimb по баллам BIC для каждого из наборов данных. Однако алгоритм успешно изучил структуру из data1 и потерпел неудачу в data2:

# -- Searchon data1
hc = HillClimbSearch(data1, scoring_method=BicScore(data1))
best_model = hc.estimate()
print(best_model.edges())

[('A', 'C'), ('A', 'B'), ('C', 'B'), ('G', 'A'), ('G', 'H'), ('H', 'A')]

# -- Search on data2
hc = HillClimbSearch(data2, scoring_method=BicScore(data2))
best_model = hc.estimate()
print(best_model.edges())

[]

Я хочу знать, почему поиск по data2 дал мне пустой набор? Кроме того, как я могу преодолеть эту проблему? Выбрать разные алгоритмы поиска? Или бен числовые данные?

0 ответов

Другие вопросы по тегам