Project Case Studies

A closer look at select projects

Case-study writeups for the work worth walking through in more depth — problem, approach, iteration, and results.

Work in progress. Overview, Approach, and Results below are filled in from your resume. Problem framing, Lessons/Takeaways, and result visuals are still marked as pending — fill those in from Claude Code or your own notes.

KSTAR · Seoul National University

KSTAR Plasma Density Forecasting

An end-to-end forecasting pipeline for KSTAR tokamak plasma density, built during a research internship at Seoul National University (May–Aug 2026).

Machine LearningPyTorchTime SeriesResearch Intern, SNU

Built an end-to-end forecasting pipeline for 157,000+ KSTAR tokamak sensor files across 1,100+ plasma shots — covering extraction, shot-level splitting, normalization, modeling, and long-horizon evaluation. Diagnosed a state-reset flaw in a windowed LSTM baseline and developed a stateful model that preserves memory during continuous autoregressive rollout.

Note: specific framing of what made plasma density forecasting difficult (e.g. shot-to-shot variability, sensor noise, horizon length) — to be filled in later.

157,000+ sensor files, 1,100+ plasma shots ↓ Extraction & shot-level splitting ↓ Normalization ↓ Stateful LSTM (fixes state-reset flaw in windowed baseline) ↓ Autoregressive Rollout ↓ Long-horizon Evaluation
Illustrative Example

Synthetic rollout, shown for demonstration only — no real KSTAR shot data or model outputs are displayed here. Click through to see why the windowed baseline breaks down, and how a stateful model and ensemble fix it.

Step 200 (window boundary): hidden state reset to zero
Predicted density: 1.02 → 0.61 (discontinuity)

The windowed baseline re-initializes its hidden state at every window boundary, discarding everything the model had inferred about the shot so far — this is the state-reset flaw the diagnosis targeted.

Step 200 (window boundary): hidden state carried forward
Predicted density: 1.02 → 1.00 (continuous)

The stateful model keeps its hidden state alive across the boundary, so autoregressive rollout continues from what it already learned about this shot instead of restarting blind.

True density at step 400: 1.00 (normalized)
Model 1 prediction
0.94
Model 2 prediction
1.05
Model 3 prediction
0.98

Five independently trained stateful LSTMs each drift slightly differently over a long autoregressive rollout — averaging their predictions cancels out uncorrelated error.


Average across 5 independently trained models
Synthetic Output — Example Only
Ensemble prediction: 0.99 (true density: 1.00)
Effect: per-model variance is reduced, driving the +13% relative R² gain over the best single model.
Windowed LSTM baseline — diagnosed state-reset flaw ↓ Stateful LSTM (preserves memory across rollout) ↓ Width/depth/parameter-matched ablations (LSTM vs. MLP) ↓ Finding: forecast ceiling is primarily data-limited once capacity is controlled ↓ Ensemble of 5 independently trained stateful LSTMs
0.746
Ensemble R² @ 100-step forecast horizon
+13%
Relative gain over best single model
5
Independently trained LSTMs ensembled
[ one or two result plots go here ]

Note: personal reflection (what worked, what didn't, what you'd try next) — to be filled in later.

Python · PyTorch · NumPy · Pandas

KAIST · Transportation Risk Mapping

Multi-Layer Transportation Risk Mapping with LLM-Based Explanation

A two-stage spatial ML pipeline for intersection-level crash-risk prediction, paired with a retrieval-grounded explanation layer — developed with KAIST and Texas A&M University (Jun–Jul 2026).

Spatial MLRAGTreeSHAPResearcher, KAIST

Co-developed a two-stage spatial ML pipeline with Texas A&M University for intersection-level crash-risk prediction, then built a retrieval-grounded explanation layer on top so predictions come with human-readable, evidence-based justifications rather than opaque scores. Co-first author on the resulting manuscript, submitted to the Transportation Research Board (TRB) in August 2026.

Note: specific framing of the crash-risk prediction task and why it was difficult — to be filled in later.

Intersection-level spatial data ↓ Two-stage spatial ML pipeline (crash-risk prediction) ↓ TreeSHAP + standardized-coefficient attribution ↓ Retrieval-grounded explanation layer (deterministic applicability rules over the FHWA Crash Modification Factors Clearinghouse) ↓ Human-readable risk explanation, separated from countermeasure-applicability decisions
Illustrative Example

Synthetic intersection, shown for demonstration only — no real Houston/College Station data, model scores, or CMF entries are displayed here. Click through to see how a risk score becomes a grounded, human-readable explanation.

Intersection: Main St & 9th Ave (example)
Stage-1 output: Predicted in top decile for crash risk

The two-stage pipeline flags this intersection as high-risk, but on its own that score is opaque — it doesn't say why.

Intersection: Main St & 9th Ave (example)
Left-turn volume
+0.31
Nighttime traffic share
+0.22
No protected left-turn phase
+0.18

TreeSHAP and standardized-coefficient attribution rank which features drove the score up — this is where "high risk" starts turning into "high risk because of X."

Top attributed factor: No protected left-turn phase
CMF #: protected left-turn phase
Applicable
CMF #: left-turn lane extension
Applicable
CMF #: roundabout conversion
Not applicable

Deterministic applicability rules query the FHWA Crash Modification Factors Clearinghouse for countermeasures that match this factor and this intersection's geometry — replacing an earlier, LLM-judged version of this step that produced inconsistent recommendations.


Compose Explanation
Synthetic Output — Example Only
Risk explanation: Elevated risk is most associated with left-turn conflicts, driven by high left-turn volume and the absence of a protected left-turn phase.
Applicable countermeasures: Protected left-turn phase; left-turn lane extension.
Earlier design: LLM-judged explanations — produced inconsistent recommendations ↓ Replaced with deterministic, retrieval-grounded applicability rules ↓ Blind review: 30 case studies × 2 conditions = 60 outputs, 2 independent reviewers, 6-item rubric
7.1×
Best reviewer failure-rate reduction from retrieval-grounded explanations
1.17→0.20
Mean failures, Reviewer 1 (5.9× reduction)
3.07→0.43
Mean failures, Reviewer 2 (7.1× reduction)
κ=1.00
Cohen's κ on objectively checkable items

Crash-risk prediction (supporting result — the pipeline this explanation layer sits on top of):

50.61%
Crashes captured, top 10% Houston intersections (vs. 50.90% benchmark)
46.78%
Transfer to College Station, no retraining
[ risk map / screenshot goes here ]

Note: personal reflection (what worked, what didn't, what you'd try next) — to be filled in later.

Python · OpenAI API · RAG / retrieval grounding · TreeSHAP · Pandas

KNUE · LLM Research

LLM Evaluation of K–12 Science Classroom Dialogue

Testing retrieval and prompting strategies for reliable LLM evaluation of K–12 science classroom dialogue — LLM Researcher, Korea National University of Education (Jan–May 2026, remote).

LLM EvaluationRetrievalPrompt EngineeringNLP

Evaluated LLM-based methods for analyzing K–12 science classroom dialogue at the Korea National University of Education. The system scored individual utterances on a 1–5 scale with justification and classified dialogue into 20 instructional themes. I systematically tested retrieval-based demonstration selection, contextual augmentation, and reasoning strategies to understand how prompt construction and example selection affected model behavior.

9,262 training examples · 1,195 test examples · 20 themes

Classroom utterances are often short and context-dependent — individual responses can be ambiguous without the surrounding dialogue. The rating distribution was also highly imbalanced (rating 1 ≈ 0.4%, rating 2 ≈ 3.0%, rating 3 ≈ 85.5%, rating 4 ≈ 10.7%, rating 5 ≈ 0.4%), so naive few-shot demonstration selection risked overrepresenting the dominant class. Structured educational evaluation requires consistency, not just fluent-sounding output.

[ rating-distribution bar chart goes here ]
Classroom utterance ↓ Surrounding dialogue context (previous / next utterances) ↓ Embedding retrieval (multilingual-e5-base) ↓ Rating-stratified demonstration selection ↓ Prompt construction ↓ LLM evaluation ↓ 1–5 rating + justification, and/or theme classification

Semantic retrieval used multilingual-e5-base embeddings to find relevant demonstrations. Rating-stratified demonstration banks kept example selection from being dominated by the majority score. Contextual augmentation tested previous and next dialogue turns to disambiguate short utterances. Prompting/reasoning strategies were evaluated rather than assumed to help.

Illustrative Example

Synthetic dialogue, shown for demonstration only — no real classroom data, ratings, or model outputs are displayed here. Click through to see how each part of the pipeline changes what the model is shown.

"They move faster."

Limited information: the statement is difficult to evaluate without knowing what the student is responding to.

Teacher: "What happens to particles when temperature increases?"
Student: "They move faster."
Teacher: "Why do you think that happens?"

With surrounding turns, the response is now interpretable as an answer about particle motion — this is why contextual augmentation was tested.

Teacher: "What happens to particles when temperature increases?"
Student: "They move faster."
Teacher: "Why do you think that happens?"
Similar classroom response
Rating 3
Another retrieved response
Rating 4
Another retrieved response
Rating 2

Embedding retrieval (multilingual-e5-base) finds semantically similar labeled examples; rating-stratified selection keeps this set from skewing toward the majority rating.


Construct Prompt → LLM Evaluation
Synthetic Output — Example Only
Example rating: 4 / 5
Justification: Response correctly identifies increased particle motion, though it doesn't yet explain the underlying cause.
Theme: Particle motion & temperature
Baseline prompting ↓ Few-shot demonstrations ↓ Semantic demonstration retrieval (multilingual-e5-base) ↓ Rating-stratified retrieval ↓ Previous / next dialogue context augmentation ↓ Reasoning / justification experiments ↓ Cross-validation and error analysis

Research questions tested: does semantic similarity improve demonstration selection over fixed or naive examples? Does rating-stratified retrieval improve representation of rare scores? Does surrounding dialogue improve interpretation of ambiguous utterances? Does additional reasoning improve the final rating? Which strategies improve reliability, and which introduce new failure modes?

The experiments were most useful for identifying how retrieval, context, and prompt construction changed model behavior, and where those approaches still failed under the rating task.

Demonstration selection mattered

Semantic and rating-aware demonstration selection provided a more controlled way to construct few-shot prompts than relying on naive or fixed example selection.

Context could resolve ambiguity

Previous and next utterances provided useful information for short responses that were difficult to interpret in isolation, while also introducing a tradeoff between additional context and prompt complexity.

Reasoning was something to test, not assume

Reasoning and justification strategies were evaluated experimentally rather than treated as inherently beneficial, helping identify where additional reasoning changed or failed to improve final judgments.

Evaluation exposed difficult failure modes

Cross-validation and error analysis showed that reliable minority-class prediction remained difficult, highlighting limitations of LLM-based scoring under heavily imbalanced educational data.

Evaluation
  • 5-fold CV accuracy: 0.5449 ± 0.0064
  • Macro-F1: ≈ 0.20

Included here for transparency as part of the evaluation, not as the main accomplishment of the project — minority-class prediction remained difficult under this level of class imbalance.

[ retrieval pipeline diagram, and/or a target-only vs. context-augmented example, go here ]

Python · OpenAI API · multilingual-e5-base · Embedding Retrieval · NLP · Pandas · scikit-learn