25 Pertanyaan Wawancara Data Science Teratas di 2026
Pertanyaan wawancara data science mencakup statistika, machine learning, rekayasa fitur, deep learning, SQL, dan desain sistem — dengan contoh kode Python dan jawaban mendalam untuk tahun 2026.

Pertanyaan wawancara data science di tahun 2026 menguji jauh lebih dari sekadar definisi buku teks. Tim rekrutmen menggali kemampuan penalaran statistik, pertimbangan rekayasa fitur, evaluasi model yang melampaui akurasi, serta kemampuan menerjemahkan masalah bisnis menjadi pipeline analitik yang koheren. Panduan ini mencakup 25 pertanyaan yang kerap muncul dalam wawancara data scientist di perusahaan mulai dari startup hingga FAANG.
Wawancara data science menilai tiga dimensi: fondasi statistik (probabilitas, pengujian hipotesis, distribusi), mekanisme machine learning (bias-variance, regularisasi, ensembel pohon), dan penilaian terapan (pemilihan fitur, pemilihan metrik, penyampaian hasil kepada pemangku kepentingan). Kandidat kuat mampu menghubungkan teori dengan dampak nyata di dunia kerja.
Probabilitas dan Dasar Statistik
P1: Sebuah koin dilempar 10 kali dan mendarat sisi kepala sebanyak 8 kali. Apakah koin tersebut tidak seimbang?
Jawaban naif adalah "ya," namun pendekatan yang rigor menerapkan uji binomial. Dalam hipotesis nol (koin seimbang, p=0,5), probabilitas mendapatkan 8 kepala atau lebih dalam 10 lemparan adalah sekitar 5,5% — tidak berada di bawah ambang signifikansi standar 5%. Koin tersebut tidak dapat dinyatakan bias pada alpha = 0,05.
# binomial_test.py
from scipy import stats
# Two-sided binomial test: is the coin fair?
result = stats.binomtest(k=8, n=10, p=0.5, alternative='two-sided')
print(f"p-value: {result.pvalue:.4f}") # 0.1094 (two-sided)
print(f"Reject H0 at alpha=0.05? {result.pvalue < 0.05}") # FalsePertanyaan ini menguji apakah kandidat mengandalkan intuisi atau menerapkan pengujian hipotesis formal. Pewawancara biasanya melanjutkan dengan pertanyaan tentang kesalahan Tipe I vs. Tipe II, serta berapa ukuran sampel yang dibutuhkan untuk mendeteksi bias p=0,7 dengan kekuatan statistik 80%.
P2: Jelaskan perbedaan antara pendekatan Bayesian dan frequentist dalam inferensi statistik.
Inferensi frequentist memperlakukan parameter sebagai tetap namun tidak diketahui. Interval kepercayaan 95% berarti: jika eksperimen diulang berkali-kali, 95% dari interval yang dihitung akan mencakup parameter sebenarnya. Inferensi Bayesian memperlakukan parameter sebagai variabel acak dengan distribusi prior, memperbarui keyakinan melalui teorema Bayes untuk menghasilkan distribusi posterior. Interval kredibel 95% berarti: berdasarkan data yang diamati dan prior, terdapat probabilitas 95% bahwa parameter berada dalam interval tersebut.
# bayesian_vs_frequentist.py
import numpy as np
from scipy import stats
# Frequentist: confidence interval for a mean
data = np.array([23.1, 25.4, 22.8, 24.9, 23.7, 25.1, 24.3])
ci = stats.t.interval(0.95, df=len(data)-1, loc=np.mean(data), scale=stats.sem(data))
print(f"95% CI (frequentist): [{ci[0]:.2f}, {ci[1]:.2f}]")
# Bayesian: posterior with conjugate prior (Normal-Normal)
prior_mean, prior_var = 24.0, 4.0 # prior belief
data_mean, data_var = np.mean(data), np.var(data, ddof=1) / len(data)
# Posterior parameters (conjugate update)
post_var = 1 / (1/prior_var + 1/data_var)
post_mean = post_var * (prior_mean/prior_var + data_mean/data_var)
post_ci = stats.norm.interval(0.95, loc=post_mean, scale=np.sqrt(post_var))
print(f"95% credible interval (Bayesian): [{post_ci[0]:.2f}, {post_ci[1]:.2f}]")Perbedaan praktisnya nyata saat ukuran sampel kecil atau prior informatif tersedia. Bayesian lebih tepat digunakan ketika pengetahuan domain kuat; frequentist lebih banyak dipakai ketika objektivitas dan reproduktibilitas menjadi prioritas utama.
P3: Kapan distribusi t-Student lebih disukai daripada distribusi normal dalam pengujian hipotesis?
Distribusi t-Student digunakan ketika ukuran sampel kecil (umumnya n < 30) dan simpangan baku populasi tidak diketahui. Distribusinya memiliki ekor yang lebih tebal dibandingkan distribusi normal, yang mengakomodasi ketidakpastian tambahan dari estimasi simpangan baku menggunakan data sampel. Seiring bertambahnya derajat kebebasan, distribusi t konvergen ke distribusi normal. Pewawancara menggunakan pertanyaan ini untuk menguji pemahaman tentang asumsi tes statistik, bukan sekadar kemampuan menghitung.
Rekayasa Fitur dan Persiapan Data
P4: Bagaimana cara menangani data yang hilang dalam dataset skala besar?
Strategi penanganan data yang hilang bergantung pada mekanisme hilangnya data: Missing Completely At Random (MCAR), Missing At Random (MAR), atau Missing Not At Random (MNAR). Imputasi sederhana (rata-rata, median, modus) cocok untuk MCAR dengan persentase kecil. KNN imputation mempertahankan struktur lokal. Iterative imputation (mirip MICE) memodelkan setiap fitur sebagai fungsi dari fitur lainnya. Untuk MNAR, menambahkan indikator ketiadaan nilai seringkali penting karena pola hilangnya data itu sendiri membawa informasi.
# missing_data_strategies.py
import pandas as pd
from sklearn.impute import KNNImputer, SimpleImputer
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
df = pd.DataFrame({
'age': [25, 30, None, 45, None, 38],
'income': [50000, None, 70000, 90000, 60000, None],
'score': [85, 90, 78, None, 88, 92]
})
# Strategy 1: KNN imputation (preserves local structure)
knn_imp = KNNImputer(n_neighbors=2)
df_knn = pd.DataFrame(knn_imp.fit_transform(df), columns=df.columns)
# Strategy 2: Iterative imputation (MICE-like, models each feature)
iter_imp = IterativeImputer(max_iter=10, random_state=42)
df_iter = pd.DataFrame(iter_imp.fit_transform(df), columns=df.columns)
# Strategy 3: Add missingness indicator (preserves signal in the pattern)
df['income_missing'] = df['income'].isna().astype(int)
print(df_knn.round(1))Kesalahan umum adalah menerapkan imputasi sebelum membagi data, yang dapat menyebabkan kebocoran dari data validasi ke data pelatihan.
P5: Apa itu target encoding, dan bagaimana cara mencegah kebocoran data?
Target encoding menggantikan nilai kategorikal dengan rata-rata variabel target untuk kategori tersebut. Teknik ini efektif untuk fitur kardinalitas tinggi (seperti kode pos, ID produk) yang akan menghasilkan terlalu banyak kolom jika menggunakan one-hot encoding. Risikonya adalah kebocoran data: jika rata-rata dihitung pada seluruh dataset sebelum cross-validation, model akan "melihat" label validasi selama pelatihan. Solusinya adalah target encoding dengan regularisasi K-fold — rata-rata dihitung hanya dari fold pelatihan, bukan fold validasi.
# target_encoding.py
import pandas as pd
import numpy as np
from sklearn.model_selection import KFold
def target_encode_kfold(df, col, target, n_splits=5):
"""Target encoding with K-fold regularization to prevent leakage."""
encoded = pd.Series(index=df.index, dtype=float)
global_mean = df[target].mean()
kf = KFold(n_splits=n_splits, shuffle=True, random_state=42)
for train_idx, val_idx in kf.split(df):
# Compute means only from training fold
means = df.iloc[train_idx].groupby(col)[target].mean()
encoded.iloc[val_idx] = df.iloc[val_idx][col].map(means)
# Fill categories unseen in training fold with global mean
encoded.fillna(global_mean, inplace=True)
return encoded
df = pd.DataFrame({
'city': ['Paris', 'Lyon', 'Paris', 'Marseille', 'Lyon', 'Paris',
'Marseille', 'Lyon', 'Paris', 'Marseille'],
'hired': [1, 0, 1, 0, 1, 1, 0, 0, 1, 1]
})
df['city_encoded'] = target_encode_kfold(df, 'city', 'hired')
print(df[['city', 'city_encoded', 'hired']])Konsep Inti Machine Learning
P6: Jelaskan tradeoff bias-variance dan bagaimana pengaruhnya terhadap pemilihan model.
Bias mengukur seberapa jauh rata-rata prediksi model dari nilai sebenarnya; variance mengukur seberapa besar prediksi berfluktuasi di berbagai dataset pelatihan. Model sederhana (regresi linear, decision tree dangkal) cenderung memiliki bias tinggi dan variance rendah — mereka underfitting secara konsisten. Model kompleks (random forest dalam, neural network besar) cenderung memiliki bias rendah namun variance tinggi — mereka overfitting pada noise. Teknik regularisasi (L1/L2, dropout, pruning) menggeser tradeoff ini. Cross-validation mengukur variance generalisasi secara empiris.
P7: Bagaimana cara kerja gradient boosting, dan apa perbedaannya dengan random forest?
Random forest membangun pohon secara paralel pada subsampel data dengan fitur yang dipilih secara acak, lalu mengagregasi prediksinya. Gradient boosting membangun pohon secara sekuensial, di mana setiap pohon memperbaiki residual dari pohon sebelumnya dengan mengikuti arah gradien negatif dari fungsi loss. XGBoost dan LightGBM menambahkan regularisasi, histogram binning, dan optimasi tingkat pohon. Secara umum, gradient boosting mencapai akurasi lebih tinggi pada data tabular tetapi lebih sensitif terhadap hyperparameter dan lebih lambat untuk dilatih dibandingkan random forest.
P8: Apa itu kebocoran data (data leakage) dan bagaimana cara mencegahnya?
Kebocoran data terjadi ketika informasi dari luar set pelatihan yang tersedia secara sah masuk ke dalam model selama training. Kebocoran temporal terjadi ketika data masa depan digunakan untuk memprediksi kejadian masa lalu. Kebocoran preprocessing terjadi ketika scaling, imputasi, atau encoding menggunakan statistik yang dihitung dari keseluruhan dataset, termasuk fold validasi. Pencegahan yang benar memerlukan pipeline yang memastikan semua langkah preprocessing hanya di-fit pada fold pelatihan.
# leakage_prevention.py
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
import numpy as np
X = np.random.randn(1000, 10)
y = (X[:, 0] + X[:, 1] > 0).astype(int)
# WRONG: fit scaler on all data, then cross-validate
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X) # leakage: test fold info in scaling
# CORRECT: pipeline ensures preprocessing fits only on training folds
pipeline = Pipeline([
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler()),
('model', GradientBoostingClassifier(n_estimators=100, random_state=42))
])
scores = cross_val_score(pipeline, X, y, cv=5, scoring='roc_auc')
print(f"AUC (no leakage): {scores.mean():.3f} +/- {scores.std():.3f}")P9: Jelaskan regularisasi L1 dan L2, serta kapan masing-masing digunakan.
Regularisasi L1 (Lasso) menambahkan jumlah nilai absolut koefisien ke fungsi loss, mendorong sparsitas — banyak koefisien menjadi tepat nol. Regularisasi L2 (Ridge) menambahkan jumlah kuadrat koefisien, mendistribusikan penalti secara merata dan jarang menghasilkan koefisien yang benar-benar nol. L1 lebih disukai saat seleksi fitur implisit diinginkan (banyak fitur yang tidak relevan). L2 lebih disukai saat semua fitur berkontribusi dan multikolinearitas menjadi masalah. Elastic Net menggabungkan keduanya.
Evaluasi dan Validasi Model
P10: Metrik apa yang digunakan untuk dataset yang tidak seimbang, dan mengapa akurasi tidak memadai?
Akurasi menyesatkan pada dataset yang tidak seimbang: model yang memprediksi kelas mayoritas untuk setiap sampel dapat mencapai akurasi 95% pada dataset 95/5 tanpa mendeteksi satu pun kasus positif. Precision-recall AUC (AUPRC) lebih informatif karena fokus pada kinerja kelas positif. ROC AUC mengukur kemampuan peringkat di semua ambang batas, tetapi dapat terlalu optimis pada ketidakseimbangan yang ekstrem. F1-score menyeimbangkan precision dan recall. Pemilihan metrik harus selaras dengan biaya bisnis dari false positive vs. false negative.
# imbalanced_metrics.py
from sklearn.metrics import (
classification_report, precision_recall_curve,
average_precision_score, roc_auc_score
)
import numpy as np
# Simulated predictions on imbalanced data
np.random.seed(42)
y_true = np.array([0]*950 + [1]*50) # 95/5 imbalance
y_scores = np.random.beta(2, 5, 1000) # predicted probabilities
y_scores[y_true == 1] += 0.3 # positive class scores slightly higher
y_scores = np.clip(y_scores, 0, 1)
y_pred = (y_scores > 0.5).astype(int)
print(classification_report(y_true, y_pred, digits=3))
print(f"ROC AUC: {roc_auc_score(y_true, y_scores):.3f}")
print(f"Average Precision (AUPRC): {average_precision_score(y_true, y_scores):.3f}")P11: Bagaimana cara melakukan validasi model yang tepat untuk data deret waktu?
Cross-validation standar dengan pengacakan tidak valid untuk data deret waktu karena memungkinkan model melihat data masa depan selama pelatihan. Time series cross-validation menggunakan ekspansi fold ke depan: fold pertama melatih pada periode awal dan memvalidasi pada periode berikutnya, setiap fold berikutnya memperluas set pelatihan. Walk-forward validation mensimulasikan deployment nyata. Gap antara set pelatihan dan validasi seringkali diperlukan untuk menghindari kebocoran dari fitur lag.
Tiga kesalahan evaluasi paling mahal: (1) melakukan scaling sebelum split, (2) memilih hyperparameter berdasarkan set test, dan (3) tidak mempertimbangkan drift distribusi antara data pelatihan dan produksi. Model yang terlihat sangat baik dalam offline evaluation seringkali mengalami penurunan kinerja signifikan saat deployment karena masalah-masalah ini.
Deep Learning dan Neural Network
P12: Jelaskan mekanisme self-attention dalam Transformer.
Self-attention memungkinkan setiap token dalam suatu urutan untuk memperhatikan semua token lainnya secara langsung, tanpa memandang jarak. Setiap token menghasilkan tiga vektor: Query (Q), Key (K), dan Value (V) melalui proyeksi linear. Skor atensi dihitung sebagai produk dot antara Q dan K, diskalakan dengan akar kuadrat dari dimensi kunci untuk mencegah gradien vanishing pada dimensi tinggi, lalu dinormalisasi dengan softmax. Bobot atensi yang dihasilkan mengagregasi vektor V. Multi-head attention menjalankan beberapa proses atensi secara paralel, menangkap hubungan yang berbeda secara bersamaan.
# self_attention.py
import torch
import torch.nn.functional as F
def self_attention(x, d_k):
"""Scaled dot-product self-attention from scratch."""
# x shape: (batch_size, seq_len, d_model)
batch_size, seq_len, d_model = x.shape
# Linear projections for Q, K, V
W_q = torch.randn(d_model, d_k) * 0.1
W_k = torch.randn(d_model, d_k) * 0.1
W_v = torch.randn(d_model, d_k) * 0.1
Q = x @ W_q # (batch, seq_len, d_k)
K = x @ W_k
V = x @ W_v
# Scaled dot-product attention
scores = Q @ K.transpose(-2, -1) / (d_k ** 0.5) # (batch, seq_len, seq_len)
weights = F.softmax(scores, dim=-1) # attention weights
output = weights @ V # (batch, seq_len, d_k)
return output, weights
# Example: 1 batch, 4 tokens, 8-dim embeddings
x = torch.randn(1, 4, 8)
out, attn = self_attention(x, d_k=8)
print(f"Output shape: {out.shape}") # (1, 4, 8)
print(f"Attention weights:\n{attn[0].detach().numpy().round(3)}")P13: Apa itu batch normalization, dan mengapa diperlukan?
Batch normalization menormalisasi aktivasi di setiap lapisan dengan mengurangi rata-rata batch dan membagi dengan simpangan baku batch, lalu menerapkan parameter yang dapat dipelajari (gamma, beta) untuk menskalakan dan menggeser. Teknik ini mengatasi covariate shift internal — pergeseran distribusi input lapisan yang terjadi selama pelatihan saat bobot lapisan sebelumnya diperbarui. Manfaatnya mencakup: memungkinkan learning rate yang lebih tinggi, mengurangi kepekaan terhadap inisialisasi bobot, dan memberikan efek regularisasi ringan. Layer normalization lebih disukai dalam Transformer karena bekerja pada dimensi fitur, bukan batch.
P14: Jelaskan perbedaan antara overfitting dan underfitting, serta teknik untuk mengatasinya.
Underfitting terjadi ketika model terlalu sederhana untuk menangkap pola dalam data — bias tinggi, variance rendah. Tandanya adalah kinerja buruk baik pada set pelatihan maupun validasi. Perbaikannya: tambah kapasitas model, kurangi regularisasi, rekayasa fitur tambahan. Overfitting terjadi ketika model menghafal noise pelatihan — bias rendah, variance tinggi. Tandanya adalah gap besar antara kinerja pelatihan dan validasi. Perbaikannya: dropout, regularisasi L1/L2, early stopping, data augmentation, mengurangi kapasitas model, atau mengumpulkan lebih banyak data.
SQL dan Manipulasi Data
P15: Tulis query untuk menemukan gaji tertinggi kedua per departemen.
Pertanyaan SQL klasik ini menguji penguasaan subquery berkorelasi, fungsi jendela, dan penanganan duplikat. Pendekatan yang paling bersih menggunakan subquery berkorelasi yang menghitung berapa banyak gaji yang berbeda lebih tinggi dari gaji saat ini dalam departemen yang sama.
-- second_highest_salary.sql
-- Approach: correlated subquery counting distinct higher salaries
SELECT d.department_name, e.employee_name, e.salary
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE (
SELECT COUNT(DISTINCT e2.salary)
FROM employees e2
WHERE e2.department_id = e.department_id
AND e2.salary > e.salary
) = 1
ORDER BY d.department_name;Alternatifnya menggunakan DENSE_RANK() dalam CTE: WHERE dense_rank = 2. Perlu diperhatikan bahwa ROW_NUMBER() tidak tepat karena gaji duplikat akan melewatkan peringkat yang dimaksud.
P16: Jelaskan perbedaan antara INNER JOIN, LEFT JOIN, dan FULL OUTER JOIN.
INNER JOIN mengembalikan hanya baris yang memiliki kecocokan di kedua tabel. LEFT JOIN mengembalikan semua baris dari tabel kiri dan baris yang cocok dari tabel kanan; ketidakcocokan menghasilkan NULL di kolom tabel kanan. RIGHT JOIN adalah kebalikannya. FULL OUTER JOIN mengembalikan semua baris dari kedua tabel, dengan NULL pada sisi yang tidak cocok. Dalam wawancara data science, LEFT JOIN paling sering dibahas karena pola analitik seperti "semua pengguna beserta pembelian mereka (jika ada)" sangat umum ditemui.
Data Science Terapan dan Desain Sistem
P17: Bagaimana cara merancang sistem rekomendasi dari awal?
Sistem rekomendasi produksi menggabungkan beberapa tahap: retrieval (mengambil ratusan kandidat dari jutaan item menggunakan embedding atau pemfilteran kolaboratif), ranking (mencetak kandidat menggunakan model yang lebih kompleks dengan sinyal kontekstual), dan re-ranking (menerapkan aturan bisnis, keberagaman, freshness). Cold start memerlukan penanganan khusus: untuk pengguna baru, gunakan rekomendasi berbasis populasi atau konten; untuk item baru, gunakan embedding berbasis konten. Metrik offline (precision@K, NDCG) harus dikalibrasi terhadap A/B test online karena korelasi keduanya seringkali lemah.
P18: Bagaimana cara mendeteksi dan menangani concept drift dalam model produksi?
Concept drift terjadi ketika hubungan statistik antara fitur dan target berubah seiring waktu. Drift data (pergeseran distribusi fitur) dapat dideteksi menggunakan uji statistik seperti Population Stability Index (PSI) atau Kolmogorov-Smirnov test pada distribusi fitur. Drift konsep (hubungan fitur-target berubah) lebih sulit dideteksi tanpa label dan memerlukan pemantauan metrik performa. Strategi mitigasi meliputi: retrain terjadwal, retrain berbasis trigger saat metrik turun di bawah ambang batas, atau model adaptif online.
P19: Jelaskan cara merancang eksperimen A/B yang valid untuk fitur machine learning.
Eksperimen A/B yang valid memerlukan: randomisasi yang tepat (pengguna ditetapkan secara acak ke varian, bukan sesi), penghitungan kekuatan statistik sebelum eksperimen (menentukan ukuran sampel minimum untuk mendeteksi efek yang bermakna secara bisnis), tidak ada kebocoran antara kelompok (tidak ada SUTVA violations), pra-registrasi metrik keberhasilan untuk menghindari p-hacking, dan durasi yang cukup untuk menangkap efek novelty. Uji AA sebelum eksperimen memverifikasi bahwa infrastruktur eksperimen berfungsi dengan benar.
P20: Bagaimana cara mengukur dampak bisnis dari model machine learning?
Terjemahan dari metrik model ke metrik bisnis memerlukan kerangka yang jelas. Pertama, tentukan nilai dari true positive dan biaya dari false positive/negative dalam satuan moneter. Kedua, bandingkan kinerja model terhadap baseline (aturan heuristik, model sebelumnya, atau keputusan manusia). Ketiga, kuantifikasi penghematan atau pendapatan tambahan dari peningkatan ketepatan keputusan. Keempat, pertimbangkan biaya deployment, latensi, dan pemeliharaan. Eksperimen online (A/B test) memberikan estimasi dampak yang paling dapat dipercaya dibandingkan kalkulasi offline.
Siap menguasai wawancara Data Science & ML Anda?
Berlatih dengan simulator interaktif, flashcards, dan tes teknis kami.
Python dan Kemahiran Pandas
P21: Jelaskan perbedaan antara map, apply, dan transform di Pandas.
Ketiga metode ini beroperasi pada level yang berbeda. map bekerja hanya pada Series dan menerapkan fungsi atau pemetaan secara elemen-per-elemen — cocok untuk substitusi nilai kategorikal. apply lebih fleksibel, bekerja pada Series maupun DataFrame, memungkinkan fungsi yang mengembalikan skalar, Series, atau DataFrame. transform digunakan setelah groupby dan mengembalikan output dengan bentuk yang sama seperti input — sangat berguna untuk menambahkan statistik tingkat grup ke setiap baris.
# pandas_operations.py
import pandas as pd
df = pd.DataFrame({
'team': ['A', 'A', 'B', 'B', 'A'],
'score': [10, 20, 30, 40, 50]
})
# map: element-wise on Series
df['team_upper'] = df['team'].map({'A': 'Alpha', 'B': 'Beta'})
# apply: arbitrary function per row
df['score_label'] = df['score'].apply(lambda x: 'high' if x > 25 else 'low')
# transform: group-level, same shape output (broadcasts back)
df['team_mean'] = df.groupby('team')['score'].transform('mean')
df['score_normalized'] = df.groupby('team')['score'].transform(
lambda x: (x - x.mean()) / x.std()
)
print(df)P22: Bagaimana cara menginterpretasikan pentingnya fitur menggunakan nilai SHAP?
Nilai SHAP (SHapley Additive exPlanations) mengalokasikan prediksi model kepada masing-masing fitur secara adil berdasarkan teori permainan kooperatif. Untuk setiap prediksi, nilai SHAP suatu fitur menunjukkan seberapa besar fitur tersebut menggeser prediksi dari nilai baseline (rata-rata prediksi). Nilai SHAP positif mendorong prediksi ke atas; nilai negatif mendorongnya ke bawah. Kepentingan fitur global dihitung sebagai rata-rata nilai absolut SHAP di seluruh dataset. SHAP bersifat model-agnostik tetapi paling efisien secara komputasi untuk model berbasis pohon (TreeSHAP).
# feature_importance_shap.py
import shap
import xgboost as xgb
from sklearn.datasets import make_classification
# Generate synthetic dataset
X, y = make_classification(n_samples=1000, n_features=10,
n_informative=5, random_state=42)
# Train XGBoost model
model = xgb.XGBClassifier(n_estimators=100, random_state=42, eval_metric='logloss')
model.fit(X, y)
# SHAP explanation
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
# Global importance: mean absolute SHAP value per feature
import numpy as np
importance = np.abs(shap_values).mean(axis=0)
for i in np.argsort(importance)[::-1]:
print(f"Feature {i}: {importance[i]:.4f}")Reduksi Dimensi dan Unsupervised Learning
P23: Kapan menggunakan PCA, t-SNE, atau UMAP untuk reduksi dimensi?
Ketiga metode ini memiliki karakteristik yang sangat berbeda dan cocok untuk kasus penggunaan yang berbeda:
| Metode | Linear | Mempertahankan Struktur Global | Kecepatan (100K titik) | Kasus Penggunaan | |--------|--------|-------------------------------|----------------------|-----------------| | PCA | Ya | Ya | Detik | Preprocessing, reduksi fitur | | t-SNE | Tidak | Tidak | Menit | Visualisasi klaster (data kecil) | | UMAP | Tidak | Sebagian | Detik | Visualisasi + preprocessing |
PCA dipilih saat interpretabilitas penting atau sebagai langkah preprocessing untuk algoritma lain. t-SNE digunakan untuk visualisasi eksploratori pada dataset kecil hingga menengah; hasilnya tidak deterministik dan tidak dapat digunakan untuk dataset baru. UMAP lebih cepat dari t-SNE, mempertahankan struktur global lebih baik, dan embedding-nya dapat diterapkan pada data baru — menjadikannya lebih cocok untuk pipeline produksi.
P24: Jelaskan perbedaan antara K-Means, DBSCAN, dan Hierarchical Clustering.
K-Means mempartisi data menjadi K klaster sferis dengan meminimasikan inersia (jumlah kuadrat jarak ke centroid). Asumsinya adalah klaster bersifat konveks dan berukuran seragam — buruk untuk klaster dengan bentuk tidak beraturan. DBSCAN mendefinisikan klaster sebagai wilayah padat yang dipisahkan oleh wilayah jarang, sehingga dapat menemukan klaster berbentuk bebas dan mengidentifikasi outlier secara alami; memerlukan pemilihan parameter epsilon dan min_samples yang cermat. Hierarchical clustering membangun dendrogram yang memungkinkan eksplorasi berbagai jumlah klaster; komputasinya mahal (O(n²)) untuk dataset besar.
Komunikasi dan Dampak Bisnis
P25: Bagaimana cara menjelaskan hasil model machine learning yang kompleks kepada pemangku kepentingan non-teknis?
Komunikasi yang efektif kepada pemangku kepentingan non-teknis memerlukan terjemahan dari terminologi teknis ke bahasa bisnis. Daripada melaporkan "AUC 0,87," lebih tepat menyatakan "model mengidentifikasi 78% pelanggan yang berisiko churn sebelum mereka pergi, dengan 15% false alarm." Visualisasi yang tepat — grafik precision-recall, confusion matrix yang diinterpretasikan dalam konteks bisnis, grafik dampak kumulatif — mempermudah pemahaman. Penting untuk mengkomunikasikan ketidakpastian dan keterbatasan model: kondisi apa yang menyebabkan model kurang dapat diandalkan, dan apa yang perlu dipantau dalam produksi.
Kerangka yang berguna: mulai dari pertanyaan bisnis (bukan dari model), tunjukkan perbandingan terhadap baseline yang mudah dipahami, kuantifikasi dampak dalam satuan yang relevan (pendapatan, waktu, biaya), dan akhiri dengan rekomendasi yang jelas serta langkah selanjutnya yang dapat diambil. Data scientist yang menonjol bukan hanya yang membangun model terbaik, melainkan yang memastikan model tersebut memberikan dampak bisnis yang nyata melalui komunikasi yang tepat dan kolaborasi lintas fungsi.
Persiapan terbaik menggabungkan tiga pendekatan: latihan soal statistik dan probabilitas tanpa kalkulator, implementasi algoritma dari nol (regresi logistik, k-means, decision tree), dan studi kasus bisnis yang meminta kandidat untuk mendefinisikan metrik, merancang pipeline, dan mengkomunikasikan tradeoff. Wawancara data science modern semakin berfokus pada penilaian, bukan hafalan.
Tag
Bagikan
Artikel terkait

Algoritma Machine Learning untuk Wawancara Teknis: Panduan Lengkap 2026
Panduan komprehensif algoritma machine learning untuk persiapan wawancara teknis: supervised learning, ensemble methods, clustering, evaluasi model, dan regularisasi dengan contoh kode Python.

Pertanyaan Wawancara Django: ORM, Middleware, dan DRF Secara Mendalam
Pertanyaan wawancara Django mencakup optimasi ORM dengan select_related dan prefetch_related, arsitektur middleware, serta performa serializer Django REST Framework, permissions, dan pola pagination.

Memahami Ownership dan Borrowing di Rust: Panduan Lengkap untuk Developer
Pelajari konsep ownership, borrowing, dan lifetime di Rust secara mendalam. Artikel ini membahas aturan kepemilikan, referensi, serta pola-pola umum yang sering muncul dalam wawancara teknis.