-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaiengineering.html
More file actions
270 lines (252 loc) · 30.8 KB
/
Copy pathaiengineering.html
File metadata and controls
270 lines (252 loc) · 30.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="AI Engineering portfolio of Devis Saputra: featured empirical studies and reproducible machine-learning engineering work.">
<title>Devis Saputra — AI Engineering</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Source+Serif+4:opsz,wght@8..60,400;8..60,600;8..60,700&family=IBM+Plex+Sans:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
<style>
:root{--paper:#EEF0EF;--paper-raised:#F5F6F5;--ink:#1B2430;--ink-soft:#5B6660;--line:#C9CDC5;--accent:#2F5D62;--accent-soft:#DDE6E4;--accent-deep:#244A4E;--serif:"Source Serif 4",Georgia,serif;--sans:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.58}a{color:var(--accent)}h1,h2,h3{font-family:var(--serif);margin:0;line-height:1.18}
.page{display:grid;grid-template-columns:280px 1fr;max-width:1320px;margin:0 auto;min-height:100vh}
.sidebar{padding:46px 32px 38px 40px;position:sticky;top:0;align-self:start;height:100vh;display:flex;flex-direction:column;justify-content:space-between}
.sidebar-top h1{font-size:1.72rem}.tagline{margin:12px 0 0;color:var(--ink-soft);font-size:.98rem;max-width:22ch}
nav.toc{margin-top:26px}nav.toc a{display:block;padding:6px 0 6px 12px;margin-left:-12px;border-left:2px solid transparent;color:var(--ink);text-decoration:none;font-size:.9rem;font-weight:600}nav.toc a:hover{border-left-color:var(--accent);color:var(--accent)}
.sidebar-bottom{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px;row-gap:9px;font-size:.84rem;color:var(--ink-soft)}.sidebar-bottom .contact-label{grid-column:1/-1;color:var(--ink);font-weight:600}.sidebar-bottom a{display:flex;align-items:center;gap:7px;color:var(--accent);text-decoration:none;white-space:nowrap}.sidebar-bottom i{width:18px;text-align:center}.sidebar-bottom .scholar{grid-column:1/-1}
.content{padding:48px 48px 80px 34px;border-left:1px solid var(--line)}section{max-width:940px;margin-bottom:56px}.back-link{display:inline-flex;gap:8px;align-items:center;margin-bottom:25px;color:var(--ink-soft);text-decoration:none;font-size:.9rem}
.hero{margin-bottom:48px}.kicker{font-size:.78rem;text-transform:uppercase;letter-spacing:.13em;color:var(--accent);font-weight:600;margin-bottom:10px}.hero h2{font-size:clamp(2rem,3.6vw,2.8rem)}.hero .lede{margin:16px 0 0;max-width:820px;font-family:var(--serif);font-size:1.13rem;color:#303B42}
.portfolio-nav{display:grid;grid-template-columns:repeat(4,1fr);margin-top:28px;border:1px solid #D7DAD5;border-radius:7px;overflow:hidden}.portfolio-nav a{display:flex;align-items:center;justify-content:center;min-height:48px;padding:9px 8px;background:#F2F3F2;color:#222B33;text-decoration:none;text-align:center;font-size:.88rem;font-weight:600;border-right:1px solid #D7DAD5}.portfolio-nav a:last-child{border-right:none}.portfolio-nav a.active{background:var(--accent);color:#fff}
.eyebrow-rule{display:flex;align-items:center;gap:14px;margin-bottom:18px}.eyebrow-rule h2{font-size:1.45rem}.eyebrow-rule::after{content:"";flex:1;height:1px;background:var(--line)}
.contact-row{display:flex;flex-wrap:wrap;gap:10px}.contact-row a{padding:8px 13px;border:1px solid var(--line);border-radius:5px;background:var(--paper-raised);color:var(--ink);text-decoration:none}
footer{max-width:940px;margin-top:54px;padding-top:18px;border-top:1px solid var(--line);color:var(--ink-soft);font-size:.78rem}
@media(max-width:900px){.page{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:34px 24px 26px;border-bottom:1px solid var(--line);gap:26px}nav.toc{display:none}.content{padding:34px 24px 58px;border-left:none}}
@media(max-width:700px){.portfolio-nav{grid-template-columns:1fr}.portfolio-nav a{border-right:none;border-bottom:1px solid #D7DAD5}}
.project-index{display:flex;flex-wrap:wrap;gap:7px;margin-top:22px}
.project-index a{padding:5px 9px;border:1px solid var(--line);border-radius:5px;background:var(--paper-raised);text-decoration:none;font-size:.78rem;color:#39444A}
.project-index a:hover,.project-index a:focus-visible{border-color:var(--accent);color:var(--accent)}
</style>
<link rel="stylesheet" href="assets/site.css?v=20260926-layout-1">
</head>
<body class="portfolio-detail">
<div class="page">
<aside class="sidebar">
<div class="sidebar-top">
<h1>Devis Saputra</h1>
<p class="tagline">AI engineering and research portfolio built around reproducible empirical work and inspectable baselines.</p>
<nav class="toc" aria-label="AI Engineering page navigation">
<a href="index.html">← Main Portfolio</a>
<a href="#overview">Overview</a>
<a href="#research-bundles">Empirical Studies <i class="fa-brands fa-github" aria-hidden="true"></i></a>
<a href="#imbalanced_learning">Repositories</a>
<a href="#contact">Contact</a>
</nav>
</div>
<div class="sidebar-bottom" aria-label="Contact links">
<div class="contact-label">Links</div>
<a href="mailto:devis.saputra@gmail.com"><i class="fa-solid fa-envelope"></i><span>Email</span></a>
<a href="https://linkedin.com/in/devissaputra" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-linkedin"></i><span>LinkedIn</span></a>
<a href="https://www.xing.com/profile/Devis_Saputra" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-xing"></i><span>Xing</span></a>
<a href="https://github.com/devissaputra/" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i><span>GitHub</span></a>
<a href="https://orcid.org/0000-0002-7133-9410" target="_blank" rel="noopener noreferrer"><i class="ai ai-orcid"></i><span>ORCID</span></a>
<a class="scholar" href="https://scholar.google.com/citations?user=EB5_ZRMAAAAJ&hl=en&oi=ao" target="_blank" rel="noopener noreferrer"><i class="ai ai-google-scholar"></i><span>Google Scholar</span></a>
</div>
</aside>
<main class="content">
<a class="back-link" href="index.html"><i class="fa-solid fa-arrow-left"></i> Back to main portfolio</a>
<div class="portfolio-nav" aria-label="Portfolio areas">
<a href="research.html">Research</a>
<a href="learningdevelopment.html">Learning & Development</a>
<a class="active" href="aiengineering.html" aria-current="page">AI Engineering</a>
<a href="aieducation.html">AI in Education</a>
</div>
<section class="hero" id="overview">
<h2>Portfolio in AI Engineering</h2>
<p class="lede">This portfolio focuses on reliable and reproducible machine-learning systems, from model development and evaluation to calibration, robustness, interpretability, sequence modeling, and engineering under real-world constraints. The work emphasizes transparent methodology, testable code, scientific communication, and evidence that can be inspected rather than black-box demonstrations.</p>
<div class="project-index" aria-label="Page project index">
<a href="#research-bundles">Empirical Studies</a>
<a href="#imbalanced_learning">Learning from Imbalanced Data</a>
<a href="#pca_clustering">PCA & K-Means</a>
<a href="#mlp_neural_network">MLP vs Linear Baseline</a>
<a href="#cnn_image_classification">CNN Image Classification</a>
<a href="#lstm_time_series">LSTM Time Series</a>
</div>
</section>
<section class="repo-section" id="research-bundles">
<div class="eyebrow-rule bundle-heading"><h2>Empirical Studies</h2></div>
<p class="repo-section-intro">These four repositories are the professor-facing empirical packages: real external data, frozen provenance, explicit baselines, robustness checks, generated research artifacts, and paper-ready evidence chains.</p>
<article class="repo-project research-bundle" id="classification_calibration">
<header class="repo-project-heading"><div class="repo-kicker">Empirical Study · AI Engineering</div>
<h3>Probability Calibration</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/classification_calibration/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/classification_calibration/site_overview.svg?v=20260926-svg-repair" alt="Probability calibration study overview showing the UCI Bank Marketing dataset, repeated-holdout results, probability-quality metrics and validity checks"></a><figcaption>Study overview: problem, evidence, measured calibration gains, and validity checks</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/classification_calibration/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/classification_calibration/site_pipeline.svg?v=20260926-svg-repair" alt="Probability calibration experimental workflow from frozen UCI data provenance through preprocessing, calibration, repeated holdouts, sensitivity analysis and generated evidence"></a><figcaption>Frozen experimental workflow: provenance, split discipline, calibration, robustness checks, and reproducible outputs</figcaption></figure>
</div>
<div>
<div class="repo-copy">
<p>This study asks a more demanding question than whether a classifier is simply accurate: when a model assigns a probability, does that number match what actually happens? Using the UCI Bank Marketing dataset with 45,211 observations, 16 predictors, and an 11.7% positive class, the protocol compares a class-prior baseline with uncalibrated, sigmoid-calibrated, and isotonic-calibrated logistic regression across five fixed stratified holdouts. Discrimination is evaluated separately from probability quality using ROC-AUC and average precision alongside Brier score, log loss, and expected calibration error.</p>
<p>Under the frozen protocol, isotonic calibration produces the clearest probability-quality improvement: mean Brier score falls from 0.0720 to 0.0693, log loss from 0.2445 to 0.2269, and ECE-10 from 0.0311 to 0.0074, while ROC-AUC remains essentially unchanged at 0.9057 versus 0.9058. The study also varies calibration folds and ECE bin counts, removes call duration in an operational ablation because that feature is unavailable before contact, audits high-confidence errors, and reports paired bootstrap intervals. The result is a reproducible methodology benchmark rather than a claim that the model is ready for real banking decisions.</p>
</div>
<div class="repo-evidence" aria-label="Probability calibration evidence snapshot">
<div class="repo-evidence-item"><span class="repo-evidence-value">45,211</span><span class="repo-evidence-label">observations</span></div>
<div class="repo-evidence-item"><span class="repo-evidence-value">11.7%</span><span class="repo-evidence-label">positive class</span></div>
<div class="repo-evidence-item"><span class="repo-evidence-value">5</span><span class="repo-evidence-label">repeated splits</span></div>
<div class="repo-evidence-item"><span class="repo-evidence-value">0.0074</span><span class="repo-evidence-label">isotonic ECE-10</span></div>
</div>
<div class="repo-data-note"><strong>Data and provenance:</strong> UCI Bank Marketing (dataset 222), DOI 10.24432/C5K306. The runner downloads the official archive, validates the exact <code>bank-full.csv</code> SHA-256, and keeps raw source data out of the repository.</div>
<div class="repo-links"><a href="https://github.com/devissaputra/classification_calibration" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/classification_calibration/blob/main/paper/results.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-chart-line"></i> Results</a>
<a href="https://github.com/devissaputra/classification_calibration/blob/main/paper/paper.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-pen"></i> Paper</a>
<a href="https://github.com/devissaputra/classification_calibration/blob/main/DATA.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-database"></i> Data & provenance</a></div>
</div>
</div>
</article>
<article class="repo-project research-bundle" id="anomaly_detection">
<header class="repo-project-heading"><div class="repo-kicker">Empirical Study · AI Engineering</div>
<h3>Label-Blind Threshold-Aware Anomaly Detection on NAB</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/anomaly_detection/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/anomaly_detection/site_overview.svg?v=20260926-svg-repair" alt="Label-Blind Threshold-Aware Anomaly Detection on NAB: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/anomaly_detection/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/anomaly_detection/site_pipeline.svg?v=20260926-svg-repair" alt="Label-Blind Threshold-Aware Anomaly Detection on NAB: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>This study compares feature-based Isolation Forest with a transparent robust-history baseline on four real NAB streams. The primary pipeline stays label-blind during fitting and alert-budget calibration, then evaluates event detection separately so threshold tuning does not quietly leak benchmark labels into the detector.</p></div>
<div class="repo-data-note"><strong>Data source:</strong> Numenta Anomaly Benchmark (NAB), pinned benchmark revision and frozen selected streams.</div>
<div class="repo-links"><a href="https://github.com/devissaputra/anomaly_detection" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/anomaly_detection/blob/main/paper/results.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a>
<a href="https://github.com/devissaputra/anomaly_detection/blob/main/paper/paper.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-pen"></i> Paper</a>
<a href="https://github.com/devissaputra/anomaly_detection/blob/main/DATA.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-database"></i> Data source</a></div>
</div>
</div>
</article>
<article class="repo-project research-bundle" id="explainable_ai">
<header class="repo-project-heading"><div class="repo-kicker">Empirical Study · AI Engineering</div>
<h3>Explainable AI: Model Dependence and Feature-Governance Study</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/explainable_ai/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/explainable_ai/site_overview.svg?v=20260926-svg-repair" alt="Explainable AI: Model Dependence and Feature-Governance Study: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/explainable_ai/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/explainable_ai/site_pipeline.svg?v=20260926-svg-repair" alt="Explainable AI: Model Dependence and Feature-Governance Study: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>This bundle studies how global feature explanations change across model families and feature-governance choices on the Adult income benchmark. It combines held-out performance, permutation-importance stability, subgroup behavior, feature exclusion, and error analysis while keeping predictive dependence separate from causal or fairness claims.</p></div>
<div class="repo-data-note"><strong>Data source:</strong> UCI Adult / Census Income (dataset 2), DOI 10.24432/C5XW20.</div>
<div class="repo-links"><a href="https://github.com/devissaputra/explainable_ai" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/explainable_ai/blob/main/paper/results.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a>
<a href="https://github.com/devissaputra/explainable_ai/blob/main/paper/paper.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-pen"></i> Paper</a>
<a href="https://github.com/devissaputra/explainable_ai/blob/main/DATA.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-database"></i> Data source</a></div>
</div>
</div>
</article>
<article class="repo-project research-bundle" id="mini_transformers_sequences">
<header class="repo-project-heading"><div class="repo-kicker">Empirical Study · AI Engineering</div>
<h3>Transformer Forecasting on WDC-SILSO</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/mini_transformers_sequences/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/mini_transformers_sequences/site_overview.svg?v=20260926-svg-repair" alt="Transformer Forecasting on WDC-SILSO: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/mini_transformers_sequences/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/mini_transformers_sequences/site_pipeline.svg?v=20260926-svg-repair" alt="Transformer Forecasting on WDC-SILSO: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>This multi-horizon forecasting study asks whether a compact Transformer actually earns its complexity over persistence, seasonal-naive, ridge, and gradient-boosted baselines on a long scientific time series. It evaluates several forecast horizons, seed stability, context-length sensitivity, early-versus-late test behavior, and performance during high solar activity.</p></div>
<div class="repo-data-note"><strong>Data source:</strong> WDC-SILSO Version 2.0 monthly mean total sunspot number, frozen through March 2026.</div>
<div class="repo-links"><a href="https://github.com/devissaputra/mini_transformers_sequences" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/mini_transformers_sequences/blob/main/paper/results.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a>
<a href="https://github.com/devissaputra/mini_transformers_sequences/blob/main/paper/paper.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-pen"></i> Paper</a>
<a href="https://github.com/devissaputra/mini_transformers_sequences/blob/main/DATA.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-database"></i> Data source</a></div>
</div>
</div>
</article>
</section>
<section class="repo-section" id="repositories">
<div class="eyebrow-rule"><h2>Repositories</h2></div>
<p class="repo-section-intro">The remaining five repositories are compact engineering studies built around transparent comparisons, reproducible splits, and scientific visuals rather than presentation-only demos.</p>
<article class="repo-project" id="imbalanced_learning">
<header class="repo-project-heading"><div class="repo-kicker">AI Engineering Repository · 05</div>
<h3>Learning from Imbalanced Data</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/imbalanced_learning/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/imbalanced_learning/site_overview.svg?v=20260926-svg-repair" alt="Learning from Imbalanced Data: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/imbalanced_learning/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/imbalanced_learning/site_pipeline.svg?v=20260926-svg-repair" alt="Learning from Imbalanced Data: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>A controlled study of how class imbalance changes model behavior. It compares standard logistic regression, class-weighted logistic regression, and a class-weighted Random Forest, emphasizing average precision, recall, F1, and balanced accuracy instead of relying on headline accuracy.</p></div>
<div class="repo-links"><a href="https://github.com/devissaputra/imbalanced_learning" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/imbalanced_learning/blob/main/README.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a></div>
</div>
</div>
</article>
<article class="repo-project" id="pca_clustering">
<header class="repo-project-heading"><div class="repo-kicker">AI Engineering Repository · 06</div>
<h3>PCA and K-Means Clustering</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/pca_clustering/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/pca_clustering/site_overview.svg?v=20260926-svg-repair" alt="PCA and K-Means Clustering: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/pca_clustering/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/pca_clustering/site_pipeline.svg?v=20260926-svg-repair" alt="PCA and K-Means Clustering: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>An unsupervised-learning experiment that keeps model selection separate from visualization. K-means is selected in the full standardized 13-dimensional wine feature space, while PCA is used only for interpretation, with known class labels reserved for post-hoc ARI comparison.</p></div>
<div class="repo-links"><a href="https://github.com/devissaputra/pca_clustering" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/pca_clustering/blob/main/README.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a></div>
</div>
</div>
</article>
<article class="repo-project" id="mlp_neural_network">
<header class="repo-project-heading"><div class="repo-kicker">AI Engineering Repository · 07</div>
<h3>Multilayer Perceptron vs Linear Baseline on Handwritten Digits</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/mlp_neural_network/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/mlp_neural_network/site_overview.svg?v=20260926-svg-repair" alt="Multilayer Perceptron vs Linear Baseline on Handwritten Digits: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/mlp_neural_network/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/mlp_neural_network/site_pipeline.svg?v=20260926-svg-repair" alt="Multilayer Perceptron vs Linear Baseline on Handwritten Digits: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>A compact neural-network experiment built around a strong baseline. The MLP is compared with multinomial logistic regression on the same standardized handwritten-digit split, and the negative result is kept because model complexity should be justified by evidence rather than assumed.</p></div>
<div class="repo-links"><a href="https://github.com/devissaputra/mlp_neural_network" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/mlp_neural_network/blob/main/README.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a></div>
</div>
</div>
</article>
<article class="repo-project" id="cnn_image_classification">
<header class="repo-project-heading"><div class="repo-kicker">AI Engineering Repository · 08</div>
<h3>Convolutional Neural Network for Handwritten Digits</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/cnn_image_classification/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/cnn_image_classification/site_overview.svg?v=20260926-svg-repair" alt="Convolutional Neural Network for Handwritten Digits: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/cnn_image_classification/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/cnn_image_classification/site_pipeline.svg?v=20260926-svg-repair" alt="Convolutional Neural Network for Handwritten Digits: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>A PyTorch image-classification experiment that tests whether preserving 2D spatial structure improves on a flattened logistic-regression baseline. The CNN shows a modest gain on the fixed split, illustrating why architecture should match data structure without overstating the result.</p></div>
<div class="repo-links"><a href="https://github.com/devissaputra/cnn_image_classification" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/cnn_image_classification/blob/main/README.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a></div>
</div>
</div>
</article>
<article class="repo-project" id="lstm_time_series">
<header class="repo-project-heading"><div class="repo-kicker">AI Engineering Repository · 09</div>
<h3>LSTM Forecasting for Mauna Loa CO₂</h3></header>
<div class="repo-project-grid">
<div class="repo-visuals">
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/lstm_time_series/site_overview.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/lstm_time_series/site_overview.svg?v=20260926-svg-repair" alt="LSTM Forecasting for Mauna Loa CO₂: scientific system overview"></a><figcaption>Scientific problem and system overview</figcaption></figure>
<figure class="repo-visual"><a class="figure-link" href="assets/aieng/lstm_time_series/site_pipeline.svg?v=20260926-svg-repair" target="_blank" rel="noopener noreferrer" aria-label="Open figure at full size in a new tab"><img loading="lazy" src="assets/aieng/lstm_time_series/site_pipeline.svg?v=20260926-svg-repair" alt="LSTM Forecasting for Mauna Loa CO₂: scientific data pipeline"></a><figcaption>Data processing and experimental workflow</figcaption></figure>
</div>
<div>
<div class="repo-copy"><p>A leakage-aware forecasting experiment comparing persistence, ridge autoregression, and an LSTM on a chronological holdout. The LSTM loses to the simpler baselines in this setup, turning the repository into a useful demonstration of why sequence-model complexity is not automatically valuable.</p></div>
<div class="repo-links"><a href="https://github.com/devissaputra/lstm_time_series" target="_blank" rel="noopener noreferrer"><i class="fa-brands fa-github"></i> Repository</a>
<a href="https://github.com/devissaputra/lstm_time_series/blob/main/README.md" target="_blank" rel="noopener noreferrer"><i class="fa-solid fa-file-lines"></i> Report MD</a></div>
</div>
</div>
</article>
</section>
<section id="contact">
<div class="eyebrow-rule"><h2>Contact</h2></div>
<p>For research collaboration, doctoral discussions, or questions about these repositories, contact me through the links below.</p>
<div class="contact-row"><a href="mailto:devis.saputra@gmail.com">Email</a><a href="https://linkedin.com/in/devissaputra">LinkedIn</a><a href="https://github.com/devissaputra">GitHub</a></div>
</section>
<footer>© Devis Saputra · AI Engineering portfolio · Built for GitHub Pages</footer>
</main>
</div>
</body>
</html>