[{"data":1,"prerenderedAt":3824},["ShallowReactive",2],{"lang-switch-post-\u002Fplaylists\u002Fmachine-learning-specialization\u002Fw2-lab05-scikit-learn":3,"post-pt-machine-learning-specialization-w2-lab05-scikit-learn":4},"\u002Fen\u002Fplaylists\u002Fmachine-learning-specialization\u002Fw2-lab05-scikit-learn",{"id":5,"title":6,"body":7,"cover":3809,"date":3810,"description":3811,"extension":3812,"meta":3813,"navigation":3753,"order":3814,"path":3815,"playlist":3816,"seo":3817,"status":3818,"stem":3819,"tags":3820,"__hash__":3823},"posts\u002Fpt\u002Fplaylists\u002Fmachine-learning-specialization\u002Fw2-lab05-scikit-learn.md","Regressão Linear com Scikit-Learn",{"type":8,"value":9,"toc":3793},"minimark",[10,18,21,26,42,138,158,185,192,474,481,492,531,1022,1032,1311,1350,1355,1367,1372,1375,1378,1389,1634,1641,1648,1672,1682,1686,1699,2095,2098,2556,2668,2787,2832,2836,2850,2854,2887,2936,2943,2953,3286,3489,3505,3509,3547,3550,3588,3592,3707,3714,3761,3773,3780,3783,3786,3789],[11,12,13],"p",{},[14,15],"img",{"alt":16,"src":17},"Meme \"Rick and Morty\" de três quadrinhos: no primeiro, um robô pergunta \"QUAL É O MEU PROPÓSITO?\" com o rótulo \"scikit-learn\". No segundo, Rick responde \"VOCÊ SEPARA OS DADOS\". No terceiro, o robô diz \"AH MEU DEUS\"","\u002Fimages\u002Fposts\u002Fmachine-learning-specialization\u002Fw2-lab05-scikit-learn\u002Fmeme-scikitlearn.jpeg",[11,19,20],{},"Depois de quatro posts implementando gradiente descendente, normalização e engenharia de features inteiramente na mão, chegou a hora de usar a ferramenta de verdade. E o primeiro choque foi descobrir que o modelo \"padrão\" que o curso usa aqui não é bem o que parece.",[22,23,25],"h2",{"id":24},"a-convenção-da-api-mais-importante-que-o-modelo-em-si","A convenção da API, mais importante que o modelo em si",[11,27,28,29,36,37,41],{},"O ",[30,31,35],"a",{"href":32,"rel":33},"https:\u002F\u002Fscikit-learn.org\u002F",[34],"nofollow","scikit-learn"," traz implementação pronta e testada de boa parte do que eu já fiz na mão. Mas o que mais importa aprender aqui não é o modelo específico, é a ",[38,39,40],"strong",{},"convenção de API",", porque ela se repete idêntica em centenas de modelos e transformadores:",[43,44,45,62],"table",{},[46,47,48],"thead",{},[49,50,51,56,59],"tr",{},[52,53,55],"th",{"align":54},"left","Método",[52,57,58],{"align":54},"O que faz",[52,60,61],{"align":54},"Quem tem",[63,64,65,80,93,106,125],"tbody",{},[49,66,67,74,77],{},[68,69,70],"td",{"align":54},[71,72,73],"code",{},".fit(X, y)",[68,75,76],{"align":54},"aprende os parâmetros a partir dos dados",[68,78,79],{"align":54},"todo estimador",[49,81,82,87,90],{},[68,83,84],{"align":54},[71,85,86],{},".predict(X)",[68,88,89],{"align":54},"usa os parâmetros aprendidos pra prever",[68,91,92],{"align":54},"modelos preditivos",[49,94,95,100,103],{},[68,96,97],{"align":54},[71,98,99],{},".transform(X)",[68,101,102],{"align":54},"aplica uma transformação já aprendida",[68,104,105],{"align":54},"transformadores",[49,107,108,113,123],{},[68,109,110],{"align":54},[71,111,112],{},".fit_transform(X)",[68,114,115,116,119,120],{"align":54},"atalho pra ",[71,117,118],{},"fit"," seguido de ",[71,121,122],{},"transform",[68,124,105],{"align":54},[49,126,127,132,135],{},[68,128,129],{"align":54},[71,130,131],{},".score(X, y)",[68,133,134],{"align":54},"métrica padrão do estimador (R² em regressão)",[68,136,137],{"align":54},"quase todos",[11,139,140,141,144,145,144,148,144,151,144,154,157],{},"Atributos aprendidos terminam com underscore: ",[71,142,143],{},"coef_",", ",[71,146,147],{},"intercept_",[71,149,150],{},"mean_",[71,152,153],{},"scale_",[71,155,156],{},"n_iter_",". Esse underscore no fim é a convenção que distingue \"aprendido com os dados\" de \"configurado por mim\".",[11,159,160,161,163,164,167,168,170,171,174,175,179,180,184],{},"A regra de ouro que vem junto: ",[71,162,118],{}," só pode ver dado de ",[38,165,166],{},"treino",". Em dado de teste, só ",[71,169,122],{}," e ",[71,172,173],{},"predict",". Violar isso é vazamento de dado, e é o erro mais comum de quem tá começando (já bati nessa tecla nos ",[30,176,178],{"href":177},"\u002Fplaylists\u002Fmachine-learning-specialization\u002Ffeature-scaling-pitfalls","dois posts"," ",[30,181,183],{"href":182},"\u002Fplaylists\u002Fmachine-learning-specialization\u002Ffeature-engineering-pitfalls","bônus anteriores",").",[22,186,188,191],{"id":187},"standardscaler-o-z-score-que-eu-já-fiz-na-mão",[71,189,190],{},"StandardScaler",": o z-score que eu já fiz na mão",[11,193,194,196,197,201,202,386,387,416,417,473],{},[71,195,190],{}," faz exatamente a conta que eu implementei no ",[30,198,200],{"href":199},"\u002Fplaylists\u002Fmachine-learning-specialization\u002Fw2-lab03-feature-scaling","post de normalização",": ",[203,204,207,250],"span",{"className":205},[206],"katex",[203,208,211],{"className":209},[210],"katex-mathml",[212,213,215],"math",{"xmlns":214},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[216,217,218,245],"semantics",{},[219,220,221,225,229],"mrow",{},[222,223,224],"mi",{},"x",[226,227,228],"mo",{},"←",[230,231,232,242],"mfrac",{},[219,233,234,236,239],{},[222,235,224],{},[226,237,238],{},"−",[222,240,241],{},"μ",[222,243,244],{},"σ",[246,247,249],"annotation",{"encoding":248},"application\u002Fx-tex","x \\leftarrow \\frac{x-\\mu}{\\sigma}",[203,251,255,281],{"className":252,"ariaHidden":254},[253],"katex-html","true",[203,256,259,264,269,274,278],{"className":257},[258],"base",[203,260],{"className":261,"style":263},[262],"strut","height:0.4306em;",[203,265,224],{"className":266},[267,268],"mord","mathnormal",[203,270],{"className":271,"style":273},[272],"mspace","margin-right:0.2778em;",[203,275,228],{"className":276},[277],"mrel",[203,279],{"className":280,"style":273},[272],[203,282,284,288],{"className":283},[258],[203,285],{"className":286,"style":287},[262],"height:1.1994em;vertical-align:-0.345em;",[203,289,291,296,382],{"className":290},[267],[203,292],{"className":293},[294,295],"mopen","nulldelimiter",[203,297,299],{"className":298},[230],[203,300,304,373],{"className":301},[302,303],"vlist-t","vlist-t2",[203,305,308,368],{"className":306},[307],"vlist-r",[203,309,313,335,346],{"className":310,"style":312},[311],"vlist","height:0.8544em;",[203,314,316,321],{"style":315},"top:-2.655em;",[203,317],{"className":318,"style":320},[319],"pstrut","height:3em;",[203,322,328],{"className":323},[324,325,326,327],"sizing","reset-size6","size3","mtight",[203,329,331],{"className":330},[267,327],[203,332,244],{"className":333,"style":334},[267,268,327],"margin-right:0.0359em;",[203,336,338,341],{"style":337},"top:-3.23em;",[203,339],{"className":340,"style":320},[319],[203,342],{"className":343,"style":345},[344],"frac-line","border-bottom-width:0.04em;",[203,347,349,352],{"style":348},"top:-3.4461em;",[203,350],{"className":351,"style":320},[319],[203,353,355],{"className":354},[324,325,326,327],[203,356,358,361,365],{"className":357},[267,327],[203,359,224],{"className":360},[267,268,327],[203,362,238],{"className":363},[364,327],"mbin",[203,366,241],{"className":367},[267,268,327],[203,369,372],{"className":370},[371],"vlist-s","​",[203,374,376],{"className":375},[307],[203,377,380],{"className":378,"style":379},[311],"height:0.345em;",[203,381],{},[203,383],{"className":384},[385,295],"mclose",", coluna a coluna. Conferi e bate dígito a dígito com o meu z-score manual, inclusive usando a mesma convenção de desvio-padrão populacional (dividir por ",[203,388,390,404],{"className":389},[206],[203,391,393],{"className":392},[210],[212,394,395],{"xmlns":214},[216,396,397,402],{},[219,398,399],{},[222,400,401],{},"m",[246,403,401],{"encoding":248},[203,405,407],{"className":406,"ariaHidden":254},[253],[203,408,410,413],{"className":409},[258],[203,411],{"className":412,"style":263},[262],[203,414,401],{"className":415},[267,268],", não por ",[203,418,420,440],{"className":419},[206],[203,421,423],{"className":422},[210],[212,424,425],{"xmlns":214},[216,426,427,437],{},[219,428,429,431,433],{},[222,430,401],{},[226,432,238],{},[434,435,436],"mn",{},"1",[246,438,439],{"encoding":248},"m-1",[203,441,443,463],{"className":442,"ariaHidden":254},[253],[203,444,446,450,453,457,460],{"className":445},[258],[203,447],{"className":448,"style":449},[262],"height:0.6667em;vertical-align:-0.0833em;",[203,451,401],{"className":452},[267,268],[203,454],{"className":455,"style":456},[272],"margin-right:0.2222em;",[203,458,238],{"className":459},[364],[203,461],{"className":462,"style":456},[272],[203,464,466,470],{"className":465},[258],[203,467],{"className":468,"style":469},[262],"height:0.6444em;",[203,471,436],{"className":472},[267],") que eu já usava.",[22,475,477,480],{"id":476},"sgdregressor-e-o-que-o-s-significa",[71,478,479],{},"SGDRegressor"," e o que o \"S\" significa",[11,482,483,484,486,487,491],{},"O curso usa ",[71,485,479],{}," sem nunca explicar a sigla. Vale parar nisso, porque é a diferença real entre esse modelo e o gradiente descendente que eu implementei ",[30,488,490],{"href":489},"\u002Fplaylists\u002Fmachine-learning-specialization\u002Flab04-gradient-descent","nos posts anteriores",".",[11,493,494,497,498,501,502,530],{},[38,495,496],{},"Gradiente descendente batch"," (o que eu fiz até aqui): cada passo usa ",[38,499,500],{},"todos"," os ",[203,503,505,518],{"className":504},[206],[203,506,508],{"className":507},[210],[212,509,510],{"xmlns":214},[216,511,512,516],{},[219,513,514],{},[222,515,401],{},[246,517,401],{"encoding":248},[203,519,521],{"className":520,"ariaHidden":254},[253],[203,522,524,527],{"className":523},[258],[203,525],{"className":526,"style":263},[262],[203,528,401],{"className":529},[267,268]," exemplos pra calcular o gradiente.",[11,532,533],{},[203,534,536,652],{"className":535},[206],[203,537,539],{"className":538},[210],[212,540,541],{"xmlns":214},[216,542,543,649],{},[219,544,545,549,551,553,555,558,562,568,593,637],{},[222,546,548],{"mathvariant":547},"bold","w",[226,550,228],{},[222,552,548],{"mathvariant":547},[226,554,238],{},[222,556,557],{},"α",[559,560,561],"mtext",{}," ",[230,563,564,566],{},[434,565,436],{},[222,567,401],{},[569,570,571,574,585],"msubsup",{},[226,572,573],{},"∑",[219,575,576,579,582],{},[222,577,578],{},"i",[226,580,581],{},"=",[434,583,584],{},"0",[219,586,587,589,591],{},[222,588,401],{},[226,590,238],{},[434,592,436],{},[219,594,595,598,601,604,618,620,622,635],{},[226,596,597],{"fence":254},"(",[222,599,600],{},"f",[226,602,597],{"stretchy":603},"false",[605,606,607,609],"msup",{},[222,608,224],{"mathvariant":547},[219,610,611,613,615],{},[226,612,597],{"stretchy":603},[222,614,578],{},[226,616,617],{"stretchy":603},")",[226,619,617],{"stretchy":603},[226,621,238],{},[605,623,624,627],{},[222,625,626],{},"y",[219,628,629,631,633],{},[226,630,597],{"stretchy":603},[222,632,578],{},[226,634,617],{"stretchy":603},[226,636,617],{"fence":254},[605,638,639,641],{},[222,640,224],{"mathvariant":547},[219,642,643,645,647],{},[226,644,597],{"stretchy":603},[222,646,578],{},[226,648,617],{"stretchy":603},[246,650,651],{"encoding":248},"\\mathbf{w} \\leftarrow \\mathbf{w} - \\alpha\\,\\frac{1}{m}\\sum_{i=0}^{m-1}\\left(f(\\mathbf{x}^{(i)}) - y^{(i)}\\right)\\mathbf{x}^{(i)}",[203,653,655,676,694],{"className":654,"ariaHidden":254},[253],[203,656,658,662,667,670,673],{"className":657},[258],[203,659],{"className":660,"style":661},[262],"height:0.4444em;",[203,663,548],{"className":664,"style":666},[267,665],"mathbf","margin-right:0.016em;",[203,668],{"className":669,"style":273},[272],[203,671,228],{"className":672},[277],[203,674],{"className":675,"style":273},[272],[203,677,679,682,685,688,691],{"className":678},[258],[203,680],{"className":681,"style":449},[262],[203,683,548],{"className":684,"style":666},[267,665],[203,686],{"className":687,"style":456},[272],[203,689,238],{"className":690},[364],[203,692],{"className":693,"style":456},[272],[203,695,697,701,705,709,779,782,861,864,981,984],{"className":696},[258],[203,698],{"className":699,"style":700},[262],"height:1.304em;vertical-align:-0.35em;",[203,702,557],{"className":703,"style":704},[267,268],"margin-right:0.0037em;",[203,706],{"className":707,"style":708},[272],"margin-right:0.1667em;",[203,710,712,715,776],{"className":711},[267],[203,713],{"className":714},[294,295],[203,716,718],{"className":717},[230],[203,719,721,768],{"className":720},[302,303],[203,722,724,765],{"className":723},[307],[203,725,728,742,750],{"className":726,"style":727},[311],"height:0.8451em;",[203,729,730,733],{"style":315},[203,731],{"className":732,"style":320},[319],[203,734,736],{"className":735},[324,325,326,327],[203,737,739],{"className":738},[267,327],[203,740,401],{"className":741},[267,268,327],[203,743,744,747],{"style":337},[203,745],{"className":746,"style":320},[319],[203,748],{"className":749,"style":345},[344],[203,751,753,756],{"style":752},"top:-3.394em;",[203,754],{"className":755,"style":320},[319],[203,757,759],{"className":758},[324,325,326,327],[203,760,762],{"className":761},[267,327],[203,763,436],{"className":764},[267,327],[203,766,372],{"className":767},[371],[203,769,771],{"className":770},[307],[203,772,774],{"className":773,"style":379},[311],[203,775],{},[203,777],{"className":778},[385,295],[203,780],{"className":781,"style":708},[272],[203,783,786,792],{"className":784},[785],"mop",[203,787,573],{"className":788,"style":791},[785,789,790],"op-symbol","small-op","position:relative;top:0em;",[203,793,796],{"className":794},[795],"msupsub",[203,797,799,852],{"className":798},[302,303],[203,800,802,849],{"className":801},[307],[203,803,806,828],{"className":804,"style":805},[311],"height:0.954em;",[203,807,809,813],{"style":808},"top:-2.4003em;margin-left:0em;margin-right:0.05em;",[203,810],{"className":811,"style":812},[319],"height:2.7em;",[203,814,816],{"className":815},[324,325,326,327],[203,817,819,822,825],{"className":818},[267,327],[203,820,578],{"className":821},[267,268,327],[203,823,581],{"className":824},[277,327],[203,826,584],{"className":827},[267,327],[203,829,831,834],{"style":830},"top:-3.2029em;margin-right:0.05em;",[203,832],{"className":833,"style":812},[319],[203,835,837],{"className":836},[324,325,326,327],[203,838,840,843,846],{"className":839},[267,327],[203,841,401],{"className":842},[267,268,327],[203,844,238],{"className":845},[364,327],[203,847,436],{"className":848},[267,327],[203,850,372],{"className":851},[371],[203,853,855],{"className":854},[307],[203,856,859],{"className":857,"style":858},[311],"height:0.2997em;",[203,860],{},[203,862],{"className":863,"style":708},[272],[203,865,868,878,882,885,925,928,931,934,937,975],{"className":866},[867],"minner",[203,869,873],{"className":870,"style":872},[294,871],"delimcenter","top:0em;",[203,874,597],{"className":875},[876,877],"delimsizing","size1",[203,879,600],{"className":880,"style":881},[267,268],"margin-right:0.1076em;",[203,883,597],{"className":884},[294],[203,886,888,891],{"className":887},[267],[203,889,224],{"className":890},[267,665],[203,892,894],{"className":893},[795],[203,895,897],{"className":896},[302],[203,898,900],{"className":899},[307],[203,901,904],{"className":902,"style":903},[311],"height:0.888em;",[203,905,907,910],{"style":906},"top:-3.063em;margin-right:0.05em;",[203,908],{"className":909,"style":812},[319],[203,911,913],{"className":912},[324,325,326,327],[203,914,916,919,922],{"className":915},[267,327],[203,917,597],{"className":918},[294,327],[203,920,578],{"className":921},[267,268,327],[203,923,617],{"className":924},[385,327],[203,926,617],{"className":927},[385],[203,929],{"className":930,"style":456},[272],[203,932,238],{"className":933},[364],[203,935],{"className":936,"style":456},[272],[203,938,940,943],{"className":939},[267],[203,941,626],{"className":942,"style":334},[267,268],[203,944,946],{"className":945},[795],[203,947,949],{"className":948},[302],[203,950,952],{"className":951},[307],[203,953,955],{"className":954,"style":903},[311],[203,956,957,960],{"style":906},[203,958],{"className":959,"style":812},[319],[203,961,963],{"className":962},[324,325,326,327],[203,964,966,969,972],{"className":965},[267,327],[203,967,597],{"className":968},[294,327],[203,970,578],{"className":971},[267,268,327],[203,973,617],{"className":974},[385,327],[203,976,978],{"className":977,"style":872},[385,871],[203,979,617],{"className":980},[876,877],[203,982],{"className":983,"style":708},[272],[203,985,987,990],{"className":986},[267],[203,988,224],{"className":989},[267,665],[203,991,993],{"className":992},[795],[203,994,996],{"className":995},[302],[203,997,999],{"className":998},[307],[203,1000,1002],{"className":1001,"style":903},[311],[203,1003,1004,1007],{"style":906},[203,1005],{"className":1006,"style":812},[319],[203,1008,1010],{"className":1009},[324,325,326,327],[203,1011,1013,1016,1019],{"className":1012},[267,327],[203,1014,597],{"className":1015},[294,327],[203,1017,578],{"className":1018},[267,268,327],[203,1020,617],{"className":1021},[385,327],[11,1023,1024,1027,1028,1031],{},[38,1025,1026],{},"Gradiente descendente estocástico (SGD)",": cada passo usa ",[38,1029,1030],{},"um único"," exemplo, escolhido aleatoriamente.",[11,1033,1034],{},[203,1035,1037,1109],{"className":1036},[206],[203,1038,1040],{"className":1039},[210],[212,1041,1042],{"xmlns":214},[216,1043,1044,1106],{},[219,1045,1046,1048,1050,1052,1054,1056,1094],{},[222,1047,548],{"mathvariant":547},[226,1049,228],{},[222,1051,548],{"mathvariant":547},[226,1053,238],{},[222,1055,557],{},[219,1057,1058,1060,1062,1064,1076,1078,1080,1092],{},[226,1059,597],{"fence":254},[222,1061,600],{},[226,1063,597],{"stretchy":603},[605,1065,1066,1068],{},[222,1067,224],{"mathvariant":547},[219,1069,1070,1072,1074],{},[226,1071,597],{"stretchy":603},[222,1073,578],{},[226,1075,617],{"stretchy":603},[226,1077,617],{"stretchy":603},[226,1079,238],{},[605,1081,1082,1084],{},[222,1083,626],{},[219,1085,1086,1088,1090],{},[226,1087,597],{"stretchy":603},[222,1089,578],{},[226,1091,617],{"stretchy":603},[226,1093,617],{"fence":254},[605,1095,1096,1098],{},[222,1097,224],{"mathvariant":547},[219,1099,1100,1102,1104],{},[226,1101,597],{"stretchy":603},[222,1103,578],{},[226,1105,617],{"stretchy":603},[246,1107,1108],{"encoding":248},"\\mathbf{w} \\leftarrow \\mathbf{w} - \\alpha\\left(f(\\mathbf{x}^{(i)}) - y^{(i)}\\right)\\mathbf{x}^{(i)}",[203,1110,1112,1130,1148],{"className":1111,"ariaHidden":254},[253],[203,1113,1115,1118,1121,1124,1127],{"className":1114},[258],[203,1116],{"className":1117,"style":661},[262],[203,1119,548],{"className":1120,"style":666},[267,665],[203,1122],{"className":1123,"style":273},[272],[203,1125,228],{"className":1126},[277],[203,1128],{"className":1129,"style":273},[272],[203,1131,1133,1136,1139,1142,1145],{"className":1132},[258],[203,1134],{"className":1135,"style":449},[262],[203,1137,548],{"className":1138,"style":666},[267,665],[203,1140],{"className":1141,"style":456},[272],[203,1143,238],{"className":1144},[364],[203,1146],{"className":1147,"style":456},[272],[203,1149,1151,1155,1158,1161,1270,1273],{"className":1150},[258],[203,1152],{"className":1153,"style":1154},[262],"height:1.238em;vertical-align:-0.35em;",[203,1156,557],{"className":1157,"style":704},[267,268],[203,1159],{"className":1160,"style":708},[272],[203,1162,1164,1170,1173,1176,1214,1217,1220,1223,1226,1264],{"className":1163},[867],[203,1165,1167],{"className":1166,"style":872},[294,871],[203,1168,597],{"className":1169},[876,877],[203,1171,600],{"className":1172,"style":881},[267,268],[203,1174,597],{"className":1175},[294],[203,1177,1179,1182],{"className":1178},[267],[203,1180,224],{"className":1181},[267,665],[203,1183,1185],{"className":1184},[795],[203,1186,1188],{"className":1187},[302],[203,1189,1191],{"className":1190},[307],[203,1192,1194],{"className":1193,"style":903},[311],[203,1195,1196,1199],{"style":906},[203,1197],{"className":1198,"style":812},[319],[203,1200,1202],{"className":1201},[324,325,326,327],[203,1203,1205,1208,1211],{"className":1204},[267,327],[203,1206,597],{"className":1207},[294,327],[203,1209,578],{"className":1210},[267,268,327],[203,1212,617],{"className":1213},[385,327],[203,1215,617],{"className":1216},[385],[203,1218],{"className":1219,"style":456},[272],[203,1221,238],{"className":1222},[364],[203,1224],{"className":1225,"style":456},[272],[203,1227,1229,1232],{"className":1228},[267],[203,1230,626],{"className":1231,"style":334},[267,268],[203,1233,1235],{"className":1234},[795],[203,1236,1238],{"className":1237},[302],[203,1239,1241],{"className":1240},[307],[203,1242,1244],{"className":1243,"style":903},[311],[203,1245,1246,1249],{"style":906},[203,1247],{"className":1248,"style":812},[319],[203,1250,1252],{"className":1251},[324,325,326,327],[203,1253,1255,1258,1261],{"className":1254},[267,327],[203,1256,597],{"className":1257},[294,327],[203,1259,578],{"className":1260},[267,268,327],[203,1262,617],{"className":1263},[385,327],[203,1265,1267],{"className":1266,"style":872},[385,871],[203,1268,617],{"className":1269},[876,877],[203,1271],{"className":1272,"style":708},[272],[203,1274,1276,1279],{"className":1275},[267],[203,1277,224],{"className":1278},[267,665],[203,1280,1282],{"className":1281},[795],[203,1283,1285],{"className":1284},[302],[203,1286,1288],{"className":1287},[307],[203,1289,1291],{"className":1290,"style":903},[311],[203,1292,1293,1296],{"style":906},[203,1294],{"className":1295,"style":812},[319],[203,1297,1299],{"className":1298},[324,325,326,327],[203,1300,1302,1305,1308],{"className":1301},[267,327],[203,1303,597],{"className":1304},[294,327],[203,1306,578],{"className":1307},[267,268,327],[203,1309,617],{"className":1310},[385,327],[11,1312,1313,1314,1342,1343,1346,1347,1349],{},"Passo baratíssimo, direção ruidosa, trajetória em zigue-zague, mas com ",[203,1315,1317,1330],{"className":1316},[206],[203,1318,1320],{"className":1319},[210],[212,1321,1322],{"xmlns":214},[216,1323,1324,1328],{},[219,1325,1326],{},[222,1327,401],{},[246,1329,401],{"encoding":248},[203,1331,1333],{"className":1332,"ariaHidden":254},[253],[203,1334,1336,1339],{"className":1335},[258],[203,1337],{"className":1338,"style":263},[262],[203,1340,401],{"className":1341},[267,268]," atualizações pelo preço de uma do batch. Construí um motor de SGD do zero (o mesmo ",[71,1344,1345],{},"GradientDescentSimulator"," de sempre, só que trocando a engrenagem por baixo) pra você ver a diferença ao vivo, no mesmo dataset de 8 casas do ",[30,1348,200],{"href":199},":",[11,1351,1352],{},[38,1353,1354],{},"Batch:",[1356,1357],"gradient-descent-simulator",{":alpha-slider-max":1358,":alpha-slider-min":1359,":alpha-slider-step":1359,":b-range":1360,":initial-alpha":1361,":initial-b":584,":initial-w":584,":w-range":1362,":x-train":1363,":y-train":1364,"b-label":1365,"mode":1366,"w-label":548},"2e-6","1e-8","[-250, 250]","8e-7","[0, 0.6]","[952, 1244, 1947, 1725, 1959, 1314, 864, 1836]","[271.5, 300, 509.8, 394, 540, 415, 230, 560]","b","batch",[11,1368,1369],{},[38,1370,1371],{},"Estocástico:",[1356,1373],{":alpha-slider-max":1358,":alpha-slider-min":1359,":alpha-slider-step":1359,":b-range":1360,":initial-alpha":1361,":initial-b":584,":initial-w":584,":w-range":1362,":x-train":1363,":y-train":1364,"b-label":1365,"mode":1374,"w-label":548},"stochastic",[11,1376,1377],{},"Roda \"Rodar 100\" nos dois com o mesmo alpha padrão. Depois de 50 passos, o batch já está com custo perto de 922 (bem próximo do mínimo real, 919), enquanto o estocástico, com o mesmo número de passos mas cada um enxergando só uma casa por vez, ainda está balançando em 7102. O caminho do estocástico no gráfico também é visivelmente mais \"sujo\", vai e volta em vez de descer suave.",[11,1379,1380,1381,1384,1385,1388],{},"Uma passagem completa pelos exemplos se chama ",[38,1382,1383],{},"época",". No scikit-learn, ",[71,1386,1387],{},"max_iter"," conta épocas, não atualizações individuais.",[43,1390,1391,1403],{},[46,1392,1393],{},[49,1394,1395,1397,1400],{},[52,1396],{"align":54},[52,1398,1399],{"align":54},"Batch GD",[52,1401,1402],{"align":54},"SGD",[63,1404,1405,1508,1545,1556,1567],{},[49,1406,1407,1410,1462],{},[68,1408,1409],{"align":54},"custo por atualização",[68,1411,1412],{"align":54},[203,1413,1415,1439],{"className":1414},[206],[203,1416,1418],{"className":1417},[210],[212,1419,1420],{"xmlns":214},[216,1421,1422,1436],{},[219,1423,1424,1427,1429,1431,1434],{},[222,1425,1426],{},"O",[226,1428,597],{"stretchy":603},[222,1430,401],{},[222,1432,1433],{},"n",[226,1435,617],{"stretchy":603},[246,1437,1438],{"encoding":248},"O(mn)",[203,1440,1442],{"className":1441,"ariaHidden":254},[253],[203,1443,1445,1449,1453,1456,1459],{"className":1444},[258],[203,1446],{"className":1447,"style":1448},[262],"height:1em;vertical-align:-0.25em;",[203,1450,1426],{"className":1451,"style":1452},[267,268],"margin-right:0.0278em;",[203,1454,597],{"className":1455},[294],[203,1457,434],{"className":1458},[267,268],[203,1460,617],{"className":1461},[385],[68,1463,1464],{"align":54},[203,1465,1467,1487],{"className":1466},[206],[203,1468,1470],{"className":1469},[210],[212,1471,1472],{"xmlns":214},[216,1473,1474,1484],{},[219,1475,1476,1478,1480,1482],{},[222,1477,1426],{},[226,1479,597],{"stretchy":603},[222,1481,1433],{},[226,1483,617],{"stretchy":603},[246,1485,1486],{"encoding":248},"O(n)",[203,1488,1490],{"className":1489,"ariaHidden":254},[253],[203,1491,1493,1496,1499,1502,1505],{"className":1492},[258],[203,1494],{"className":1495,"style":1448},[262],[203,1497,1426],{"className":1498,"style":1452},[267,268],[203,1500,597],{"className":1501},[294],[203,1503,1433],{"className":1504},[267,268],[203,1506,617],{"className":1507},[385],[49,1509,1510,1513,1515],{},[68,1511,1512],{"align":54},"atualizações por época",[68,1514,436],{"align":54},[68,1516,1517],{"align":54},[203,1518,1520,1533],{"className":1519},[206],[203,1521,1523],{"className":1522},[210],[212,1524,1525],{"xmlns":214},[216,1526,1527,1531],{},[219,1528,1529],{},[222,1530,401],{},[246,1532,401],{"encoding":248},[203,1534,1536],{"className":1535,"ariaHidden":254},[253],[203,1537,1539,1542],{"className":1538},[258],[203,1540],{"className":1541,"style":263},[262],[203,1543,401],{"className":1544},[267,268],[49,1546,1547,1550,1553],{},[68,1548,1549],{"align":54},"trajetória",[68,1551,1552],{"align":54},"suave",[68,1554,1555],{"align":54},"ruidosa",[49,1557,1558,1561,1564],{},[68,1559,1560],{"align":54},"determinístico?",[68,1562,1563],{"align":54},"sim",[68,1565,1566],{"align":54},"não (depende da ordem sorteada)",[49,1568,1569,1572,1603],{},[68,1570,1571],{"align":54},"bom quando",[68,1573,1574,1602],{"align":54},[203,1575,1577,1590],{"className":1576},[206],[203,1578,1580],{"className":1579},[210],[212,1581,1582],{"xmlns":214},[216,1583,1584,1588],{},[219,1585,1586],{},[222,1587,401],{},[246,1589,401],{"encoding":248},[203,1591,1593],{"className":1592,"ariaHidden":254},[253],[203,1594,1596,1599],{"className":1595},[258],[203,1597],{"className":1598,"style":263},[262],[203,1600,401],{"className":1601},[267,268]," pequeno\u002Fmédio",[68,1604,1605,1633],{"align":54},[203,1606,1608,1621],{"className":1607},[206],[203,1609,1611],{"className":1610},[210],[212,1612,1613],{"xmlns":214},[216,1614,1615,1619],{},[219,1616,1617],{},[222,1618,401],{},[246,1620,401],{"encoding":248},[203,1622,1624],{"className":1623,"ariaHidden":254},[253],[203,1625,1627,1630],{"className":1626},[258],[203,1628],{"className":1629,"style":263},[262],[203,1631,401],{"className":1632},[267,268]," muito grande",[11,1635,1636,1637,1640],{},"Com taxa de aprendizado constante, o SGD nunca para de tremer em torno do mínimo de vez. É por isso que o scikit-learn usa, por padrão, uma taxa que ",[38,1638,1639],{},"decresce"," ao longo do treino.",[22,1642,1644,1645,1647],{"id":1643},"duas-coisas-que-o-max_iter-esconde","Duas coisas que o ",[71,1646,1387],{}," esconde",[11,1649,1650,1651,1654,1655,1657,1658,170,1661,1664,1665,1667,1668,1671],{},"Peço ",[71,1652,1653],{},"max_iter=1000"," e o ",[71,1656,479],{}," normalmente para bem antes disso. Não é bug: existe parada antecipada (",[71,1659,1660],{},"tol",[71,1662,1663],{},"n_iter_no_change",") que detecta quando a perda parou de melhorar de verdade e encerra sozinho. ",[71,1666,1387],{}," é um ",[38,1669,1670],{},"teto",", não uma meta.",[11,1673,1674,1675,1678,1679,1681],{},"E sem fixar ",[71,1676,1677],{},"random_state",", cada ",[71,1680,118],{}," sorteia uma ordem diferente pros exemplos, e o resultado muda de execução pra execução. A variação costuma ser pequena, mas é real, principalmente em dataset menor ou mais difícil. Fixar a semente é o que torna o resultado reproduzível.",[22,1683,1685],{"id":1684},"a-surpresa-por-padrão-isso-é-ridge-não-mínimos-quadrados-puros","A surpresa: por padrão, isso é Ridge, não mínimos quadrados puros",[11,1687,1688,1689,1691,1692,170,1695,1698],{},"Essa é a que mais me pegou de surpresa. Os padrões do ",[71,1690,479],{}," são ",[71,1693,1694],{},"penalty='l2'",[71,1696,1697],{},"alpha=0.0001",". Ou seja, por padrão ele não minimiza",[11,1700,1701],{},[203,1702,1704,1792],{"className":1703},[206],[203,1705,1707],{"className":1706},[210],[212,1708,1709],{"xmlns":214},[216,1710,1711,1789],{},[219,1712,1713,1716,1718,1720,1723,1725,1727,1729,1740,1747],{},[222,1714,1715],{},"J",[226,1717,597],{"stretchy":603},[222,1719,548],{"mathvariant":547},[226,1721,1722],{"separator":254},",",[222,1724,1365],{},[226,1726,617],{"stretchy":603},[226,1728,581],{},[230,1730,1731,1733],{},[434,1732,436],{},[219,1734,1735,1738],{},[434,1736,1737],{},"2",[222,1739,401],{},[1741,1742,1743,1745],"msub",{},[226,1744,573],{},[222,1746,578],{},[605,1748,1749,1787],{},[219,1750,1751,1753,1755,1757,1769,1771,1773,1785],{},[226,1752,597],{"fence":254},[222,1754,600],{},[226,1756,597],{"stretchy":603},[605,1758,1759,1761],{},[222,1760,224],{"mathvariant":547},[219,1762,1763,1765,1767],{},[226,1764,597],{"stretchy":603},[222,1766,578],{},[226,1768,617],{"stretchy":603},[226,1770,617],{"stretchy":603},[226,1772,238],{},[605,1774,1775,1777],{},[222,1776,626],{},[219,1778,1779,1781,1783],{},[226,1780,597],{"stretchy":603},[222,1782,578],{},[226,1784,617],{"stretchy":603},[226,1786,617],{"fence":254},[434,1788,1737],{},[246,1790,1791],{"encoding":248},"J(\\mathbf{w},b) = \\frac{1}{2m}\\sum_i \\left(f(\\mathbf{x}^{(i)}) - y^{(i)}\\right)^2",[203,1793,1795,1833],{"className":1794,"ariaHidden":254},[253],[203,1796,1798,1801,1805,1808,1811,1815,1818,1821,1824,1827,1830],{"className":1797},[258],[203,1799],{"className":1800,"style":1448},[262],[203,1802,1715],{"className":1803,"style":1804},[267,268],"margin-right:0.0962em;",[203,1806,597],{"className":1807},[294],[203,1809,548],{"className":1810,"style":666},[267,665],[203,1812,1722],{"className":1813},[1814],"mpunct",[203,1816],{"className":1817,"style":708},[272],[203,1819,1365],{"className":1820},[267,268],[203,1822,617],{"className":1823},[385],[203,1825],{"className":1826,"style":273},[272],[203,1828,581],{"className":1829},[277],[203,1831],{"className":1832,"style":273},[272],[203,1834,1836,1840,1911,1914,1955,1958],{"className":1835},[258],[203,1837],{"className":1838,"style":1839},[262],"height:1.442em;vertical-align:-0.35em;",[203,1841,1843,1846,1908],{"className":1842},[267],[203,1844],{"className":1845},[294,295],[203,1847,1849],{"className":1848},[230],[203,1850,1852,1900],{"className":1851},[302,303],[203,1853,1855,1897],{"className":1854},[307],[203,1856,1858,1875,1883],{"className":1857,"style":727},[311],[203,1859,1860,1863],{"style":315},[203,1861],{"className":1862,"style":320},[319],[203,1864,1866],{"className":1865},[324,325,326,327],[203,1867,1869,1872],{"className":1868},[267,327],[203,1870,1737],{"className":1871},[267,327],[203,1873,401],{"className":1874},[267,268,327],[203,1876,1877,1880],{"style":337},[203,1878],{"className":1879,"style":320},[319],[203,1881],{"className":1882,"style":345},[344],[203,1884,1885,1888],{"style":752},[203,1886],{"className":1887,"style":320},[319],[203,1889,1891],{"className":1890},[324,325,326,327],[203,1892,1894],{"className":1893},[267,327],[203,1895,436],{"className":1896},[267,327],[203,1898,372],{"className":1899},[371],[203,1901,1903],{"className":1902},[307],[203,1904,1906],{"className":1905,"style":379},[311],[203,1907],{},[203,1909],{"className":1910},[385,295],[203,1912],{"className":1913,"style":708},[272],[203,1915,1917,1920],{"className":1916},[785],[203,1918,573],{"className":1919,"style":791},[785,789,790],[203,1921,1923],{"className":1922},[795],[203,1924,1926,1947],{"className":1925},[302,303],[203,1927,1929,1944],{"className":1928},[307],[203,1930,1933],{"className":1931,"style":1932},[311],"height:0.162em;",[203,1934,1935,1938],{"style":808},[203,1936],{"className":1937,"style":812},[319],[203,1939,1941],{"className":1940},[324,325,326,327],[203,1942,578],{"className":1943},[267,268,327],[203,1945,372],{"className":1946},[371],[203,1948,1950],{"className":1949},[307],[203,1951,1953],{"className":1952,"style":858},[311],[203,1954],{},[203,1956],{"className":1957,"style":708},[272],[203,1959,1961,2070],{"className":1960},[867],[203,1962,1964,1970,1973,1976,2014,2017,2020,2023,2026,2064],{"className":1963},[867],[203,1965,1967],{"className":1966,"style":872},[294,871],[203,1968,597],{"className":1969},[876,877],[203,1971,600],{"className":1972,"style":881},[267,268],[203,1974,597],{"className":1975},[294],[203,1977,1979,1982],{"className":1978},[267],[203,1980,224],{"className":1981},[267,665],[203,1983,1985],{"className":1984},[795],[203,1986,1988],{"className":1987},[302],[203,1989,1991],{"className":1990},[307],[203,1992,1994],{"className":1993,"style":903},[311],[203,1995,1996,1999],{"style":906},[203,1997],{"className":1998,"style":812},[319],[203,2000,2002],{"className":2001},[324,325,326,327],[203,2003,2005,2008,2011],{"className":2004},[267,327],[203,2006,597],{"className":2007},[294,327],[203,2009,578],{"className":2010},[267,268,327],[203,2012,617],{"className":2013},[385,327],[203,2015,617],{"className":2016},[385],[203,2018],{"className":2019,"style":456},[272],[203,2021,238],{"className":2022},[364],[203,2024],{"className":2025,"style":456},[272],[203,2027,2029,2032],{"className":2028},[267],[203,2030,626],{"className":2031,"style":334},[267,268],[203,2033,2035],{"className":2034},[795],[203,2036,2038],{"className":2037},[302],[203,2039,2041],{"className":2040},[307],[203,2042,2044],{"className":2043,"style":903},[311],[203,2045,2046,2049],{"style":906},[203,2047],{"className":2048,"style":812},[319],[203,2050,2052],{"className":2051},[324,325,326,327],[203,2053,2055,2058,2061],{"className":2054},[267,327],[203,2056,597],{"className":2057},[294,327],[203,2059,578],{"className":2060},[267,268,327],[203,2062,617],{"className":2063},[385,327],[203,2065,2067],{"className":2066,"style":872},[385,871],[203,2068,617],{"className":2069},[876,877],[203,2071,2073],{"className":2072},[795],[203,2074,2076],{"className":2075},[302],[203,2077,2079],{"className":2078},[307],[203,2080,2083],{"className":2081,"style":2082},[311],"height:1.092em;",[203,2084,2086,2089],{"style":2085},"top:-3.3409em;margin-right:0.05em;",[203,2087],{"className":2088,"style":812},[319],[203,2090,2092],{"className":2091},[324,325,326,327],[203,2093,1737],{"className":2094},[267,327],[11,2096,2097],{},"e sim",[11,2099,2100],{},[203,2101,2103,2204],{"className":2102},[206],[203,2104,2106],{"className":2105},[210],[212,2107,2108],{"xmlns":214},[216,2109,2110,2201],{},[219,2111,2112,2114,2116,2118,2120,2122,2124,2126,2136,2142,2184,2187,2189,2193,2195],{},[222,2113,1715],{},[226,2115,597],{"stretchy":603},[222,2117,548],{"mathvariant":547},[226,2119,1722],{"separator":254},[222,2121,1365],{},[226,2123,617],{"stretchy":603},[226,2125,581],{},[230,2127,2128,2130],{},[434,2129,436],{},[219,2131,2132,2134],{},[434,2133,1737],{},[222,2135,401],{},[1741,2137,2138,2140],{},[226,2139,573],{},[222,2141,578],{},[605,2143,2144,2182],{},[219,2145,2146,2148,2150,2152,2164,2166,2168,2180],{},[226,2147,597],{"fence":254},[222,2149,600],{},[226,2151,597],{"stretchy":603},[605,2153,2154,2156],{},[222,2155,224],{"mathvariant":547},[219,2157,2158,2160,2162],{},[226,2159,597],{"stretchy":603},[222,2161,578],{},[226,2163,617],{"stretchy":603},[226,2165,617],{"stretchy":603},[226,2167,238],{},[605,2169,2170,2172],{},[222,2171,626],{},[219,2173,2174,2176,2178],{},[226,2175,597],{"stretchy":603},[222,2177,578],{},[226,2179,617],{"stretchy":603},[226,2181,617],{"fence":254},[434,2183,1737],{},[226,2185,2186],{},"+",[222,2188,557],{},[222,2190,2192],{"mathvariant":2191},"normal","∥",[222,2194,548],{"mathvariant":547},[605,2196,2197,2199],{},[222,2198,2192],{"mathvariant":2191},[434,2200,1737],{},[246,2202,2203],{"encoding":248},"J(\\mathbf{w},b) = \\frac{1}{2m}\\sum_i \\left(f(\\mathbf{x}^{(i)}) - y^{(i)}\\right)^2 + \\alpha\\|\\mathbf{w}\\|^2",[203,2205,2207,2243,2510],{"className":2206,"ariaHidden":254},[253],[203,2208,2210,2213,2216,2219,2222,2225,2228,2231,2234,2237,2240],{"className":2209},[258],[203,2211],{"className":2212,"style":1448},[262],[203,2214,1715],{"className":2215,"style":1804},[267,268],[203,2217,597],{"className":2218},[294],[203,2220,548],{"className":2221,"style":666},[267,665],[203,2223,1722],{"className":2224},[1814],[203,2226],{"className":2227,"style":708},[272],[203,2229,1365],{"className":2230},[267,268],[203,2232,617],{"className":2233},[385],[203,2235],{"className":2236,"style":273},[272],[203,2238,581],{"className":2239},[277],[203,2241],{"className":2242,"style":273},[272],[203,2244,2246,2249,2320,2323,2363,2366,2501,2504,2507],{"className":2245},[258],[203,2247],{"className":2248,"style":1839},[262],[203,2250,2252,2255,2317],{"className":2251},[267],[203,2253],{"className":2254},[294,295],[203,2256,2258],{"className":2257},[230],[203,2259,2261,2309],{"className":2260},[302,303],[203,2262,2264,2306],{"className":2263},[307],[203,2265,2267,2284,2292],{"className":2266,"style":727},[311],[203,2268,2269,2272],{"style":315},[203,2270],{"className":2271,"style":320},[319],[203,2273,2275],{"className":2274},[324,325,326,327],[203,2276,2278,2281],{"className":2277},[267,327],[203,2279,1737],{"className":2280},[267,327],[203,2282,401],{"className":2283},[267,268,327],[203,2285,2286,2289],{"style":337},[203,2287],{"className":2288,"style":320},[319],[203,2290],{"className":2291,"style":345},[344],[203,2293,2294,2297],{"style":752},[203,2295],{"className":2296,"style":320},[319],[203,2298,2300],{"className":2299},[324,325,326,327],[203,2301,2303],{"className":2302},[267,327],[203,2304,436],{"className":2305},[267,327],[203,2307,372],{"className":2308},[371],[203,2310,2312],{"className":2311},[307],[203,2313,2315],{"className":2314,"style":379},[311],[203,2316],{},[203,2318],{"className":2319},[385,295],[203,2321],{"className":2322,"style":708},[272],[203,2324,2326,2329],{"className":2325},[785],[203,2327,573],{"className":2328,"style":791},[785,789,790],[203,2330,2332],{"className":2331},[795],[203,2333,2335,2355],{"className":2334},[302,303],[203,2336,2338,2352],{"className":2337},[307],[203,2339,2341],{"className":2340,"style":1932},[311],[203,2342,2343,2346],{"style":808},[203,2344],{"className":2345,"style":812},[319],[203,2347,2349],{"className":2348},[324,325,326,327],[203,2350,578],{"className":2351},[267,268,327],[203,2353,372],{"className":2354},[371],[203,2356,2358],{"className":2357},[307],[203,2359,2361],{"className":2360,"style":858},[311],[203,2362],{},[203,2364],{"className":2365,"style":708},[272],[203,2367,2369,2478],{"className":2368},[867],[203,2370,2372,2378,2381,2384,2422,2425,2428,2431,2434,2472],{"className":2371},[867],[203,2373,2375],{"className":2374,"style":872},[294,871],[203,2376,597],{"className":2377},[876,877],[203,2379,600],{"className":2380,"style":881},[267,268],[203,2382,597],{"className":2383},[294],[203,2385,2387,2390],{"className":2386},[267],[203,2388,224],{"className":2389},[267,665],[203,2391,2393],{"className":2392},[795],[203,2394,2396],{"className":2395},[302],[203,2397,2399],{"className":2398},[307],[203,2400,2402],{"className":2401,"style":903},[311],[203,2403,2404,2407],{"style":906},[203,2405],{"className":2406,"style":812},[319],[203,2408,2410],{"className":2409},[324,325,326,327],[203,2411,2413,2416,2419],{"className":2412},[267,327],[203,2414,597],{"className":2415},[294,327],[203,2417,578],{"className":2418},[267,268,327],[203,2420,617],{"className":2421},[385,327],[203,2423,617],{"className":2424},[385],[203,2426],{"className":2427,"style":456},[272],[203,2429,238],{"className":2430},[364],[203,2432],{"className":2433,"style":456},[272],[203,2435,2437,2440],{"className":2436},[267],[203,2438,626],{"className":2439,"style":334},[267,268],[203,2441,2443],{"className":2442},[795],[203,2444,2446],{"className":2445},[302],[203,2447,2449],{"className":2448},[307],[203,2450,2452],{"className":2451,"style":903},[311],[203,2453,2454,2457],{"style":906},[203,2455],{"className":2456,"style":812},[319],[203,2458,2460],{"className":2459},[324,325,326,327],[203,2461,2463,2466,2469],{"className":2462},[267,327],[203,2464,597],{"className":2465},[294,327],[203,2467,578],{"className":2468},[267,268,327],[203,2470,617],{"className":2471},[385,327],[203,2473,2475],{"className":2474,"style":872},[385,871],[203,2476,617],{"className":2477},[876,877],[203,2479,2481],{"className":2480},[795],[203,2482,2484],{"className":2483},[302],[203,2485,2487],{"className":2486},[307],[203,2488,2490],{"className":2489,"style":2082},[311],[203,2491,2492,2495],{"style":2085},[203,2493],{"className":2494,"style":812},[319],[203,2496,2498],{"className":2497},[324,325,326,327],[203,2499,1737],{"className":2500},[267,327],[203,2502],{"className":2503,"style":456},[272],[203,2505,2186],{"className":2506},[364],[203,2508],{"className":2509,"style":456},[272],[203,2511,2513,2517,2520,2523,2526],{"className":2512},[258],[203,2514],{"className":2515,"style":2516},[262],"height:1.0641em;vertical-align:-0.25em;",[203,2518,557],{"className":2519,"style":704},[267,268],[203,2521,2192],{"className":2522},[267],[203,2524,548],{"className":2525,"style":666},[267,665],[203,2527,2529,2532],{"className":2528},[267],[203,2530,2192],{"className":2531},[267],[203,2533,2535],{"className":2534},[795],[203,2536,2538],{"className":2537},[302],[203,2539,2541],{"className":2540},[307],[203,2542,2545],{"className":2543,"style":2544},[311],"height:0.8141em;",[203,2546,2547,2550],{"style":906},[203,2548],{"className":2549,"style":812},[319],[203,2551,2553],{"className":2552},[324,325,326,327],[203,2554,1737],{"className":2555},[267,327],[11,2557,2558,2559,2562,2563,2615,2616,2667],{},"O termo extra é exatamente a regularização L2 que eu implementei do zero no ",[30,2560,2561],{"href":182},"post bônus anterior",". Com ",[203,2564,2566,2585],{"className":2565},[206],[203,2567,2569],{"className":2568},[210],[212,2570,2571],{"xmlns":214},[216,2572,2573,2582],{},[219,2574,2575,2577,2579],{},[222,2576,557],{},[226,2578,581],{},[434,2580,2581],{},"0.0001",[246,2583,2584],{"encoding":248},"\\alpha=0.0001",[203,2586,2588,2606],{"className":2587,"ariaHidden":254},[253],[203,2589,2591,2594,2597,2600,2603],{"className":2590},[258],[203,2592],{"className":2593,"style":263},[262],[203,2595,557],{"className":2596,"style":704},[267,268],[203,2598],{"className":2599,"style":273},[272],[203,2601,581],{"className":2602},[277],[203,2604],{"className":2605,"style":273},[272],[203,2607,2609,2612],{"className":2608},[258],[203,2610],{"className":2611,"style":469},[262],[203,2613,2581],{"className":2614},[267]," (o padrão) o efeito é pequeno demais pra notar neste dataset, mas o mecanismo é real. Ajustei com ",[203,2617,2619,2637],{"className":2618},[206],[203,2620,2622],{"className":2621},[210],[212,2623,2624],{"xmlns":214},[216,2625,2626,2634],{},[219,2627,2628,2630,2632],{},[222,2629,557],{},[226,2631,581],{},[434,2633,436],{},[246,2635,2636],{"encoding":248},"\\alpha=1",[203,2638,2640,2658],{"className":2639,"ariaHidden":254},[253],[203,2641,2643,2646,2649,2652,2655],{"className":2642},[258],[203,2644],{"className":2645,"style":263},[262],[203,2647,557],{"className":2648,"style":704},[267,268],[203,2650],{"className":2651,"style":273},[272],[203,2653,581],{"className":2654},[277],[203,2656],{"className":2657,"style":273},[272],[203,2659,2661,2664],{"className":2660},[258],[203,2662],{"className":2663,"style":469},[262],[203,2665,436],{"className":2666},[267]," (bem mais forte, só pra deixar visível) no nosso dataset de 100 casas:",[43,2669,2670,2713],{},[46,2671,2672],{},[49,2673,2674,2677,2681],{},[52,2675,2676],{"align":54},"Modelo",[52,2678,2680],{"align":2679},"right","RMSE",[52,2682,2683,2684],{"align":2679},"Norma de ",[203,2685,2687,2701],{"className":2686},[206],[203,2688,2690],{"className":2689},[210],[212,2691,2692],{"xmlns":214},[216,2693,2694,2698],{},[219,2695,2696],{},[222,2697,548],{"mathvariant":547},[246,2699,2700],{"encoding":248},"\\mathbf{w}",[203,2702,2704],{"className":2703,"ariaHidden":254},[253],[203,2705,2707,2710],{"className":2706},[258],[203,2708],{"className":2709,"style":661},[262],[203,2711,548],{"className":2712,"style":666},[267,665],[63,2714,2715,2726],{},[49,2716,2717,2720,2723],{},[68,2718,2719],{"align":54},"Sem regularização",[68,2721,2722],{"align":2679},"20.96",[68,2724,2725],{"align":2679},"123.25",[49,2727,2728,2781,2784],{},[68,2729,2730,2731,617],{"align":54},"Ridge (",[203,2732,2734,2751],{"className":2733},[206],[203,2735,2737],{"className":2736},[210],[212,2738,2739],{"xmlns":214},[216,2740,2741,2749],{},[219,2742,2743,2745,2747],{},[222,2744,557],{},[226,2746,581],{},[434,2748,436],{},[246,2750,2636],{"encoding":248},[203,2752,2754,2772],{"className":2753,"ariaHidden":254},[253],[203,2755,2757,2760,2763,2766,2769],{"className":2756},[258],[203,2758],{"className":2759,"style":263},[262],[203,2761,557],{"className":2762,"style":704},[267,268],[203,2764],{"className":2765,"style":273},[272],[203,2767,581],{"className":2768},[277],[203,2770],{"className":2771,"style":273},[272],[203,2773,2775,2778],{"className":2774},[258],[203,2776],{"className":2777,"style":469},[262],[203,2779,436],{"className":2780},[267],[68,2782,2783],{"align":2679},"21.04",[68,2785,2786],{"align":2679},"120.39",[11,2788,2789,2790,2793,2794,2797,2798,2801,2802,2831],{},"O peso encolhe, o erro de treino piora um pouquinho, exatamente o trade-off que eu já vi no ",[30,2791,2792],{"href":182},"post de Ridge",". ",[38,2795,2796],{},"Conheça os padrões da biblioteca que você usa",": um ",[71,2799,2800],{},"SGDRegressor()"," chamado sem argumento nenhum não é \"regressão linear crua\", é Ridge com um ",[203,2803,2805,2819],{"className":2804},[206],[203,2806,2808],{"className":2807},[210],[212,2809,2810],{"xmlns":214},[216,2811,2812,2816],{},[219,2813,2814],{},[222,2815,557],{},[246,2817,2818],{"encoding":248},"\\alpha",[203,2820,2822],{"className":2821,"ariaHidden":254},[253],[203,2823,2825,2828],{"className":2824},[258],[203,2826],{"className":2827,"style":263},[262],[203,2829,557],{"className":2830,"style":704},[267,268]," discreto e pequeno.",[22,2833,2835],{"id":2834},"prevendo-e-um-jeito-frágil-de-comparar","Prevendo, e um jeito frágil de comparar",[11,2837,2838,2839,2842,2843,2846,2847,2849],{},"Duas contas matematicamente equivalentes podem diferir no último bit de precisão por causa da ordem das operações de ponto flutuante. Comparar previsões com ",[71,2840,2841],{},"=="," é frágil (",[71,2844,2845],{},"0.1 + 0.2 == 0.3"," é ",[71,2848,603],{}," em qualquer linguagem que usa ponto flutuante de 64 bits, pelo mesmo motivo). O jeito certo é conferir se a diferença fica dentro de uma tolerância pequena, não exigir igualdade exata.",[22,2851,2853],{"id":2852},"métricas-quão-bom-é-esse-modelo-de-verdade","Métricas: quão bom é esse modelo, de verdade",[11,2855,2856,2857,2886],{},"Até aqui eu tinha usado custo ",[203,2858,2860,2873],{"className":2859},[206],[203,2861,2863],{"className":2862},[210],[212,2864,2865],{"xmlns":214},[216,2866,2867,2871],{},[219,2868,2869],{},[222,2870,1715],{},[246,2872,1715],{"encoding":248},[203,2874,2876],{"className":2875,"ariaHidden":254},[253],[203,2877,2879,2883],{"className":2878},[258],[203,2880],{"className":2881,"style":2882},[262],"height:0.6833em;",[203,2884,1715],{"className":2885,"style":1804},[267,268]," pra treinar, mas nunca uma métrica pensada pra ser lida por gente. Ajustei o modelo com as 4 features no dataset completo de 100 casas e calculei três métricas padrão:",[43,2888,2889,2902],{},[46,2890,2891],{},[49,2892,2893,2896,2899],{},[52,2894,2895],{"align":54},"Métrica",[52,2897,2898],{"align":2679},"Valor",[52,2900,2901],{"align":54},"O que mede",[63,2903,2904,2914,2925],{},[49,2905,2906,2908,2911],{},[68,2907,2680],{"align":54},[68,2909,2910],{"align":2679},"20.96 mil US$",[68,2912,2913],{"align":54},"erro típico, pune erro grande desproporcionalmente",[49,2915,2916,2919,2922],{},[68,2917,2918],{"align":54},"MAE",[68,2920,2921],{"align":2679},"16.91 mil US$",[68,2923,2924],{"align":54},"erro absoluto médio, mais robusto a outlier",[49,2926,2927,2930,2933],{},[68,2928,2929],{"align":54},"R²",[68,2931,2932],{"align":2679},"0.9594",[68,2934,2935],{"align":54},"fração da variância do preço explicada pelo modelo",[11,2937,2938,2939,2942],{},"Pra ter uma referência: um modelo \"burro\" que sempre chuta a média erra com RMSE de 104.07. O nosso erra ",[38,2940,2941],{},"4.96 vezes menos",". É esse o ganho real de ter um modelo, não só o número de R² sozinho.",[22,2944,2946,2948,2949,2952],{"id":2945},"sgdregressor-ou-linearregression-a-escolha-de-verdade",[71,2947,479],{}," ou ",[71,2950,2951],{},"LinearRegression","? A escolha de verdade",[11,2954,2955,2956,2958,2959,2962,2963,2965,2966,3157,3158,3161,3162,2793,3237,3239,3240,3285],{},"O curso apresenta o ",[71,2957,479],{}," como \"a regressão linear do scikit-learn\", mas na prática ela é a escolha ",[38,2960,2961],{},"menos"," comum. ",[71,2964,2951],{}," resolve a equação normal em forma fechada, ",[203,2967,2969,3017],{"className":2968},[206],[203,2970,2972],{"className":2971},[210],[212,2973,2974],{"xmlns":214},[216,2975,2976,3014],{},[219,2977,2978,2982,2984,2986,2994,2996,3006,3012],{},[222,2979,2981],{"mathvariant":2980},"bold-italic","θ",[226,2983,581],{},[226,2985,597],{"stretchy":603},[605,2987,2988,2991],{},[222,2989,2990],{"mathvariant":547},"X",[222,2992,2993],{"mathvariant":2191},"⊤",[222,2995,2990],{"mathvariant":547},[605,2997,2998,3000],{},[226,2999,617],{"stretchy":603},[219,3001,3002,3004],{},[226,3003,238],{},[434,3005,436],{},[605,3007,3008,3010],{},[222,3009,2990],{"mathvariant":547},[222,3011,2993],{"mathvariant":2191},[222,3013,626],{"mathvariant":547},[246,3015,3016],{"encoding":248},"\\boldsymbol{\\theta} = (\\mathbf{X}^\\top\\mathbf{X})^{-1}\\mathbf{X}^\\top\\mathbf{y}",[203,3018,3020,3047],{"className":3019,"ariaHidden":254},[253],[203,3021,3023,3027,3038,3041,3044],{"className":3022},[258],[203,3024],{"className":3025,"style":3026},[262],"height:0.6944em;",[203,3028,3030],{"className":3029},[267],[203,3031,3033],{"className":3032},[267],[203,3034,2981],{"className":3035,"style":3037},[267,3036],"boldsymbol","margin-right:0.0319em;",[203,3039],{"className":3040,"style":273},[272],[203,3042,581],{"className":3043},[277],[203,3045],{"className":3046,"style":273},[272],[203,3048,3050,3054,3057,3087,3090,3125,3154],{"className":3049},[258],[203,3051],{"className":3052,"style":3053},[262],"height:1.0991em;vertical-align:-0.25em;",[203,3055,597],{"className":3056},[294],[203,3058,3060,3063],{"className":3059},[267],[203,3061,2990],{"className":3062},[267,665],[203,3064,3066],{"className":3065},[795],[203,3067,3069],{"className":3068},[302],[203,3070,3072],{"className":3071},[307],[203,3073,3076],{"className":3074,"style":3075},[311],"height:0.8491em;",[203,3077,3078,3081],{"style":906},[203,3079],{"className":3080,"style":812},[319],[203,3082,3084],{"className":3083},[324,325,326,327],[203,3085,2993],{"className":3086},[267,327],[203,3088,2990],{"className":3089},[267,665],[203,3091,3093,3096],{"className":3092},[385],[203,3094,617],{"className":3095},[385],[203,3097,3099],{"className":3098},[795],[203,3100,3102],{"className":3101},[302],[203,3103,3105],{"className":3104},[307],[203,3106,3108],{"className":3107,"style":2544},[311],[203,3109,3110,3113],{"style":906},[203,3111],{"className":3112,"style":812},[319],[203,3114,3116],{"className":3115},[324,325,326,327],[203,3117,3119,3122],{"className":3118},[267,327],[203,3120,238],{"className":3121},[267,327],[203,3123,436],{"className":3124},[267,327],[203,3126,3128,3131],{"className":3127},[267],[203,3129,2990],{"className":3130},[267,665],[203,3132,3134],{"className":3133},[795],[203,3135,3137],{"className":3136},[302],[203,3138,3140],{"className":3139},[307],[203,3141,3143],{"className":3142,"style":3075},[311],[203,3144,3145,3148],{"style":906},[203,3146],{"className":3147,"style":812},[319],[203,3149,3151],{"className":3150},[324,325,326,327],[203,3152,2993],{"className":3153},[267,327],[203,3155,626],{"className":3156,"style":666},[267,665],", sem iteração, sem taxa de aprendizado, sem semente aleatória. O custo cresce com o ",[38,3159,3160],{},"cubo"," do número de features, ",[203,3163,3165,3190],{"className":3164},[206],[203,3166,3168],{"className":3167},[210],[212,3169,3170],{"xmlns":214},[216,3171,3172,3187],{},[219,3173,3174,3176,3178,3185],{},[222,3175,1426],{},[226,3177,597],{"stretchy":603},[605,3179,3180,3182],{},[222,3181,1433],{},[434,3183,3184],{},"3",[226,3186,617],{"stretchy":603},[246,3188,3189],{"encoding":248},"O(n^3)",[203,3191,3193],{"className":3192,"ariaHidden":254},[253],[203,3194,3196,3199,3202,3205,3234],{"className":3195},[258],[203,3197],{"className":3198,"style":2516},[262],[203,3200,1426],{"className":3201,"style":1452},[267,268],[203,3203,597],{"className":3204},[294],[203,3206,3208,3211],{"className":3207},[267],[203,3209,1433],{"className":3210},[267,268],[203,3212,3214],{"className":3213},[795],[203,3215,3217],{"className":3216},[302],[203,3218,3220],{"className":3219},[307],[203,3221,3223],{"className":3222,"style":2544},[311],[203,3224,3225,3228],{"style":906},[203,3226],{"className":3227,"style":812},[319],[203,3229,3231],{"className":3230},[324,325,326,327],[203,3232,3184],{"className":3233},[267,327],[203,3235,617],{"className":3236},[385],[71,3238,479],{}," itera, custa ",[203,3241,3243,3264],{"className":3242},[206],[203,3244,3246],{"className":3245},[210],[212,3247,3248],{"xmlns":214},[216,3249,3250,3262],{},[219,3251,3252,3254,3256,3258,3260],{},[222,3253,1426],{},[226,3255,597],{"stretchy":603},[222,3257,401],{},[222,3259,1433],{},[226,3261,617],{"stretchy":603},[246,3263,1438],{"encoding":248},[203,3265,3267],{"className":3266,"ariaHidden":254},[253],[203,3268,3270,3273,3276,3279,3282],{"className":3269},[258],[203,3271],{"className":3272,"style":1448},[262],[203,3274,1426],{"className":3275,"style":1452},[267,268],[203,3277,597],{"className":3278},[294],[203,3280,434],{"className":3281},[267,268],[203,3283,617],{"className":3284},[385]," por época, e nunca precisa carregar tudo na memória de uma vez.",[43,3287,3288,3303],{},[46,3289,3290],{},[49,3291,3292,3295,3299],{},[52,3293,3294],{"align":54},"Critério",[52,3296,3297],{"align":54},[71,3298,2951],{},[52,3300,3301],{"align":54},[71,3302,479],{},[63,3304,3305,3316,3327,3340,3438,3480],{},[49,3306,3307,3310,3313],{},[68,3308,3309],{"align":54},"exatidão",[68,3311,3312],{"align":54},"solução exata",[68,3314,3315],{"align":54},"aproximada",[49,3317,3318,3321,3324],{},[68,3319,3320],{"align":54},"determinismo",[68,3322,3323],{"align":54},"total",[68,3325,3326],{"align":54},"depende da semente",[49,3328,3329,3332,3335],{},[68,3330,3331],{"align":54},"precisa normalizar?",[68,3333,3334],{"align":54},"não",[68,3336,3337],{"align":54},[38,3338,3339],{},"sim, obrigatoriamente",[49,3341,3342,3373,3435],{},[68,3343,3344,3372],{"align":54},[203,3345,3347,3360],{"className":3346},[206],[203,3348,3350],{"className":3349},[210],[212,3351,3352],{"xmlns":214},[216,3353,3354,3358],{},[219,3355,3356],{},[222,3357,1433],{},[246,3359,1433],{"encoding":248},[203,3361,3363],{"className":3362,"ariaHidden":254},[253],[203,3364,3366,3369],{"className":3365},[258],[203,3367],{"className":3368,"style":263},[262],[203,3370,1433],{"className":3371},[267,268]," de features enorme",[68,3374,3375,3376,617],{"align":54},"fica caro (",[203,3377,3379,3397],{"className":3378},[206],[203,3380,3382],{"className":3381},[210],[212,3383,3384],{"xmlns":214},[216,3385,3386,3394],{},[219,3387,3388],{},[605,3389,3390,3392],{},[222,3391,1433],{},[434,3393,3184],{},[246,3395,3396],{"encoding":248},"n^3",[203,3398,3400],{"className":3399,"ariaHidden":254},[253],[203,3401,3403,3406],{"className":3402},[258],[203,3404],{"className":3405,"style":2544},[262],[203,3407,3409,3412],{"className":3408},[267],[203,3410,1433],{"className":3411},[267,268],[203,3413,3415],{"className":3414},[795],[203,3416,3418],{"className":3417},[302],[203,3419,3421],{"className":3420},[307],[203,3422,3424],{"className":3423,"style":2544},[311],[203,3425,3426,3429],{"style":906},[203,3427],{"className":3428,"style":812},[319],[203,3430,3432],{"className":3431},[324,325,326,327],[203,3433,3184],{"className":3434},[267,327],[68,3436,3437],{"align":54},"tudo bem",[49,3439,3440,3471,3474],{},[68,3441,3442,3470],{"align":54},[203,3443,3445,3458],{"className":3444},[206],[203,3446,3448],{"className":3447},[210],[212,3449,3450],{"xmlns":214},[216,3451,3452,3456],{},[219,3453,3454],{},[222,3455,401],{},[246,3457,401],{"encoding":248},[203,3459,3461],{"className":3460,"ariaHidden":254},[253],[203,3462,3464,3467],{"className":3463},[258],[203,3465],{"className":3466,"style":263},[262],[203,3468,401],{"className":3469},[267,268]," de exemplos gigante",[68,3472,3473],{"align":54},"precisa caber na memória",[68,3475,3476,3477],{"align":54},"escala bem, aceita ",[71,3478,3479],{},"partial_fit",[49,3481,3482,3485,3487],{},[68,3483,3484],{"align":54},"aprendizado incremental",[68,3486,3334],{"align":54},[68,3488,1563],{"align":54},[11,3490,3491,3494,3495,3497,3498,3501,3502,3504],{},[38,3492,3493],{},"Regra prática:"," uso ",[71,3496,2951],{}," (ou ",[71,3499,3500],{},"Ridge",") por padrão. Só vou pro ",[71,3503,479],{}," quando o dado não cabe na memória, chega em fluxo, ou o número de features é gigante.",[22,3506,3508],{"id":3507},"fechando","Fechando",[43,3510,3511,3521],{},[46,3512,3513],{},[49,3514,3515,3518],{},[52,3516,3517],{"align":54},"O que eu já sabia",[52,3519,3520],{"align":54},"O que esse post resolveu",[63,3522,3523,3531,3539],{},[49,3524,3525,3528],{},[68,3526,3527],{"align":54},"Gradiente descendente usa todo o dataset a cada passo",[68,3529,3530],{"align":54},"Existe uma versão que usa um exemplo por vez, mais barata por passo, mais ruidosa",[49,3532,3533,3536],{},[68,3534,3535],{"align":54},"Eu implementei tudo isso na mão até aqui",[68,3537,3538],{"align":54},"A biblioteca padrão da área faz a mesma coisa, com a mesma convenção de API em centenas de modelos",[49,3540,3541,3544],{},[68,3542,3543],{"align":54},"Ridge é uma escolha explícita que eu fiz",[68,3545,3546],{"align":54},"O modelo \"padrão\" de gradiente estocástico do scikit-learn já vem com Ridge ligado, sem avisar",[11,3548,3549],{},"Três ideias pra levar:",[3551,3552,3553,3571,3577],"ol",{},[3554,3555,3556,3570],"li",{},[38,3557,3558,3559,3561,3562,3561,3564,3561,3566,3569],{},"A convenção ",[71,3560,118],{},"\u002F",[71,3563,173],{},[71,3565,122],{},[71,3567,3568],{},"score"," vale mais que decorar um modelo específico",", ela se repete em toda a biblioteca.",[3554,3572,3573,3576],{},[38,3574,3575],{},"SGD troca precisão por velocidade por passo",": mesma direção geral, caminho mais barato e mais ruidoso.",[3554,3578,3579,201,3582,3584,3585,3587],{},[38,3580,3581],{},"Conheça os padrões do que você usa",[71,3583,1694],{}," ligado por padrão no ",[71,3586,479],{}," é o tipo de detalhe que muda o que o seu código realmente está fazendo.",[22,3589,3591],{"id":3590},"aplicação-prática","Aplicação prática",[11,3593,3594,3595,170,3598,3601,3602,3702,3703,3706],{},"Mesmo dataset real de imóveis dos posts anteriores. Já sei que o gradiente descendente batch, com ",[71,3596,3597],{},"square_feet\u002F100",[71,3599,3600],{},"price\u002F1000",", alpha=0.01, precisa de 4000 iterações completas pra chegar em ",[203,3603,3605,3641],{"className":3604},[206],[203,3606,3608],{"className":3607},[210],[212,3609,3610],{"xmlns":214},[216,3611,3612,3638],{},[219,3613,3614,3616,3618,3620,3622,3624,3626,3628,3631,3633,3636],{},[226,3615,597],{"stretchy":603},[222,3617,548],{},[226,3619,1722],{"separator":254},[222,3621,1365],{},[226,3623,617],{"stretchy":603},[226,3625,581],{},[226,3627,597],{"stretchy":603},[434,3629,3630],{},"116.5",[226,3632,1722],{"separator":254},[434,3634,3635],{},"398.3",[226,3637,617],{"stretchy":603},[246,3639,3640],{"encoding":248},"(w,b) = (116.5, 398.3)",[203,3642,3644,3678],{"className":3643,"ariaHidden":254},[253],[203,3645,3647,3650,3653,3657,3660,3663,3666,3669,3672,3675],{"className":3646},[258],[203,3648],{"className":3649,"style":1448},[262],[203,3651,597],{"className":3652},[294],[203,3654,548],{"className":3655,"style":3656},[267,268],"margin-right:0.0269em;",[203,3658,1722],{"className":3659},[1814],[203,3661],{"className":3662,"style":708},[272],[203,3664,1365],{"className":3665},[267,268],[203,3667,617],{"className":3668},[385],[203,3670],{"className":3671,"style":273},[272],[203,3673,581],{"className":3674},[277],[203,3676],{"className":3677,"style":273},[272],[203,3679,3681,3684,3687,3690,3693,3696,3699],{"className":3680},[258],[203,3682],{"className":3683,"style":1448},[262],[203,3685,597],{"className":3686},[294],[203,3688,3630],{"className":3689},[267],[203,3691,1722],{"className":3692},[1814],[203,3694],{"className":3695,"style":708},[272],[203,3697,3635],{"className":3698},[267],[203,3700,617],{"className":3701},[385],", custo final 5189.72. Cada uma dessas 4000 iterações olha as 50 casas inteiras, então são ",[38,3704,3705],{},"200 mil"," avaliações de exemplo ao todo.",[11,3708,3709,3710,3713],{},"Rodei o estocástico com o mesmo alpha, só que contando ",[38,3711,3712],{},"passos individuais"," em vez de iterações completas:",[3715,3716,3721],"pre",{"className":3717,"code":3718,"language":3719,"meta":3720,"style":3720},"language-python shiki shiki-themes github-light github-dark","w, b, hist = sgd_gradient_descent(\n    square_feet_norm, price,\n    w_in=0, b_in=0,\n    alpha=0.01, num_steps=4000)  # 4000 exemplos vistos, não 4000 passagens completas\n\nprint(f\"(w, b) encontrados: ({w:.1f}, {b:.1f})\")\n","python","",[71,3722,3723,3730,3736,3742,3748,3755],{"__ignoreMap":3720},[203,3724,3727],{"class":3725,"line":3726},"line",1,[203,3728,3729],{},"w, b, hist = sgd_gradient_descent(\n",[203,3731,3733],{"class":3725,"line":3732},2,[203,3734,3735],{},"    square_feet_norm, price,\n",[203,3737,3739],{"class":3725,"line":3738},3,[203,3740,3741],{},"    w_in=0, b_in=0,\n",[203,3743,3745],{"class":3725,"line":3744},4,[203,3746,3747],{},"    alpha=0.01, num_steps=4000)  # 4000 exemplos vistos, não 4000 passagens completas\n",[203,3749,3751],{"class":3725,"line":3750},5,[203,3752,3754],{"emptyLinePlaceholder":3753},true,"\n",[203,3756,3758],{"class":3725,"line":3757},6,[203,3759,3760],{},"print(f\"(w, b) encontrados: ({w:.1f}, {b:.1f})\")\n",[3762,3763,3764],"blockquote",{},[11,3765,3766,179,3769,3772],{},[38,3767,3768],{},"Saída:",[71,3770,3771],{},"(w, b) encontrados: (112.1, 396.9)",", custo final 5233.79",[11,3774,3775,3776,3779],{},"Praticamente o mesmo resultado do batch (custo 5233.79 contra 5189.72), só que usando ",[38,3777,3778],{},"50 vezes menos"," avaliações de exemplo (4000 contra 200 mil). Compara os dois ao vivo:",[3781,3782],"housing-gradient-descent-simulator",{},[3784,3785],"housing-stochastic-gradient-descent-simulator",{},[11,3787,3788],{},"Roda \"Rodar 2000\" em cada um e repara: o estocástico chega numa vizinhança boa bem mais rápido em termos de trabalho total, mesmo com o caminho mais bagunçado no gráfico.",[3790,3791,3792],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":3720,"searchDepth":3732,"depth":3732,"links":3794},[3795,3796,3798,3800,3802,3803,3804,3805,3807,3808],{"id":24,"depth":3732,"text":25},{"id":187,"depth":3732,"text":3797},"StandardScaler: o z-score que eu já fiz na mão",{"id":476,"depth":3732,"text":3799},"SGDRegressor e o que o \"S\" significa",{"id":1643,"depth":3732,"text":3801},"Duas coisas que o max_iter esconde",{"id":1684,"depth":3732,"text":1685},{"id":2834,"depth":3732,"text":2835},{"id":2852,"depth":3732,"text":2853},{"id":2945,"depth":3732,"text":3806},"SGDRegressor ou LinearRegression? A escolha de verdade",{"id":3507,"depth":3732,"text":3508},{"id":3590,"depth":3732,"text":3591},null,"2026-08-19","Depois de construir gradiente descendente, normalização e engenharia de features na mão, finalmente uso o scikit-learn, e descubro que o modelo 'padrão' do curso esconde duas surpresas que ninguém avisa.","md",{},10,"\u002Fpt\u002Fplaylists\u002Fmachine-learning-specialization\u002Fw2-lab05-scikit-learn","machine-learning-specialization",{"title":6,"description":3811},"published","pt\u002Fplaylists\u002Fmachine-learning-specialization\u002Fw2-lab05-scikit-learn",[35,3821,3822],"gradiente-estocastico","sgd","OaZi6v2TywMJ6RzfQhmPKQkGJEixrIx2Mpe8R4hr1wQ",1787338983913]