AYUSH~KADALI
← project index

Keystroke Analysis

COMPLETED

Behavioral-biometric user identification from typing dynamics — custom data collection, five classifier families compared, and a rule-based expert system making the final authentication call.

Python · scikit-learn · TensorFlow/Keras · Machine Learning · Biometrics

5 classifier families compared

The idea

Everyone types differently — the gap between specific letter pairs, how long keys are held, how mistakes get corrected. Keystroke dynamics treats those rhythms as a biometric: identify the person at the keyboard from how they type, not what they type.

This started as a coursework project and grew into a proper comparative study. I’m not claiming a product here; it’s an ML project done carefully end to end.

What I built

I wrote custom Python data-collection tooling to capture raw keystroke timings, then engineered features from them: digraph and trigraph latencies, key hold durations, overall typing speed, and error-correction patterns.

On top of that feature set I ran a comparative evaluation across five classifier families — decision trees, random forests, Bayesian networks, neural networks, and SVMs — using scikit-learn and TensorFlow/Keras. Rather than letting a single model’s score be the verdict, a rule-based expert-system layer sits above the classifiers and makes the final authentication decision, combining their outputs with explicit rules.

What I learned

Feature-importance analysis was the interesting part: it identifies which typing patterns actually discriminate between users, and which features just add noise. The comparison across model families mattered more than any single accuracy number — it showed where each approach breaks down on small, behavioral datasets.