實務情境與進階陷阱
第 1 題:在進行 AI 專案時,如果發現「預測客戶流失」的資料中,流失客戶僅佔 1%,沒流失的佔 99%。為了解決這個「資料不平衡 (Imbalanced Data)」問題而使用 SMOTE 技巧,這屬於 CRISP-DM 的哪一個階段?
A) 資料理解 (Data Understanding)
B) 資料準備 (Data Preparation)
C) 建立模型 (Modeling)
D) 評估 (Evaluation)
正確解答:B
教練解析: 處理資料不平衡(如過度抽樣或欠抽樣)是在餵給模型前必須做好的「食材處理」,屬於資料準備階段。
第 2 題:模型上線一段時間後,由於市場趨勢改變,導致模型的預測準確率逐漸下降(這被稱為「概念飄移 Concept Drift」)。為了應對這個問題而建立的「監控與重新訓練機制」,屬於 CRISP-DM 的哪一個階段?
A) 商業理解 (Business Understanding)
B) 資料準備 (Data Preparation)
C) 評估 (Evaluation)
D) 部署 (Deployment)
正確解答:D
教練解析: 部署階段不僅僅是把模型推上線,還包含了制定「監控與維護計畫」,以確保模型持續有效。
第 3 題:在醫療 AI 專案中,決定「把沒病的人預測成有病 (偽陽性)」跟「把有病的人預測成沒病 (偽陰性)」哪一個代價更高,並且依此決定專案的驗收標準。這應該在 CRISP-DM 的哪個階段就先釐清?
A) 商業理解 (Business Understanding)
B) 資料理解 (Data Understanding)
C) 建立模型 (Modeling)
D) 評估 (Evaluation)
正確解答:A
教練解析: 確立專案目標與衡量成功的標準(包含錯誤的容忍度與成本),是開工前的第一步。
第 4 題:團隊準備撰寫「最終專案報告 (Final Report)」,並與客戶或老闆進行專案回顧 (Project Review),總結這次 AI 專案的經驗。這屬於 CRISP-DM 的哪一個階段?
A) 評估 (Evaluation)
B) 建立模型 (Modeling)
C) 部署 (Deployment)
D) 商業理解 (Business Understanding)
正確解答:C
教練解析: 在 CRISP-DM 官方定義中,產出最終專案報告並進行專案回顧,是整個流程的最後一步(屬於部署階段的一環)。
第 5 題:資料科學家繪製了各特徵之間的「相關係數熱力圖 (Correlation Heatmap)」,以初步觀察哪些變數可能對預測目標有高度相關性。這是 CRISP-DM 的哪一個階段?
A) 商業理解 (Business Understanding)
B) 資料理解 (Data Understanding)
C) 資料準備 (Data Preparation)
D) 建立模型 (Modeling)
正確解答:B
教練解析: 使用視覺化圖表探索資料的關聯性與分佈(EDA),正是資料理解階段的核心工作。
第 6 題:在設計 ETL 流程時,為了節省頻寬與時間,系統每天只抓取「昨天新增或修改過」的資料,而不是每次都把幾 TB 的資料庫全部重新抓一遍。這稱為什麼策略?
A) 全量載入 (Full Load)
B) 增量載入 (Incremental Load)
C) 轉換載入 (Transform Load)
D) 反向 ETL (Reverse ETL)
正確解答:B
教練解析: 只抓取差異(增量)的部分,是實務上最常用的高效萃取策略。
第 7 題:將每天數以萬計的交易明細資料,彙總計算成「每個月、每個產品線的總營收」,然後再存入資料倉儲供高階主管看報表。這個彙總 (Aggregation) 的動作屬於 ETL 的哪一個步驟?
A) Extract (萃取)
B) Transform (轉換)
C) Load (載入)
D) Export (匯出)
正確解答:B
教練解析: 彙總、分組、計算平均或總和,都是改變資料結構的「轉換」動作。
第 8 題:現代大數據架構中常提到「資料湖 (Data Lake)」。在 ELT 架構下,原始資料 (Raw Data) 萃取出來後,在尚未經過任何清洗或轉換前,通常會優先「載入 (Load)」到哪裡存放?
A) 資料超市 (Data Mart)
B) 資料湖 (Data Lake)
C) 傳統關聯式資料庫 (RDBMS)
D) 快取記憶體 (Cache)
正確解答:B
教練解析: 資料湖的特色就是「有容乃大」,管它是圖片、影片還是亂七八糟的 JSON,全部先原封不動存進來再說。
第 9 題:工程師在從外部廠商提供的 API 抓取資料時,發現對方有限制「每分鐘只能呼叫 100 次 API」。撰寫程式來處理這種「速率限制 (Rate Limiting)」與「分頁 (Pagination)」,是 ETL 哪一個階段的核心挑戰?
A) Extract (萃取)
B) Transform (轉換)
C) Load (載入)
D) Deploy (部署)
正確解答:A
教練解析: 如何穩定、不中斷地從各種奇形怪狀的來源把資料「拿出來」,是萃取階段最大的技術挑戰。
第 10 題:為了節省儲存空間與符合機器學習的輸入格式,將文字型的性別欄位(Male/Female)轉換為整數(1/0),這屬於 ETL 的哪一個步驟?
A) Extract (萃取)
B) Transform (轉換)
C) Load (載入)
D) Cleanse (清洗)
正確解答:B
教練解析: 將文字標籤轉換為數值編碼(Label Encoding),是一種標準的資料轉換動作。
第 11 題:針對呈現嚴重「長尾分佈(極度向右偏態)」的資料(例如大部分使用者的按讚數為 10,少數網紅按讚數破百萬),除了標準化之外,實務上最常先進行哪種數學轉換來壓縮尾部,使其更接近常態分佈?
A) One-Hot Encoding (獨熱編碼)
B) 對數轉換 (Log Transformation)
C) 多項式特徵 (Polynomial Features)
D) Min-Max Scaler
正確解答:B
教練解析: 取 Log 可以極大地壓縮巨大的數值,是處理長尾偏態資料的超級神器。
第 12 題:下列哪一種熱門的機器學習演算法,天生就對「特徵數值的大小 (Scale)」不敏感,即使你完全不做特徵縮放,也不會影響其預測結果?
A) K-近鄰演算法 (KNN)
B) 支援向量機 (SVM)
C) XGBoost (梯度提升樹)
D) 邏輯斯迴歸 (Logistic Regression) 搭配 L1/L2 正規化
正確解答:C
教練解析: 只要是「樹狀模型 (Tree-based)」,它是依據數值大小來「切分」節點,因此數值本身的絕對大小或比例不會影響切分邏輯。
第 13 題:假設你使用 MinMaxScaler 對訓練集進行縮放(訓練集最大值為 100,被縮放為 1.0)。未來模型上線時,遇到一筆真實世界的新資料數值為 120,經過「同一個」Scaler 縮放後,其數值會如何?
A) 會被強制轉換為 1.0
B) 程式會直接報錯,拒絕處理
C) 會大於 1.0
D) 會變成 0.0
正確解答:C
教練解析: 公式是固定的,既然 120 大於當時訓練的最大值 100,算出來的結果自然就會突破 1.0 的天花板 (例如變成 1.2)。
第 14 題:針對含有大量「0」的稀疏矩陣(Sparse Matrix,例如 NLP 中的 TF-IDF 文字矩陣),為了不破壞其稀疏性(避免把原本是 0 的格子填入其他數字而塞爆記憶體),最好使用下列哪一種縮放器?
A) StandardScaler
B) MinMaxScaler
C) MaxAbsScaler
D) RobustScaler
正確解答:C
教練解析: 最大絕對值縮放器只除以特徵的最大絕對值,不作平移。0 除以任何數還是 0,完美保留了稀疏矩陣的結構。
第 15 題:K-Means 分群演算法非常依賴計算資料點之間的「歐幾里得距離」。如果不做特徵縮放(例如:X軸是體重 60KG,Y軸是年薪 1,000,000 元),會發生什麼事?
A) 演算法會無法執行並報錯
B) 模型收斂速度會變快
C) 絕對數值大的特徵(年薪)會完全主導分群結果
D) 演算法會自動幫你進行標準化
正確解答:C
教練解析: 計算距離時,100萬減去80萬的差距,會瞬間秒殺體重60跟50的差距,導致模型「只看薪水,不管體重」。
第 16 題:在 Pandas 中,若想根據條件篩選並「同時」指定要看哪幾個欄位(例如:找出年齡大於 18 歲的人,且只顯示「姓名」與「電話」欄位),最標準的做法是使用下列哪一個屬性?
A) df.iloc[]
B) df.loc[]
C) df.filter()
D) df.select()
正確解答:B
教練解析: loc (Location) 是基於「標籤 (Label)」選取的神器。語法如:df.loc[df['Age']>18, ['Name', 'Phone']]。
第 17 題:身為資料分析師,拿到一份新資料表 df 後,想快速統計「每一個欄位」分別有多少個缺失值 (NaN)。最常用的 Pandas 組合語法是什麼?
A) df.isna()
B) df.isnull().sum()
C) df.count_null()
D) df.info()
正確解答:B
教練解析: isnull() 先找出空值轉為 True(1),再用 sum() 把每一欄的 1 加起來,一秒看出哪裡破洞最多!
第 18 題:若想對 DataFrame 中的某一個欄位(例如將「價格」欄位中所有的 '$' 符號移除並轉為數字),套用一個「自訂的 Python 函數」,應該使用哪一個方法?
A) df.map()
B) df['Price'].apply(自訂函數)
C) df['Price'].transform()
D) df.replace()
正確解答:B
教練解析: apply 是 Pandas 裡強大的百搭工具,它能把你的自訂邏輯「套用」到該欄位的每一個儲存格中。
第 19 題:分析時發現「客戶身分證字號 (ID_Card)」欄位涉及隱私且對預測沒有幫助,你想把它從 DataFrame 中徹底刪除。正確的語法為何?
A) df.delete('ID_Card')
B) df.remove('ID_Card')
C) df.drop(columns=['ID_Card'])
D) df.pop_out('ID_Card')
正確解答:C
教練解析: drop (丟棄) 是移除資料的標準動作。也可以寫成 df.drop('ID_Card', axis=1)。
第 20 題:老闆要求你根據資料表中的「總消費金額 (Total_Sales)」由大到小(降冪)排列整個 DataFrame,看看誰是 VVIP。正確的語法為何?
A) df.sort()
B) df.order_by('Total_Sales', desc=True)
C) df.sort_values(by='Total_Sales', ascending=False)
D) df.group_by('Total_Sales').max()
正確解答:C
教練解析: sort_values 是排序的標準函式,ascending=False 代表不要遞增(也就是降冪排列)。