Python 挑戰 ML (機器學習) -- 練習題 [4]

📝 測驗說明

  • 點擊選項即時判定對錯與顯示解析。
⚠️ 單次作答鎖定設計,點選後無法更改。
Q1. 線性迴歸 Singular matrix 錯誤代表?

✅ 答對了!

❌ 答錯了!

解析:共線性導致矩陣不可逆。

Q2. NLP 餘弦相似度 NumPy 實作?

✅ 答對了!

❌ 答錯了!

解析:分子內積,分母為兩向量範數相乘。

Q3. 為何優先選擇 Adam?

✅ 答對了!

❌ 答錯了!

解析:Adam 自動調整學習率,收斂穩定。

Q4. PyTorch 訓練常見遺漏步驟?

✅ 答對了!

❌ 答錯了!

解析:需清空梯度避免累加。

Q5. 極端錯誤時 Cross Entropy 反應?

✅ 答對了!

❌ 答錯了!

解析:對數特性懲罰極端錯誤。

Q6. 二元分類 AUC 實務標準寫法?

✅ 答對了!

❌ 答錯了!

解析:ROC 需基於機率值以調整閾值。

Q7. 極端離群值對 Z-score 影響?

✅ 答對了!

❌ 答錯了!

解析:離群值扭曲平均與標準差。

Q8. PCA 降維解決哪種統計問題?

✅ 答對了!

❌ 答錯了!

解析:正交轉換消除變數間相關性。

Q9. YOLO 交集寬度邏輯?

✅ 答對了!

❌ 答錯了!

解析:交集邊界計算邏輯。

Q10. 為何醫療影像愛用 Dice Loss?

✅ 答對了!

❌ 答錯了!

解析:Dice 對重疊率優化,對不平衡更有韌性。

Q11. BERT 的上下文向量優勢?

✅ 答對了!

❌ 答錯了!

解析:利用注意力機制動態調整編碼。

Q12. VGG16 參數瓶頸在哪?

✅ 答對了!

❌ 答錯了!

解析:Dense 層互連導致參數暴增。

Q13. PyTorch 標準訓練步序?

✅ 答對了!

❌ 答錯了!

解析:PyTorch 標準管線要求。

Q14. 診斷共線性視覺化?

✅ 答對了!

❌ 答錯了!

解析:熱力圖直觀呈現相關矩陣。

Q15. CLR 循環學習率目的?

✅ 答對了!

❌ 答錯了!

解析:透過動能跳過鞍點障礙。

Q16. 驗證 Loss 飆升代表?

✅ 答對了!

❌ 答錯了!

解析:模型記住雜訊,泛化力喪失。

Q17. 同時遺漏才刪除怎麼寫?

✅ 答對了!

❌ 答錯了!

解析:all 代表所有目標欄位為空才刪除。

Q18. GridSearchCV 參數 key 規則?

✅ 答對了!

❌ 答錯了!

解析:Pipeline 需雙底線連接。

Q19. TF-IDF 矩陣數學特性?

✅ 答對了!

❌ 答錯了!

解析:多數元素為 0,需稀疏存儲。

Q20. 動量機制實務目的?

✅ 答對了!

❌ 答錯了!

解析:利用慣性減緩震盪並加速收斂。

Read More »

Python 挑戰 ML (機器學習) -- 練習題 [3]

📝 測驗說明與操作指南(管線工程與實戰進階篇)

  • 作答方式:請閱讀題目後,直接點擊下方您認為正確的選項((A), (B), (C), (D))。
  • 即時判定:點擊選項後,系統會透過純 CSS 機制立即判定對錯。若答對,系統會顯示綠色提示;若答錯,系統會標示紅色,並為您同步標出真正的正確答案。
  • 觀看解析:作答選定後,選項下方會自動展開詳細的管線與模型觀念解析,幫助您加深記憶。
⚠️ 注意:本測驗採用單次鎖定作答設計,點選任何選項後即無法更改,請確認思考後再點選。
Q1. 在 PyTorch 的標準訓練迴圈中,若發現 Loss 一直維持常數完全沒有下降,且已經確認呼叫了 loss.backward() 產生梯度,最可能是遺漏了下列哪一行程式碼?

✅ 答對了!

❌ 答錯了!

💡 解析:loss.backward() 只負責計算梯度並存放在變數中。必須呼叫 optimizer.step() 才會根據算出的梯度實際更新網路權重,Loss 才會下降。

Q2. 在進行特徵工程時,若想用 Pandas 依據各「部門(Department)」的「平均薪資(Salary)」來填補該部門員工薪資的遺漏值(NaN),下列哪一段程式碼最為正確?

✅ 答對了!

❌ 答錯了!

💡 解析:groupby 後搭配 transform 可以保持原始資料表的列數不變,並將分組計算出來的平均值(x.mean())精準填補回該組的缺失值(fillna)中。

Q3. 處理嚴重類別不平衡資料時常使用 SMOTE 技術。在使用 Scikit-learn 進行 K-Fold 交叉驗證時,為了避免嚴重的「資料洩漏(Data Leakage)」,SMOTE 應該在什麼階段套用?

✅ 答對了!

❌ 答錯了!

💡 解析:若先對全資料 SMOTE 再切分,會導致驗證集混入人工合成的假資料,讓模型提早「偷看」並產生極度虛高且不真實的評估分數。

Q4. 在建構神經網路進行「二元分類」時,為何實務上強烈不建議使用 MSE(均方誤差)作為損失函數,而是採用 BCE(二元交叉熵)?

✅ 答對了!

❌ 答錯了!

💡 解析:Sigmoid 函數在輸出趨近 0 或 1 時梯度會趨近於 0。若搭配 MSE,即使模型極度自信卻預測錯誤,依然無法產生足夠的梯度來修正;而交叉熵的對數特性剛好能抵銷此問題。

Q5. 相較於傳統的 TF-IDF 矩陣,使用 Word2Vec 或 BERT 產生的詞向量(Word Embeddings)具有什麼最關鍵的數學特徵?

✅ 答對了!

❌ 答錯了!

💡 解析:TF-IDF 是超高維度且極度稀疏的矩陣,無法理解「蘋果」和「橘子」都是水果的幾何靠近性。詞嵌入技術透過低維稠密向量完美解決了語意關聯問題。

Q6. 在 YOLO 物件偵測演算法中,會將輸入影像均勻劃分為 S x S 的網格(Grid)。某一個特定網格單元(Grid Cell)的「主要職責」是什麼?

✅ 答對了!

❌ 答錯了!

💡 解析:YOLO 的核心設計哲學:無論物件有多大,只要它的「中心點」落在哪個 Grid Cell 裡,那個 Cell 就要全權負責預測並框出這個物件。

Q7. 假設你的資料集極度不平衡(99% 正常交易,1% 詐欺交易)。你訓練的模型測出 ROC AUC 高達 0.95,但 Precision-Recall AUC 卻只有 0.15。這代表什麼?

✅ 答對了!

❌ 答錯了!

💡 解析:ROC 曲線的 FPR 分母包含了所有的負樣本(99%)。只要負樣本超多,FPR 就會被稀釋得很低,使得 ROC 看起來很完美。而 PR 曲線只關心「被預測為正」的樣本,能戳破這種虛高的假象。

Q8. Adam 優化器是目前深度學習的預設首選。若與其前身 RMSProp 相比,Adam 主要加入了什麼核心數學機制來進一步穩定訓練?

✅ 答對了!

❌ 答錯了!

💡 解析:RMSProp 只使用了二階動量(梯度的平方)來動態調整學習率。Adam (Adaptive Moment Estimation) 同時結合了一階動量(方向慣性)與二階動量(步伐大小),達到最優的適應性。

Q9. 訓練隨機森林(Random Forest)模型時,發現訓練集準確率達 100%,但在測試集上僅有 65%。若要透過 Scikit-learn 緩解此嚴重的過擬合(Overfitting),調整下列哪一組超參數最有效?

✅ 答對了!

❌ 答錯了!

💡 解析:訓練集 100% 代表決策樹生長得太深、太細碎,完美記住了每一筆訓練資料。限制深度(max_depth)或要求葉節點必須有足夠樣本(min_samples_leaf)能強迫模型提早停止生長,增加泛化能力。

Q10. 在使用 PCA 進行降維時,我們會計算共變異數矩陣的特徵向量(Eigenvectors)與特徵值(Eigenvalues)。這些「特徵值」在實務上的統計意義為何?

✅ 答對了!

❌ 答錯了!

💡 解析:特徵向量決定了投影的方向,而特徵值的大小則代表了該方向上涵蓋了多少原始資料的分散程度(變異量)。特徵值越大的主成分,能解釋的資訊就越多。

Q11. 現代 NLP 模型(如 BERT)在處理未曾出現在訓練字典中的「未知詞彙(OOV, Out-of-Vocabulary)」時,採用了什麼機制來避免直接輸出無法辨識的 標籤?

✅ 答對了!

❌ 答錯了!

💡 解析:例如遇到未知的 'playing',WordPiece 會將其拆解為 'play' 和 '##ing' 兩個已知單位。這大幅減少了 OOV 問題,並讓模型能推敲未知詞彙的語意。

Q12. 在物件偵測中評估 IOU(交集比聯集)時,若預測的邊界框(Pred Box)「完全包覆」了真實邊界框(GT Box),且預測框的面積剛好是真實框面積的 2 倍,則此時的 IOU 值為何?

✅ 答對了!

❌ 答錯了!

💡 解析:因為預測框完全包覆真實框,交集(Intersection)面積等於真實框面積 (1)。聯集(Union)面積則是預測框面積 (2)。IOU = 1 / 2 = 0.5。

Q13. 在 PyTorch 中使用 CosineAnnealingLR 作為學習率排程器(Scheduler)時,其學習率變化的軌跡具有什麼特徵?

✅ 答對了!

❌ 答錯了!

💡 解析:這正是半個 Cosine 波形的特徵。初期慢慢下降確保穩定起步,中期快速下降加速收斂,後期再次變慢讓模型在谷底精細微調(Fine-tuning),這是實務上極為強大的排程策略。

Q14. 當資料特徵維度極高且存在嚴重的共線性(Collinearity)時,在 Logistic Regression 中套用 L1 正規化(Lasso Penalty)通常會產生什麼顯著的數學效果?

✅ 答對了!

❌ 答錯了!

💡 解析:L1 正規化由於其絕對值懲罰的菱形幾何特性,優化解經常落在座標軸上,導致多數權重變成剛好等於 0,這非常適合用來剔除高維度中的多餘共線特徵。

Q15. 在建構 PyTorch 深度學習 Pipeline 時,為何必須將 NumPy 陣列轉換為 torch.Tensor 物件才能進行訓練?

✅ 答對了!

❌ 答錯了!

💡 解析:NumPy 只能在 CPU 上運算且不懂反向傳播;Tensor 不僅能 `tensor.to('cuda')`,還會自動記錄所有運算歷史(requires_grad=True)以算出神經網路需要的梯度。

Q16. 為何實務上深度學習多採用 Mini-batch SGD(小批次梯度下降),而不使用將全部資料一次丟入計算的 Full Batch Gradient Descent?

✅ 答對了!

❌ 答錯了!

💡 解析:除了記憶體放不下全圖外,更深層的數學原因是:每次只看一小批資料所產生的「顛簸/震盪」,能避免模型卡死在表現不佳的小坑洞中,找到更寬廣、泛化能力更好的平緩谷底。

Q17. 當我們對一個連續數值特徵完整套用 Scikit-learn 的 StandardScaler(Z-score 標準化)後,該特徵的新平均數(Mean)與標準差(Standard Deviation)數學上必定會變成多少?

✅ 答對了!

❌ 答錯了!

💡 解析:Z-score 公式為 `(x - mean) / std`。減去平均數將中心點平移至 0,除以標準差將數據的散佈幅度縮放為 1。這是最標準的統計學特徵對齊手法。

Q18. 一個深度神經網路在分類任務中給出「機率 0.99」的極度自信預測時,經統計發現它實際上卻只有 60% 的機率預測正確。這種現象在機器學習工程中稱為什麼問題?

✅ 答對了!

❌ 答錯了!

💡 解析:完美的模型除了準確率高,其輸出的機率也必須與真實信心相符(Calibration)。若輸出 0.99 卻常常錯,代表機率分佈嚴重扭曲,實務上常需透過 Temperature Scaling 等技術來重新校準機率值。

Q19. 在建構 ML 訓練特徵表時,經常需要將 df_sales (交易紀錄表) 與 df_users (用戶特徵表) 透過共有的 user_id 欄位進行關聯整併。Pandas 中專門處理這種關聯式資料庫(SQL JOIN)風格合併的最佳函式是?

✅ 答對了!

❌ 答錯了!

💡 解析:pd.merge() 是 Pandas 中最強大且專門為了進行資料庫風格連接(Inner, Left, Right, Outer Join)所設計的函式,可以精準指定依據哪一個鍵值(on='user_id')進行對齊合併。

Q20. 在使用正規方程式解線性迴歸 w = (X^T X)^{-1} X^T y 時,若「特徵維度的數量」遠遠大於「樣本的數量」(即 D > N,例如有一萬個特徵但只有一百筆資料),矩陣 X^T X 必然會發生什麼事?

✅ 答對了!

❌ 答錯了!

💡 解析:這就是經典的「維度災難 (Curse of Dimensionality)」在線性代數上的體現。解方程式的條件數量不足以確定所有的未知數權重,這時必須引入正規化(如 L2 Ridge 增加對角線數值)才能強行算出反矩陣。

Read More »

Python 挑戰 ML (機器學習) -- 練習題 [2]

📝 測驗說明與操作指南(管線工程與實戰進階篇)

  • 作答方式:請閱讀題目後,直接點擊下方您認為正確的選項((A), (B), (C), (D))。
  • 即時判定:點擊選項後,系統會透過純 CSS 機制立即判定對錯。若答對,系統會顯示綠色提示;若答錯,系統會標示紅色,並為您同步標出真正的正確答案。
  • 觀看解析:作答選定後,選項下方會自動展開詳細的管線與模型觀念解析,幫助您加深記憶。
⚠️ 注意:本測驗採用單次鎖定作答設計,點選任何選項後即無法更改,請確認思考後再點選。
Q1. 在線性迴歸的底層數學中,正規方程式(Normal Equation)的解為 w = (X^T X)^(-1) X^T y。若在 Python 中執行 np.linalg.inv(X.T @ X) 時拋出「Singular matrix(奇異矩陣)」錯誤,這在資料科學實務上通常代表什麼意義?

✅ 答對了!

❌ 答錯了!

💡 解析:當特徵間存在完美或高度的線性相關(共線性)時,X^T X 的行列式會趨近於 0,成為不可逆的奇異矩陣,這會導致線性迴歸模型極度不穩定。

Q2. 在 NLP 任務或推薦系統中,常需要計算兩個文本向量 A 與 B 的餘弦相似度(Cosine Similarity)。下列哪一段 NumPy 程式碼能正確實現公式 (A · B) / (||A|| ||B||)?

✅ 答對了!

❌ 答錯了!

💡 解析:餘弦相似度的分子是兩向量的內積 np.dot,分母是兩向量的 L2 範數(長度)相乘 np.linalg.norm,此程式碼完美映射了數學定義。

Q3. 在訓練深度學習模型時,為什麼實務上經常優先選擇 Adam 優化器而不是傳統的 SGD(隨機梯度下降)?

✅ 答對了!

❌ 答錯了!

💡 解析:Adam 會追蹤梯度的歷史一階動量與二階動量,對不同更新頻率的參數給予不同的學習率,使其在複雜地形中收斂更快、更穩定。

Q4. 在使用 PyTorch 建構訓練迴圈(Training Loop)時,若發現訓練初期的 Loss 數值異常爆炸或降不下來,最可能是下列哪一個典型流程步驟被遺漏了?

✅ 答對了!

❌ 答錯了!

💡 解析:PyTorch 預設會「累積(accumulate)」梯度。若未清空,每次 backward 的梯度會不斷加總到前一次的結果上,導致參數更新步伐錯亂、Loss 爆炸。

Q5. 在進行機器學習分類任務時,若遇到模型輸出「極度自信卻完全預測錯誤」的情況(例如正確標籤為 1,模型卻輸出預測類別 0 的機率為 0.999),此時 Cross Entropy(交叉熵)Loss 函數會產生什麼特徵反應?

✅ 答對了!

❌ 答錯了!

💡 解析:交叉熵公式中包含 -log(p),當正確類別的預測機率 p 趨近於 0(即極度自信預測錯誤)時,log(p) 會趨近負無限大,產生極高的 Loss 懲罰。

Q6. 在 Python 中使用 Scikit-learn 計算二元分類模型的 AUC(ROC 曲線下面積)時,下列哪一種程式碼撰寫方式才是正確評估模型排序能力的實務標準?

✅ 答對了!

❌ 答錯了!

💡 解析:ROC 曲線依賴改變閾值來觀察 TPR 與 FPR 的變化,因此必須傳入「預測為正類的機率值」(predict_proba),邊界切分才能連續,反映真實 AUC 排序能力。

Q7. 資料前處理時,若某一數值特徵中存在極少數的「極端離群值(Extreme Outliers)」,此時對該特徵使用 StandardScaler(Z-score 標準化)會產生什麼負面影響?

✅ 答對了!

❌ 答錯了!

💡 解析:StandardScaler 依賴平均值與標準差,極端值會嚴重扭曲這兩個統計量,使得標準化後的正常資料失去解析度,此時應改用基於分位數的 RobustScaler。

Q8. 除了進行特徵降維以減少運算量,主成分分析(PCA)在線性迴歸管線中經常被用來解決下列哪一種統計問題?

✅ 答對了!

❌ 答錯了!

💡 解析:PCA 透過正交轉換,將原本高度相關的特徵投影到互相垂直(正交)的主成分軸上,轉換後的新特徵之間完全線性獨立,完美消除共線性。

Q9. 在物件偵測(Object Detection)任務中(如 YOLO),我們經常使用 IOU(Intersection over Union)來評估邊界框(Bounding Box)的準確度。若要用 Python 撰寫邏輯取得兩個框的「交集區域寬度」,概念上應如何計算?

✅ 答對了!

❌ 答錯了!

💡 解析:交集的左邊界是兩者「較右邊的左邊界 (max)」,右邊界是兩者「較左邊的右邊界 (min)」。兩者相減即可得到交集寬度(若為負數則代表無交集)。

Q10. 在醫療影像分割(Image Segmentation)任務中,為何實務上常偏好使用 Dice Coefficient(或 Dice Loss)而非二元交叉熵(BCE Loss)?

✅ 答對了!

❌ 答錯了!

💡 解析:當前景極小時,BCE 模型只要全部預測為背景就能得到很低的 Loss。Dice 專注於衡量預測區域與真實區域的交集重疊程度,能有效克服嚴重的背景不平衡。

Q11. 在自然語言處理(NLP)的管線中,比起傳統的 TF-IDF,使用如 BERT 等現代語言模型的優勢在於能產生「上下文相關(Contextualized)」的向量。在 Python 實作中,這真實意味著什麼?

✅ 答對了!

❌ 答錯了!

💡 解析:BERT 利用 Transformer 的自注意力機制,根據周圍的字詞動態計算編碼,這解決了一詞多義的問題;而 TF-IDF 或靜態 Word2Vec 對同一單字永遠給出固定的向量。

Q12. 在解讀影像辨識架構(如 VGG16)的 Keras model.summary() 時,對於記憶體和效能評估,下列關於卷積層(Conv2D)與全連接層(Dense)特性的敘述何者正確?

✅ 答對了!

❌ 答錯了!

💡 解析:CNN 架構的特性在於:卷積層利用權重共享進行密集的滑動視窗運算(高計算量/高記憶體圖形);而末端 Dense 層每個神經元皆須互連,導致參數暴增。這對硬體選型至關重要。

Q13. 使用 PyTorch 建立標準的深度學習訓練管線時,單一個 Step(批次資料)的正確執行順序為何?

✅ 答對了!

❌ 答錯了!

💡 解析:這是 PyTorch 標準且必須遵循的流程:y_pred = model(X) -> loss = criterion(...) -> optimizer.zero_grad() -> loss.backward() -> optimizer.step()。

Q14. 在探索式資料分析(EDA)中,當資料表含有多個數值變數時,我們常使用 Pandas 的 df.corr() 搭配 Seaborn 來快速診斷特徵間是否存在「共線性」。下列哪一種視覺化語法是實務上的最佳選擇?

✅ 答對了!

❌ 答錯了!

💡 解析:heatmap(熱力圖)能將相關係數矩陣用顏色深淺直觀地表現出來,加入 annot=True 更能直接在格子上顯示數值,是診斷多維度共線性的標準解法。

Q15. 在機器學習訓練中導入 CLR(Cyclical Learning Rates,循環學習率)策略,其背後最核心的優化(Optimization)考量是什麼?

✅ 答對了!

❌ 答錯了!

💡 解析:在複雜的損失地形中,模型很容易陷入平緩的鞍點或局部盲區。CLR 故意在訓練過程中規律地放大步伐,賦予模型動能去跨越這些障礙,尋找全局更好的解。

Q16. 在觀看 Scikit-learn 或 Keras 訓練過程的學習曲線(Learning Curve)時,若發現「訓練集 Loss 穩步下降接近 0」,但「驗證集(Validation)Loss 下降到一半後卻開始反轉向上飆升」。這典型代表模型發生了什麼事?

✅ 答對了!

❌ 答錯了!

💡 解析:這是最標準的過擬合特徵圖形。模型在訓練集上表現趨近完美(Low Bias),但在沒看過的驗證集上徹底失敗(High Variance)。

Q17. 在 Pandas 進行資料清理時,若我們希望保留盡可能多的資料,且「只有當 age 欄位與 income 欄位同時都遺漏(NaN)」時,才將該筆資料列(Row)刪除。下列哪一行語法最為正確?

✅ 答對了!

❌ 答錯了!

💡 解析:subset 指定要檢查的特定欄位,how='all' 嚴格規定必須「所有」指定的欄位都為空值,該列才會被剔除,完美符合情境需求。

Q18. 在 Scikit-learn 中建立一個包含標準化(StandardScaler)與支持向量機(SVC)的管線 Pipeline([('scaler', StandardScaler()), ('clf', SVC())])。若想使用 GridSearchCV 調整 SVC 的 C 超參數,字典(Dictionary)中的 key 應該如何正確撰寫?

✅ 答對了!

❌ 答錯了!

💡 解析:在 Pipeline 中針對特定步驟設定超參數,必須遵循「步驟名稱 + 雙底線 `__` + 參數名稱」的語法規則,以正確指引網格搜尋找對底層物件。

Q19. 在自然語言處理(NLP)中使用 TfidfVectorizer 將文章轉換為特徵矩陣,這個輸出的矩陣具有什麼典型的數學與矩陣特性?

✅ 答對了!

❌ 答錯了!

💡 解析:TF-IDF 矩陣的欄位是整個語料庫的所有詞彙。一篇文章只會包含其中極少數詞彙,因此矩陣中 99% 的數值都是 0,必須以稀疏矩陣格式儲存以節省記憶體。

Q20. 在梯度下降法中,加入「動量(Momentum)」機制的實務目的為何?這在 Python 實作中常透過設定 optim.SGD(..., momentum=0.9) 來達成。

✅ 答對了!

❌ 答錯了!

💡 解析:動量會記住上一步走的方向與速度。當方向一致時會加速前進;當遇到山谷兩壁反覆彈跳時,動量能抵消橫向震盪,集中力量往谷底前進。

Read More »
>