1

二分決定図 (BDD) をデータから (機械学習のように) 学習することは可能ですか? もしそうなら、どのように?

背景: Python でこのタスクを実行するためのツールをいくつか見たことがあります。たとえば、 scikit-learn を使用したディシジョン ツリー (DT) ですが、BDD のツールは見たことがありません。

例として、私がやりたいことは次のとおりです。

ここに画像の説明を入力

最初の 3 列は「入力」データ セット (xi) に対応し、ラベルは (y) です。N はカウントに対応します。たとえば、後者を使用して精度を計算できます。これはカット セットマトリックスではないことに注意してください。中央には、対応する 1 つの BDD (これが取得したい図) が表示され、右側には対応する DT が表示されます。

4

1 に答える 1

2

目的が、入出力評価の表を、それらの評価によって定義されたブール関数を表す BDD に変換することである場合、はい、これは可能です (学習の形式ではありません)。たとえば、Python パッケージを使用すると、次のようになりますdd

from dd import autoref


bdd = autoref.BDD()
bdd.declare('x1', 'x2', 'x3')
# These are the assignments to the input variables
# where the Boolean function is TRUE (the y).
# The assignments where the Boolean function is FALSE
# are not used in the disjunction below.
data = [
    dict(x1=True, x2=False, x3=True),
    dict(x1=True, x2=True, x3=False),
    dict(x1=True, x2=True, x3=True)]
u = bdd.false
for d in data:
    u |= bdd.cube(d)  # disjunction so far
bdd.dump('example.png', roots=[u])

補完されたエッジを含む次の図を取得します。

ここに画像の説明を入力

パッケージはPyPIddから次のようにインストールできます。

pip install dd
于 2021-02-14T21:48:58.677 に答える