110 中華郵政招考營運職 數據分析 數據分析及演算法運用 考古題詳解
第 第一題 題25 分
關聯規則分析是數據分析中常用於分析顧客交易項目關聯性的方法,請回答下列問題:
(一)請簡要說明關聯規則分析之定義。【5 分】
(二)請說明關聯規則分析的三項衡量指標。【10 分】
(三)Apriori 演算法是較早提出的關聯規則分析演算法,請簡要說明 Apriori 演算法流程。【10 分】
登入後即可作答並保存紀錄。
核心觀念
本題考查「關聯規則分析」的基本定義、三項衡量指標,以及 Apriori 演算法如何由頻繁項目集產生關聯規則。
設交易資料庫為 ,每筆交易包含若干商品項目。關聯規則通常表示為:
其中 、 為項目集,且須滿足:
其意義是:在交易中出現項目集 的顧客,也具有購買項目集 的傾向。
(一)關聯規則分析之定義【5 分】
關聯規則分析(Association Rule Mining)是一種從大量交易資料中,挖掘不同項目之間共現關係與依存程度的資料探勘方法。
其目的在於找出具有足夠支持度與可信度的規則,例如:
表示購買麵包的交易中,有相當比例也購買牛奶。此規則反映的是項目之間的統計關聯,並不代表因果關係。
關聯規則分析通常包含兩個階段:
- 找出滿足最低支持度的頻繁項目集。
- 從頻繁項目集中產生滿足最低可信度的關聯規則。
(二)關聯規則分析的三項衡量指標【10 分】
對規則 ,常用的三項衡量指標為支持度、信賴度(可信度)與提升度。
1. 支持度(Support)
支持度表示同時包含 與 的交易,占全部交易的比例:
其中:
- :全部交易資料庫。
- :其中一筆交易。
- :交易總筆數。
支持度用來衡量該規則在整體資料中的普遍程度。支持度越高,表示 與 同時出現得越頻繁。
2. 信賴度或可信度(Confidence)
信賴度表示在已知交易包含 的條件下,同時包含 的條件機率:
亦可表示為:
信賴度越高,表示購買 的交易中,越常同時出現 。
須注意,信賴度具有方向性:
因此 與 是兩條不同的規則。
3. 提升度(Lift)
提升度用來比較「在出現 的情況下出現 的比例」,與「不考慮 時 的原始出現比例」之差異:
代入信賴度公式可得:
提升度的判讀如下:
- : 與 呈正相關,出現 時, 出現的機率高於一般情況。
- : 與 可視為相互獨立。
- : 與 呈負相關。
提升度可避免單看信賴度所造成的誤判。例如某項商品本身就非常熱門,即使它與 沒有特殊關聯,規則的信賴度仍可能很高;此時應搭配提升度判斷實際關聯程度。
指標計算示例
假設共有 筆交易,其中:
- 同時購買 與 的交易有 筆。
- 購買 的交易有 筆。
- 購買 的交易有 筆。
則:
因此,雖然該規則的信賴度為 ,但提升度等於 ,表示 的出現並未提高 的出現機率,兩者沒有明顯的正向關聯。
(三)Apriori 演算法流程【10 分】
1. 核心原理:Apriori 性質
Apriori 演算法的基礎是「向下封閉性質」(downward closure property):
若一個項目集是頻繁項目集,則其所有非空子集合也必定是頻繁項目集。
第 第二題 題25 分
深度學習於 2012 年起,再次有突破性的發展;其中,圖像辨識可能有助於郵局多項業務效率提升,請回答下列問題:
(一)請說明卷積神經網路(CNN)之基本概念。【10 分】
(二)相較於傳統機器學習,卷積神經網路(CNN)能夠提升圖像辨識正確率之原因為何?【10 分】
(三)請說明卷積神經網路(CNN)與循環神經網路(RNN)之差異性。【5 分】
登入後即可作答並保存紀錄。
核心觀念
本題考查深度學習中兩類重要神經網路:
- CNN(Convolutional Neural Network,卷積神經網路):主要處理影像、圖形等具有空間結構的資料。
- RNN(Recurrent Neural Network,循環神經網路):主要處理文字、語音、時間序列等具有順序性的資料。
答題重點包括 CNN 的卷積運算、特徵擷取、池化、參數共享,以及其相較於傳統機器學習的優勢,並比較 CNN 與 RNN 的資料結構與運作方式。
(一)卷積神經網路(CNN)之基本概念【10 分】
1. CNN 的定義與用途
CNN 是一種適合處理網格狀資料的深度神經網路。影像可視為由像素組成的二維網格,每個像素具有灰階值或 RGB 色彩值,因此 CNN 能直接利用影像的空間結構進行特徵學習。
以郵局業務為例,CNN 可應用於:
- 郵件或包裹條碼辨識
- 手寫地址辨識
- 身分證件影像辨識
- 表單及文件分類
- 郵件影像瑕疵檢測
- 人臉或物件辨識
CNN 通常由多層卷積層、啟動函數、池化層及全連接層所組成。
2. 卷積層
卷積層使用一個小型矩陣,稱為濾波器或卷積核,在輸入影像上逐區域滑動,計算局部加權總和,以擷取影像特徵。
若輸入影像為 ,卷積核為 ,則輸出特徵圖可表示為:
其中:
- :輸入影像局部區域的像素值
- :卷積核中的權重
- :偏差值
- :特徵圖在位置 的輸出值
卷積核的權重不是人工指定,而是透過訓練資料及反向傳播法學習而得。
不同卷積核可學習不同特徵,例如:
- 淺層卷積核:邊緣、線條、角點
- 中層卷積核:紋理、形狀、局部構造
- 深層卷積核:物件部位及整體語意
3. 局部感受野與參數共享
CNN 具有兩項重要設計:
(1)局部感受野
每個神經元只連接輸入影像中的一小塊區域,而非連接全部像素,因此能保留影像的局部空間關係。
例如辨識文字時,局部區域可先辨識筆畫和邊緣,再逐步組合成字元與文字。
(2)參數共享
同一個卷積核會套用在影像不同位置,表示相同特徵不論出現在左側、右側、上方或下方,都能被同一組參數偵測。
此設計可大幅減少模型參數量,降低計算成本,也增強模型對物件位置變化的適應能力。
4. 啟動函數
卷積運算後通常會套用非線性啟動函數,常見的是 ReLU:
ReLU 可增加模型的非線性表達能力,使神經網路能學習複雜的影像關係,並有助於減少深層網路訓練時的梯度消失問題。
5. 池化層
池化層會將特徵圖縮小,以降低資料維度及計算量,並保留重要特徵。
常見方式包括:
- 最大池化(Max Pooling):取區域中的最大值
- 平均池化(Average Pooling):取區域中的平均值
例如 最大池化會從每個 區域中取最大值,使特徵圖的長寬縮小,同時保留最明顯的特徵。
池化也可使模型對小幅度的平移、旋轉或變形具有較好的容忍度。
6. 全連接層與輸出層
經過多層卷積與池化後,模型將特徵圖展平,輸入全連接層,整合前面擷取的特徵,最後由輸出層進行分類。
多分類問題常使用 Softmax:
其中 為類別數,輸出結果代表輸入影像屬於各類別的機率。
7. CNN 的訓練方式
CNN 以標記資料進行監督式學習,流程如下:
- 輸入影像。
- 經過卷積、啟動及池化層擷取特徵。
- 由輸出層產生預測結果。
- 使用損失函數衡量預測值與正確答案的差異。
- 透過反向傳播計算梯度。
- 使用梯度下降法更新卷積核及其他網路參數。
(二)CNN 相較於傳統機器學習能提升圖像辨識正確率之原因【10 分】
1. 傳統機器學習依賴人工特徵工程
傳統圖像辨識通常分為兩個階段:
- 由專家人工設計特徵。
- 將特徵輸入分類器,例如 SVM、決策樹或類神經網路。
人工特徵可能包括:
- 邊緣
- 角點
- 顏色
- 紋理
- 形狀
- HOG、SIFT 等影像描述子
其限制在於:特徵品質高度依賴設計者經驗,人工特徵未必能完整描述複雜影像,且不同任務常需重新設計特徵。
CNN 則能直接由原始像素中自動學習適合該任務的特徵,形成端到端的訓練流程。
2. 能學習階層式特徵
CNN 會由淺入深地學習特徵:
淺層負責辨識簡單構造,深層逐步組合為複雜語意。此種階層式特徵學習,能比單純依賴人工特徵更充分地表達影像內容。
3. 保留影像的空間結構
第 第三題 題25 分
請使用「選擇排序法(Selection Sort)」將下面陣列 中的 6 個整數由小至大排序,請依照【表三】格式將過程中每一回合的排序結果列出。【25 分】
【提示】「選擇排序法(Selection Sort)」的概念是在每一回合中選擇出範圍內最大元素,再與範圍內最右邊元素交換。
| 回合 | ||||||
|---|---|---|---|---|---|---|
| 原始排列 | 36 | 60 | 19 | 40 | 24 | 2 |
| 第 1 回合 | ||||||
| 第 2 回合 | ||||||
| 第 3 回合 | ||||||
| 第 4 回合 | ||||||
| 第 5 回合 |
【表三】
登入後即可作答並保存紀錄。
核心觀念
本題考查選擇排序法(Selection Sort)的操作流程。
題目指定的規則是:
- 每一回合只處理尚未完成排序的範圍。
- 從該範圍中找出最大元素。
- 將最大元素與該範圍最右端的元素交換。
- 每完成一回合,最右端的位置即確定為正確的排序結果。
- 陣列共有 個元素,因此需要進行 回合。
由小至大排序時,選出的最大值會依序放到陣列右側:
解題方法與逐回合操作
原始陣列為:
第 1 回合
處理範圍為 至 :
其中最大值為 ,位於 。將 與最右端的 交換:
此時 已完成定位。
第 2 回合
處理範圍縮小為 至 :
其中最大值為 ,位於 。將 與範圍最右端的 交換:
此時 已完成定位。
第 3 回合
處理範圍為 至 :
其中最大值為 ,位於 。將 與範圍最右端的 交換:
此時 已完成定位。
第 4 回合
處理範圍為 至 :
第 第四題 題25 分
下列是 與 兩個矩陣的乘法,左邊是 矩陣,右邊是 矩陣,相乘的結果是 ,為 矩陣。
計算方法是左邊矩陣的「列」乘以右邊矩陣的「行」,並加總起來,亦即:
……
若以陣列來儲存矩陣資料,請依照【表四】C/C++ 語言的格式,寫出一個 矩陣乘以 矩陣的演算法,亦即 。【25 分】
Matrix_Multiplication(int m, int n, int p, int a[m][n],
int b[n][p], int c[m][p])
{
for(int i=0; ________; i++) {
for(int j=0; ________; j++) {
________=0;
for(int k=0; ________; k++) {
c[i][j]=__________________________;
}
}
}
}
【表四】
登入後即可作答並保存紀錄。
核心觀念
矩陣乘法 的計算規則如下:
- 的第 列共有 個元素。
- 的第 行共有 個元素。
- 的第 列、第 行元素,為 第 列與 第 行的內積。
因此:
其中:
陣列採用 C/C++ 的「從 開始編號」,所以索引範圍分別為:
- :,
- :,
- :,
解題方法
矩陣乘法需要三層迴圈:
- 最外層迴圈控制結果矩陣 的列索引 ,共 列。
- 中間迴圈控制結果矩陣 的行索引 ,共 行。
- 最內層迴圈控制內積的累加索引 ,共 項。
對每一個 ,必須先設定為 ,再依序累加:
因此程式中的空格應填入:
- 第一空:
i < m - 第二空:
j < p - 第三空:
c[i][j] - 第四空:
k < n - 第五空:
c[i][j] + a[i][k] * b[k][j]
完整演算法如下: