生成學習演算法

2021-09-02 22:14:33 字數 1536 閱讀 1798

生成學習演算法:對p(x

,y)p(x,y)

p(x,y)

進行建模,具體是p(y

)p(y)

p(y)

和p (x

∣y)p(x|y)

p(x∣y)

**的時候,利用貝葉斯公式:

可以看到,兩個多變數高斯分布的均值向量不同,但是協方差矩陣是一樣的。

然後對資料進行對數極大似然估計:

得到極大似然引數估計:

擴充套件:

高斯判別分析和logistic regression

高斯判別分析可以寫成下面的形式,和logistic regression形式一樣。

gda做了更強的假設,p(x

∣y)p(x|y)

p(x∣y)

服從多變數高斯分布,均值向量不同,協方差矩陣相同。而logistic regression沒有做任何假設。因此,當高斯分布的假設正確的時候,使用gda更好,否則使用logistic regression.

極大似然估計:

得到:

上面是二值特徵,即每個特徵非0即1。

當特徵的取值可以取多個的時候,p(x

i∣y)

p(x_i|y)

p(xi​∣

y)是多項式分布。

當特徵是連續值的時候,可以將連續特徵離散化。

拉普拉斯平滑:

未引入拉普拉斯平滑會出現的問題:p(x

i=a∣

y)p(x_i=a|y)

p(xi​=

a∣y)

為0,如果在訓練集中xi=

ax_i=a

xi​=

a未出現過。

擴充套件:

樸素貝葉斯模型在很多問題上都表現得不錯。前面用於文字分類中,每個特徵取值為0或1,為1表示出現在文件中,為0表示不出現在文件中。每個特徵是伯努利分布。

還可以多項式分布,每次生成乙個詞的時候,扔骰子決定(骰子的面數是詞彙個數)

演算法學習 子集生成

子集生成 include include include include include include using namespace std 快速冪運算 巧算 m 1010 利用二進位制 intmypow 4 int n,int m return result 逐步生成 迭代 setint ge...

演算法學習之最小生成樹prim演算法

首先描述一下prim演算法的步驟,首先將所有的點分為兩類,第一類是在生成樹中的節點,第二類是不在生成樹中的節點,我們首先任取乙個節點放入生成樹中,然後找到距離這棵樹 當前狀態就是這個點 最近的點,然後將其放入到生成樹中,之後再進行尋找距離這棵樹最近的點,直到將所有的節點都加入到生成樹中。我們發現其實...

演算法 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 class solution private void generate int left,int right,string str,listresult if right le...