<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Machine-Learning on The Standard Error</title><link>https://jongha-jeon-dev.github.io/standarderror/tags/machine-learning/</link><description>Recent content in Machine-Learning on The Standard Error</description><generator>Hugo -- 0.123.7</generator><language>en-gb</language><lastBuildDate>Wed, 14 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jongha-jeon-dev.github.io/standarderror/tags/machine-learning/index.xml" rel="self" type="application/rss+xml"/><item><title>ML 1: Your Test Score Has an Error Bar, and It Is Wider Than Your Gain</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-1-error-bar/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-1-error-bar/</guid><description>A test accuracy is a proportion measured on a finite sample. On 360 test digits its error bar is wider than the gap between the top two of three good classifiers, and repeating the split does not measure what it seems to.</description></item><item><title>School Maths 1: The Only Difference Between These Two Models Is the Order of the Lines</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/school-maths-1-shortcut/</link><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/school-maths-1-shortcut/</guid><description>One of them adds. The other reads the answer off the line above and reverses it, including when that line is wrong. Their held-out losses differ by less than a tenth of a nat, and the leaky one&amp;#39;s is *lower*.</description></item><item><title>Coverage 1: 90% Coverage Is a Promise About Averages, Not About You</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-1-marginal/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-1-marginal/</guid><description>Conformal prediction&amp;#39;s guarantee is exact, distribution-free and finite-sample, and it is an average over the test distribution. Conditioned on the model&amp;#39;s own confidence it runs from 82% to 95% - and then it turns out that the unevenness is the score&amp;#39;s fault, not the method&amp;#39;s.</description></item><item><title>Gradients 1: Backprop Is the Chain Rule, and the Chain Rule Has Hypotheses</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-1-kinks/</link><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-1-kinks/</guid><description>Autodiff returns a float at every point where the derivative does not exist, and the float is a choice. The choices disagree inside one library, which makes differentiation a function of the expression rather than of the function - and then almost none of it turns out to happen in a real transformer.</description></item><item><title>Topology 1: H0 Is Single-Linkage Clustering, Bit for Bit</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/topology-1-h0-single-linkage/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/topology-1-h0-single-linkage/</guid><description>The 0-dimensional persistent homology of a Rips filtration returns the same floats as scipy&amp;#39;s single-linkage dendrogram — so the barcode is thirty lines of union-find, and it inherits chaining: three points strung between two clusters take the two-cluster signal from 6.70 to 1.00.</description></item><item><title>Numerical Analysis 1: Your Learning Rate Is a Step Size</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/numerical-analysis-1-step-size/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/numerical-analysis-1-step-size/</guid><description>Gradient descent is forward Euler on the gradient flow, so the learning rate is a discretisation step with a stability limit — exactly 2/λ_max on a quadratic, and on a network 2.04 times larger than that formula says, because the curvature moves to meet whatever step you chose.</description></item><item><title>ML 2: Cross-Validation Estimates the Error of a Model You Did Not Train</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-2-cv-target/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-2-cv-target/</guid><description>K-fold CV is described as estimating how well your model will do. Where that is known exactly, the estimate is uncorrelated with it. What CV estimates is how models like yours do on average.</description></item><item><title>Coverage 2: Your Calibration Error Is Mostly Your Bin Count</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-2-bins/</link><pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-2-bins/</guid><description>Expected calibration error has a floor that a perfectly calibrated model also hits. On a thousand predictions most of a real model&amp;#39;s ECE is that floor - and the fix that removes it makes the number noisier, not truer.</description></item><item><title>Gradients 2: A Confident Attention Head Passes Almost No Gradient</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-2-saturation/</link><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-2-saturation/</guid><description>The softmax Jacobian&amp;#39;s norm is fixed within a factor of two by its largest probability alone, no matter how many positions it has. So one head of this model has committed hard enough that the gradient which could change its mind is gone - and it is the head the model cannot do without.</description></item><item><title>Topology 2: A Barcode's Numbers Mean Nothing on Their Own</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/topology-2-barcode-numbers/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/topology-2-barcode-numbers/</guid><description>This episode was written to say that a barcode loses its dynamic range in high dimensions and the display therefore fails. The range does collapse, by a factor of 62 — and the summary becomes more informative, because concentration tightens the null far faster than it shrinks the signal.</description></item><item><title>Numerical Analysis 2: A Gradient Check Is a Finite Difference</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/numerical-analysis-2-gradient-check/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/numerical-analysis-2-gradient-check/</guid><description>The error of a finite difference is a U in the step size, so a smaller step is not a safer one — and the step decides what your gradient check can see, by eight orders of magnitude in float64 and nine more once you change the precision. In bfloat16 a gradient 17% wrong passes at every step size.</description></item><item><title>ML 3: Not Every Leak Leaks, and the Ones That Do Can Be Measured</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-3-leakage/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-3-leakage/</guid><description>&amp;#39;Fit every preprocessing step inside the folds&amp;#39; is right, and taught as if every violation were equally bad. Measured, seven of them range from nothing to a third of the accuracy scale.</description></item><item><title>Coverage 3: Temperature Scaling Cannot Change What You Predict</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-3-temperature/</link><pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-3-temperature/</guid><description>Dividing every logit by the same number cannot change a single answer. It can change which answers you decline to give - a little if you abstain on max probability, a lot if you abstain on entropy, and not at all on margin.</description></item><item><title>Gradients 3: LayerNorm Deletes Exactly Two Directions of Your Gradient</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-3-layernorm/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-3-layernorm/</guid><description>Its Jacobian has rank exactly d minus 2, and the two missing directions are the invariances the layer was built to have. Then the residual connection restores the rank everywhere except the last norm, where it becomes an exact invariance of the entire network.</description></item><item><title>Coverage 4: Overconfidence Arrives Before the Model Stops Improving</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-4-training/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-4-training/</guid><description>The syllabus said overconfidence would arrive when validation loss stopped improving. Three training runs with checkpoints say it arrives much earlier, and only on text the model has not seen.</description></item><item><title>ML 4: A Learning Curve Fitted Early Promises More Than More Data Delivers</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-4-learning-curves/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-4-learning-curves/</guid><description>Fit a power law to a pilot study&amp;#39;s errors and it tells you what more data will buy. Checked against what more data did buy, it was optimistic every time, sometimes past the Bayes error.</description></item><item><title>Gradients 4: You Cannot Differentiate Through a Sampled Token</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-4-sampling/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-4-sampling/</guid><description>A sampled token is a step function of its logits, so the derivative is zero almost everywhere and undefined elsewhere. On a decision small enough to enumerate, the three things people return instead can be compared against the gradient that does exist.</description></item><item><title>Coverage 5: The Split You Chose Is Hiding How Variable Your Coverage Is</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-5-split/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/coverage-5-split/</guid><description>Episode 1 promised an error bar wider than exchangeability allows. Most of that was my formula. What is left appears only when you split the way a deployment does.</description></item><item><title>ML 5: Resampling Moves the Threshold and Breaks a Logistic Model's Probabilities</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-5-imbalance/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-5-imbalance/</guid><description>&amp;#39;Balance the classes before training&amp;#39; is the first fix taught for a rare positive class. Measured, it never improved the ranking, multiplied a logistic model&amp;#39;s probabilities tenfold, and did nothing to its decisions that a threshold does not. Boosted trees lost ranking and, with some methods, gained calibration.</description></item><item><title>Gradients 5: The Gradient in Embedding Space Does Not Point at a Token</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-5-embeddings/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/gradients-5-embeddings/</guid><description>The embedding table is 65 near-orthogonal points on a sphere, so there is no local neighbourhood and a descent step leaves you nearest to the token you started from. The same gradient, asked to rank five candidates instead of to point, recovers almost all of the available gain.</description></item><item><title>ML 6: On Separable Data, Your Logistic Coefficients Are Your Stopping Rule</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-6-separable/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-6-separable/</guid><description>Logistic regression is taught as finding the maximum-likelihood coefficients. When a hyperplane separates the classes there is no maximum, and what comes back is decided by when the optimiser stopped.</description></item><item><title>ML 7: Change a Feature's Units and the Lasso Changes Its Mind</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-7-units/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-7-units/</guid><description>A penalty strength is taught as a property of the model. A lasso penalty is a price per unit of coefficient, so a feature&amp;#39;s units decide what it pays - and whether it stays.</description></item><item><title>ML 8: Cross-Validated Lasso Is Tuned to Predict, Not to Select</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-8-selection/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-8-selection/</guid><description>The lasso is used to find the features that matter. Tuned by cross-validation it keeps pure noise, cannot tell a feature from a correlated stand-in, and on real data keeps features whose sign it cannot decide.</description></item><item><title>ML 9: The Bias–Variance U Belongs to a Knob, Not to Complexity</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-9-bias-variance/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-9-bias-variance/</guid><description>Test error is said to be U-shaped in model complexity. Computed exactly, it is for the number of neighbours and is not for the number of trees: one knob trades bias for variance, the other only averages.</description></item><item><title>ML 10: The Second Descent Is Real, and a Ridge Penalty Makes It Unnecessary</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-10-double-descent/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-10-double-descent/</guid><description>Past the point where a model fits its training data exactly, test error falls again. Measured on random features, the fall is real, never reaches the best small model, and disappears as a reason once the fit is penalised.</description></item><item><title>ML 11: Resample the Rows and the Tree Tells a Different Story</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-11-tree-stability/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-11-tree-stability/</guid><description>A decision tree is valued because it can be read. Refit on bootstrap resamples of the same data, its accuracy holds still and almost everything a reader would read off it moves.</description></item><item><title>ML 12: Impurity Importance Rewards Features With Many Places to Split</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-12-impurity/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-12-impurity/</guid><description>A forest&amp;#39;s default feature importance is computed on the data it was fitted to. On a design where the answer is known, it never ranks the only useful feature first, and ranks it last in 19 of 20 datasets.</description></item><item><title>ML 13: Out-of-Bag Error Is Free, Pessimistic When Small and Blind to Copies</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-13-oob/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-13-oob/</guid><description>A random forest estimates its own test error from the rows each tree did not see. With enough trees that is as good as cross-validation, for a sixth of the work. With few trees, or rows that are not independent, it is not.</description></item><item><title>ML 14: Boosting Overfits Its Probabilities Long Before Its Accuracy</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-14-boosting/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-14-boosting/</guid><description>Whether boosting overfits depends on what you measure. Over 2,000 rounds its test error never turns up after the first few dozen; its test log loss turns after a few dozen, and below a learning rate of 0.1 shrinkage only postpones the turn.</description></item><item><title>ML 15: A Forest Cannot Predict Beyond the Largest Value It Has Seen</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-15-extrapolation/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-15-extrapolation/</guid><description>Tree ensembles are said to approximate any function. Inside the training range they do; outside it their predictions go flat, below the largest label they saw, and the best single model becomes the worst.</description></item><item><title>ML 16: Permutation Importance Measures the Model, Not What the Data Need</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-16-permutation/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-16-permutation/</guid><description>Shuffle a column and see how much worse the model does: it is the importance episode 12 recommended. It answers a narrower question than it seems to, on rows the shuffle invented.</description></item><item><title>ML 17: Partial Dependence Asks the Model About Rows That Do Not Exist</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-17-pdp/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-17-pdp/</guid><description>A partial dependence plot is read as a feature&amp;#39;s effect. With correlated inputs it is an average over combinations that never occur, and on a simulation with a known effect a forest&amp;#39;s shows about a third of it.</description></item><item><title>ML 18: A SHAP Value Is an Answer to "Compared With What?"</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-18-shapley/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-18-shapley/</guid><description>Shapley values split a prediction among its features fairly and uniquely — relative to a reference that the theory leaves to you. Computed exactly, the choice changes the story for most predictions.</description></item><item><title>ML 19: A Planted Shortcut Wins the Test Set and Loses Everywhere Else</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-19-shortcut/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-19-shortcut/</guid><description>The model with the better test score is usually taken to have learned the task better. Plant one telltale pixel in the digits and the better score belongs to the model that learned the pixel.</description></item><item><title>ML 20: Same Accuracy, Different Answers</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-20-rashomon/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-20-rashomon/</guid><description>Two models with the same test accuracy are usually treated as interchangeable. On a hard task, networks that differ only in their seed give different answers on a fifth of the rows.</description></item><item><title>ML 21: Initialisation Must Break Symmetry, at the Right Scale</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-21-init-scale/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-21-init-scale/</guid><description>Equal initial weights never become different, so they have to be random. In a deep network, random at the wrong scale fails just as completely.</description></item><item><title>ML 22: Learning Rate and Batch Size Are One Knob, Until the Rate Hits a Wall</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-22-lr-batch/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-22-lr-batch/</guid><description>With plain SGD and a fixed number of examples, multiplying the batch size and the learning rate by the same factor gives the same training run, until the learning rate reaches the point where training fails.</description></item><item><title>ML 23: Adam Is a Little Faster and No Better</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-23-adam-sgd/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-23-adam-sgd/</guid><description>Tuned on validation data and run over twenty splits, Adam and SGD with momentum reach the same test accuracy. Adam&amp;#39;s speed is real but small, and belongs to its learning rate.</description></item><item><title>ML 24: Batch Normalisation Normalises the Batch, Not the Example</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-24-batchnorm/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-24-batchnorm/</guid><description>In training mode, a normalised network&amp;#39;s answer for one digit depends on which other digits share its batch. That is fine in large, mixed batches and breaks in small or uniform ones.</description></item><item><title>ML 25: Weight Scaling Keeps Dropout's Answers, Not Its Doubts</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-25-dropout/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-25-dropout/</guid><description>Switching dropout off and scaling the weights gives almost the same labels as averaging many dropout masks. It does not give the same probabilities.</description></item><item><title>ML 26: The Network That Memorises Noise Learns the Signal First</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-26-random-labels/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-26-random-labels/</guid><description>A network that reaches 97% on test digits also fits random labels perfectly. Capacity cannot explain the first; the order in which it learns does.</description></item><item><title>ML 27: Perfect Training Accuracy Was Not the End of Learning</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-27-grokking/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-27-grokking/</guid><description>A network trained on part of a modular-addition table memorises it at once, scores nothing on the rest, and finds the rule thousands of steps later, while its training accuracy sits at 100% the whole time.</description></item><item><title>ML 28: Augmentation Adds an Assumption, Not Data</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-28-augmentation/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-28-augmentation/</guid><description>Shifted copies of 150 digits made a network worse on the test set and far better on shifted digits. Six hundred more real digits did the reverse.</description></item><item><title>ML 29: Covariate Shift Charges for Misspecification</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-29-covariate-shift/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-29-covariate-shift/</guid><description>When only the inputs move, the best possible accuracy need not change. Whether a model&amp;#39;s accuracy does depends on how wrong the model was all along.</description></item><item><title>ML 30: A Power Law Fitted on Small Models Cannot See the Floor</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-30-scaling/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-30-scaling/</guid><description>Eight character transformers, one budget of data and steps. The law fitted to the five smallest predicts the next size almost exactly and the largest too optimistically.</description></item><item><title>ML 31: Principal Components Keep Variance, Not Relevance</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-31-pca/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-31-pca/</guid><description>PCA keeps the directions along which the inputs vary most. On real data that can be a choice of units, and the direction that predicts the target can come fourth.</description></item><item><title>ML 32: k-Means Finds k Pieces Whether or Not There Are Clusters</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-32-kmeans/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-32-kmeans/</guid><description>k-means always returns k convex pieces of similar spread, and the silhouette score rates the pieces. On uniform noise it rates them higher than it rates the digits.</description></item><item><title>ML 33: The Curse of Dimensionality Counts the Dimensions the Data Use</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-33-dimensions/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-33-dimensions/</guid><description>Distances concentrate in high dimensions, for points that fill them. The digits&amp;#39; 64 pixels behave like 8 uniform dimensions, and nearest neighbours work on them until noise columns are added.</description></item><item><title>ML 34: Recalibration Fixes the Average, Given Enough Rows</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-34-calibration/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-34-calibration/</guid><description>Platt scaling and isotonic regression learn a correction from held-out rows. With few rows they can make a model worse, and with many they fix the average, not each group.</description></item><item><title>ML 35: The Best Cross-Validated Score Is the Search's Best Luck</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-35-tuning/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-35-tuning/</guid><description>Cross-validation estimates one model fairly. The best of many cross-validated scores is the maximum of noisy estimates, and it overstates the model it picks.</description></item><item><title>ML 36: Shuffling a Time Series Is Safe Until the Errors Remember</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-36-time-series/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-36-time-series/</guid><description>The rule against shuffled folds is right for a reason that is narrower than time: something the model cannot see changing slowly. Forward splitting is not the cure it is sold as.</description></item><item><title>ML 37: Rows From the Same People Are Not New Data</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-37-subjects/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-37-subjects/</guid><description>When subjects contribute many rows each, row-level cross-validation measures how well the model knows the people it has met, and extra rows from the same people are worth little.</description></item><item><title>ML 38: A Missing Value Is Information, Until the Process Behind It Changes</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-38-missing/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-38-missing/</guid><description>Imputation treats a gap as a lost number. Sometimes the gap is a record of a decision, worth more than the number, and the model that uses it depends on the decision staying the same.</description></item><item><title>ML 39: The Applicants You Refused Are the Data You Do Not Have</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-39-selective-labels/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-39-selective-labels/</guid><description>Outcomes are recorded only for the cases someone approved. Whether a model trained on them can judge the rest depends on what the approver knew that the model does not.</description></item><item><title>ML 40: Target Encoding Fitted on the Training Rows Still Leaks, Into Training</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-40-target-encoding/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-40-target-encoding/</guid><description>Fitting an encoding only on training rows protects the test set. It does not protect the training rows from their own labels, and with many rare levels that is enough to wreck the model.</description></item><item><title>ML 41: An Average of Models Beats the Average Model, Not the Best One</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-41-averaging/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-41-averaging/</guid><description>Averaging carries a guarantee, and it is weaker than the one usually quoted. When one member is certain about everything, averaging probabilities hands it every decision.</description></item><item><title>ML 42: Stacking Learns to Pick the Best Model, Given Honest Predictions</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-42-stacking/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-42-stacking/</guid><description>A meta-model trusts whichever base model looks best on the predictions it is fitted to. On in-sample predictions that is the best memoriser; on honest ones it is usually just the best model.</description></item><item><title>ML 43: Naive Bayes Counts Correlated Evidence Twice, and Only Its Probabilities Notice</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-43-naive-bayes/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-43-naive-bayes/</guid><description>The independence assumption is wrong and naive Bayes still classifies well, as the textbooks say. What the assumption breaks is the one thing the model&amp;#39;s name promises: its probabilities.</description></item><item><title>ML 44: Cross-Validation Folds Are Not Independent Samples, and the t-Test Assumes They Are</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-44-model-tests/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-44-model-tests/</guid><description>Two algorithms built to be exactly equal, compared 400 times. The most common test found a difference one time in seven, the most thorough-looking one more often than not, and three others were honest.</description></item><item><title>ML 45: A Test Set Answers Honestly Only the First Time</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-45-holdout/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-45-holdout/</guid><description>A test set is not spent by training on it. It is spent by asking it questions whose answers change what you do next, and it can be spent without touching a single weight.</description></item><item><title>ML 46: The Right Threshold Is a Cost Ratio, If the Probabilities Are Calibrated</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-46-threshold/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-46-threshold/</guid><description>0.5 is the right threshold only when both mistakes cost the same. The threshold that matches the costs needs calibrated probabilities, and even the perfect model may save little.</description></item><item><title>ML 47: The Model With the Best AUC Was Never the Best When Misses Cost Ten Times More</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-47-auc-decisions/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-47-auc-decisions/</guid><description>AUC summarises a ranking over every threshold at once. A decision uses one threshold, and the model that ranks best on average is not always the one that ranks best there.</description></item><item><title>ML 48: What a Model Relies On Is Not What to Change</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-48-intervention/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-48-intervention/</guid><description>Importance and what-if analyses describe the model. In a system with a common cause and a downstream signal, the feature the model relied on most did nothing when changed, and the real lever ranked no higher than a feature with no effect.</description></item><item><title>ML 49: Target the Effect, Not the Risk</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-49-uplift/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-49-uplift/</guid><description>A model of who will churn is not a model of whom an offer will keep. Targeting the highest risk did no better than chance; targeting the predicted effect did about twice as well.</description></item><item><title>ML 50: A Rule That Chooses Its Own Data Learns Its Own Choices</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-50-feedback/</link><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-50-feedback/</guid><description>When a rule decides where to look and learns only from what it finds there, more data does not correct it. It has to account for its own effort, and keep looking where it expects nothing.</description></item><item><title>ML 51: A Benchmark Is a Sample of Questions</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-51-benchmark-sample/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-51-benchmark-sample/</guid><description>A benchmark score&amp;#39;s error bar is correct, and a leaderboard of such scores still puts close models in the wrong order. Comparing on the same questions, and counting questions rather than prompts, is most of the repair.</description></item><item><title>ML 52: A Leaked Benchmark Shows in the Set, Not in the Item</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-52-contamination/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-52-contamination/</guid><description>A model trained on a benchmark&amp;#39;s answers scored higher on them and no higher on anything else. Its own likelihoods could not say which problems had leaked; a fresh set from the same source could say that some had.</description></item><item><title>ML 53: The Prompt Is Part of the Score</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-53-prompt-format/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-53-prompt-format/</guid><description>The same model on the same problems scored 0.735 or 0.500 depending on what came before them, and the gap between two models shrank from 0.127 to about zero. A score is the model under one way of asking.</description></item><item><title>ML 54: Multiple Choice Grades the Wrong Answers You Offered</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-54-multiple-choice/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-54-multiple-choice/</guid><description>Ranking answer options by likelihood is a different test from asking for the answer. A model that never produced a four-digit sum picked it out of four options 95.5% of the time, or 32%, depending on the options.</description></item><item><title>ML 55: Every Judge Ranked Itself First</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-55-judge/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-55-judge/</guid><description>Three models graded each other&amp;#39;s arithmetic by how right each answer looked to them. All three preferred their own answers on every task, and forty real labels were enough to correct them.</description></item><item><title>ML 56: A t-SNE Picture Keeps the Neighbours and Loses the Map</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-56-tsne/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-56-tsne/</guid><description>A cluster ten times wider than another came out the same size, and a gap ten times wider came out about the same width. What survives the picture is who sits next to whom.</description></item><item><title>ML 57: The BIC Counts Gaussians, Not Clusters</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-57-bic/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-57-bic/</guid><description>Given one cluster shaped like a square, the BIC asked for more Gaussian components the more data it saw, 18 at 20,000 points. It was answering a question about shape and sample size, not about clusters.</description></item><item><title>ML 58: DBSCAN's Radius Is a Density, and It Gets Only One</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-58-dbscan/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-58-dbscan/</guid><description>DBSCAN found two interlocking half-moons that k-means could not, at the right radius. When clusters differ in density, no radius is right for all of them, and the usual way of choosing it missed even the moons.</description></item><item><title>ML 59: An Anomaly Score Ranks; the Contamination Setting Only Cuts</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-59-anomaly/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-59-anomaly/</guid><description>An isolation forest ranked planted anomalies almost perfectly and then flagged whatever share it was told to. Grouped anomalies and irrelevant features changed the ranking itself.</description></item><item><title>ML 60: The Most Stable k Is Not the Number of Clusters</title><link>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-60-stability/</link><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/lectures/ml-60-stability/</guid><description>Resampling found k-means&amp;#39; two-way split of a single Gaussian as reproducible as three real clusters. Stability measures whether the method has one best answer, and cannot say that there are no clusters.</description></item><item><title>Two Thirds of the Move Happens Before the Headline</title><link>https://jongha-jeon-dev.github.io/standarderror/posts/two-thirds-of-the-move-before-the-headline/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/posts/two-thirds-of-the-move-before-the-headline/</guid><description>A paper measured &amp;#39;buy the rumour, sell the news&amp;#39; on 4.57 million articles, and the sayings mostly hold</description></item><item><title>The Chip Cycle Is Forecastable. The Shortage Is a Different Question.</title><link>https://jongha-jeon-dev.github.io/standarderror/posts/the-chip-cycle-is-forecastable/</link><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/posts/the-chip-cycle-is-forecastable/</guid><description>A delayed feedback loop, an echo state network, and a result I had the wrong way round</description></item><item><title>I Trained 2,000 Models on a Coin Flip and the Best One Looked Great</title><link>https://jongha-jeon-dev.github.io/standarderror/posts/i-trained-2000-models-on-a-coin-flip/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/posts/i-trained-2000-models-on-a-coin-flip/</guid><description>A 55.3% hit rate, a p-value of 0.0008, and not one shred of signal in the data</description></item><item><title>Your 90% Prediction Interval Covers 42% of the Time</title><link>https://jongha-jeon-dev.github.io/standarderror/posts/your-90-percent-interval-covers-42-percent/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/posts/your-90-percent-interval-covers-42-percent/</guid><description>Conformal prediction&amp;#39;s guarantee is real, and it does not say what people repeat about it</description></item><item><title>Why My Integrator Exploded at t = 355, Every Single Time</title><link>https://jongha-jeon-dev.github.io/standarderror/posts/why-my-integrator-exploded-at-355/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/posts/why-my-integrator-exploded-at-355/</guid><description>Two silent numerical bugs, and the kind of test that actually catches them</description></item><item><title>Your Forecast Is Probably Just Repeating Yesterday</title><link>https://jongha-jeon-dev.github.io/standarderror/posts/your-forecast-is-probably-just-repeating-yesterday/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://jongha-jeon-dev.github.io/standarderror/posts/your-forecast-is-probably-just-repeating-yesterday/</guid><description>A model scores 99% on a series of coin flips. Here is why, and the one number that would have caught it</description></item></channel></rss>