
IAT 461 / 882 · Data Science for Human-Centered Systems · Summer 2026 · Alireza Karduni
productivity score from doomscrolling — a numberconverted_to_paid is 1 or 0, or True / False
trial_hours_used on the x-axisconverted_to_paid on the y-axis — only two possible heights

\[ P(\text{converted}) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 \cdot \text{trial\_hours\_used})}} \]







Low log-likelihood — this curve is frequently surprised
Better — but still leaves several users unexplained

The odds ratio is just one odds divided by another — here, heavy users have 16× the odds of converting that light users do.



converted_to_paid across the 300 users — same outcomes, randomly reassigned

trial_hours_used alone got us pretty farpromo_emails_opened — does it add anything?

Same 50 users, two different boundaries. The complicated one scores higher on this data — for the wrong reasons.

trial_hours_used barely moved from the single-predictor fitpromo_emails_opened is not significant — p = 0.157promo_emails_opened isn’t adding real predictive information once usage is already in the modelOne more hour of usage is worth a bigger jump in odds for heavy promo-email users than for light ones. That difference is the interaction.






Every possible threshold is a point in this space. Trace through all of them, and you get a curve.

C in sklearn’s LogisticRegression is the inverse of regularization strength — smaller C means more regularization
sklearn defaults to softmax (multinomial) for LogisticRegression when there are more than two classesIAT 461 · Data Science for Human-Centered Systems · Summer 2026