a593: 貝兒的分類器
標籤 :
通過比率 : 0人/ 0人 (0%) [非即時]
評分方式:
Tolerant

最近更新 : 2025-06-16 21:16

內容

貝兒正在學習貝氏機率,最近她想基於貝氏機率來設計一個分類演算法。

她的分類演算法是這樣設計的:假設要預測的目標為$C$,而每筆資料有$n$個特徵$f_1,f_2,...,f_n$。每個特徵的值$v_i$有$1\le v_i\le V(f_i)$,而目標的值$c$也有$1\le c\le V(C)$。

給定$m$筆資料,貝兒的分類器會從中學習出以下的機率:

- $P(c)=\frac{\text{count}(C=c)+1}{m+V(C)}:$ $C=c$的機率
- $P(f_i=k|c)=\frac{\text{count}(C=c\ \&\ f_i=k)+1}{\text{count}(C=c)+V(f_i)}:$ $C=c$時,$f_i=k$的機率

要預測新資料$X(f_1=v_1,f_2=v_2,...,f_n=v_n)$時,貝兒的分類器會分別計算每個類別的分數函數$S(c,X)=P(c)\prod P(f_i=v_i|c)$,並選擇分數最高的類別作為預測。  
如果有多個類別同時達到最高分$\max(S(c,X))=S(c_a,X)=S(c_b,X)=...$,則選擇最小的那個:$\text{answer}=\min(c_a,c_b,...)$。

考慮以下範例:
$V(f_1)=2,V(f_2)=3,V(C)=2$

| f1 | f2 | C |
|----|----|---|
| 1  | 1  | 1 |
| 2  | 1  | 1 |
| 1  | 2  | 2 |
| 2  | 2  | 1 |


從訓練資料中,貝兒的分類器會學習到以下機率:
- $P(C=1)=\frac{3+1}{4+2}=\frac{4}{6}$
- $P(C=2)=\frac{1+1}{4+2}=\frac{2}{6}$
- $P(f_1=1|C=1)=\frac{1+1}{3+2}=\frac{2}{5}$
- $P(f_1=2|C=1)=\frac{2+1}{3+2}=\frac{3}{5}$
- $P(f_2=1|C=1)=\frac{2+1}{3+3}=\frac{3}{6}$
- $P(f_2=2|C=1)=\frac{1+1}{3+3}=\frac{2}{6}$
- $P(f_2=3|C=1)=\frac{0+1}{3+3}=\frac{1}{6}$

給定一個要預測的資料$X(f_1=1,f_2=3)$,可以計算出每個$c$的分數函數:

- $S(1,X)=P(f_1=1|C=1)P(f_2=3|C=1)P(C=1)=\frac8{180}$
- $S(2,X)=P(f_1=1|C=2)P(f_2=3|C=2)P(C=2)=\frac4{72}$

$S(2,X)>S(1,X)$,所以貝兒的分類器會預測2。

你看了看貝兒的分類器覺得很有意思,決定自己實作一個。

輸入說明

第一行包含兩個整數$n,m$,代表特徵數、訓練資料數。
第二行包含$n+1$個整數,代表$V(f_1),V(f_2),...,V(f_n),V(C)$。  
接下來的$m$行,每行包含$n+1$個以逗號分隔的整數,代表一筆訓練資料。前$n$個數分別為$f_1,f_2,...,f_n$,最後一個數為$C$。  
下一行包含一個整數$q$。  
接下來的$q$行,每行包含$n$個以逗號分隔的整數,代表一筆測試資料。  

  • $1\le n, V(f_i)\le 7$
  • $1\le m, q\le100$
  • $1\le V(C)\le1000$
輸出說明

輸出$q$行,每行包含一個整數,代表對該筆測試資料預測的結果。  
如果同時有多個類別達到最大的分數,輸出最小的類別。  

範例輸入 #1
2 4
2 3 2
1,1,1
2,1,1
1,2,2
2,2,1
1
1,3
範例輸出 #1
2
範例輸入 #2
2 2
2 2 3
1,1,2
2,2,3
1
1,2
範例輸出 #2
2
測資資訊:
記憶體限制: 64 MB
公開             測資點#0 (20%): 1.0s              , <1K
公開             測資點#1 (20%): 1.0s              , <1K
公開             測資點#2 (20%): 1.0s              , <1K
公開             測資點#3 (20%): 1.0s              , <1M
公開             測資點#4 (20%): 1.0s              , <1M
提示 :

範例輸入1:同題目內範例

範例輸入2:由於$S(2,[1,2])=S(3,[1,2])=\frac4{45}$同時達到最大($S(1,[1,2])=\frac1{20}$),故從這些類別(2、3)中選擇數值較小的類別2。

標籤:
出處:
明達 [管理者:
pusapphire@g... (pusapphire)
]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」