Data Scientist and Data Analyst with an M.S. from Boston University. I work on healthcare, quantitative finance and web-scale data — and I'd rather hand you a result that survives a follow-up question than one that looks good on a slide.
I built a readmission model. Then I checked the AUC: 0.5654.
That's barely better than a coin flip. The easy move was to report the 71% accuracy instead — which sounds respectable until you notice that predicting "nobody gets readmitted" scores higher.
So I stopped tuning the model and asked a different question: what would a hospital actually do with a prediction? That reframed everything. I built a threshold-tunable classifier a care team can dial toward high recall when a missed readmission is costly, added SHAP so clinicians can see the reasoning, and modelled the cost-benefit at each operating point.
The dataset had weak signal. The decision framework was the real deliverable. I'd rather tell you that than quote a number that falls apart in the interview.
Eleven projects. Real datasets, stated methods, and results reported the way I'd defend them in an interview — including the ones that did not work.
A fully cloud-native pipeline over 60M revision events (1,158,248 editors, 25 GB) on a 1+4 node GCP Dataproc cluster. 13 leakage-free behavioural features, selected from 40+ candidates under strict no-leakage constraints. From-scratch RDD logistic regression against an Elephas-distributed Keras DNN. Runs end to end in under two hours with no local data movement.
24 sub-period strategies across the U.S. Dollar Index and its six constituent FX pairs over 3,932 trading days, decomposing each day into a close-to-open leg and an open-to-close leg. The two move in opposite directions across the entire sample. I spent most of the project trying to break the result, because a return that large usually means the test is wrong. It broke. Newey–West passed at t = 3.68, but the Deflated Sharpe Ratio — which corrects for having searched 24 trials — came back at 0.046, and White's Reality Check at p = 0.062. What survived is the decomposition itself, and the overnight leg alone, which clears the same correction at 0.405. The paper is built around that, not the headline.
All figures from backtesting, not live trading. First-authored manuscript under review.
30,000 discharge records at a 7.17:1 imbalance, ten algorithms benchmarked with 5-fold stratified CV. The honest AUC came out at 0.5654, so the deliverable became the decision logic: a threshold a care team can tune toward recall, SHAP explanations clinicians can read, and cost-benefit modelling at each operating point.
A 9-table, 100K-order dataset modelled into a PostgreSQL star schema, with analytical SQL underneath (window functions, CTEs, cohort retention, RFM segmentation) and a Power BI semantic model with DAX measures on top. The finding that mattered to operations: late deliveries drag review scores from 4.29 to 2.57 stars.
Volumetric PET regression for Alzheimer's early screening. A MedicalNet ResNet-34 backbone with FiLM tracer conditioning after each stage, trained with mixed precision, AdamW and Huber loss. I report the test figure, not the friendlier validation one.
7,439 children and 353 features from the National Health Interview Survey, run through 36 models across 9 algorithms and 4 class-balancing strategies. XGBoost with downsampling came out ahead; the feature importances pointed at the factors worth acting on.
Run-to-failure turbofan sensor data. I isolated the genuinely degrading sensors with t-tests and ANOVA before modelling, then built regularised classifiers for failure detection and regression for remaining useful life. Only 237 of 12,640 test cycles are actually near-failure, so I quote AUC rather than the 96.5% accuracy that imbalance buys you for free.
Graph analytics on the MBTA subway network built from GTFS data, comparing Louvain, METIS and spectral clustering to find operationally meaningful communities.
13,208 observations (10,252 V2V across 7 scenarios, 2,956 V2I across 3) analysed with t-tests, one-way ANOVA, chi-square with Cramér's V and Tukey HSD, then multiple regression with a polynomial term to adjusted R² 0.8689. Scenario configuration dominated signal quality — the opposite of the intuitive answer.
U-Net and DeepLabV3+ (ResNet-50 encoder, Dice loss, IoU) trained in PyTorch on 6,723 aerial images from the Massachusetts Roads and DeepGlobe benchmarks. Roads are a hard segmentation target — they share almost every visual feature with rivers and rail, and they are a thin minority class. The answer to the question was no: the models did not transfer, because every sensor writes its own raster metadata and a model trained at one resolution cannot read another.
Supervised by Dr. Jai G. Singla, Space Applications Centre, ISRO. The cross-dataset generalization gap has since become a published research line in that group.
B.Tech thesis. Standard super-resolution assumes you know how the image was degraded; real low-resolution images do not come with that information. Rather than training one model to reverse one known kernel, I trained initial parameters that adapt fast to whatever degradation a new image turns out to have — first-order MAML to keep second-derivative cost out of the meta-optimization, and MZSR for zero-shot adaptation at inference from a single image.
Applying SHARP-MAML to MRDA did not produce considerable gains. I reported that rather than dropping the branch.
Two published, one accepted, one under review. I keep those categories separate on purpose.
Everything here appears in a project or a role on this page — nothing listed that I couldn't be questioned on.
I'm looking for full-time Data Scientist, Data Analyst and BI Analyst roles — healthcare and fintech especially. If you have a messy dataset and a decision riding on it, that's the conversation I want.