1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        貝葉斯網(wǎng)絡(luò)的因果關(guān)系檢測(cè)(Python)

        共 16934字,需瀏覽 34分鐘

         ·

        2023-11-11 10:10

           
           

        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        在機(jī)器學(xué)任務(wù)中,確定變量間的因果關(guān)系(causality)可能是一個(gè)具有挑戰(zhàn)性的步驟,但它對(duì)于建模工作非常重要。本文將總結(jié)有關(guān)貝葉斯概率(Bayesian probabilistic)因果模型(causal models)的概念,然后提供一個(gè)Python實(shí)踐教程,演示如何使用貝葉斯結(jié)構(gòu)學(xué)習(xí)來(lái)檢測(cè)因果關(guān)系。


        1. 背景

        在許多領(lǐng)域,如預(yù)測(cè)、推薦系統(tǒng)、自然語(yǔ)言處理等,使用機(jī)器學(xué)習(xí)技術(shù)已成為獲取有用觀察和進(jìn)行預(yù)測(cè)的標(biāo)準(zhǔn)工具。

        雖然機(jī)器學(xué)習(xí)技術(shù)可以實(shí)現(xiàn)良好的性能,但提取與目標(biāo)變量的因果關(guān)系并不直觀。換句話說(shuō),就是:哪些變量對(duì)目標(biāo)變量有直接的因果影響?
        機(jī)器學(xué)習(xí)的一個(gè)分支是貝葉斯概率圖模型(Bayesian probabilistic graphical models),也稱為貝葉斯網(wǎng)絡(luò)(Bayesian networks, BN),可用于確定這些因果因素。
        在我們深入討論因果模型的技術(shù)細(xì)節(jié)之前,讓我們先復(fù)習(xí)一些術(shù)語(yǔ):包括"相關(guān)性"(correlation)和"關(guān)聯(lián)性"(association)。
        注意,相關(guān)性或關(guān)聯(lián)性并不等同于因果關(guān)系。換句話說(shuō),兩個(gè)變量之間的觀察到的關(guān)系并不一定意味著一個(gè)導(dǎo)致了另一個(gè)。
        從技術(shù)上講,相關(guān)性指的是兩個(gè)變量之間的線性關(guān)系,而關(guān)聯(lián)性則指的是兩個(gè)(或更多)變量之間的任何關(guān)系。而因果關(guān)系則意味著一個(gè)變量(通常稱為預(yù)測(cè)變量或自變量)導(dǎo)致另一個(gè)變量(通常稱為結(jié)果變量或因變量)。擴(kuò)展閱讀:因果機(jī)器學(xué)習(xí)的前沿進(jìn)展綜述
        接下來(lái),我將通過(guò)示例簡(jiǎn)要描述相關(guān)性和關(guān)聯(lián)性。

        1.1. 相關(guān)性

        皮爾遜相關(guān)系數(shù)(Pearson correlation coefficient)是最常用的相關(guān)系數(shù)。系數(shù)強(qiáng)度由r表示,取值區(qū)間-1到1。
        在使用相關(guān)性時(shí),有三種可能的結(jié)果:
        • 正相關(guān):兩個(gè)變量之間存在一種關(guān)系,即兩個(gè)變量同時(shí)朝同一方向移動(dòng)。
        • 負(fù)相關(guān):兩個(gè)變量之間存在一種關(guān)系,即一個(gè)變量增加與另一個(gè)變量減少相關(guān)聯(lián)。
        • 無(wú)相關(guān)性:當(dāng)兩個(gè)變量之間沒(méi)有關(guān)系時(shí)。

        正相關(guān)的一個(gè)示例如圖 1 所示,圖中展示了巧克力消費(fèi)與每個(gè)國(guó)家的諾貝爾獎(jiǎng)獲得者數(shù)量之間的關(guān)系。
        圖1:巧克力消費(fèi)與諾貝爾獎(jiǎng)獲得者之間的相互關(guān)系
        巧克力消費(fèi)可能意味著諾貝爾獎(jiǎng)獲得者增加?;蛘叻催^(guò)來(lái),諾貝爾獎(jiǎng)獲得者的增加同樣可能導(dǎo)致巧克力消費(fèi)增加。盡管存在強(qiáng)烈的相關(guān)性,但更有可能的是未觀察到的變量,如社會(huì)經(jīng)濟(jì)地位或教育系統(tǒng)質(zhì)量,可能導(dǎo)致巧克力消費(fèi)和諾貝爾獎(jiǎng)獲得者數(shù)量的增加。
        換句話說(shuō),我們?nèi)匀徊恢肋@種關(guān)系是否是因果關(guān)系。但這并不意味著相關(guān)性本身沒(méi)有用處,它只是有著不同的目的。
        相關(guān)性本身并不意味著因果關(guān)系,因?yàn)榻y(tǒng)計(jì)關(guān)系并不能唯一限制因果關(guān)系。

        1.1.2. 關(guān)聯(lián)性?

        當(dāng)我們談?wù)撽P(guān)聯(lián)性時(shí),我們指的是一個(gè)變量的某些值傾向于與另一個(gè)變量的某些值共同出現(xiàn)。
        從統(tǒng)計(jì)學(xué)的角度來(lái)看,有許多關(guān)聯(lián)性測(cè)量方法,例如卡方檢驗(yàn)(chi-square test)、費(fèi)舍爾精確檢驗(yàn)(Fisher exact test)、超幾何檢驗(yàn)(hypergeometric test)等。它們通常用于其中一個(gè)或兩個(gè)變量為有序(ordinal)或名義(nominal)變量的情況。
        注意:相關(guān)性是一個(gè)技術(shù)術(shù)語(yǔ),而關(guān)聯(lián)性不是,因此在統(tǒng)計(jì)學(xué)中對(duì)其含義并不總是一致的。這意味著在使用這些術(shù)語(yǔ)時(shí),明確說(shuō)明其含義總是一個(gè)好的做法。
        為了舉例說(shuō)明,我將使用超幾何檢驗(yàn)來(lái)演示是否存在兩個(gè)變量之間的關(guān)聯(lián)性,使用泰坦尼克號(hào)數(shù)據(jù)集。
        泰坦尼克號(hào)數(shù)據(jù)集在許多機(jī)器學(xué)習(xí)示例中都有使用,眾所周知,性別(女性)是生存的一個(gè)很好的預(yù)測(cè)因子。讓我演示一下如何計(jì)算幸存和女性之間的關(guān)聯(lián)性。
        首先,安裝 bnlearn 庫(kù),并僅加載泰坦尼克號(hào)數(shù)據(jù)集。
        問(wèn):女性幸存的概率是多少?
        零假設(shè):幸存與性別之間沒(méi)有關(guān)系。
        超幾何檢驗(yàn)使用超幾何分布來(lái)測(cè)量離散概率分布的統(tǒng)計(jì)顯著性。在這個(gè)例子中,   是總體大?。?91),    是總體中成功狀態(tài)的數(shù)量(342),    是樣本大小/抽樣次數(shù)(314),   是樣本中成功的數(shù)量(233)。

        方程 1:使用超幾何檢驗(yàn)測(cè)試幸存與女性之間的關(guān)聯(lián)性


        在   的顯著性水平下,我們可以拒絕零假設(shè),因此可以說(shuō)幸存和女性之間存在統(tǒng)計(jì)顯著的關(guān)聯(lián)。
        注意,關(guān)聯(lián)性本身并不意味著因果關(guān)系。我們需要區(qū)分邊際關(guān)聯(lián)(marginal)和條件關(guān)聯(lián)(conditional)。后者是因果推斷的關(guān)鍵構(gòu)建模塊。

        2. 因果關(guān)系

        什么是因果關(guān)系(causality)?
        因果關(guān)系意味著一個(gè)independent變量導(dǎo)致另一個(gè)dependent變量,并由 Reichenbach(1956)如下所述:
        如果兩個(gè)隨機(jī)變量    和    在統(tǒng)計(jì)上相關(guān)(   ),那么要么(a)   導(dǎo)致    ,(b)   導(dǎo)致    ,或者(c)存在一個(gè)第三個(gè)變量     同時(shí)導(dǎo)致    和   。此外,給定   的條件下,    和     變得獨(dú)立,即    。
        這個(gè)定義被納入貝葉斯圖模型中。
        貝葉斯圖模型又稱貝葉斯網(wǎng)絡(luò)、貝葉斯信念網(wǎng)絡(luò)、Bayes Net、因果概率網(wǎng)絡(luò)和影響圖。都是同一技術(shù),不同的叫法。
        為了確定因果關(guān)系,我們可以使用貝葉斯網(wǎng)絡(luò)(BN)。
        讓我們從圖形開始,并可視化 Reichenbach 所描述的三個(gè)變量之間的統(tǒng)計(jì)依賴關(guān)系(參見圖 2)。節(jié)點(diǎn)對(duì)應(yīng)變量,有向邊(箭頭)表示依賴關(guān)系或條件分布。
        圖 2:有向無(wú)環(huán)圖(DAG)編碼條件獨(dú)立性。(a、b、c)是等價(jià)類。(a、b)級(jí)聯(lián),(c)共同父節(jié)點(diǎn),(d)是具有 V 結(jié)構(gòu)的特殊類別

        可以創(chuàng)建四個(gè)圖:(a、b)級(jí)聯(lián),(c)共同父節(jié)點(diǎn)和(d)V 結(jié)構(gòu),這些圖構(gòu)成了貝葉斯網(wǎng)絡(luò)的基礎(chǔ)。
        但是我們?nèi)绾未_定什么是造成什么的原因?(how can we tell what causes what?)
        確定因果關(guān)系的概念思想是通過(guò)將一個(gè)節(jié)點(diǎn)保持不變,然后觀察其影響來(lái)確定因果關(guān)系的方向,即哪個(gè)節(jié)點(diǎn)影響哪個(gè)節(jié)點(diǎn)。
        舉個(gè)例子,讓我們看一下圖 2 中的有向無(wú)環(huán)圖 DAG(a),它描述了     由    引起,    由   引起。如果我們現(xiàn)在將    保持不變,如果這個(gè)模型是正確的,    不應(yīng)該發(fā)生變化。每個(gè)貝葉斯網(wǎng)絡(luò)都可以用這四個(gè)圖來(lái)描述,并且通過(guò)概率論(參見下面的部分),我們可以將這些部分組合起來(lái)。
        需要注意的是,貝葉斯網(wǎng)絡(luò)是有向無(wú)環(huán)圖(Directed Acyclic Graph, DAG),而 DAG 是具有因果性的。這意味著圖中的邊是有向的,并且沒(méi)有(反饋)循環(huán)(無(wú)環(huán))。

        2.1. 概率論

        概率論,或者更具體地說(shuō)貝葉斯定理或貝葉斯規(guī)則,構(gòu)成了貝葉斯網(wǎng)絡(luò)的基礎(chǔ)。
        貝葉斯規(guī)則用于更新模型信息,數(shù)學(xué)上表示如下方程式:
        方程式由四個(gè)部分組成:
        • 后驗(yàn)概率(posterior probability)是給定     發(fā)生的概率。
        • 條件概率(conditional probability)或似然是在假設(shè)成立的情況下,證據(jù)發(fā)生的概率。這可以從數(shù)據(jù)中推導(dǎo)出來(lái)。
        • 我們的先驗(yàn)(prior)信念是在觀察到證據(jù)之前,假設(shè)的概率。這也可以從數(shù)據(jù)或領(lǐng)域知識(shí)中推導(dǎo)出來(lái)。
        • 最后,邊際(marginal)概率描述了在所有可能的假設(shè)下新證據(jù)發(fā)生的概率,需要計(jì)算。如果您想了解更多關(guān)于(分解的)概率分布或貝葉斯網(wǎng)絡(luò)的聯(lián)合分布的詳細(xì)信息,請(qǐng)閱讀這篇博客[6]。

        3. 貝葉斯結(jié)構(gòu)學(xué)習(xí)用于估計(jì) DAG

        通過(guò)結(jié)構(gòu)學(xué)習(xí),我們希望確定最能捕捉數(shù)據(jù)集中變量之間因果依賴關(guān)系的圖結(jié)構(gòu)。
        換句話說(shuō):什么樣的 DAG 最適合數(shù)據(jù)?
        一種樸素的方法是簡(jiǎn)單地創(chuàng)建所有可能的圖結(jié)構(gòu)組合,即創(chuàng)建成十個(gè)、幾百個(gè)甚至幾千個(gè)不同的 DAG,直到所有組合都耗盡為止。
        然后,可以根據(jù)數(shù)據(jù)的適應(yīng)度對(duì)每個(gè) DAG 進(jìn)行評(píng)分。
        最后,返回得分最高的 DAG。
        在僅有變量X的情況下,可以創(chuàng)建如圖 2 所示的圖形以及更多的圖形,因?yàn)椴粌H可以是 X>Z>Y(圖 2a),還可以是 Z>X>Y 等等。變量X可以是布爾值(True 或 False),也可以有多個(gè)狀態(tài)。
        DAG 的搜索空間在最大化得分的變量數(shù)量上呈指數(shù)增長(zhǎng)。這意味著在大量節(jié)點(diǎn)的情況下,窮舉搜索是不可行的,因此已經(jīng)提出了各種貪婪策略來(lái)瀏覽 DAG 空間。
        通過(guò)基于優(yōu)化的搜索方法,可以瀏覽更大的 DAG 空間。這種方法需要一個(gè)評(píng)分函數(shù)和一個(gè)搜索策略。
        常見的評(píng)分函數(shù)是給定訓(xùn)練數(shù)據(jù)的結(jié)構(gòu)的后驗(yàn)概率,例如BIC或BDeu。
        BIC是貝葉斯信息準(zhǔn)則(Bayesian Information Criterion)的縮寫。它是一種用于模型選擇的統(tǒng)計(jì)量,可以用于比較不同模型的擬合能力。BIC值越小,表示模型越好。在貝葉斯網(wǎng)絡(luò)中,BIC是一種常用的評(píng)分函數(shù)之一,用于評(píng)估貝葉斯網(wǎng)絡(luò)與數(shù)據(jù)的擬合程度。
        BDeu是貝葉斯-狄利克雷等價(jià)一致先驗(yàn)(Bayesian-Dirichlet equivalent uniform prior)的縮寫。它是一種常用的評(píng)分函數(shù)之一,用于評(píng)估貝葉斯網(wǎng)絡(luò)與數(shù)據(jù)的擬合程度。BDeu評(píng)分函數(shù)基于貝葉斯-狄利克雷等價(jià)一致先驗(yàn),該先驗(yàn)假設(shè)每個(gè)變量的每個(gè)可能狀態(tài)都是等可能的。
        在我們開始示例之前,了解何時(shí)使用哪種技術(shù)總是很好的。在搜索整個(gè) DAG 空間并找到最適合數(shù)據(jù)的圖形的過(guò)程中,有兩種廣泛的方法。
        • 基于評(píng)分的結(jié)構(gòu)學(xué)習(xí)

        • 基于約束的結(jié)構(gòu)學(xué)習(xí)

        3.1. 基于評(píng)分的結(jié)構(gòu)學(xué)習(xí)

        基于評(píng)分的方法有兩個(gè)主要組成部分:
        • 搜索算法用于優(yōu)化所有可能的 DAG 搜索空間;例如 ExhaustiveSearch、Hillclimbsearch、Chow-Liu 等。
        • 評(píng)分函數(shù)指示貝葉斯網(wǎng)絡(luò)與數(shù)據(jù)的匹配程度。常用的評(píng)分函數(shù)是貝葉斯狄利克雷分?jǐn)?shù),如 BDeu 或 K2,以及貝葉斯信息準(zhǔn)則(BIC,也稱為 MDL)。
        下面描述了四種常見的基于評(píng)分的方法:
        • ExhaustiveSearch,顧名思義,對(duì)每個(gè)可能的 DAG 進(jìn)行評(píng)分并返回得分最高的 DAG。這種搜索方法僅適用于非常小的網(wǎng)絡(luò),并且阻止高效的局部?jī)?yōu)化算法始終找到最佳結(jié)構(gòu)。因此,通常無(wú)法找到理想的結(jié)構(gòu)。然而,如果只涉及少數(shù)節(jié)點(diǎn)(即少于 5 個(gè)左右),啟發(fā)式搜索策略通常會(huì)產(chǎn)生良好的結(jié)果。
        • Hillclimbsearch 是一種啟發(fā)式搜索方法,可用于使用更多節(jié)點(diǎn)的情況。HillClimbSearch 實(shí)施了一種貪婪的局部搜索,從 DAG“start”(默認(rèn)為斷開的 DAG)開始,通過(guò)迭代執(zhí)行最大化增加評(píng)分的單邊操作。搜索在找到局部最大值后終止。
        • Chow-Liu 算法是一種特定類型的基于樹的方法。Chow-Liu 算法找到最大似然樹結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)最多只有一個(gè)父節(jié)點(diǎn)。通過(guò)限制為樹結(jié)構(gòu),可以限制復(fù)雜性。
        • Tree-augmented Naive Bayes(TAN)算法也是一種基于樹的方法,可用于建模涉及許多不確定性的龐大數(shù)據(jù)集的各種相互依賴特征集。

        3.2. 基于約束的結(jié)構(gòu)學(xué)習(xí)

        一種不同但相當(dāng)直觀的構(gòu)建 DAG 的方法是使用假設(shè)檢驗(yàn)(如卡方檢驗(yàn)統(tǒng)計(jì)量)來(lái)識(shí)別數(shù)據(jù)集中的獨(dú)立性。
        這種方法依賴于統(tǒng)計(jì)檢驗(yàn)和條件假設(shè),以學(xué)習(xí)模型中變量之間的獨(dú)立性。
        卡方檢驗(yàn)的   值是觀察到的計(jì)算卡方統(tǒng)計(jì)量的概率,假設(shè)空設(shè)為    和     在給定     的條件下是獨(dú)立的。這可以用于在給定顯著性水平的情況下進(jìn)行獨(dú)立判斷。
        約束性方法的一個(gè)示例是 PC 算法,它從一個(gè)完全連接的圖開始,并根據(jù)測(cè)試的結(jié)果刪除邊,如果節(jié)點(diǎn)是獨(dú)立的,直到達(dá)到停止準(zhǔn)則。

        4. 實(shí)踐:基于bnlearn 庫(kù)

        下面介紹Python中的學(xué)習(xí)貝葉斯網(wǎng)絡(luò)圖形結(jié)構(gòu)的庫(kù)——bnlearn。
        bnlearn能解決一些挑戰(zhàn),如:
        • 結(jié)構(gòu)學(xué)習(xí):給定數(shù)據(jù):估計(jì)捕捉變量之間依賴關(guān)系的 DAG。

        • 參數(shù)學(xué)習(xí):給定數(shù)據(jù)和 DAG:估計(jì)各個(gè)變量的(條件)概率分布。

        • 推斷:給定學(xué)習(xí)的模型:確定查詢的精確概率值。
        bnlearn 相對(duì)于其他貝葉斯分析實(shí)現(xiàn)有如下優(yōu)勢(shì):
        • 基于 pgmpy 庫(kù)構(gòu)建

        • 包含最常用的貝葉斯管道

        • 簡(jiǎn)單直觀

        • 開源

        • 詳細(xì)文檔


        4.1. 在灑水器數(shù)據(jù)集中進(jìn)行結(jié)構(gòu)學(xué)習(xí)

        讓我們從一個(gè)簡(jiǎn)單而直觀的示例開始,以演示結(jié)構(gòu)學(xué)習(xí)的工作原理。
        假設(shè)你在后院安裝了一個(gè)灑水系統(tǒng),并且在過(guò)去的 1000 天里,你測(cè)量了四個(gè)變量,每個(gè)變量有兩個(gè)狀態(tài):雨(是或否),多云(是或否),灑水系統(tǒng)(開啟或關(guān)閉)和濕草(是或否)。
        下面,導(dǎo)入 bnlearn 庫(kù),加載灑水器數(shù)據(jù)集,并確定哪個(gè) DAG 最適合該數(shù)據(jù)。
        使用 bnlearn 庫(kù),用幾行代碼就能確定因果關(guān)系。
        請(qǐng)注意,灑水器數(shù)據(jù)集已經(jīng)過(guò)處理,沒(méi)有缺失值,所有值都處于 1 或 0 的狀態(tài)。
        圖 3:灑水器系統(tǒng)的最佳 DAG 示例。它表示以下邏輯:草地潮濕的概率取決于灑水器和雨水。灑水器打開的概率取決于多云的狀態(tài)。下雨的概率取決于多云的狀態(tài)
        這樣,我們有了如圖 3 所示的學(xué)習(xí)到的結(jié)構(gòu)。檢測(cè)到的 DAG 由四個(gè)通過(guò)邊連接的節(jié)點(diǎn)組成,每條邊表示一種因果關(guān)系。

        • 濕草的狀態(tài)取決于兩個(gè)節(jié)點(diǎn),即雨水和灑水器;

        • 雨水的狀態(tài)由多云的狀態(tài)決定;?

        • ?而灑水器的狀態(tài)也由多云的狀態(tài)決定。
        這個(gè) DAG 表示了(因式分解的)概率分布,其中 S 是灑水器的隨機(jī)變量,R 是雨水的隨機(jī)變量,G 是濕草的隨機(jī)變量,C 是多云的隨機(jī)變量。
        通過(guò)檢查圖形,很快就會(huì)發(fā)現(xiàn)模型中唯一的獨(dú)立變量是 C。其他變量都取決于多云、下雨和/或?yàn)⑺鞯母怕省?/span>
        一般來(lái)說(shuō),貝葉斯網(wǎng)絡(luò)的聯(lián)合分布是每個(gè)節(jié)點(diǎn)在給定其父節(jié)點(diǎn)的條件下的條件概率的乘積:
        bnlearn 在結(jié)構(gòu)學(xué)習(xí)方面的默認(rèn)設(shè)置是使用hillclimbsearch方法和BIC評(píng)分。
        值得注意的是,可以指定不同的方法和評(píng)分類型。請(qǐng)參考下面的示例以指定搜索和評(píng)分類型:
            
            
        # 'hc' or 'hillclimbsearch'model_hc_bic = bn.structure_learning.fit(df, methodtype='hc', scoretype='bic')model_hc_k2 = bn.structure_learning.fit(df, methodtype='hc', scoretype='k2')model_hc_bdeu = bn.structure_learning.fit(df, methodtype='hc', scoretype='bdeu')
        # 'ex' or 'exhaustivesearch'model_ex_bic = bn.structure_learning.fit(df, methodtype='ex', scoretype='bic')model_ex_k2 = bn.structure_learning.fit(df, methodtype='ex', scoretype='k2')model_ex_bdeu = bn.structure_learning.fit(df, methodtype='ex', scoretype='bdeu')
        # 'cs' or 'constraintsearch'model_cs_k2 = bn.structure_learning.fit(df, methodtype='cs', scoretype='k2')model_cs_bdeu = bn.structure_learning.fit(df, methodtype='cs', scoretype='bdeu')model_cs_bic = bn.structure_learning.fit(df, methodtype='cs', scoretype='bic')
        # 'cl' or 'chow-liu' (requires setting root_node parameter)model_cl = bn.structure_learning.fit(df, methodtype='cl', root_node='Wet_Grass')

        盡管灑水器數(shù)據(jù)集的檢測(cè)到的 DAG 具有啟示性,并顯示了數(shù)據(jù)集中變量的因果依賴關(guān)系,但它并不能讓你提出各種問(wèn)題,例如:
        • 如果灑水器關(guān)閉,草地濕潤(rùn)的概率有多大?

        • 如果灑水器關(guān)閉且多云,下雨的概率有多大?


        在灑水器數(shù)據(jù)集中,根據(jù)你對(duì)世界的了解和邏輯思考,結(jié)果可能是顯而易見的。但是,一旦你擁有更大、更復(fù)雜的圖形,可能就不再那么明顯了。
        通過(guò)所謂的推斷,我們可以回答“如果我們做了     會(huì)怎樣”類型的問(wèn)題,這些問(wèn)題通常需要進(jìn)行控制實(shí)驗(yàn)和明確的干預(yù)才能回答。

        4.2. 如何進(jìn)行推斷?

        要進(jìn)行推斷,我們需要兩個(gè)要素:DAG 和條件概率表(Conditional Probabilistic Tables, CPTs)。
        此時(shí),我們已經(jīng)將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)框(df)中,并且已經(jīng)計(jì)算出描述數(shù)據(jù)結(jié)構(gòu)的 DAG。需要使用參數(shù)學(xué)習(xí)計(jì)算 CPTs,以定量地描述每個(gè)節(jié)點(diǎn)與其父節(jié)點(diǎn)之間的統(tǒng)計(jì)關(guān)系。
        讓我們首先進(jìn)行參數(shù)學(xué)習(xí),然后再回到推斷的過(guò)程中。

        4.2.1. 參數(shù)學(xué)習(xí)

        參數(shù)學(xué)習(xí)是估計(jì)條件概率表(CPTs)的值的任務(wù)。
        bnlearn 庫(kù)支持離散和連續(xù)節(jié)點(diǎn)的參數(shù)學(xué)習(xí):
        • 最大似然估計(jì)是使用變量狀態(tài)出現(xiàn)的相對(duì)頻率進(jìn)行的自然估計(jì)。在對(duì)貝葉斯網(wǎng)絡(luò)進(jìn)行參數(shù)估計(jì)時(shí),數(shù)據(jù)不足是一個(gè)常見問(wèn)題,最大似然估計(jì)器存在對(duì)數(shù)據(jù)過(guò)擬合的問(wèn)題。換句話說(shuō),如果觀察到的數(shù)據(jù)對(duì)于基礎(chǔ)分布來(lái)說(shuō)不具有代表性(或者太少),最大似然估計(jì)可能會(huì)相差甚遠(yuǎn)。例如,如果一個(gè)變量有 3 個(gè)可以取 10 個(gè)狀態(tài)的父節(jié)點(diǎn),那么狀態(tài)計(jì)數(shù)將分別針對(duì)   個(gè)父節(jié)點(diǎn)配置進(jìn)行。這使得最大似然估計(jì)對(duì)學(xué)習(xí)貝葉斯網(wǎng)絡(luò)參數(shù)非常脆弱。減輕最大似然估計(jì)過(guò)擬合的一種方法是貝葉斯參數(shù)估計(jì)。
        • 貝葉斯估計(jì)從已存在的先驗(yàn) CPTs 開始,這些 CPTs 表示在觀察到數(shù)據(jù)之前我們對(duì)變量的信念。然后,使用觀察數(shù)據(jù)的狀態(tài)計(jì)數(shù)來(lái)更新這些“先驗(yàn)”??梢詫⑾闰?yàn)視為偽狀態(tài)計(jì)數(shù),在歸一化之前將其添加到實(shí)際計(jì)數(shù)中。一個(gè)非常簡(jiǎn)單的先驗(yàn)是所謂的 K2 先驗(yàn),它只是將“1”添加到每個(gè)單獨(dú)狀態(tài)的計(jì)數(shù)中。一個(gè)更明智的先驗(yàn)選擇是 BDeu(貝葉斯狄利克雷等效均勻先驗(yàn))。
        我繼續(xù)使用灑水器數(shù)據(jù)集來(lái)學(xué)習(xí)其參數(shù),并檢測(cè)條件概率表(CPTs)。
        要學(xué)習(xí)參數(shù),我們需要一個(gè)有向無(wú)環(huán)圖(DAG)和一個(gè)具有完全相同變量的數(shù)據(jù)集。
        思路是將數(shù)據(jù)集與 DAG 連接起來(lái)。在之前的示例中,我們已經(jīng)計(jì)算出了 DAG(圖 3)。
        如果你已經(jīng)到達(dá)這一點(diǎn),您已經(jīng)使用最大似然估計(jì)(MLE)基于 DAG 和輸入數(shù)據(jù)集 df 計(jì)算了 CPTs(圖 4)。請(qǐng)注意,為了清晰起見,CPTs 在圖 4 中包含在內(nèi)。
        圖 4:使用最大似然估計(jì)進(jìn)行參數(shù)學(xué)習(xí)推導(dǎo)的 CPTs
        使用 MLE 計(jì)算 CPTs 非常簡(jiǎn)單,讓我通過(guò)示例來(lái)演示一下,手動(dòng)計(jì)算節(jié)點(diǎn) Cloudy 和 Rain 的 CPTs。
        # Examples to illustrate how to manually compute MLE for the node Cloudy and Rain:# Compute CPT for the Cloudy Node:# This node has no conditional dependencies and can easily be computed as following:# P(Cloudy=0)sum(df['Cloudy']==0) / df.shape[0] # 0.488# P(Cloudy=1)sum(df['Cloudy']==1) / df.shape[0] # 0.512# Compute CPT for the Rain Node:# This node has a conditional dependency from Cloudy and can be computed as following:# P(Rain=0 | Cloudy=0)sum( (df['Cloudy']==0) & (df['Rain']==0) ) / sum(df['Cloudy']==0) # 394/488 = 0.807377049# P(Rain=1 | Cloudy=0)sum( (df['Cloudy']==0) & (df['Rain']==1) ) / sum(df['Cloudy']==0) # 94/488  = 0.192622950# P(Rain=0 | Cloudy=1)sum( (df['Cloudy']==1) & (df['Rain']==0) ) / sum(df['Cloudy']==1) # 91/512  = 0.177734375# P(Rain=1 | Cloudy=1)sum( (df['Cloudy']==1) & (df['Rain']==1) ) / sum(df['Cloudy']==1) # 421/512 = 0.822265625
        請(qǐng)注意,條件依賴關(guān)系可能基于有限的數(shù)據(jù)點(diǎn)。例如,    基于 91 個(gè)觀測(cè)結(jié)果。如果 Rain 有更多的狀態(tài)和/或更多的依賴關(guān)系,這個(gè)數(shù)字可能會(huì)更低。更多的數(shù)據(jù)是否是解決方案?也許是,也許不是。只要記住,即使總樣本量非常大,由于狀態(tài)計(jì)數(shù)是針對(duì)每個(gè)父節(jié)點(diǎn)的配置進(jìn)行條件計(jì)數(shù),這也可能導(dǎo)致分段。與 MLE 方法相比,查看 CPT 與之間的差異。

        4.2.2. 在 Sprinkler 數(shù)據(jù)集上進(jìn)行推理

        進(jìn)行推理需要貝葉斯網(wǎng)絡(luò)具備兩個(gè)主要組成部分:描述數(shù)據(jù)結(jié)構(gòu)的有向無(wú)環(huán)圖(DAG)和描述每個(gè)節(jié)點(diǎn)與其父節(jié)點(diǎn)之間的統(tǒng)計(jì)關(guān)系的條件概率表(CPT)。到目前為止,您已經(jīng)擁有數(shù)據(jù)集,使用結(jié)構(gòu)學(xué)習(xí)計(jì)算了 DAG,并使用參數(shù)學(xué)習(xí)估計(jì)了 CPT?,F(xiàn)在可以進(jìn)行推理了!
        在推理中,我們使用一種稱為變量消除的過(guò)程來(lái)邊緣化變量。變量消除是一種精確的推理算法。通過(guò)簡(jiǎn)單地將求和替換為最大函數(shù),它還可以用于確定具有最大概率的網(wǎng)絡(luò)狀態(tài)。不足之處是,對(duì)于大型的貝葉斯網(wǎng)絡(luò),它可能在計(jì)算上是棘手的。在這些情況下,可以使用基于采樣的近似推理算法,如 Gibbs 采樣或拒絕采樣 [7]。
        使用 bnlearn,我們可以進(jìn)行如下的推理:
        現(xiàn)在我們已經(jīng)得到了我們的問(wèn)題的答案:
        如果噴灌系統(tǒng)關(guān)閉,草坪潮濕的可能性有多大?P(Wet_grass=1 | Sprinkler=0) = 0.51
        如果噴灌系統(tǒng)關(guān)閉并且天陰,有下雨的可能性有多大?P(Rain=1 | Sprinkler=0, Cloudy=1) = 0.663

        4.3. 我如何知道我的因果模型是正確的?

        如果僅使用數(shù)據(jù)來(lái)計(jì)算因果圖,很難完全驗(yàn)證因果圖的有效性和完整性。然而,有一些解決方案可以幫助增加對(duì)因果圖的信任。例如,可以對(duì)變量集之間的某些條件獨(dú)立性或依賴性關(guān)系進(jìn)行經(jīng)驗(yàn)性測(cè)試。如果它們?cè)跀?shù)據(jù)中不存在,則表明因果模型的正確性 ?;蛘?,可以添加先前的專家知識(shí),例如 DAG 或 CPT,以在進(jìn)行推理時(shí)增加對(duì)模型的信任。

        5. 討論

        在本文中,涉及了一些關(guān)于為什么相關(guān)性或關(guān)聯(lián)不等于因果性以及如何從數(shù)據(jù)向因果模型的轉(zhuǎn)變使用結(jié)構(gòu)學(xué)習(xí)的概念。
        貝葉斯技術(shù)的優(yōu)勢(shì)總結(jié)如下:
        • 后驗(yàn)概率分布的結(jié)果或圖形使用戶能夠?qū)δP皖A(yù)測(cè)做出判斷,而不僅僅是獲得單個(gè)值作為結(jié)果。

        • 可以將領(lǐng)域/專家知識(shí)納入到 DAG 中,并在不完整信息和缺失數(shù)據(jù)的情況下進(jìn)行推理。這是可能的,因?yàn)樨惾~斯定理基于用證據(jù)更新先驗(yàn)項(xiàng)。

        • 具有模塊化的概念。

        • 通過(guò)組合較簡(jiǎn)單的部分來(lái)構(gòu)建復(fù)雜系統(tǒng)。

        • 圖論提供了直觀的高度交互的變量集。

        • 概率論提供了將這些部分組合在一起的方法。
        然而,貝葉斯網(wǎng)絡(luò)的一個(gè)弱點(diǎn)是尋找最佳 DAG 在計(jì)算上很耗時(shí),因?yàn)楸仨殞?duì)所有可能的結(jié)構(gòu)進(jìn)行詳盡搜索。
        窮舉搜索的節(jié)點(diǎn)限制可以達(dá)到約 15 個(gè)節(jié)點(diǎn),但也取決于狀態(tài)的數(shù)量。如果有更多的節(jié)點(diǎn),就需要使用具有評(píng)分函數(shù)和搜索算法的替代方法。盡管如此,要處理具有數(shù)百甚至數(shù)千個(gè)變量的問(wèn)題,需要使用基于樹或基于約束的方法,并使用變量的黑名單/白名單。這種方法首先確定順序,然后找到該順序的最佳 BN 結(jié)構(gòu)。這意味著在可能的排序搜索空間上進(jìn)行工作,這比網(wǎng)絡(luò)結(jié)構(gòu)空間小得多。
        確定因果關(guān)系可能是一項(xiàng)具有挑戰(zhàn)性的任務(wù),但 bnlearn 庫(kù)旨在解決其中一些挑戰(zhàn),如結(jié)構(gòu)學(xué)習(xí)、參數(shù)學(xué)習(xí)和推理。它還可以推導(dǎo)出(整個(gè))圖的拓?fù)渑判蚧虮容^兩個(gè)圖。
        本文來(lái)自:https://towardsdatascience.com/a-step-by-step-guide-in-detecting-causal-relationships-using-bayesian-structure-learning-in-python-c20c6b31cee5
        作者:Erdogan Taskesen
           
           
        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 157
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            xoxo无遮挡狂乳狂乳18 | 老师翘臀办公室后进式视频 | CaoPorn国产精品免费收藏 | 日韩一区二区视频在线观看 | 一级毛片免费视频 | 国产传媒-第1页-MM606-萌萌视频 | 亚洲日韩视频在线观看 | 日日摸夜夜添夜夜添人人老牛 | 91蜜桃婷婷狠狠久久综合9色 | 91午夜精品 |