日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

干货来袭!3天0基础Python实战项目快速学会人工智能必学数学基础全套(含源码)(第3天)概率分析篇:条件概率、全概率与贝叶斯公式

發布時間:2024/3/13 2617 豆豆
  • 第1天:線性代數篇:矩陣、向量、實戰編程

  • 第2天:微積分篇:極限與導數、梯度下降、積分、實戰編程

  • 第3天:概率分析篇:條件概率與全概率、貝葉斯公式、實戰項目


目錄

  • 前言
  • 一、概率與機器學習
    • 1.1 概率
    • 1.2 機器學習中的概率
  • 二、條件概率與全概率
    • 2.1 條件概率
    • 2.2 全概率
  • 三、貝葉斯公式與樸素貝葉斯
    • 3.1. 貝葉斯公式
    • 3.2 樸素貝葉斯
  • 四、實戰:Python實現樸素貝葉斯
    • 4.1 安裝python庫Scikit-learn庫
      • 4.1.1 安裝numpy+mkl和scipy
      • 4.1.2 安裝Sklearn
    • 4.2 代碼詳解
  • 總結


前言

非常抱歉,至上次博主更新人工智能關于《高等數學》相關應用及知識點,已經停更了差不多一年了,主要是博主工作上遇到公司組織架構調整,之后又是各種新項目,一直拖更到現在。不過這些都不是理由,更多得是懶了。任何時候行動起來,都不算晚,所以選擇今天8月8日這個好日子,趕緊給大家更新一版。

同時為了回報粉絲們的持續關注,這段時間開始,博主不僅會把人工智能必學數學基礎最后一篇概率分析篇更新完,還會陸陸續續更新一些關于博主以前做過的一些人工智能實戰項目,歡迎大家繼續關注。

接下來進入正題,對于人工智能概率分析這塊來說,其實說起來不復雜,運用到的數學知識或數學公式可能就那么幾個,但是由于現實中很多問題都可以用概率來解釋分析,它的運用會具有一定復雜性,甚至有時我們無法理解其中的原因。

這里面究其根本,我覺得就是現實中各種事情的發生概率,其實并不是單一事件引起的,更多是比較復雜的多因素決定的,而且很有可能隨著時間發展,其決定因素又會發生變化,所以大家到最后可能就會更加暈圈。

不過我覺得大家也不要太糾結,因為只要我們掌握了其中基本原理,再經過幾次實戰,你就會對概率的認識越來越清晰了,而且研究深入到最后,你就可以到達目前人工智能關于強化學習的領域,說不定哪天你就能開發出一個類似阿法爾狗的牛逼程序。

老樣子,既然是分享數學知識,還是得繼續拿出嚴謹的思維和態度來。我又翻出10多年前我的概率論課本、筆記,教材是我們學校出版的,我們主要學習的是前面6章,從隨機概率、條件概率、隨機變量、隨機向量、隨機變量的數字特征到大數定律等。

看起來我們大學時候要學習的概率相關知識還是有點多,但對于人工智能入門來說,其實最重要的就只有最前面的第一章和第二章,也就是隨機概率和條件概率


這次小伙伴們看到我這門課成績,可以不用激動了,成績沒上90分,主要那時候,我剛好讀大二,玩網易剛出來的游戲《夢幻西游》上癮了,學習興趣和熱情遠沒有像大一那樣高了。不知道有沒有小伙伴們像我一樣在讀大學的時候控制不住我自己

還好現在我已經控制住我自己了,把玩游戲的時間拿出來,今年目標學習12本技術相關書籍(目前已經學習了6本了)和聽50本樊登讀書,已經努力實現了不少了,有望年底全部實現。也希望小伙伴們也能活到老,學到老!大家共勉,加油!

接下來跟著我繼續三天掌握人工智能必學數學基礎最后一天的學習吧!


一、概率與機器學習

1.1 概率

有些小伙伴玩過下面這種俄羅斯大轉盤的游戲,我們就從這個概率的簡單應用場景來說。

俄羅斯大轉盤總共有0-36,共37個數字。其中有18個紅色數字、18個黑色數字以及1個綠色數字。大家可以思考這么一個問題:如果每次下注黑色區域1元,正確返還2元,重復3700次,預期收益多少?(當然警察叔叔經常教育我們十賭九輸,這里僅供演示,用數學告訴大家真相,大家千萬別禁不住誘惑,賭博害人)

18/37*1 + (18+1)/37 *(-1) = -1/37
3700 X (-1/37) = -100

從上面計算可以看出,最終結果我們是會輸掉100元,玩得越多,輸的越多。賭博就是讓你大概率輸,所以千萬別迷上賭博,不然遲早一天傾家蕩產。

那概率到底是什么呢?我們從百度百科找下答案:

概率,亦稱“或然率”,它是反映隨機事件出現的可能性大小。隨機事件是指在相同條件下,可能出現也可能不出現的事件。例如,從一批有正品和次品的商品中,隨意抽取一件,“抽得的是正品”就是一個隨機事件。設對某一隨機現象進行了n次試驗與觀察,其中A事件出現了m次,即其出現的頻率為m/n。經過大量反復試驗,常有m/n越來越接近于某個確定的常數(此論斷證明詳見伯努利大數定律)。該常數即為事件A出現的概率,常用P(A)表示

舉例來說,我們拋1元硬幣,出現一面為國徽,一面為1元的概率就分別為1/2。

1.2 機器學習中的概率

我們關聯起來的機器學習中的概率應用一般就是在分類情況下,機器學習模型直接預測的結果就是某種情況對應的概率。比如說人臉識別中,我們從所有圖片中進行預測,去預測出圖片是人臉的概率有多大,我們可以設定一個95%的閾值,概率超過95%以上是人臉,我們就認為是人臉,否則就不是。

其實現實生活中有很多東西都和概率有關,人工智能也有很大一部分是利用歷史的數據,來預測未來發生某種事件的概率。細心的小伙伴們,如果擅于利用好概率,說不定哪天你就可以成為一個厲害的預言家了。

二、條件概率與全概率

2.1 條件概率

我們舉個紙牌游戲的例子來說明條件概率吧。

有兩張黑牌、兩張紅牌,從中抽取一張,如果為紅牌,退還下注并獎勵1.1倍,玩家是否應該下注?如果抽取的第一張為紅牌,游戲繼續,玩家是否應該下注?

我們分析一下第一種情況,分別從兩張黑牌、兩張紅牌抽到該牌的概率都是1/2,假設每次下注為1,那么抽到黑牌,我們就損失1,抽到紅牌我們就獎勵1.1,那第一種情況我們的收益就應該計算如下:
1/21.1 + 1/2(-1) = 0.05 > 0 建議下注

第二種情況,在我們已經抽了一張紅牌的情況下,就只剩3張牌了,那么抽到黑牌的概率就變為2/3,抽到紅牌的概率就變為1/3,那收益計算就應該變為:
1/31.1 + 2/3(-1) = -0.3 < 0 不建議下注

這里就可以看出,在某些事件發生的情況下,我們的選擇就可能會發生變化,也可以延伸出我們條件概率的定義。百度百科定義如下:

條件概率是指事件A在事件B發生的條件下發生的概率。條件概率表示為:P(A|B),讀作“A在B發生的條件下發生的概率”。若只有兩個事件A,B,那么
P ( A ∣ B ) = P ( A B ) P ( B ) P(A \mid B)=\frac{P(A B)}{P(B)} P(AB)=P(B)P(AB)?
P(AB)就是A與B同時發生的概率。拿上面的例子來計算:第一張抽到紅牌和第二張抽到紅牌的概率就為(1/21/3)/(1/2) = 1/3。第一張抽到紅牌和第二張抽到黑牌的概率就為(1/22/3)/(1/2) = 2/3。

假設小明最近暗戀上了同一棟樓的一個女神,為了追求女神,他觀察了女神和自己的出門時間。下表列出了小明的出門時間分布(8-9點)和女神的出門時間分布(8-8:30),如果小明今天計劃8:15-8:30出門,遇到女神的概率是多少?(假設同一時間段即會相遇)

我們用條件概率的定義公式,就可以很簡單計算如下:
1)小明出門時間可以選擇4個時間段,選擇8:15-8:30的概率為1/4,記為P(B);
2)女神出門時間可以選擇2個時間段,選擇8:15-8:30的概率為1/2,記為P(A);
3)小明在8:15-8:30出門的情況下,女神同時出門的概率為1/4*1/2 = 1/8,記為P(AB);
4)那小明計劃8:15-8:30出門,遇到女神的概率我們就可以記為P(A|B),那運用公式可以計算為:P(A|B)= P(AB)/P(B) = (1/8)/(1/4) = 1/2

2.2 全概率

全概率公式為概率論中的重要公式,它將對一復雜事件A的概率求解問題轉化為了在不同情況下發生的簡單事件的概率的求和問題。百度百科對全概率的定義如下:

若事件A1,A2,…構成一個完備事件組且都有正概率,則對任意一個事件B,有如下公式成立:
P(B)=P(BA1)+P(BA2)+…+P(BAn)=P(B|A1)P(A1) + P(B|A2)P(A2) + … + P(B|An)P(An).

我們舉個例子來說明,如下圖所示:

1)B1發生的情況下A發生的概率為1/4,可以記為P(A|B1)
2)B2發生的情況下A發生的概率為1/5,可以記為P(A|B2)
3)B1發生的概率為1/3,可以記為P(B1)
4)B2發生的概率為2/3,可以記為P(B2)
那我們可以按照公司計算A發生的概率:
P ( A ) = P ( B 1 ) ? P ( A ∣ B 1 ) + P ( B 2 ) ? P ( A ∣ B 2 ) = 1 4 × 1 3 + 1 5 × 2 3 = 13 60 \begin{aligned} P(A) &=P\left(B_{1}\right) \cdot P\left(A \mid \ B_{1} \right)+P\left(B_{2}\right) \cdot P\left(A \mid \ B_{2} \right) \\ &=\frac{1}{4} \times \frac{1}{3}+\frac{1}{5} \times \frac{2}{3} \\ &=\frac{13}{60} \end{aligned} P(A)?=P(B1?)?P(A?B1?)+P(B2?)?P(A?B2?)=41?×31?+51?×32?=6013??

總的來說,概率是反映隨機事件出現的可能性大小的量度,而條件概率則是給定某事件A的條件下,另一事件B發生的概率。全概率公式則是利用條件概率,將復雜事件A分割為若干簡單事件概率的求和問題。

三、貝葉斯公式與樸素貝葉斯

3.1. 貝葉斯公式

遇到問題找百度,我們繼續通過百度百科來了解下貝葉斯公式:

貝葉斯定理由英國數學家貝葉斯 ( Thomas Bayes 1702-1761 ) 發展,用來描述兩個條件概率之間的關系,比如 P(A|B) 和 P(B|A)。
按照乘法法則,可以立刻導出:P(A∩B) =P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可變形為:P(A|B)=P(B|A)*P(A)/P(B)。

貝葉斯公式也稱為貝葉斯法則, 盡管它是一個數學公式,但其原理毋需數字也可明了。如果你看到一個人總是做一些好事,則那個人多半會是一個好人。這就是說,當你不能準確知悉一個事物的本質時,你可以依靠與事物特定本質相關的事件出現的多少去判斷其本質屬性的概率。 用數學語言表達就是:支持某項屬性的事件發生得愈多,則該屬性成立的可能性就愈大

簡單來說,就是在已知一些條件下(部分事件發生的概率),實現對目標事件發生概率更準確的預測,我們接著用個例子來應用貝葉斯公式:
1)A發生的概率為13/60
2)B1發生的概率為1/3
3)B1發生的情況下A發生的概率為1/4
計算A發生的情況下B1發生的概率:

P ( B 1 ∣ A ) = P ( B 1 ) × P ( A ∣ B 1 ) P ( A ) = 1 3 × 1 4 13 60 = 5 13 \begin{aligned} P\left(B_{1} \mid A\right) &=P\left(B_{1}\right) \times \frac{P\left(A \mid B_{1}\right)}{P(A)} \\ &=\frac{1}{3} \times \frac{\frac{1}{4}}{\frac{13}{60}} \\ &=\frac{5}{13} \end{aligned} P(B1?A)?=P(B1?)×P(A)P(AB1?)?=31?×6013?41??=135??

貝葉斯公式還可以利用全概率公式延伸如下:
P ( B i ∣ A ) = P ( B i ) ? P ( A ∣ B i ) P ( A ) = P ( B i ) ? P ( A ∣ B i ) ∑ j = 1 n P ( A ∣ B j ) P ( B j ) P\left(B_{i} \mid A\right)=\frac{P\left(B_{i}\right) * P\left(A \mid B_{i}\right)}{P(A)}=\frac{P\left(B_{i}\right) * P\left(A \mid B_{i}\right)}{\sum_{j=1}^{n} P\left(A \mid B_{j}\right) P\left(B_{j}\right)} P(Bi?A)=P(A)P(Bi?)?P(ABi?)?=j=1n?P(ABj?)P(Bj?)P(Bi?)?P(ABi?)?
**其核心就是:基于樣本信息(X)與結果分布(y)統計條件概率,再計算新樣本對應的事件概率。**舉個例來說明:
已知:女神喜歡一個人的概率是0.1,她對喜歡的人笑的概率是0.5,她平時笑的概率是0.2,那女神對你笑,喜歡你的概率是多少?遇到問題,我們先不用慌,先定義下各個事件,然后應用公式計算
1)女神笑的概率,記為P(A);
2)女神喜歡一個人的概率,記為P(B);
3)女神對你笑的情況下,喜歡你的概率,記為P(B|A);
4)女神喜歡你的情況下,對你笑的概率,記為P(A|B);
那運用貝葉斯公式可以計算為:P(B|A)= P(B) * P(A|B) / P(A) = 0.1*0.5/0.2 = 0.25

3.2 樸素貝葉斯

定義:以貝葉斯定理為基礎,假設特征之間相互獨立,先通過訓練數據集,學習從輸入到輸出的概率分布,再基于學習到的模型及輸入,求出使得后驗概率最大的輸出實現分類

P ( Y ∣ X ) = P ( Y ) ? P ( X ∣ Y ) P ( X ) P(Y \mid X)=P(Y) * \frac{P(X \mid Y)}{P(X)} P(YX)=P(Y)?P(X)P(XY)?

特征之間相互獨立
P ( X ∣ Y = y i ) = ∏ j = 1 m P ( x j ∣ Y = y i ) P ( y i ∣ x 1 , x 2 … , x m ) = P ( y i ) ∏ j = 1 m P ( x j ∣ y i ) P ( x 1 , x 2 … , x m ) = P ( y i ) ∏ j = 1 m P ( x j ∣ y i ) ∏ j = 1 m P ( x j ) \begin{gathered} P\left(X \mid Y=y_{i}\right)=\prod_{j=1}^{m} P\left(x_{j} \mid Y=y_{i}\right) \\ P\left(y_{i} \mid x_{1}, x_{2} \ldots, x_{m}\right)=\frac{P\left(y_{i}\right) \prod_{j=1}^{m} P\left(x_{j} \mid y_{i}\right)}{P\left(x_{1}, x_{2} \ldots, x_{m}\right)}=\frac{P\left(y_{i}\right) \prod_{j=1}^{m} P\left(x_{j} \mid y_{i}\right)}{\prod_{j=1}^{m} P\left(x_{j}\right)} \end{gathered} P(XY=yi?)=j=1m?P(xj?Y=yi?)P(yi?x1?,x2?,xm?)=P(x1?,x2?,xm?)P(yi?)j=1m?P(xj?yi?)?=j=1m?P(xj?)P(yi?)j=1m?P(xj?yi?)??

這樣直接看公式,大家可能看不懂,那我們用個案例來說明:

1)我們有4個樣本,每個樣本有Gender性別、Age年齡、Device使用設備 3個X特征;
2)每個樣本有y這個label,用來表示是否會購買某個產品,會購買我們記為1,不會則記為0;
3)計算第一個樣本下,y=1的概率
首先用數學的方式表述下這個問題:
1)定義 Gender為X1
2)定義Age 為X2
3)定義Device為X3
4)求解概率P(y=1|X1=0,X2=0,X3=0)
接下來就可以使用樸素貝葉斯公式來計算,具體如下:
P ( y = 1 ) = 2 4 = 1 2 P ( x 1 = 0 ∣ y = 1 ) = 1 2 P ( x 2 = 0 ∣ y = 1 ) = 1 2 P ( x 3 = 0 ∣ y = 1 ) = 1 2 P ( x 1 = 0 ) = 2 4 P ( x 2 = 0 ) = 1 4 P ( x 3 = 0 ) = 3 4 P ( y = 1 ∣ x 1 = 0 , x 2 = 0 , x 3 = 0 ) = P ( y = 1 ) × ( P ( x 1 = 0 ∣ y = 1 ) ? P ( x 2 = 0 ∣ y = 1 ) ? P ( x 3 = 0 ∣ y = 1 ) ) P ( x 1 = 0 ) ? P ( x 2 = 0 ) ? P ( x 3 = 0 ) = 1 2 × ( 1 2 × 1 2 × 1 2 ) 2 4 × 1 4 × 3 4 = 2 3 \begin{aligned} &P(y=1)=\frac{2}{4}=\frac{1}{2} \\ &P\left(x_{1}=0 \mid y=1\right)=\frac{1}{2} \quad P\left(x_{2}=0 \mid y=1\right)=\frac{1}{2} \quad P\left(x_{3}=0 \mid y=1\right)=\frac{1}{2} \\ &P\left(x_{1}=0\right)=\frac{2}{4} \quad P\left(x_{2}=0\right)=\frac{1}{4} \quad P\left(x_{3}=0\right)=\frac{3}{4} \\ &P\left(y=1 \mid x_{1}=0, x_{2}=0, x_{3}=0\right)=\frac{P(y=1) \times\left(P\left(x_{1}=0 \mid y=1\right) \cdot P\left(x_{2}=0 \mid y=1\right) \cdot P\left(x_{3}=0 \mid y=1\right)\right)}{P\left(x_{1}=0\right) \cdot P\left(x_{2}=0\right) \cdot P\left(x_{3}=0\right)} \\ &=\frac{\frac{1}{2} \times\left(\frac{1}{2} \times \frac{1}{2} \times \frac{1}{2}\right)}{\frac{2}{4} \times \frac{1}{4} \times \frac{3}{4}}=\frac{2}{3} \end{aligned} ?P(y=1)=42?=21?P(x1?=0y=1)=21?P(x2?=0y=1)=21?P(x3?=0y=1)=21?P(x1?=0)=42?P(x2?=0)=41?P(x3?=0)=43?P(y=1x1?=0,x2?=0,x3?=0)=P(x1?=0)?P(x2?=0)?P(x3?=0)P(y=1)×(P(x1?=0y=1)?P(x2?=0y=1)?P(x3?=0y=1))?=42?×41?×43?21?×(21?×21?×21?)?=32??

四、實戰:Python實現樸素貝葉斯

4.1 安裝python庫Scikit-learn庫

百度百科查詢可知:Scikit-learn是GitHub上最受歡迎的機器學習庫之一。Scikit-learn(以前稱為scikits.learn,也稱為sklearn)是針對Python 編程語言的免費軟件機器學習庫。它具有各種分類,回歸和聚類算法,包括支持向量機,隨機森林,梯度提升,k均值和DBSCAN,并且旨在與Python數值科學庫NumPy和SciPy聯合使用。而我們也可以使用該庫中的樸素貝葉斯模塊CategoricalNB模塊來實現樸素貝葉斯。
首先我們先來安裝Scikit-learn庫吧。

4.1.1 安裝numpy+mkl和scipy

安裝sklearn之前,需要安裝兩個庫,即numpy+mkl和scipy。但是不要使用pip3直接在終端安裝,因為pip3默安裝的是numpy,而不是numpy+mkl。

下面是numpy+mkl和scipy的第三方庫下載地址(里面內容較多,但是是按照首字母排序的,可以直接搜索numpy+mkl、scipy,尋找到合適的版本下載)

第三方庫下載地址

分別下載下載numpy+mkl和scipy的.whl文件到本地后,安裝輪子工具

pip install wheel

在安裝之前,首先要在終端中定位到之前下載Numpy+mkl的地址中,然后再進行安裝,比如:

pip install numpy-1.22.2+mkl-cp310-cp310-win_amd64.whl

在安裝之前,首先要在終端中定位到之前下載SciPy的地址中,然后再進行安裝,比如:

pip install scipy-1.8.0-cp310-cp310-win_amd64.whl

4.1.2 安裝Sklearn

安裝完上面的numpy+mkl和scipy后,安裝Sklearn比較簡單,使用pip install就可以直接安裝了

pip install -U scikit-learn

4.2 代碼詳解

我們通過下面這個用戶基本信息數據集進行訓練,來預測器購買商品的概率。
計算以下用戶購買商品的概率,預測其是否會購買,具體測試樣本如下:
這里我們可以使用scikit-learn建立一個樸素貝葉斯機器學習模型,然后使用其進行訓練及預測。
使用Jupyter Notebook演示如下:


全部代碼如下:

#引入關鍵包/模塊 import pandas as pd import numpy as np from sklearn.naive_bayes import CategoricalNB from sklearn.metrics import accuracy_score #數據加載 data = pd.read_excel('train_data.xlsx') data.head(10) # X賦值 X= data.drop(['y'],axis=1) print(X) # y賦值 y= data['y'] print(y) #建立模型 #建立模型實例 model = CategoricalNB()#模型訓練,使用默認參數進行訓練,可以進入官網查看各參數設置 model.fit(X,y) #使用模型進行概率預測 y_predict_prob = model.predict_proba(X) print(y_predict_prob) #打印對應的概率,我們會取概率大的那個值,其中每一行前面為預測為0的概率,后面為預測為1的概率 #使用模型進行值預測 y_predict = model.predict(X) print(y_predict) #計算模型準確率 accuracy = accuracy_score(y,y_predict) print(accuracy) #測試樣本的測試 X_test = np.array([[0,0,0,1,1,0]]) print(X_test) y_test = model.predict(X_test) print(y_test) #結果為1,表示我們預測該用戶會購買該商品

總結

好啦,到這里我們就全部結束了人工智能必學數學基礎三天學習了,相信從頭學到尾的小伙伴們應該不會再覺得數學知識很難了吧,應該也對繼續入門學習人工智能充滿信心了吧。

如果大家想繼續了解人工智能相關學習路線和知識體系,歡迎大家翻閱我的另外一篇博客《重磅 | 完備的人工智能AI 學習——基礎知識學習路線,所有資料免關注免套路直接網盤下載》
這篇博客參考了Github知名開源平臺,AI技術平臺以及相關領域專家:Datawhale,ApacheCN,AI有道和黃海廣博士等約有近100G相關資料,希望能幫助到所有小伙伴們。

歡迎大家繼續支持我 關注、收藏,點贊,一鍵三連。如果有任何問題,也可以隨時評論區留言或者私信我。

本文只供大家學習相關知識使用,不以任何商業盈利為目的,轉載或分享請注明相關來源。如涉及到相關侵權,請聯系我刪除。
歡迎志同道合者互相交流學習,可以加我微信號:Zhihua_Steven,或者掃以下二維碼關注我的微信公眾號。

總結

以上是生活随笔為你收集整理的干货来袭!3天0基础Python实战项目快速学会人工智能必学数学基础全套(含源码)(第3天)概率分析篇:条件概率、全概率与贝叶斯公式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。