import%20marimo%0A%0A__generated_with%20%3D%20%220.23.16%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20METADATA%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22id%22%3A%20%22bias_variance%22%2C%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22Bias%20and%20Variance%22%2C%0A%20%20%20%20%20%20%20%20%22kind%22%3A%20%22concept%22%2C%0A%20%20%20%20%20%20%20%20%22difficulty%22%3A%20%22intermediate%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22complete%22%2C%0A%20%20%20%20%20%20%20%20%22topics%22%3A%20%5B%22generalization%22%2C%20%22model_complexity%22%5D%2C%0A%20%20%20%20%20%20%20%20%22related_models%22%3A%20%5B%22knn%22%2C%20%22decision_tree%22%2C%20%22random_forest%22%2C%20%22mlp%22%5D%2C%0A%20%20%20%20%20%20%20%20%22prerequisites%22%3A%20%5B%22generalization%22%5D%2C%0A%20%20%20%20%7D%0A%20%20%20%20mo.md(f%22%23%20%7BMETADATA%5B'name'%5D%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20In%20one%20sentence%0A%0A%20%20%20%20Bias%20is%20systematic%20error%20from%20an%20overly%20restrictive%20model%3B%20variance%20is%20instability%20caused%20by%20sensitivity%20to%20the%20particular%20training%20sample.%0A%0A%20%20%20%20%23%23%20Mental%20model%0A%0A%20%20%20%20Refit%20the%20same%20modeling%20procedure%20on%20many%20equally%20plausible%20datasets.%20If%20all%20predictions%20miss%20in%20the%20same%20direction%2C%20suspect%20bias.%20If%20predictions%20move%20dramatically%20between%20samples%2C%20suspect%20variance.%0A%0A%20%20%20%20%23%23%20Why%20it%20matters%0A%0A%20%20%20%20The%20two%20failure%20patterns%20suggest%20different%20responses%3A%20more%20flexibility%20can%20reduce%20bias%2C%20while%20regularization%2C%20averaging%2C%20or%20more%20representative%20data%20can%20reduce%20variance.%0A%0A%20%20%20%20%23%23%20Experiment%0A%0A%20%20%20%20**Question%3A**%20how%20do%20polynomial%20models%20behave%20when%20the%20training%20sample%20is%20repeatedly%20redrawn%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20from%20sklearn.linear_model%20import%20LinearRegression%0A%20%20%20%20from%20sklearn.pipeline%20import%20make_pipeline%0A%20%20%20%20from%20sklearn.preprocessing%20import%20PolynomialFeatures%0A%0A%20%20%20%20rng%20%3D%20np.random.default_rng(4)%0A%20%20%20%20grid%20%3D%20np.linspace(-2%2C%202%2C%20160)%0A%20%20%20%20truth%20%3D%20np.sin(2%20*%20grid)%0A%20%20%20%20degrees%20%3D%20%5B1%2C%205%2C%2014%5D%0A%20%20%20%20predictions%20%3D%20%7Bdegree%3A%20%5B%5D%20for%20degree%20in%20degrees%7D%0A%20%20%20%20for%20_%20in%20range(45)%3A%0A%20%20%20%20%20%20%20%20x%20%3D%20np.sort(rng.uniform(-2%2C%202%2C%2024))%0A%20%20%20%20%20%20%20%20y%20%3D%20np.sin(2%20*%20x)%20%2B%20rng.normal(0%2C%200.28%2C%20len(x))%0A%20%20%20%20%20%20%20%20for%20fit_degree%20in%20degrees%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20model%20%3D%20make_pipeline(PolynomialFeatures(fit_degree)%2C%20LinearRegression())%0A%20%20%20%20%20%20%20%20%20%20%20%20model.fit(x%5B%3A%2C%20None%5D%2C%20y)%0A%20%20%20%20%20%20%20%20%20%20%20%20predictions%5Bfit_degree%5D.append(model.predict(grid%5B%3A%2C%20None%5D))%0A%20%20%20%20return%20degrees%2C%20grid%2C%20np%2C%20plt%2C%20predictions%2C%20truth%0A%0A%0A%40app.cell%0Adef%20_(degrees%2C%20grid%2C%20np%2C%20plt%2C%20predictions%2C%20truth)%3A%0A%20%20%20%20fig%2C%20axes%20%3D%20plt.subplots(1%2C%203%2C%20figsize%3D(13%2C%203.8)%2C%20sharey%3DTrue)%0A%20%20%20%20for%20ax%2C%20display_degree%20in%20zip(axes%2C%20degrees)%3A%0A%20%20%20%20%20%20%20%20draws%20%3D%20np.asarray(predictions%5Bdisplay_degree%5D)%0A%20%20%20%20%20%20%20%20mean_prediction%20%3D%20draws.mean(axis%3D0)%0A%20%20%20%20%20%20%20%20spread%20%3D%20draws.std(axis%3D0)%0A%20%20%20%20%20%20%20%20bias_squared%20%3D%20np.mean((mean_prediction%20-%20truth)%20**%202)%0A%20%20%20%20%20%20%20%20variance%20%3D%20np.mean(spread%20**%202)%0A%20%20%20%20%20%20%20%20ax.plot(grid%2C%20truth%2C%20color%3D%22black%22%2C%20linestyle%3D%22--%22%2C%20label%3D%22true%20signal%22)%0A%20%20%20%20%20%20%20%20ax.plot(grid%2C%20mean_prediction%2C%20color%3D%22crimson%22%2C%20label%3D%22mean%20prediction%22)%0A%20%20%20%20%20%20%20%20ax.fill_between(grid%2C%20mean_prediction%20-%20spread%2C%20mean_prediction%20%2B%20spread%2C%20alpha%3D0.25%2C%20label%3D%22sample%20instability%22)%0A%20%20%20%20%20%20%20%20ax.set(title%3Df%22degree%20%7Bdisplay_degree%7D%5Cnbias%C2%B2%20%7Bbias_squared%3A.3f%7D%20%C2%B7%20variance%20%7Bvariance%3A.3f%7D%22%2C%20xlabel%3D%22x%22)%0A%20%20%20%20%20%20%20%20ax.set_ylim(-2%2C%202)%0A%20%20%20%20axes%5B0%5D.set_ylabel(%22prediction%22)%0A%20%20%20%20axes%5B0%5D.legend(fontsize%3D8)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Common%20mistake%0A%0A%20%20%20%20Diagnosing%20every%20validation%20failure%20as%20variance.%20Leakage%2C%20poor%20features%2C%20distribution%20shift%2C%20optimization%20failure%2C%20and%20label%20noise%20can%20produce%20similar%20symptoms.%0A%0A%20%20%20%20%23%23%20Diagnosis%0A%0A%20%20%20%20Compare%20training%20and%20validation%20errors%2C%20then%20refit%20across%20resamples.%20Persistent%20error%20suggests%20bias%3B%20large%20movement%20between%20fits%20suggests%20variance.%0A%0A%20%20%20%20%23%23%20Practical%20rule%0A%0A%20%20%20%20Increase%20flexibility%20only%20for%20demonstrated%20underfitting%3B%20use%20regularization%2C%20averaging%2C%20or%20better%20data%20when%20the%20procedure%20is%20unstable%20across%20samples.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
b6221a15632edd642225325e13d89060