1. 程式人生 > 其它 >模型概率和樸素貝葉斯分類器

模型概率和樸素貝葉斯分類器

目錄

 

概率論的很多內容都在之前的筆記中詳細介紹了,這裡我們只給出一些需要經常用到的知識點,以及需要特別注意加深認識的部分。

 

Sample Spaces

樣本空間記為 \(\Omega\) ,其中包含了樣本 \(\omega\) ,每一個事件就是樣本點的集合。事件發生的概率 probability \(\Pr(A)\) 滿足性質:

  • 非負性: \(P(A)\ge 0\)
  • 規範性: \(P(\Omega) = 1\)
  • 可列可加性:若 \(A_1,A_2,\cdots,A_n\) 兩兩互不相容,即 \(A_i\cap A_j=\empty\)
    ,則
\[P\left(\sum_{n=1}^{\infty}A_n\right) = \sum_{n=1}^{\infty}P\left(A_n\right) \]

樣本空間當然可以是連續的,同時滿足上面的性質。

 

隨機變數 random variable \(X\) 是非常重要的概念,它是一個可測函式 \(X:\Lambda\to\Omega\) ,它將一個樣本空間映到另一個樣本空間。一般是映到 \(\Omega\sub\mathbb{R}\) ,為一個實數空間的子空間。我們不過多討論可測函式的性質,如果有時間的話,會在實變函式或泛函分析的筆記中討論。

 

古典概型中經常會見到用幾何圖形來說明概率關係的方法,同樣的,樣本空間既然是空間,自然也具有一定的幾何特性。考慮兩個隨機變數構成的聯合樣本空間 joint sample space

,我們可以用平面點集來刻畫事件。例如

\[A = \{(x,y)\in\Omega\ |\ 0.2\le c\le 0.5 \} \]

這樣一來,就可以用集合的交、並等關係來計算概率。

 

Conditional Probability and Independence

考慮兩個事件 \(A,B\) ,我們定義 \(B\) 給定時 \(A\) 的條件概率 conditional probability\(\Pr(A|B)\) ,之前已經介紹過

\[\Pr(A|B) = \dfrac{\Pr(A\cap B)}{\Pr(B)},\quad \Pr(B)\neq 0 \]

方便起見,像之前一樣將 \(\Pr(A\cap B)\) 簡寫為 \(\Pr(AB)\)

 

稱事件 \(A,B\) 獨立 independent 當且僅當

\[\Pr(A|B) = \Pr(A) \]

等價的關於 \(B\) 的公式也是類似的,也可以寫成

\[\Pr(AB) = \Pr(A)\Pr(B) \]

也就是說它們互相不影響。對於兩個隨機變數 \(X,Y\) ,如果任何兩個它們的事件都有這樣的關係,則稱它們獨立。

 

Density Functions

在離散的情況下,我們可以定義隨機變數在某一點的概率為 \(\Pr(X=k)\) ,但是對於連續隨機變數就會出現概率為 \(0\) 的問題。接下來就要討論連續隨機變數的概率密度函式 probability density functions (pdfs) 和累積密度函式 cumulative density functions (cdfs) ,它們是將求和關係變為積分後得到的。

 

考慮連續樣本空間 \(\Omega\) 和隨機變數 \(X\) ,概率密度函式記為 \(f_X\) ,它由事件 \(A\sub\Omega\) 來定義

\[\Pr(X\in A) = \int_{\omega\in A} f_X(\omega)d\omega \]

即它在 \(A\) 上的積分是 \(A\) 的概率。一般情況下 \(f_X(\omega)\neq \Pr(X=\omega)\) ,這是由連續變數在單點為 \(0\) 導致的。

我們將 \(f_X\) 解釋為似然函式 likelihood function ,它的值沒有單位,但是可以與其它 \(\omega\)\(f_X\) 的值比較可能性。

 

然後我們定義累積密度函式 \(F_X(t)\) ,它實際上就是分佈函式,定義為

\[F_X(t) = \int_{\omega=-\infty}^t f_X(\omega)d\omega \]

可以看出,如果 \(F_X\) 可導,那麼就可以定義 \(f_X\) 為它關於 \(\omega\) 的導數。

 

Expected Value

期望值我們已經非常熟悉,對於離散隨機變數,它是每一樣本概率和樣本值乘積的和

\[E[X] = \sum_{\omega\in\Omega}\omega\Pr(X=\omega) \]

對於連續隨機變數,就是積分形式

\[E[X] = \int_{\omega\in\Omega}\omega f_X(\omega)d\omega \]

期望值具有線性性質

\[E[X+Y] = E[X]+E[Y],\quad E[\alpha X]=\alpha E[X] \]

這意味著隨機變數的線性組合總是可以拆開計算

 

Variance

方差刻畫了隨機變數離開期望值的程度,定義為

\[Var[X] = E[(X-E[X])^2] = E[X^2]-E[X]^2 \]

上面右式是根據定義直接得到的,根據期望的線性性質就有

\[Var[\alpha X]=\alpha^2 Var[X] \]

注意到方差的量綱與隨機變數和期望不同,所以有時會討論標準差 standard deviation \(\sigma_X=\sqrt{Var[X]}\)

 

Joint, Marginal, and Conditional Distributions

考慮兩個隨機變數 \(X,Y\) 它們的聯合密度函式 joint pdf 有形式 \(f_{X,Y}:\Omega_X\times\Omega_Y\to[0,\infty]\) ,對於離散隨機變數

\[f_{X,Y}(x,y) = \Pr(X=x,Y=y) \]

邊際密度函式 marginal pdf 定義為

\[f_X(x) = \sum_{y\in\Omega_Y}f_{X,Y}(x,y) \]

就是固定一個隨機變數,然後對另一個隨機變數密度求和。

 

在連續情形下,一般會先定義分佈函式

\[F_{X,Y}(x,y) = \Pr(X\le x, Y\le y) \]

邊際分佈為

\[F_X(x) = \lim_{y\to\infty} F_{X,Y}(x,y) \]

當分佈函式可微,就可以定義密度函式

\[f_{X,Y} = \dfrac{d^2F_{X,Y}}{dxdy} \]

邊際密度就是

\[f_X(x) = \int_{y=-\infty}^\infty f_{X,Y}(x,y)dy \]

\(X,Y\) 獨立若 \(f_{X,Y}(x,y)=f_X(x)f_Y(y)\) 恆成立。

 

最後介紹給定 \(Y=y\)\(X\) 的條件分佈 conditional distribution

\[f_{X|Y}(x|y) = \dfrac{f_{X,Y}(x,y)}{f_Y(y)},\quad f_Y(y)\neq 0 \]

它是密度函式的商,自身也是密度函式。

 

Bayes' Rule

貝葉斯法則是建立似然函式的關鍵,在這裡起到至關重要的作用。給定事件 \(M,D\) ,貝葉斯法則說明

\[\Pr(M|D) = \dfrac{\Pr(D|M)\Pr(M)}{\Pr(D)} \]

這實際上是條件概率的直接推論,不再贅述。我們更關注其本身的含義: \(D\) 給定時 \(M\) 的概率和 \(M\) 給定時 \(D\) 的概率。

 

為了加深理解,我們舉一個例子:假設你購買了一輛汽車,你發現雨刮器壞了,此事件記為 \(W\) ;你知道汽車可能來自 \(A,B,C\) 三個工廠之一,並且有如下資料:你得知附近的汽車中來自各個工廠的概率分別為 \(\Pr(A),\Pr(B),\Pr(C)\) 。那麼應該如何判斷汽車最有可能來自哪家工廠呢?

顯然,我們不能僅僅根據 \(\Pr(A),\Pr(B),\Pr(C)\) 來判斷,因為不同工廠出現問題 \(W\) 的可能性不同。你調查得知,這幾家工廠出現 \(W\) 事件的概率為

\[\Pr(W|A),\Pr(W|B),\Pr(W|C) \]

我們需要知道的實際上是 “已知 \(W\) 時它來自哪家工廠” ,因此應該計算

\[\Pr(A|W) = \dfrac{\Pr(W|A)\Pr(A)}{\Pr(W)},\quad \Pr(B|W) = \dfrac{\Pr(W|B)\Pr(B)}{\Pr(W)},\quad \Pr(C|W) = \dfrac{\Pr(W|C)\Pr(C)}{\Pr(W)} \]

注意到 \(\Pr(W)\) 是公共因子,因此可以忽略,只要比較上面乘積的大小關係就可以了。

 

Model Given Data

在資料分析中,上面的 \(M\) 表示模型 model\(D\) 表示資料 data ,那麼 \(\Pr(M|D)\) 為得到資料集 \(D\) 後,認為它符合模型 \(M\) 的概率。一個最大後驗估計 maximum a posteriori (MAP) 是使得 \(\Pr(M|D)\) 最大的模型 \(M\in\Omega_M\) 。也就是說它實際上是在給定 \(D\) 後,最有可能符合 \(D\) 的模型。類似於之前的方法,計算

\[\max_{M\in\Omega_M}\Pr(M|D) = \max_{M\in\Omega_M}\dfrac{\Pr(D|M)\Pr(M)}{\Pr(D)} \]

由於 \(\Pr(D)\) 已經給定,因此為 \(1\) ,並且一般認為不同的模型是等可能的,於是就只需要

\[L(M) = \Pr(D|M) \]

它稱為模型 \(M\) 的似然 likelihood ,只需要使 \(L(M)\) 達到最大。

 

那麼什麼是模型和資料呢?一般來說,模型通常是生成資料的簡單方法。有如下幾種:

  • 模型 \(M\)\(\mathbb{R}^d\) 中的點,而資料是 \(\mathbb{R}^d\) 中的點集,並且分佈在 \(M\) 附近
  • 線性迴歸 linear regression :模型 \(M\)\(\mathbb{R}^2\) 中的線,資料是圍繞線上 \(M\) 附近的點集
  • 聚類 clustering :模型 \(M\)\(\mathbb{R}^d\) 中的小點集,資料是 \(\mathbb{R}^d\) 中的大點集,並且分佈在 \(M\) 附近
  • 線性分類 linear classification :模型 \(M\)\(\mathbb{R}^d\) 中的半空間,資料是標籤點(標籤為 \(+\)\(-\) ),從而帶有 \(+\) 的點大多在 \(M\) 中,而帶有 \(-\) 的點大多不在 \(M\)

 

Log-likelihoods

計算似然的重要技巧是取後驗的對數,因為對數單調遞增,那麼

\[\max_{M\in\Omega_M}\Pr(M|D)\quad\Leftrightarrow\quad \max_{M\in\Omega_M}\log(\Pr(M|D)) \]

並且能夠將乘積關係轉化為求和

\[\log(\prod_{i=1}^kP_i) = \sum_{i=1}^k\log(P_i) \]

這樣就可以較為容易地操作。

同時,對數的底對於最大後驗估計 MAP 沒有影響,因為

\[\log_{b_1}(x) = \log_{b_2}(x)\cdot \log_{b_1}(b_2) \]

它們是常數倍數關係,這對最大似然估計 maximum likelihood estimate (MLE) 也是相同的。

 

Gaussian MLE

假設資料集 \(D=\{x_1,\cdots,x_n\},\ x_i\in\mathbb{R}\) ,模型空間為 \(\Omega_M\) ,每一個 \(\mathbb{R}\) 中的點 \(M\) 都是一個模型。如果假設每一個數據點都會受到相互獨立的高斯噪聲 Gaussian noise ,也就是說每個點會圍繞模型 \(M\) 波動,則 pdf 為

\[g(x) = \dfrac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-M)^2}{2\sigma^2}) \]

它是一個以 \(M\) 為期望, \(\sigma\) 為標準差的正態分佈。於是

\[\Pr(D|M) = \prod_{x\in D}g(x) = \prod_{x\in D}\left(\dfrac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-M)^2}{2\sigma^2})\right) \]

其中 \(\Pr(D|M)\) 就是每一資料點處概率的乘積,因為 \(D|M\) 表示 \(D\) 中元素分佈在給定 \(M\) 附近,也就是要求每一元素都在 \(M\) 附近,它們的概率需要相乘,並且密度 \(g(x)\) 就是該點的概率(離散情形)

應用對數就得到

\[\begin{aligned} \ln(\Pr(D|M)) &= \ln\left(\prod_{x\in D}\dfrac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-M)^2}{2\sigma^2})\right)\\ &= -\sum_{x\in D}\frac{(x-M)^2}{2\sigma^2} + |D|\ln\left(\dfrac{1}{\sqrt{2\pi}\sigma}\right) \end{aligned} \]

我們要求極大似然,因此常數項可以忽略,就需要求和項最小。這是一個最小二乘問題,此時就有

\[M = E[D] = \dfrac{1}{|D|}\sum_{x\in D}x \]

也就是當 \(M\)\(D\) 的期望時,達到最大估計。

 

Bayesian Inference

貝葉斯推斷依賴貝葉斯法則的簡單形式:

\[\Pr(M|D) \varpropto \Pr(D|M)\cdot\Pr(M) \]

符號 \(\varpropto\) 表示成比例 proportional to ,也就是兩端是常數倍數關係。

但是,為了推廣至連續隨機變數,就需要用 pdfs 替換

\[\begin{matrix} p(M|D) & \varpropto & f(D|M) &\cdot & \pi(M)\\ \mathrm{posterior} & & \mathrm{likelihood} & & \mathrm{prior} \end{matrix} \]

給定一個固定的 \(M\) ,有可能計算似然 \(f(D|M)\) ;為了計算 \(p(M|D)\) ,就還需要通過 \(D\) 估計可能的模型 \(M\) 的概率。

 

Average Height

假設估計大學生的身高 \(H\) ,構建隨機身高資料集 \(D=\{x_1,\cdots,x_n\}\) 。測量可能有誤差,並且這只是部分資料,因此這些資料不一定可靠。我們考慮先驗 \(\pi(M)\) ,我們查閱資料,得知成年人的期望身高 \(E_h\) 和標準差 \(\sigma\) ,於是假設

\[\pi(M) = \dfrac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(\mu_M-E_h)^2}{2\sigma^2}) \]

其中用 \(\mu_M\) 表示模型點,估計概率滿足在期望 \(E_h\) 附近的正態分佈。

之前的例子中計算的結果有

\[f(D|M) = \prod_{x\in D}\left(\dfrac{1}{\sqrt{2\pi}\sigma_1}\exp(-\frac{(x-\mu_M)^2}{2\sigma_1^2})\right) \]

其中 \(\mu_M\) 仍然為模型點,而 \(\sigma_1\) 是假定的噪聲。根據

\[p(M|D) \varpropto f(D|M)\cdot \pi(M) \]

兩邊取對數得到

\[\begin{aligned} \ln(p(M|D)) &\varpropto \ln(f(D|M)) + \ln(\pi(M))\\ &\varpropto -\sum_{x\in D}\frac{(\mu_M-x)^2}{2\sigma_1^2} -\frac{(\mu_M-E_h)^2}{2\sigma^2} + C \end{aligned} \]

其中 \(C\) 為常數,這樣我們需要找到 \(\mu_M\) 來讓右邊兩項最大。

這裡兩項分別代表資料集和先驗資料。在不改變結果的情況下,同乘 \(2\sigma^2\) 得到

\[-\left(\frac{\sigma}{\sigma_1}\right)^2\sum_{x\in D}(\mu_M-x)^2 - (\mu_M-E_h)^2 \]

也就是說,資料集和先驗資料哪個更加重要取決於 \(\sigma/\sigma_1\) ,在先驗標準差 \(\sigma\) 不變時,測量噪聲 \(\sigma_1\) 越小,測量資料越多,資料集越有參考價值;這也符合我們的一般認知。

 

Weigthed Average

給定 \(x_1,\cdots,x_n\) 以及對應的權 weights \(w_1,\cdots,w_n\) ,則加權平均 weighted average 定義為

\[\dfrac{\sum_{i=1}^nw_ix_i}{\sum_{i=1}^nw_i} \]

總的權 \(W = \sum_{i=1}^nw_i\) 一般會定為 \(1\) ,從而與平均值 \(\sum_{i=1}^n\frac{1}{n}=1\) 保持一致。

 

Naive Bayes Classifier

樸素貝葉斯分類器計算一個樣本屬於某一類的概率(後驗概率),進而比較概率大小來決定樣本的分類結果。分類器需要資料集作為已知樣本集,還需要這些樣本的分類結果,最後對新給出的樣本集進行分類。

具體來說,假設已經得到樣本集 \(D=\{x_1,\cdots,x_n\}\) ,每一個 \(x_i\) 都有 \(k\) 個特徵,分別記為 \(a_i\) , 可能類別為 \(Y=\{y_1,\cdots,y_m\}\) ,根據每個 \(x_i\) 的特徵,它會被分類到某一個 \(y_j\) 類中。

現在我們已經知道 \(D\) 分類的結果,分類器需要根據已經有的這些資訊對新的樣本 \(x=(a_1,\cdots,a_k)\) 進行分類。換句話說, \(y_j\) 就是一些模型,我們需要根據現有分類資料判斷 \(x\) 最有可能符合哪一個模型。

 

Discrete Classifier

需要計算已知 \(x\) 時分類到 \(y_j\) 的概率 \(\Pr(y_j|x)\) ,然後比較其中最大的概率,選擇對應的 \(y_j\) 作為分類結果。根據貝葉斯公式

\[\Pr(y_j|x) = \dfrac{\Pr(x|y_j)\Pr(y_j)}{\Pr(x)} \]

與先前類似,其中 \(\Pr(x)\) 可以忽略,我們用 \(D\) 中分類到 \(y_j\) 的元素佔 \(D\) 所有元素的比例來估計 \(y_j\) 出現的概率 \(\Pr(y_j)\)

於是重點就在於計算 \(\Pr(x|y_j)\) ,我們知道 \(x\) 有一些特徵,那麼

\[\Pr(x|y_j) = \prod_{i=1}^k\Pr(a_i|y_j) \]

也就是 \(x\)每一個特徵都出現\(y_j\) 中的概率,其中 \(\Pr(a_i|y_j)\)\(a_i\) 出現在 \(y_j\) 分類中的比例。最終就得到

\[\Pr(y_j|x) \varpropto \Pr(y_j)\prod_{i=1}^k\Pr(a_i|y_j) \]

計算右邊的最大值,然後選擇對應的 \(y_j\) 作為分類結果即可。

 

以下面離散資料集的程式碼為例,首先給出已知資料

fea_dis = [[1,1,1,1,1,2,2,2,2,2,3,3,3,3,3]',[1,2,2,1,1,1,2,2,3,3,3,2,2,3,3]'];	% 已經分類的資料集
gnd_dis = [-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1]';		                        % 對應的分類結果集

需要對 \((a_1,a_2)=(2,1)\) 進行分類,可以看出有 \(-1,1\) 兩類,記為 \(y_1,y_2\)

target_dis = [2,1];

因此需要計算每個分類中不同特徵出現的概率

\[\begin{matrix} \Pr(a_1| y_1) & \Pr(a_2| y_1)\\ \Pr(a_1| y_2) & \Pr(a_2| y_2) \end{matrix} \]

用一個矩陣來存放上面的概率

% 記錄概率 P(a_i|y_j)
P = zeros(2,2);

% 統計 1 和 -1 兩類分別有多少元素
p_count1 = sum(gnd_dis == 1);
p_count2 = sum(gnd_dis == -1);

% x = (a1,a2) = (2,1)
% 統計 1 類中 2 和 1 出現的概率
P(1,1) = sum(fea_dis(:,1) == 2 & gnd_dis == 1) / p_count1;
P(1,2) = sum(fea_dis(:,2) == 1 & gnd_dis == 1) / p_count1;

% 統計 -1 類中 2 和 1 出現的概率
P(2,1) = sum(fea_dis(:,1) == 2 & gnd_dis == -1) / p_count2;
P(2,2) = sum(fea_dis(:,2) == 1 & gnd_dis == -1) / p_count2;

然後計算出似然估計

\[\Pr(x|y_1) = \Pr(a_1| y_1) \Pr(a_2| y_1)\cdot \Pr(y_1)\\ \Pr(x|y_2) = \Pr(a_1| y_2) \Pr(a_2| y_2)\cdot \Pr(y_2)\\ \]
p1 = P(1,1) * P(1,2) * p_count1 / (p_count1 + p_count2);
p2 = P(2,1) * P(2,2) * p_count2 / (p_count1 + p_count2);

比較兩個概率的大小決定分到哪一類即可。

 

Continuous Classifier

對於連續資料,通常是將其轉化為離散資料集,包括兩種方法

  • 將特徵取值範圍分成幾個較少的區間
  • 假設每個類別中樣本特徵服從不同期望方差下的正態分佈

第一種方法下,直接使用上面的方案即可;如果是第二種方法,我們假定 \(y_j\) 類中出現的特徵 \(a_i\) 服從正態分佈

\[g(x,\mu,\sigma) = \dfrac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2}) \]

這樣就可令 \(\Pr(a_i|y_j) = g(a_i,\mu,\sigma)\) ,其中 \(\mu\)\(\sigma^2\)\(y_j\) 中出現的特徵 \(a_i\) 的期望和方差。我們用平均值來近似期望,使用無偏方差

\[D(X) = \dfrac{1}{n-1}\sum_{i=1}^n(X_i-\overline{X})^2 \]

假定不同特徵的協方差為 \(0\) ,也就是它們相互獨立。

 

我們生成一個連續資料集

% 生成連續資料
mu = [0,2];
sigma = [1 0;0,1];
r1 = mvnrnd(mu,sigma,200);
target_r1 = mvnrnd(mu,sigma,10);
mu = [3,6];
sigma = [1 0;0,1];
r2 = mvnrnd(mu,sigma,200);
target_r2 = mvnrnd(mu,sigma,10);

% 資料集
fea_con = [r1;r2];
gnd_con = [ones(200,1);-1*ones(200,1)];
target_con = [target_r1;target_r2];

% 清除無用資料
clear mu sigma r1 r2 target_r1 target_r2

這裡是利用二元正態分佈生成了兩組資料集,分別為 \(1,-1\) 類,然後將它們拼在一起,不過這不重要。

 

這次要對 \(10\) 個樣本進行分類,還是按照之前的方法計算 \(\Pr(y_j)\) ,而 \(\Pr(a_i|y_j)\) 則採用上面的正態分佈估計,就得到

% 統計 1 和 -1 兩類分別有多少元素
p_count1 = sum(gnd_con == 1);
p_count2 = sum(gnd_con == -1);

% 獲取 1 類和 -1 類的元素
y1 = fea_con(gnd_con == 1,:);
y2 = fea_con(gnd_con == -1,:);

% 計算平均值作為期望
mu1 = [mean(y1(:,1)) mean(y1(:,2))];
mu2 = [mean(y2(:,1)) mean(y2(:,2))];

% 計算方差
sigma1 = [(y1(:,1) - mu1(1))' * (y1(:,1) - mu1(1)) / (p_count1 - 1) 0;
    0 (y1(:,2) - mu1(2))' * (y1(:,2) - mu1(2)) / (p_count1 - 1)];
sigma2 = [(y2(:,1) - mu2(1))' * (y2(:,1) - mu2(1)) / (p_count2 - 1) 0;
    0 (y2(:,2) - mu2(2))' * (y2(:,2) - mu2(2)) / (p_count2 - 1)];

% 目標長度
n = length(target_con);

% 記錄概率 P(a_i|y_j) 通過正態分佈估計
P = zeros(2,2);
res = zeros(n,1);

% x = (a1,a2)
for i = 1:n
    % 當前元素的兩個特徵
    a1 = target_con(i,1);
    a2 = target_con(i,2);
    
    % 計算 1 類中 a1 a2 的概率
    P(1,1) =  1 / sqrt(2*pi) / sigma1(1,1) * exp(-(a1-mu1(1))^2/(2 * sigma1(1,1)^2));
    P(1,2) =  1 / sqrt(2*pi) / sigma1(2,2) * exp(-(a2-mu1(2))^2/(2 * sigma1(2,2)^2));
    
    % 計算 -1 類中 a1 a2 的概率
    P(2,1) =  1 / sqrt(2*pi) / sigma2(1,1) * exp(-(a1-mu2(1))^2/(2 * sigma2(1,1)^2));
    P(2,2) =  1 / sqrt(2*pi) / sigma2(2,2) * exp(-(a2-mu2(2))^2/(2 * sigma2(2,2)^2));
    
    % 計算條件概率
    p1 = P(1,1) * P(1,2) * p_count1 / (p_count1 + p_count2);
    p2 = P(2,1) * P(2,2) * p_count2 / (p_count1 + p_count2);
    
    % 根據概率大小判斷分類
    if p1 > p2
        res(i) = 1;
    else
        res(i) = -1;
    end
end

由於只有兩類,所以分類也較為簡單,不過更多類的情況也是類似的。

 

Accuracy

只介紹簡單的分類準確度指標 accuracy ,定義為分類正確的樣本數與總樣本數之比。

% 計算準確度
acc = sum(res == target_con_gnd) / n;