From 4bf61e7748afd24d335d956a33b0ee657e2206e1 Mon Sep 17 00:00:00 2001 From: scruel Date: Fri, 12 Jan 2018 00:43:32 +0800 Subject: [PATCH] =?UTF-8?q?finish=20"6=20=E9=80=BB=E8=BE=91=E5=9B=9E?= =?UTF-8?q?=E5=BD=92(Logistic=20Regression)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/20180112_001720.png | Bin 0 -> 68004 bytes week3.html | 135 ++++++++++++++++++++++++++++++++++---- week3.md | 90 ++++++++++++++++++++++++- 3 files changed, 213 insertions(+), 12 deletions(-) create mode 100644 image/20180112_001720.png diff --git a/image/20180112_001720.png b/image/20180112_001720.png new file mode 100644 index 0000000000000000000000000000000000000000..9af86fe25421e8c0cce0dfcbd232ad36d9a755bc GIT binary patch literal 68004 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

Di>s@akFy|H^hj@BOY|9t zM{CdpDy#8!>_&$f$2^MH@FiMLjS1O!F=%x4!DR%^Iu zp>{q1mLMP_ukBQI$bsfxs*e;mie_Qvbl_wRFku!`jRJ_k8D!o^`1m%@N`!pKUPp10lxpKv%z z4hEB6I{ilbB<`N3a-lvo8NoPOC23?pJ2EsKgE&&lc|ZQb?4AC9v;ZHDu@B8L%7-p5 z&zeV9>`IqPVnCNrpo1B)!EEM~I-3})ZZRh`foDNTw6Y|RIAbj!G`3LCy<;6SsKOyx zn|^o?2DSnEj?m|B=`YJ&tZ?WB1q{;%n^62E3~J4=&WYai376+uV=?RVB=z-fFG@ry zcLT#`+eBhx34UpgpK} z&JmvT(~J2%p9}Aw&Sz4`d^#ICRmS!({#V8$YKLdg2e0AEVl@Z!)U2j_zV}X=;HrUV z2c5eaK=S?+Q0_5HCAQwO?k+Mg*~a%V&?M#PDG*a3@e;Z0xDl>Uq@~(%&V2F(2NW0r zzLFOmM&P(4{(@uC6y8QfVt$)b_qxy7sUdnR;uxSdL9x5So<3e-tnWscBWnRegYokqufi4PCp)dvO? z8egaaUjdziF*N!!@2Yk*HUlJ2PlyzCwMC@!$A$X)n*AzVJUqd_1MH-Q)ZM_Qg0Yqn*ByK(tX+44-RxEr7&g456 zd73`w{7VY4^3f0J7hmON;(rp!CJ#4h&xX9IWl%ZO0i8n6)|p>z2m?oytTP2%?)sZh zM{vlXHlf`=H3F9sNLP<6*=*63%)!>=Suz{qBJ|6uV8_OV%M{1@y>$No6SHq&-%1)C z8H*w&;P)Ek?s*6*-ZP!*{&l%nxW1T#ht#(@_gr`95N#u)*i;k$v;|CbbZHrx5L8;4 zkW<2~tu08PpvzC9-}Ak(_?Ht69iKs0NOR(e*#KVI$su3b{;$Yj`X$;{l@Rf!p`OQI zKa*d4-%jmsLS_WN-p+=))u@tHgfy>$+9tp!HT=c>Lqb_s5$z z&^0eVArWa2*EmWD+mP4cYx0nc4!*ogW1jI7%DgssYya<?3@)F=-wPZvJjz0ZYv5@0LiwMWYsI0z%Mq>=5`p=Mvtf1{@{wiQ z^l}YR>nD>*|G-3c#G~nJB{-=t8g4Tl#vlAuYSOFB}?g7XKNxZmH z-fgT6p%I*4LqH2Qqu;%v<;2H4wR8A+;QGx}g71CHEPsXrd2o_VKd^p2hG59D>DrqH zbBpAv4SeHdu00IyHUD+G*tfdM`#R$&5U_(0-VO+$@7I?|ta9l5F&I>EyXC_xYYyS` zJek;a7QB<}PMR6KBrcd{lKOa%U!tGzJq^zq)+IkI_T!FcoL1E&6ifloA*-w$TiQ(p z-_!1QgHgMSNgZDf_=pi6 zAPh}HeiCn-94@E=o$9g_A~Ia`A@=b1{ban~BksLc>h$C6b?e~VFw&yKHQ^_&pJXz< zf{E9ORXqB7V+9vAA*T#L2n5ptn9*SRcIzOxHNMuGVLT8t6lTyXe)9yhd0}S@X~Neb zUfx~`=&G`z-{q*1HGX$|{7B-4S27=0o1b>;`NQ(dml0@_Z79S4y?+=h7ZV@f4)y+{ z-;jE?zBIAKvwb!3;W++y83`nbX%Ur=4HOSvwDr^Yp6>`6ma@y3^=h-ZX9xXJMcuAF zN6a4e>Ac{he9IUMar&S&nL)^Hi4r!u(?~!E0U;93PsDrCbmo7H&Xp?Gil=aRLw*;Dq%$|8e z{HxJ!Ca+PbMutXGQu4v09rx?&>(!w&o+iK|V#z7+{!?WYP(CehiURiMv^)oU-Zp4} z(j^?YC)E&9$lQ`hyA$Pqlv$sQ6ZyI>U9dMq6TUPzlsH&VT+Ju`bkF>ffRB{`rJZH( z;l8zX3FkiPGgVA^(z++KfPZ&zhbclnDYmN$bQ)ZaiL@|T!3z2Xtenn@6L!so12-Nz zt?$>&XL1(tJfy-T7wVaL;=ZdFL;3_05fSkfG!1ZGzJ7j3dmop~#%OLkAk<;fe?=bD zxA84fg4gddID3v+Rcq!rG_$x^ul3*QpSFLM?{y z?0o1mnnEMbCJB6$;1cEW%M$tw*C>_@_2c)5AnH)tID~^1^Al;KACW^uKi;%PYX7us8^2tV(qQGXK85$LKFM$Sy))!6c<|++w%^agB~Y5m6F&- z$J^|wn?4el%q;}_ZIjOxhyT1E@#Vo;Ykn*38!-%ofOvl;wNu_JvYx(4K!P}_ZmzX( zBai*x@k~j)Eb$6-&*y;fCRQ}6v9VDIe;`4D&U3F}O3m1~(j(?IIB2~#Z?{zFL6!G` zuKXXpT|s}+X42Ytf7%Nn3&PD{c}zK=0uwR435leg7zR9ag28y_h@>I;dU?&CLj{7H z7Cz*$xna4r7ASm>49#aCi-JHd_7{SoQ0UmC!TOOWk+6HYO1Bm$s={aLtjv2NaE#i; zIXO9F$b|_4Zg)(MJ|k1QUWwd3{CC_KPCz@8aI_-psvr!3xYO=F20U;%(nVGS@&@o9 zL_7Z9nlZ3ML7M`=7p9_%@M|TK_;=c&AL9t>6lsSgcS(Ry=K9*3j*gBBR6F3=-`6~9#_vVlxdd;=A+9CM%)71}TWo35-QU7ymYb*zGiP;p_dhu7tkZFvD&-3Jx z)f8s-s{^OhA7*JnFS;7FlR)#5!rU*DEC0&}ajh{D1`1qFr9N~6{m zH_F$5^@)gx=tQRU4J0)2#R237|A5yG_g^)c6jDk0DhZHVNzT$BLVzT&ZyvhY_0oEY z{0(zXuz*k3i}eK?nJ>XQk92q+#IrYZ0Rv`en)%ieg#>g+2B&?Ci|rGQYkjfZptjYD z6ZgC3WnpDi*U}0BT2yf6&$5K@CyG_A!ixwVJ?fmCOsPu>uN@V?C*$DYKw{6v!^RF2 z^*LV#P8Sgq!#nMD!}6bXy>CerDzIx0Y-E`64*4%FVa${DYQ~4Bf)S$BfN>R}z?vvh zo)EhK28t@cNvO|=JIo6-wY0oW*;d=vf2OM1pDF0Vo88*pPC-me47TC%uh-<@Tfnnn zOcaos2rs9?{fnX&fu)=k@=s3@MG{5eAR?wG2yYq@O%D}F;^bW!b3A_S?4U0ny(Zbl zWfK+_zP!Ao;^V^)3JS7o1sWR>ixE9p+aLq%$q z5g#A;<_%m$&AEpbSvbtwEFd;bQ-Mj!gx@q64KA}ChvmP?2RXTV@H$%*a3&Cz0~zwj z$cX37-bX-XVFDRPPft&Y=*!#dGXekKO~w}|KXgq@LAc1m)MRI4LpT%&(%uAS1)fp@ zaLoj4da(OFdi02jh6WBOW%>cT^@HMx)d(3lm-Y4aU-%vYGJgZh0Ax(-M@W(~vvpa@ z@Ks%Py+kMS1MC>QcLLnwQv-PNKmbu;@R0^w=jiBYy4i)X{bpa-_i7`Rr5`AH%|SL0 za9R!o6`YPv80b^2E_i@wYh-FlZD()KcTTd{?neqv=W`0X!6Eq53gE+f)A?+xEx!`% zF0>N5{2Vg%!B0N&6v_I~a_+&amHc;itSjy128+gPee+ez3QxYsI3wvZs4Ws)E95pBx5M}?A}tiZ zd{T_lizlrQJ~eNc&vH{spV`Zuk~AQyYXM3A6BxAL-cBNvmWPf4GMN+`od2TbSr8u?3h8a z3Xd&pj-;XVOnS>1n33e=<#p!ytmPC1M2z<}H8{XmCz+YQPv#58t96Kh93`b7PG_G? z<7bOhhE_K1$8*mOuZkpQ(^Vqm@w@*izfFu0|8sg9End*8oVLt|A!g8!19ja@Z~~?s zOgsUZ(ZG-TqWkI<3nR0VDhN)MgUQLsrXb;7?wH({Ia3sft@qjrDUmoXwa3=hazmiu z(=6u^Pw8-dfiu2(D-&j_rl%*c99{~SB=E{@bA%iyIwroG{z;*~%G)a73B_9?1~Z^< znV0z54^fUDn`&hNZtZ_TS$j+}NIB-~FhEa?pX|h&%v$%LL>j87V0wyB6e(x)&EzB` zJb-wvgc5=%3)I6{q@<+h=O+GFh@|{>oq%)YvY+MMU2L19I*K9Uf}5%`(apFlEGjbl zQKmgzYl%)u+xJ9TCsGVQ}ObK_6a5etO-`_v; z79St~1rZW(DgpOhB41zM$DW5TAhk4nJ5yEtEp9t6tgMg$uqr4nCbeMtRc|xVxpwsZ z{Ka7EbbQrDX7>iHSXnZS&3Sham()D$IUM9EMLh{G zL!Pm$EMn2Kv^zn#& ziKLPex`u|v^d6Ayz<`{SlM^`lKZs_V3nQ5I-UqS6=y&YG6VorA&-|Se!IHC9g<`Ks zcDPX>YIwB@_QDfSTq(F!3p2GlaI#`W~SFt8%F)Xa?ReW}K zTv1W~{S`QU6&lcv09`cO#}bq6Y!M^TGe+iwF}?NTs_;neqF81KSrt_!0vK8xAkhN% zu(q@734%w4^)C%uTqDWNUZH@bVztRxmY+$Lo|a~#OhPH<8&Oa|2gFD7R9xq7Ndjf+ zK(3<`t&#L+yd*IjD+1;sGI&S>g1!$!6=iohRz#?O)A-$Jjh8g3>=Eq-fel>e_xvWh`?=2{c>F+(}^Cz*R_ zaWr483~mH##tP&2`TRnaFYx;FK-g5^0l@1!ZcDTx)f`NTNqAHUIw1$|v>!;Rz#U0} z*~?2v1ojC=w*a9BKM>=>_6uHi`T|%-!Ta|R&=^|V1F*CkwBxPcu)(6)Gme8D-`~Eg zR_;FQ6SPM|*H)c86WK5tkLM?FZ3r58*5_xlDT5E>a&GErDrZy6o&V1)sZ)aNa@ zb&4;RALTD&0`Gn99@l-#US9a02vi=!`u`!d^zHbay4Li8*bmD%;hgi`eX_J}Li^uB z(G=3>xF#kjRAcjcYM!KnBX8A`^Yar0{i?&O%^cE=_Vr$8|Emo`mD(~WumsSNMtbnz zK^R8GX#PvE zwen!KVm^?812uRLpn5>DCi&tkD8aDAbIE~fyc=+)07iTczUJQ*HHZTBj=2~cY{#Yd zt_E+NPj;v%-=xu0c6xQ{c9M-SclpDk#6HunBZp9?}WBm*NVpA^~cX z%6-NfD6DPmY|U+8Y6|QnN6DkMmm+qrrhM*l#r}WMfl?==KCB>$qaeT)6c(;DZ)WE= zjNLGilwF%JGc$Xh{=#Xsx3!H1@lz!O2y3cE6M_FJ0Ph1D3Ljn-n8#B-eE3knZTk^` zkPrxnpgl>cb7qR<$3l) z_W{Jj_Xx2_B`YddI(#*h&{zWK5K?$>G+FFJRf@dpJf7&34v zs{{?kZlEMi*#wh^<2%jG&7Wsxh(Ri1VrB+@ENf&$PDV!d*mCfZX1KhN`v0kDV%s|- z&DK|AP$Fxs?FsWOjZQ?a@TQ#82CV_Py#>0EUk;sC!r-z@oSd7x=%}b;(_*~5NpI;U zzkgo_ePg+3D2U}-9Hm-O089W*sI#{h5eD)>mZ|~a`10mvjq?67yi}Slt0~8Wa?60{ z8+CF8m;H`iG;Bm|<9&de2aKoTo0Qd=%B{{*JTOP4_FD>6B})!3QAy)2oVcP;QBm1l zEleMg1pfRk{dH}V+m4Q>kIx!77zHJzU=Xg7S#_O$4iW3=VO%~?Xw&(@sjU#JEPX?( zf7C9i68zZ12OCLH-C0aZVU*-BfcX*ns-C`nY1Ukc9XR7AuM>v!bc>~?hWdIUcCkNp z3S{U4-lt5Uhq1D;5eme-RA7ebr0^GD3~E5157f8kMfu^SCR$=P2VEmx03wX%* z>?ELr*DO|90dr?guU~h4iaOVXEE+~P#N0f+tEWE(*P0}xP>xxwT+?BaQ9H1K{ zlk@2C&@;AX_?vjP=XYQ-z_iR)kWK^^9qEBU-eo)(^;u9gFg)C=YvLCQkV)2CSy|8q z?9Om(j|3e~5AM{}~SfDQf8~Q)ELQ^aI%89it z6*DE2t*n152?7d7unB9w#_}N;sceah2MOyq9G`Ncu3OI_5YQSOl@pJ~5u0CZYyD9H zQzu&TRaCELP+JUQd$#D+*>Xp*8mRqkd}em&M}xjvxxq5hiqj7|Wr2ATVcnKBYdLyY zt>Sdm-go)(52GksTrh?m$xdD1@%J>iaJ*_g!C`1=YnuWMtbp?>0w8ad$w{`T?Un7D zu-`^KcV>qKg2McMVaas;nZtooMw01UIiRSNL4tB z$AiDqM+e;BER_y!LFnugXxRB5{s{fC+n(k)-1AF6Uwf9~z9vzb#5}chvC{f~Xavex z+a2t^?A9^ZV=<>|42fS1?L&rPSUH{N&!beuZy$jlULa^v1Kqxk``d#ip9>B#pyzr@ zg8cqmeh-W=z+aqDR^JqLh>>@B?X%c}cI1C0G(N__K^!+VW(da?M=%2Ad#PqZP7V~{wfIEYH<&ia91a~JKFt@? zequNikKNmgXU{<%>Xw%VlT5tSnt$szSQ_g0j5Ie$Dn4OA@ zj09Yzgt0LNAgm<5(5Oe75*gmDi#MIDk-IPb=`tNgW>FM3WrnsZQ%s2bM+>n2)pj6y z(Rw^bLABug2AUQWiot#U&GC6-+?)BpmSP2 zn=+ACP(Ud!KkaB@gqQZx5%gESOvP$Q1EPOq3nB#5lS17~K?IzDb9wDCXZdv1&c3 zmo%J#3#!Y6sVVc-3R~(Foa9!ceJG>)RA1KjMJjvAp}jQ$Uiv{9bsQ;$ z3qD?6DlRUZVwEf@Z*L*`=mG=7VyHytBqY%EahGGrh-fT`SYX(cs?shj=bK8^4VxF$ z&ch@u)MTFZW8%K2;AGp-wYBLNH0Je!Mtc-rISRjK#P>S$_`WCyu%))NG(4DU2wS?p zyC4#LO{bD21j}>F`wOj?$6q;Nx%(-JVk#(TnyzC5!BFp^XA4v{nJ`vyq(atBI%A|? z5%ky@%J-+R=D4S zL`x+mW^7-3c@S_<3N)Z06%`ew-E{CtpxpYY{94A`Rv6QysrWYVUg*EKhbS21!i>eb ziD0qj0gIOy46(N8ebNoY zwy<~$vI^Q@dUdCKAeS`z%vDg{;L9Wt>(3x_g8GNLdSh)^O?O(~<^GPu{3_;eCJIuv z(?u4v%{+jm*j#jcl0T6RaJE~CU=|%TG}m`;fQ;k;M3|u**4qSKaEOHQEjdim{v&_$ z%ri3tnXdTcde|MpM{J&ZW{E?)9?*MVb>`g|jVwgV( z%YWU{k3mJs*&MOe-mKaWB# zfYP?-5t;5>3enh?x1FE7I@^3YPe#8c4pe5EU%jRhHFA#&LkbR8j1U95@}u)PNAvZ8 zgv+lccW|KeGVJgt2lGu`299mAinP>O?>Bf*sEt4z8Pf;bC5D%?wtE9~RIw)nmeP8< zug}SW1!*qo$#3NZpHe7deHk7GFHeY>wSY~yf>CN1`Y%xBUT=vH0q+|4DS(?*pu0g`v&v$% z#BreO`aHuq^@7#&dR1 zUq+-)$RmSbSQsQfa018>Fp#|lB&UbR$J~EjWl`^oL@i?ij5mvkp!q>yys0J*w_TY^ z|A;GDw3BW?PpattiZ|muid2~D59T8}qxD^kfp0TQC$SKt!`R~cN)9|}6fTrMi++gTPn~tG<%&eF3=OZGey+Cy*4yG* zIc%QVwT0^A-ny+W3Us4C_J|@eGqWsrIA4)G_dcLF+^qveXg(7MM<1A^4k^_vrlF#O z{P^($-1$BZjLEIORTaxEfW1#<3m$+_k_FoeO~u_wbi&Uw<6w#%D08VMS!3!{1-ao)^w7(~b=xBolV-(fbKg#jHX3q9I*B7|~_hEyn2>i(C<7DzH5RXc1Z7n`#v6CMz zPSY<4ZO(FiKCJdK>@!$U(=(GXHqK&%ZmW$exE8!)1Gx(yD2V`CDFn_47J>{G^6E?U z6w@r1DL&AEEC^MVSC4$n^c(E;h)CFaE21&3P+wA3rjfy>qouVBnm+G@Jvi9dtc65j z)&CSYg6}ZBRxC1Bv(Dc2a2L~f? zf#827oYG%HNh!Kin&v*IO&AM$G=GnLm#u&z$71#+Y=9v#=>?N0bqRg!ZA5U2e?xK# z*`DN&$+hLvOqPnm47F4F4>IaC{7-4=3X9)-W1}SB&vonJD%f*3rI)L^wO{P8;77~JO+#WH zaa}iHiSN~)u|TL!5{5=c_I&YlMKC2)VYm=}gWilh@DU(6OTo-c0@gM4?!`Vr1!kqL z%LWQ~zNgjSWuHq<<_Xd;hLRV0OK>W%b|tECH9;d|32i`GdC}#al->uzQ{!?xPH~3Se_1oc89{R0u_Mu6yV4m(ua z{W&JN^MfJflT+>KO1W8CK&htzu@|h%moNK(2oJr~GjSIe7bjrWtE5OKr@||t$k`;( zkR4-{q}e6*Njt>+ajAN+z!9Od<4CKzY1pcKVE(`0q5xjYRsJ{n>1%Y~i-Br=q5nVlxb9`q%K?Ja)|uuQcc_GN%$~naQ)%;q;vcG1J4TTda?v82#c)L#-}wnutsjS zSaUa->Fd)253pD97?5Ryo3r2I)1i8x^+_e0k4kAkpCszhO8w&_jpHnp)r7nf>~C7`@N5jZtc<|% zh;|!K=QFfMh2!7OR2wFVP7IR&*wZuG1d#v4$-wPTA@_jtpQKf@aod&IH!R2W_|ysD?`Q(BOeG;E+#;pidonR6%!K!M!Xrecad2O z(HfpS+9C)DAibGtY*11Y786@OJ_S?8g=h=`69JK`5VUjynmw${;e)Mq7e3*{?Ah!Z zI2DeD=;HpiC8TWA-jl5FE0TMAD-2!C<;_xvOV_fVspJ?@F z*HidgC_Yu=LT6DW@Xc zG&C0xyB1V2aSQpl(j=u(t$seyr57ynHSUUbPy6OJf{e$M|h^d=SCmZK=XX=$` zH3j|OT!E6mOqcFcXVI{oS#(-SW8JiVc`D2KHWu>QP%>nOB63-XTz6}fI5lO=Pf@7s zfrZvClsev!1$mcq`jl@uVT(||Js)in-Zv0szu`xUDjIdK9%YSEy7Y4-hQ+*S^!g*) zmmyzgdea;JbcDNwy5+yHu>Q=g7AiMe(F|-8WaXvd)6&uX20$S`3R2Ysa3lcqO26FB zAbI^98Ci(pMHwF>6JzSZ=Z(D)+JIf}<#T%!|B%q*6BDYTw2XSLI=8~Y_&-l)j?asYfO2&$*E7f!q>EVhCY=o zxitow`6N+(+#9{_g1n=-Jw4-%5Eo_2CXSfL2_mjsk8Zo=3&%tmRk_HO&9(x(289A} zQo=1OGE|FSMJG=#>ZWzi1;CCHfEYpu?;91?!1TA=&$L6%KCSABm5(eJI@$H=uId}U z8}jHjl!(n!I%BPx4ep5#DaTj3+A;L26z@DEkSm%y4_q{QPK7sk9gom6&Tizl%w0c#$WU?f7?l5_hGeQCY;O6*Y`Zmnc4ojU#O?@ zFuCBVox)QRsN$Q6?lyBbk{jT|df&=OfSHF=FR9esj)+A9} zYvX^CZ3+X$cIBPgCKzko{cD9jRpaW`q&Uc*MtIs%1geL$K7T&iU14u{@ zlgcjNPP_19iMZX-iS}#TTXXr++XbmT3k!q@C8DZZGhc;I{HmXWrG9M3fQir?Yvw(y z{!e`3U@$1pMKt!J2ZzofTWF(VIc?CFhSM*7FzSZdxRH6coIU;4&;_qdC2MhC#*Iy^ zxh|a36%XBOT13%q;E5}=HmO@nXZY*)2`jJQlJUA{XqvC9*x+&v`Q0L}lOy@zM=;I{Ix^4aQZ*j$ z*vR?keQS+us99eszbD&&QT#SdWqLZ3&}tkY=(J;vbaT&|YFU)1VXU*Jq@5#8_oCYN z89BWYZEX7)ulan+V##Gy5w!g0D}BD~!dEth95&6gv0cN?;M>~NIQEH(DoZKk6}RD6 zK58QOudiQQx`Zr<{F}mwA9VWK;k)jBxh%N&zI0rE(c({cLIpmhif^h$cIrl@C9(QL zP;X$QW)(~xWun(V@Ji#q9j)63nZeym)_Jqs% zFAm%o9bIh4+K+_hk@gu{2HDnNslJvB2ahqXK zfyI2C>!IIi75=0Zvh203vpB>LkFJ%ES*vXPERuF+QechJ1vJDJ8{r>Cz=(@7=tfSqe%9 zX4oTH|ArqqJC%Hnq-MK}qhH~~Pn_0x-80hTTSm)7eBESX!>#|*VC@<>jduXsg$WDO zsFehoALK0X@-Ue84SHr(^#2YrhJ+npCiO||zox5vTBx&W@2T{Yx@m@P>et4SYf9>P zEm-pg)9!C(X6AHu>N~jnk1uU$)&)@2L=5$|YV*t8(@IIR7d@6)e9c1_irrIIZtOe! zy_auMpp>w9XY%rPuJD?`EI==si%3TpM(wxBf)u-7ZIdoE7T{?w%20e;E<^L z7jt83X&DS!H7NhGGQn4`UO_-G1>Tcg02+<|l~Tcm#(aXYnFAF3(%#t`z2Olo=vi1a zaKEV?q7Wrc6+;R0fan4p?yVP!($UjrJ&nS&Q{5ESOs8KSxW8m`}2+Csm_LB2+(bVf66q)MR|vb@VFbxrIfy2!PZELZG~q1g{_;#T*7K zZUh4gby=JFFwA#Kh*oV|s|5+Cl{}JercT?su`mib4v7m~4Gy`wly58bdEdiyMSpcj zi7MtNAghDGt*Lps`Z6v~XT}HQRe+^B;k_=AEG5Ryjs;3XAmxQlk@U4m0-+BDNHikz zlqA+>NrSdHrT_0%CyQ%Fa-n^P`i9F-yPLb-1&FwQCXQ4l4Q?CJUwyYi5o3@b>UI^- zSn7cOw*2-cJNZR)v;rE9yRy2v31Hgg_AK!`KFOd9Ya6kl#f>loLK%N~R-qzGC2q!Wsgp0S?o+ zH*NG4`0UmY_{2_AT0hWA&OF#hWvX3!Z=$~Or;;mGL&-pPr?=%CHRO+{MHM)RY3b=P zkVQnWf{2^O&(DwOGg>@)B*PJt<$D{z*(ZEUlnUiw4-Lsu};|9UiLkrXAHYO2JlHFMuM;A0E#}a zi`h{KQ3qQOLKu+bJ79$;N_yXVms0+1R2N(BUI z5ZD%5bWov|BDYYckQjhSG4ufs{ItE7@CJ{zaYGTEfx|_~Tw(X~Ii!U_@?vVF*c?Tp zrCa!*N^|DEnwnafBO_qTY!_U@wjF1cTSOa{7>Od4cY@o>?P-^Zt5O9i83Hn;aK4-# zE~EVAUeIMT&Yu8SM9-)O99g^3&q_O95P5)tT(E`h(z`hw1LUGZd6U=@ zQWg=6flAy(=p%sLr9mVi|q}&WYRV5r+a%Th5d}T z;Q1GO`%|zaPqwwnCh(E8E(%%enECBPQOk*|Z80x`_ZOVV=Im74lJXakU(P@8QxI{z%O1QN?vfP`t=SHw+ny%%q)@q^?l%SiCWFKeqpJ-jl`9uR1JTK}RP3E}HAk#rSWtGUqko zXWF98w-iAae91%9a8q{_vzwlFM0UOIqd zUvT!MrG+FCZJ`TJD!3~FAUaakO%eI=nAvnCg}{Y~&Ge-A!Jlz&lp)hKT!PPm@mhB) z-8HXEw^!=~Y`>eu-1`y=kF#KE6^Lj4V7fQ^V?!Ku4BxFK)xKC#=Qr04G-t?D?F7??EJ@sRXFd>V| zH-2o7g}!O%;O$p_4$3sYhFe({a<_&~CSK7(8?1|QrBmt;S28lPO80f++I78qM%g#C zAqI%?4F5MTR|G2wP^dZ!E+jU4-4)uY&Mkimc8q^D{=mP+<=&DgD^i)D6P|44!0wY# z8gP~N$IMlcy0b|mpR;8n@dC{hkG-ujh5dv3=bpBNQS=egdExyJ7NCa3m}mv_NS7nv z>Lq?2c^2k(X0Xc;_z4Il2k``hk4th9>dv%`H&$QFd^emGe!9qNXP-wQsl0^}UdB^U z+*;$jT}3Zl*WJ)vR>qo3qbt2B>qD0u3KL=d=+al>Q~T*jITFXrH$^4b8J@GqSX?fo zn{IEBIeudl;ulouv>ijp)x(_0hp5-Kyf|;({azv`L=>VHiwQ_y@%rPbyWZqn;PrS=0b!NglBliS9@TD;B&_x z;XRp_FoV2qfiUis&Y9S3Y#sT0{7M#K-+6@P<>hl^(m$%Iv2$>gSae>x3X9IhTNLyO zL2ZNRLGr267ENRCH>D#kAqN&3P8*>$@t()3trxkn^=TQ0YkzC37rr(mFx2t*UbBZ% z;GttI(&U)2&~5B}H7o!&%AgvAF$Rr)44xGSb>kUSTt(d(l+a){r zasQOQX2ub4SPCLdL!YLj8_I9%60$8uz|5>1&62Ifiubv{May^PJ)e;R2Nu-;{ApXC z{`Rf_Bn-LUUkLlsdxKu~c+{pWr2kv?rI3S)mULy2XIQbU8w7k`fyy@BL zr*ZQ(vJW5bTn3jo=0LOH=eNUKxHdDbDUHfiL%m}eliJ6L9s*{Jg(c}Wk2tYKVniM~ zUF?gGWC}Rg3V7Vl$i^z6YKXA7j>EO zTF9|bJiDU==51DqIHiEFiac{8CX+|O!B z&T9TkE%D5^cqj86_YJ=YEaRs+kKfL<7TeD>nKZIRk|(3*f*NBKhu@R=D36A;jjkal z2bwg2uaa7HBc}1~BL?Uy>PediJ9!&VPRVQ)S`r&L>*}xrLfH zg(purJNKU0cTXw4>AJswjrks4Cb-c=-tdAKyUZR-%ivrDOK#<-@_Y4L^Vj5=mZ=zt z@{IFqyuvW;D;`g5!pi!`i?_btXy!U^zFzgq%~-7A8`(o%VFn}X?_YGHV#khN&W-E+ zO6h~ea{RzBSDr#}u;Lv(tUHYA0Z!BLs^GJ;NHJQ>z3a~-%LskPTkfAR|2KxszYm)r zToKlj5VxUX+*{EI(tDa_qXFbGa|znJ}2C#9{VF2`j5&Q#~{?G+G@V!%Pm5Ba9Ny%mse z$iNtex$a*lKNc~bt_*hQu&P{spWEt5QK?2vtF&F0xd(oL3=r3S$vJ*HRp_WoE)VjFxN51CvR0Ro21< zLtUKsa%sf6$7J>uts>vg^cCPq`gE|w%sb40Ax0Zj8qSx^(ftTZ42L~3*=#n|PATUR zt1Rfp20?L5%gtuYyW&n*HRkbajWDFs=>o+5sGI*c^KUJFX}I-%5JRBY^ugLwQTqm2 zi#6D_B#q$g_}<^zXopOJg$9Y>??(}uF0`uN&v8Zv3BT>Y5o)SpLa-v?&ZP9y@_ym$ z_QC)aYw~?FI}?KZ2?dL6;oW-{+)+_T#BYytbf+t+1NkE9ME>7H)pECBb#sbTs6^8) z#S5rWGBe%!IzJ@cJ2uyvOdy&chOvRtVN9yF?$zo{UF`usqbHxuv_a$OrW+itAA%U2 z`*)1PB6qe+%Vt*x5ce&TBIfj_FcpK0<)xeUj75HaO~Z6F+@C(bm+S&_VSz;=@%vGB zvf)mn{#T(GcKGBXG||uq1B2FXM(@(xMK4xS?Oq}W?oo+@PJ?vb0p{8VLWhReCIqq% z_qpyiPbmVXgJEMScPF&9+#Z0ZiERw5VHm~Gh%(n)aAO{{UzZ!ociG;uP9OAk9McGL zm~GExr#Ii{;>Uef5SUh9Ajarb|`dRh-$2dn45f-X#iUa%0&2w(ibG?HVol z7n%{u6Ypl~1y6&GxpP zx?RomOgjBPk$j0_r<;?3U&tMMYti42z9$>jCfzrKtqoU3*h|q`AJ^qejibT%k!+MS zl^T&yGe-*gP%~f$a>f)qre=&2AdMDsSoo~X!9n$&U4ATaw2Bt>s${2Pwk@JD89B<& zmns*}so$%uC;K=XU3_ZI^Gu01AaDd9%-W#$I^vzU6jQLV{AdJsIiXaL1%8zt2(D4A z&-T<8n%hvdAbc>Rm~pqIrD3FaG+6%9KV>aSn%ryL>bQM}*j#WfGS6aub>zy8>}p}r zMX%@e9(`tTzO`FRWpAHXWEyb|*|{xwn&9=A!>X-xvrbJ6dFPqSEVQOQ1v?3>dI&tv z8KJZEyEkQpwF7QAOsVCn?EG{jQRr%m@dn52YMJy`(d0#rDI6C%Ed;x*EKujpH6-w< z=Dvm<+zBrVw&@e2^Shnr=E*GbcfYZjFRKX&vO43am=~g>@7+M$%ct+Ff=B+C!KSJC zVN2lglYIp*Q&cuxl5vFId!MUM2w$NucVHP$|Ex<*v9o>nr^JawGM~E*g_mc|(#m^L zPC6W^WA!8L!4L>XOs8IZi?gui=Lbl5LoAH>{!&tYOhsdvu8Tslj{*F;3s-7Lz~fQJ z({;?$bz1Jht}Do2W_dWMx2LZ~IEg-lMeX%*xrY#?#Bi|x=U4x}%^*qggq~GSsDiES zRB5;W&r-p9g`JHolE~E5!`ycm4DQEolod-V_JwG$*pcu13~B>ZePc=O-~?`j!Cet| zC7$LKG^tm#P=X9f;S(0dIL$)a2{%;=2&rrax}b{U>~lzx$Z4(rY9nww(qZ_lyTxh(>02uj3g zsQBx&L1=a1b;s17KS8|p$5fEa(ywq}8U3trd zAgmC4HQA=|-#cH>9nxL6JwQ4hQptX1Ci$xFZtH5sWlmks`Z@OXVeuymy{vVwPo@r& zh!u=Jn=Y&s&(YVp&4N59GLSD`yjV(5;gSW!;M3L7U=XoFC_hlfYz4Hy-~O%Sk zrJ1Q*k4V;nnwj`@aNZg43J;0=)rVjLLh{F(q;}gNy^rO4xUC_^1z9)%0MWy2pA~xkHquvEUKf}5%ED`w zaye}{Af2b&8D-C4RcT58TV3Pv3cIF_F%Th3aYXuWORhu?qcG@SYpVw`Qn0T zCGj!WQRBq8@l<#u@_h2}e9Fqo5KBni;d;%^&7IY|2RA(p2AwOjv z27sms2XxwUU!S0@zMi8{I@dKNF-kmB5!LkJQh@dR=EV!0vo2%8TVhdN5>W}We3foH zbUhm@k{tOW&}^k76)$yl&am6erKu%#+JHaQ?YVZ&mS=Saf` zYMRg_OHN-uflf+pJTEVg0<6b+-4U7J@n-0~wZ{&^zZKCJ{UJSxQ2b@$rGr2%lpPx9 zz@yqElXdK462p4job;Zs4A2TuJ92oM5D`%kYtL`-PM}X)-Z^bN^`EpbdBQrvz;W$q z#>MfNZ?lSOYN22eS5{V*YRlo~Bc)c+qs0RQ+JHzR0%95>GP1NkdAci9ww$4P1w{Ww zby){}LG=UB?V5spy}__7&0sx@)OrhnKyiBMQ6e$E0&%QYEo!;`;G7aeqzU>#a((8l zxqGBCypDRw2TyDR$J7Kc4Wl7}w0(d$Mjp z43YGPt34_Fg{^1J!1JII6{8p=38FNWr|KLrrtq*fZ4Vwi03)I?Q#*)bW@mRjgoHtJ zzV@!NGQuMa3JzX;QbPt8efV$z@+M}xD?i7GG8o~tGX5XlK}9zGt1!%frG>>*e#L~0 zygWX%w)5vRZzVLM5)258$HC`i3hF!7%wSfOp6j@-t)q*DQvR#F@h$VLDb7f5`c@;s z1g}@)C%4rj2F6^4IG2^v1G*@qYQ32U|D-0bin>QZQVxQV#-V1Ml47j_G3|m#-KP@y zH%!YO_u~Ud4rx^vLdpbXgVNF_*KP^D^;>^jL;z@}#rZ^X6;|2H4vUT5U5BE%C2#2= zy;~m=%mBG-4D5f%YNj_H8B(3DmE5T&i&V}YCT6T_Z`fvlS5i>|)E}tQ8X?9GgvS(B zRV}RrIPH^uO;uIAZ)#4ap4tQDU_IC8D^k-XpAA;`dTw1YA#d1TLei3a8f7yny^e8cO)TekibbEt%C%D^#?Ll;hOy{X~ z?4LLkD(7nMOUmSc2x^9fzwta9?^cKjcnJco=~h50B&Vm+%w^cCa24{^w6AN-x>A`T zN7VA;Rt1G*$)@+A#wt=oqYCS(cC!V+0kVRE@JnL$qug~q+&6B(6hS$h^md;{NolF= zO#y6cr^F@D-3>&19r+u-K0giw6&6HF3WewgNnfPOwkf=Koi05i1D&3D<6I!;VqAS@ zsj>Wt*Av^Zidm8lv_;qmro%t@VEGgKz@ICiQnVyIg{ghN)1;?C@HLm}$ zPYX1Q{QA)MmyLLS!G%46S;m&?*w|Q8Xh313Wz^r_563inj3Q{Cgo0<()Y9^CXt4-H zfN7O;3!^_jf#}Uk(A`EoUDnvh>xpY~Qa$O=q6B0>zrSr)4&w1!j5t3`VBQ?sG(9$~ zwCd9shkd-=P0#FiB>YV3NbFB^@GlbnOM8;23&J0aA{Vp&OFp!;Kh}Ku*4U<0TdmMB zuTE;_?JX;T(P0fX8)7%`N^Sbh;>yHCMRT722A6O-DWLI#zEG6#E90HNPX(**<$~8l zcNh1`($90rUQcB-bSYo$Wlrtgs?U{oUbCcQUu*Kfu(WI>{~?a1T(ce;D_X|;=ovmW zl5pepnCNE|YOHeWPNpEGO%U%LiP&?+AEUWApMwi-X=zDF1l<>CZVRM6?m&((aDM|< z##bpT7kKIGeVM$;y~lfMj;xRA^m8-5KpV63y@E zJAo21ipEe!oTUzc1OqY#c6NC-OF5dbBP0(OIFAwK9#@u(+p%4?OT>|26WYIh!`ZM1 zU+w2i17}JYBro#WHF)Ad(>tgQwFoel+}dKwP`z;By6 zIupaZFyx&+HNxk=`vm&+LiZ5xrW989VQf(-^R}p9INPDxdB5UWN%=OY@__myJ0cti zCk|lwrG}IwK)?$ilrH&=yimQr_2|2L{;KZ1kG|D!?}6q1`}gk>Nl4-v<>SYYWP)&t zu-x9h*H)faWlRLix9Kn~PWIYhRp(!2@KfamY(t%%HSz9q&Xd;;rZPX)juN+#t%^=} z`4jU5X(osAe|B=1%~B7fb~pk+iU&a=Z?FD3j|jM<_@wLg;_BBXrI1eh+Awztryj~|i!mAIFYkzoo&3=cT(ZEGvEuLdh#?5j+TzBJAF zk9V(G{P=MoE46QrZ=O&=N?kzg$(5WB`Z@-|-(SCN7k?Y}14pdMv4j`A@8QKQNTK|e zd32@3Auc^7^y!hxL}fbRyUwzx3??DR36QzD6Umc-sM$bhfrM`WvNZ=UC&zX2+0hLE zonN)<1Soi1+@i%{CYmDv>ZahmZG0u>%}Qnh*g9emVKS!MV>pFf{t(`FoXE?8i8cqJ zG`FV#s(0^dNdyk?3BQv5Xw2Ji==iK}k&fl`{f`7OLBiTEMoe`HF!BOsmiBnCww>4} zNIlQK$^NaQ8B?lF7fo@MBoLW*?dh%OMBGog-+8a|#bbY2qc77v^icB_#t1Iw-G@*` zf#+&DT2)=02IL1} z*EyBQsRfu1P**+%QSqGKZm8ZOeTKm>>agT~gWzUrdYWCal+C;?JI6vD4r|oQ*qCUw zI*I&#Z=}HXT=C-bWt3jTeIY7NDaLd0r%UPgDqcIxY=`#?AMTk~vbwV9#ObJdy@%W! zQspZlh%R2u#EzV-_`m859_7S=={$oK^}qZ3@5F)Q%SWY~HoGfrJ`g;p; zLJF9l^HHWxOXe}5yWR)+|7L30KbUb97FfPnz)}~|8Qv)`Wz{-$52<#(F!-qN%1r=S zbvI)}7+EBx9KTH^jIpQKeXf-}{OTdM*jpG)Mu-Td0kiV*%^Q3W#YmPg2dAInMGI{7 zqI+wXMhwLmzoz)4Fp?b<~4aMs> zJhu<)jTKLf!y^_*v?bMXTOcD)StNp`=YAHlW?qwir0@8-sNbP0H9wLT651_?=~Ym% zBm)04VsRN&L3Tqs(vjaWZUz$I%vJiBzQ1iye3@cn=dteZD>}NTsS0KYI=kIDJ3YbT zmcM|792lbBfH?lz#^x7+Y){!xvV7OBv`?B^TE*a|L6Zst1=>V5dCqTl5B0w&)W(NDSOw3#X|Eh< zO);zluu^+}a8u~YeChT7T~^@}fYj*rlPBvFMmvY#ATEs8RQwnw-CgLF9jtQuRc;?y z7Y(})i0+Qp^^5#%nU?=Eqp1QX*cGX~wuU2Rce>+Kg27L3Kjx#pGMSmS@{|Gf;ji>1 zh&bWV1fDSc#-Hq{v;I|Ff9()TNy7LFDFLR;H{ z#{&FF=x-mVp{e;C{Jt4b#2ENi8r$UzWQ$L9x@FLrAp|5CsA22|EgwG${ULyRNm$Ni3>w?#o8lfDVz=S^$2xe$6MspV{<2@ zGS6{B@&7wfvRE%dFZzT#^I0Op>5qRduC-n7XO;d&U_SPy7=rjzI*POQ1DtuGBn3Dy zUV7c6jqY5Ycov8WYNS*!bJv91@zdA*cuFtqi1O-M2m?)!fATT6cY z#;>)D9??4?-IZ%a_O{oYTF|&Rg^HodOXdM>Wlg)?X|#oHT)V1 zMgEPI;|l+|?8(fp<{1P&XQMb~3dIey)CRZj>6G08YwK0z80`?{RmF?cZ42jq&uygq zj)qhB!`b9fE?#pRIUDDyH6vN=Gx|;2-x{$x7fnB+-$XX{Vs|AoW^BD2PJhQacWhsD zZ#|nB+&eV-Q>ww%qYc*8;7!A}_U;bq|G@%0?0I$P^Hz~w@@okBo#)({-+43heKU7j zUb=CI$Fvwthtblxp$^fgPniwmhv=KfvZaxPuVSt7hf;4w+kf7YAng&y6P7VrBLcUU zuI6`$%m2LjvS0MP$(OL>7edohtEl>px&`r~TWH;}&OpUUdghKi15M=GZ$6HaFk;`eH4nI3P1kO)*kx69k1#R~TX0WI>r5}ZV z(0^9Q9A94@k&Y!C7GcKQw_nhxEDWiLhc_tjnU>LzJ0 zaleONANGRjQ`lo;hm-?&a9?>-PRTzWe8kpOwvhavtA~!wpZ8o^2vW6W+7CYbYW0P@ zpv{8a((fvS!zdISPVJZyw^YUZV>(t++}V=fKX!7M!1@hBI}Ju{09@ z!`Z4tqRRh^S1ik;w=(O@TT1B6)+)Qg9kPDW#3RB9$q(W3B(_%;i;%(nV}fl|tZ}#N zYeRW{*8Jjh>NUCf>`2%ndQ+DeQ-aO#?Bur|a}q-^47zx%1Py|=Xr+YH(@)LnqUE3E z<2s3Ik)`AJu+-nk^xF%d`jc;5d`gq<=OMN2vuN-@%!L$;efD!RIcGeo`nu;Cz8xDx zyE4&XlGcNDaWHxe=fS;~{@=St3BGTxqdflxZ2sUdvCAJE^-Vszcu-MX`*tk`tc6A) z%hv&JXj zxAcz#<|o_hg!LWIoMMDsuaTE1{+pfWYS$iSWV{xmh&zl0T?wYbe|5OSg$$6b&i*lZ zuR8LVQbq4j{*7Z9-(E<4=^MBXo;M)-cg;}qR~E((jjM<5EEiHG40&rbK5kukK&lpyZbV8zzEYeE0tBUp4vaS~tmtt=sd_RtEZrWX)2vA*F}v=|hB<&~9*%*@T5L3Oj^N2-7;hTmj?F32^e&Ulr#o z`O~UlU&ZtiL${XRbOm<07yr>W@6EuxzIFwY7t*)^n6M~+sBy3h3)4?bOaM@N;3jNb zelN&IZES8*B2lCKvmB+33$y2ejfnwxLHx(@&4yi$c_SyCKSrC{^T|&80yT!AOA>K z>zCQYUD%27H2v4V_0%(ye_j?pfkL_)=sVOb;?XZxPj3`DoUBudbcQjBCvQeI5ty zgNUVLp+JTZS^!9EXi$RMrtZ8qJPSKj7zG=fV-|l0`ag^NHURv5PIwQ%?|y|Hh-l`b z8X!+l=}|9PE3=_4!@JW7ahtygvwFC=sU7vKK$J_fh}^axwb&5t zcmh{QTmtMqpo$@Rk?UMgR73&41pd1c@Uo&{MzTHuD47$glmB7sM@3-huN#!$q7b?O zdne~Dh{?8NAwzx;tHMzM>TZxvhxrcT2AmZpD+B=FkZuR7N)D)9!5_S! zbL>*ZJf;$m_`ES@;R=FycEf^Nr%pZ|G~d+py;}hah>c57W(M;Hcoz*pM4IA1!UtqJ zanw~F;@K21UFaKvR*g^xApuE-)U-621sAvgp7A`@e~WMMNG#DjyLHg=PZ5JU}nNWZeT>P=@S0z=;F)bkqyr@MXx& zkEs$N0L1}`vh@*rC%n49!nh}xYy)~onKt2KPwhYJt_k2W_ZSZexowWOQKTGg{ zUxEPfkrox)pYn{WTs{shmzE%vM`+ahxShX4#na2{cgorEWklQ-h#Xj`o6t-YD!LCr z!TP20M{GSL27MFK7?YLwAA%oM1jts9K`fv3Jbw9f(DoP`7zf+p+WS7-_dux$r$MaI{?d=r*3{VLQMtJbLVL8darXk$M_pM988Pq_LH8fZT z#CVv8JJ9tU4rflqS_=_yH;}>|^b!DsjHE2+{o|7{W8nSGz_@_|2JJuJ%dZ6)?`;}O zS!N)oKrf7j@o^)!HR$=*1T87ltTCLZyIxuQ6u(4xQ#`P$0U1Ow<1?dVcU! z+R=yu_g17>KLXn5%s^k#%4a8{@{x?eNckJ&O%wRc@sZRZP~uX*L8n;ooE8ctZB^i_!6|rf6o|Qw9L^AW zOx8(2+Ag%RQuslg4+Chmdw?!@Z0N#jkaOP`_%WIpzL-pR_h?zn&BL(xMyc7JSaWt0dZ zVZtQa<2tUFLAW?rF104SCVw_09y~1gJ6*TF%mr#WNMWGv^w1Vmi&3bQ?zUH#?sB84 z0+DnPkW`eW1;K1WZ^`9s4$zY)CyD|+RDo9@=z>^RXzT$Uc=Ssw&h7h1J}@%cF=Avt z`P~>ups1pPd%ezD}rn$bQz!qGZ`8kO%5kV=;-Ku-+0A#*DGMMl$6fFi5Lk3&tJIZAr8{| zAHWTSz5v4}0Vi22E(~>(F?bJG>YetEY7TiqDfkuDoi2jnkyUGJD^e>&CKgoM&7ndL z8#fpfhXG-NtZ$+ii}uBpm1fW_Ax3$e>m4ik4_3Kxs(_>G>z=O&p(la3O-Mbwl zF812ajt*&1CWM9|aBxJht|Njekh%3Z-sgL^KTRN^JyPF#<|VGrsgLp}5MoQ4m45O5 z8b=TbJ`K|UYauB+`wHT6{HHz&avX|EN&!H?q~kS?fHvR{MKonYLcteA=sXDVFCrrL zEQ^Mo9xBJs)v|rsETcs+;+;s8r?Ijv%Q^NB1v#)F@YU_@Z`@0fj0A~eWTQh_8d(%z z_d;gLr!4ltzT|!#o-SDFG$J$)LizJiw@&2;9iZ-Z%TdZ~hsz_6MnZ3EYnx|W%LqLL znxUY16EgmY@C2+g1u$%NC%cAEo<7}u#xA2+?~-6iKBLi!@>kenO|AQE+)WE#6ZxDI zw5e(l%@%N>fWjHfB;;WF_fN-2(L)?SZ)^Zkg;FL}eex2OSy6-nqxsju%Qw64-nzS^ zPs(m_^TR(YX&uC%i$IYaQqDNgWt+1#isc2^-3T@*RbscTjXM@Ejc-CA5XaMGi#yqrdS?2LHK|@4(UgQp4$DlV)ZHajNI$R7UTNhENznJe zw3y9FfQ^I-*gt&7ZOut1i{*#JT6Y&mXWD+Zd8lvP`DZM`o^vw1IlccXB+#8VEj1mF zVBNSmvqEjD=Aw)u8;BRtwnM zNJ1S%uI|8=1u6T`v9Skm9FW2(A`ETXY;0{|%k~y0B+#Soz_|djQBxq64F|S_o}fxG z>axk@xyL^(6AP3vscBPLIDjQGE!Kx-y?yRi@Ey1Esja<7Q@3mHDV^saKE2%lYaBlu zwlB!n1VMQTf>9y>KJolWks=3es^i^?`WEn%dd9}`*7?K8JUl!azI}V)SqE?~3Ef-A z9cp^{mAYYVkS60@WIxP_PQ_|`tr8Uu^7SVh(JwCt1&H!l3B&iBu*2~l^wZ$k7o zfe?Plbr}q6LSo|c?)e#T{y`G%D`e&)VN*8!_(2A`L#@a?hlW0_^DD7I-R6p2Zwb^> z;iOzBPHW80E+d|#6_|2-J2>KzMzh{L+1g6|ao_NfVBIzAJF<5(<%jv$tjLx-K(sY8 zSw}jJHI!$8(UX~I7myj=Lfait4q!~__D`+xy zvts&xn7@cFDJbe>6&AKZb!lv71nxFB=|cA+*x%njfJcwF`n|H#=H$-)#(IllwFldx zC&YK3(>~S`rzPrU%n!0J{`U2OTv<}RaVQVzu2n3X+x4#N%N3*N*aOewwV6QcPDnIx zz`lka0N=SeP+%V~KvV*uGh_R6(y!Ik&@6sF6B z_n?jUijOB=gaKy)V2{?PH)`+V+-GCAa4IS{2w}DmXpkZb|X#>%u&~s>D<%45@2Bj(_$Ci-L{>159 zdpj})6c;aDY6LM<7^7OYJOX<)F|Q{oMuO9B9#JtobMAtrO$0x}kG$;b+@Q`O@bwOc z-4(R2{xkDXfo%kYEp+_xhl31YosZviT!>9c>9(t4w|&_(vkAaOG86>+v|HbxOMEm` z?&cn_Micn?`B_+4kT?zEWG-jpnq=txAFRE1IG64J2mC=pG9$@MDk4QjvJ!=g5Hg~S zP*!B`lv!DKiIkPSqa>7B6e4@C6dB3NR?q9Y@B90Ge!t^c|2+56aoimxuFrLy*Ll9* zul0VGp1D(;`9N2J<6g!c95yP(CJncfLJl$>__ID3`n-rW_@=$oVqBJ-Qrbj>lIA(h zF4dw3vJoT{BU?rl#xK|iCX62mxW-J*EyLnz*8s!`numF5EHJcNI6o=EYVk_}E_X9Si%da7i9Zs&Yo+lNh9;Td)fk3QBL zT{o$b&a=HyG4?)fYqp~NhoRA-p<7|HtCYuV`v}8w5W0{ru`UCZ5U()o-hGDqW;kXB zijfGFML=NS*7;TVzAK0A&_Yp9N0rX~w$FLAEyTln>~;pNxn-Ek3pW4Q`dFbj0h+Me zT%74LmyJs%)VGJWx8Dk*quWpmR8R#!qq zvU9+}*_p`P+$6X9vxFaAWdrrI;nb4hZNFzV1r=HHpC9;4mUzIwQk6O&gJl5R6-SN7QvGlT$P4!sNO4k&($c6)p() zE6KBL;b5PipMQK%0Mq#JASZvZACAgu-%^d>5X2~+Mo3?)mZEorH>5T_Vh`}AT`#Xc zs450lM*OC3{wj_4)!IvXdcJu51O-(`O3dJO)i5yV8&j0PtWcGt#InBfW4*R%35iMm zZnjb_J0=Zx9h6z57~AtYrdznFH_q9}VR&0gElNew|2V#pP3rIEu zkDbkOz=CHOGTuyDE|&k*a~kE9o$DuGx66-?pIUT$`EpZVf4q#&PEMa~A=!_Z>E+#z zejnm1Z#0H}W8)@p5=z7l^6>E7(Nj3+^9L5#NE(;9`FUbE1Ws_ir%%u^;5S2bKFfDn z);_YXf539**}s1?WRoA7nmRMRZR87%VhBt_&@}Qc<0tj|cNS?4=k331?6`KWzEWIV z+x?9r)g+aFC+%RV-y0=`uUxY7L61iq{yXncMQRWO!ZsFjlWDc}D+g<=|?Hto(Mf!}PriCMVqKn(sS4wDFqbyy?%fub;~S&rBOULK?-NvFGkaQl)@NM* zLQ>hm`~B2X_g}JXBVBX*d^_+M*W$Q0#d$+lCd%Y1KG%a35+mrpQA->J=aXhY{b#3t$s z%<4(XN*v#0+!vI`O`WdBr{(6JS8A6j2dLH7-hOg##2z7`=Sz&DFNa4N{Kv?SoL8#2 z*D5CI!fdf)dGYR_J=U+?bd4AOqL+VZW@&jBlB8kiL0kca6T0B1Cwz$6EHm@-)o6-Q zX`?iwQA7_4ZS~O4pC_gict|SwQK6#D7c*^blR~YNHN@xALzD6t=a+3e45fc~_M~}C z_~#4T4d0$K`e2^r9Y$}`RcSB8B4U2Or871*_Hpxv5Vm8BEQVU<;6+HuWPde{5pqu# zf7-pZb$NTzhV>MvOgn-&lY-uM|8BV%&H7lVY5Nla`&T^LD*w>}%uE-R@JG;_3_%~8 z4}~oe;0d;B8Mzo?=;*q-yZ_UL`hW0V#H=Zb@I}V(8!ELX`O%8UtAn$097CR2=On$l z>-~5l^NcCSlY<>by=OZw$X<89y>@(Q%~9>G@eALC1o))l)v&t6_#|ja;87eUe+=kp z8}`nCQ@c|=Ow4+MhsDmx=`?oII=K&H^N$%Ca0NI^7K)!t7^P%0PT=jR?l-x8vD5ya zs^HHx>oO<#LjbJ}_b!bqfxMKT;B^)E}}2QY=! zy02^A$(Iy#pMBY#a`#@mAntB%!eMJxj)##Ug|1B{t#vw9yM1`p6`1wa#iu)hPZ4}0 z!u0{GK6EzONx2C*QN|rR>q;_8N=j(&k&4wEna#rDZPXjY#osSRJz5&qe{x`R_3GyB zqi#PQD86Ib7%8>_{Ggqklar5p9)mZo3lOOYQGPlG?-)G+MGWhv}2^0he4vB ziX(Q1r+wlMj@TF{sUPnAl~-E$n>%Kiyz}ft2kNS?Prn$?+}X+hdG>XZniCzyV>4AJ z<_PW?++#l|Yt)(Rn|CjqyCUIEQc=;ddEGLN&|I{f%d4wLV>L`oOqe9IFx!!suKJcJ zCQ!wIE|`HBPsCRUB`y9t+Z25Ft~_Qc0U_EcZ=tUKIh;1E{RfTA?S9E9|K}XnyVE9# zqrd*48C9MWT`G{3D@4bQ$P3h;!|0)+rQMFg9zX(Y1b!1TpzEvB&5bt)?%BN*K3)8p zL!IO3sqzvxzEmgCRbTwX)IKZ)zbmR$68@}}ko z>}H>RVQLRyBhF7IY~BxZwrxsom3I;p6N|jA%ZQ9|;7zhFVh{k=Sj2k;JbSj+-$uG^ z^T~gTMO>M%uLCF@uaZAT&vVohgd*FVllRNUy!=|6yHb{P!r;?X^jKYL)ed=OAEGYh zjrY6_>|qEEg&)9k1e*wZue-t~f!%omz4fO1LMFpu<%NN7+m*FC3P;qgL=IQDXusBP z3qpk{DY>6-SJ8;222ZF#2GK9^d30^LRKM%Fa~Xw->dUo!J7ra!ADpadDr5x($ydx& z?Ne3U7QL_TL#0w8{Cx-^vbCEs5d<8fG$I3F+Bi_(1`@CobwlATy_h(|lrWi3v; zMxX^u3D~;6zSSl8Dm_~hM{tvlr0MaWr&)HB?fPRF_I8Z_`ShPtu50%$=`Q)~os!Y< zo$s79y1MDmN~G9gwxe&7>d$_yQirEMD1n-g(i^iBtqcbxOO8@)_Z@E~Q(Zi%s=8U+ z`twwYo12UR9^cT!>XexHrB(f<8Q1Bj=1Y6tk?;_qckRN2-FZ)RdX_#}PvYb0fWV-y zzvgwstn*V-Q*EwnL(&aPOA}7D=mb4YmTqQ_g7Y~P`vnDQ{^_)v#8h9cIq!}$MFw!y zWCU2VGN%X`X#wD|lb%0U&ze+? zmo=Pp`0!Z-o5<;bj;KXeW%_w}%B-}hxaTHav4G^ICw+pOH1;XqBc zY`+DQ3zM}>O6#TlJGRy3_Wkf^_V>S)mnZslWreK0Ju@uw$J^zVu^6!zvkORPNe(kh zZ0>k9W?ztzRe)?c>U3S^Q$gHEJ6yT+YlFA;E|G?Od=5(Ryk!SQ1!m{x#IT325v+8piiGZ zd8oV>ZtiGMM9jAA5^Tw@bkt9GI!u^3J(#Xa}MlO=kMy${oaS4pmvepV3 z+5(wuaTVAVUU!F7onq5$a5SlI$zI|bwmzgnFIt^>#medFq+cdmOSn#q-rXo>wefG% zJE^wE`=8be(qf*unyArn>g*oUv!uwaC*7<%NRJ-1>`9;2)pPB8v9+sMv*afa_a;)s zU&{Mp3j0|{!FadZhH#Jk{22yN+qfN;ut6pw-_$Ox{ufRfY8WlFy%_mQnG7ibv7WLC>E*=lr>S6FIxAXLNBY&P9TG zAylLp8QbFG;)d)b8XPakNybFQ#M~ujyP9JrGTIqju^(hU^P`d=LTe&OlbAES`^OYWs7xc#nW=H$?z z6(=TE+pjKMMP_L`m<)HYipp3(euE%cex2eJJ6$acxp*X1>R%22X1D03I+mbV~WA$D?aiSv$ z30`HDzF5|>bT5MnJ*B^*{K9=8iftuf;v>|z0{ON*)-4xFD_%eQCxfAPp_ynycM}rpU6|MHW%QvQz z3UWD65ae4Sezf!8g#1c7mBGpj#~Rw+MW*N~pUQf%e*E}R!tpyjs{OKhG1ot@FV_3j z$do&1u(6U=e6nS7KI~HEI<5ThUN86Z$?`S2UXPIK?Nhr*q)+Xi(%%}cdG0cJF{&rR zM&c7l`mFq6k6b0(X4^P_R@*P!b1yC$`MxV+sM%pc80XM_YjHM0WDH*#YyyNkfY`F& zgSeBDvY&9g_3&N@!#h93b)wzGk72tNx!B;j=C*f~KI=I$*n%aV2n3{$9xtkLrA0>& z{e3>WzV!T}qrr{;V%^rvsJ~NfOCffDzF+5BTrg(j=plj}{WZ}};Mbr! z17X@uzybo%f7;pkRb7B&@}IAfVo89GZoIx!^~v_(#WBgA=)D!yR2B~Jmy5p$8`M~O zm!+rfJfS14X#CCeVcSbG($m@)d?{0^Wb}2zdk^v$?;ciOk}F&D+HD@tcq?Mo;lA2b z@7AZX{qw(O?Am*;)61{!+^mG5A6Hp`J=75IFZ!RSPuahI`&QY}!HlqzJx_sFi{Nf6hxF)}v|coZmj&7&Gcq|%RO`4a!{IfPrinsswoswM-jBo!wK+M6d*23#VJesbao-aD(t2;3v znr|QNQ5Wy=XOd^?8Dw{l<)@M=?z3iU9=5F=aM%e1F)$;Tfm}L=03(K3PiyBWH)U17 z_vz%x%ifJQ>ze3aA5HRyzE1`{xzfLBPk(E^TBY#O3z9v2Jd>IH^wL(*n(8Eg;1&Mc zDcCsu<(0|FlY5^VzD|&pu47%_wDnwC=LOe&)uatUke>1Z2Te^)QP+)^Qa`I{O>494es z`#d9~CHHx$%aTus--3u`=s%;yc{Qg}lHB|wy{v3`%4IcT8UJJ&%a1%tVf64*bo&>R zG?#obVr;qhW-M{WN%1&X@L$&?O=k)jYNXAwD+!@-# zP+N8Ox?P*|JsOhT%iYkfdUWMB&nDR@nr4?e{xSQgxoz6KzkS_YGnK@vM&8l!mWyo{ z??$VkWv1vm4yjZLGp)xTl*ijHm}#CzLwGAmDSmUusQLAI&XuNPfr(Zug8sm;t;>T=`TY%))54>ASZ%Q`;q*--c(bgI{$c+`I1 zyKw|~mbL80jws>wi~I2JQcko8c?-IXrp(N4mqyAj7y1SZXLVXhg^BsUE~eNoW;0YE zc4dT8nQfBPq{t~YOTMWo9aYWB3I%1iP0Di-3_f>%B-m)JTdg$r8B zpHUTfW7trbd8XsJ(yI;)>iUDt6#}s$Yg*S809foyISHxs3YjHyNqJd*mcrmfs{s z)KXx)1|?18`3EU8$^i$#UVdnHf<^ZBm$l{kS(SC0Cjo{SUFjF@ZDMMCJ7M=l$WG6SCeNwevunpV3SNAHr6j%1DZWZr*UB%{)x^0~Rix28@p=-&IG68l1dbvM54 zVRMNZuN3n=lsX2|+48TxNC|P{lU~e3dBuDFsT{-(d9|YuA)z1#wO>inQf%98@Zd`z zpMZeCbKOJWV8%9-HAGb$>b}1TF-8dlBwDskgQ0gawhV$31XDpXwWi2M=zhHD7<9Pp>h5ZmsKmkMj zkP*heSp2N7G8NnKZ0<+9FYGdH;NQv5&rhTZ014%LGY!ZXWcU~SC50}xM!@YP+P2Pf zoqME#&^1N=y{r~q-dxn}(v99zl)O#&&!NEA#R}i@RdWoxJaWmgiYv{Y>{*~GmF;i+ z*csvGxm0JU9B28eJ*d&q`D|L4^Nov|2GrJF3H^nvthcgsfNG1G6q|>95$A4imvb+1 zUSb_3CV5nWjKKJgi>^N)$0lL}U}i;n>h0823)M)FOvK!B<$V&!vb!$uf^wG55q!f%bao5>3SEJ=*lOs@Z&B>$0L&>)nDt8y|B#hH^{Cw=C(J#FPBkU5`aeC+KFZY?XEM%RN<2=+lP?MoIA%u?e ztoPnm;ei|59=7Rg>+7Rt&a&W5fqWG_@#EV`oEmn1jt_nyWx7m!Y*FJ4Rm^A)~EmWLmw&2d=4l7n|`#C3*+omh! zbB*;Q2KsJmaf~yh4LM;0HfALOD20&1VU(J%7$AKfyN)r`HdH^MdZY*sQ0q25`kcD#_<4|v zFCHQ1Az$g*!&)#OKYGL1A z%#zC0O~xZP(>LUhblt0uLgHK4uW^m}?irj(EhQ$~VvrUk4b6K(S1YggJgVCKg_vb{ zYg?Ni#yiq2{akv>=mU}F#k|Y?WAlML;0mDOZg4yYzBXj>FR&SQ&dwdnoc|~L2k9Gx z3DGBjfPxS7*FAL6<2Se&rp8~3i$rpcRva%qC3FjqM{=^W@qdWxQtkU=K7U<JAPfh(J%Bk;DqdR3=db4k17t#*fn4^b~O-9_h@31H+h(t{I;v z+{dz@rLBh}h^FV2S%>x#V+4oxDP2d^dx-@|azjbGpiLM^SB3+E!cE)sX!{>?10c6*(N6X)MGdRVK|p*e4v{2%}xS}ZIi}N_4THWk-SV) zk3X|;a)v@M2thGyHYUx-CEZL|T^RJ^2xb z-N$U%5p`~4Wwjj=eLR#*naka4@cj@2?%*XLQ&wU|Fqp8%qIKkwR?4$yIb8c=dX61msg~yrT-<~3`44%qW<5Bw@89`o1~VJmWF75(Ddajl59xHt+pd0 zBaazW4o7VVfDJ-8*1OT+rU#Fp{!8U?VaU}Ru6@N^#Pk;)e=oZ4(ceYLvKd+q2GH5c zo~pmYETePE5$PvFsy7ZDI@HD~1+6Y#P=(<__=`9QU1f3cacG$cwR7~7CnHcOYf2Cb zd~5Mb#sXo}W$Sb2KpBm{bPL6dj)sN?JNO%74IR?K74{HQB~r^7gpyHR5a;pu;4kJ0^z3)b#n$x zHK#pD!a7fF0hWL39jGe#y!yMlAMXyqhc*psK5ceYVHL_Zg26m^u-P#2 zCRENESkfQFkOv@N3cGz0+ zf|S(&{U$vt>s^qjgp3-76Fy9;fQl0^09;{N3vVF6z5U*V``9s^tdc-Bf{pdbU;QtW zM!9Xm6_?@f#e6BiAQKZgE7VoyXo01#Z1sI96Z$9_W$-&9;m&(40gH0T4~h_A4=AD-r>tnx#XfHG3z`$8~&5;huUr(f)yyfid z6>WE#>>zGXLwX8!0eyY_XjzUcUcVycfAr^fTZ@W|TWZbQnSHL*DEoB7C%g3=60ul2 z-qqIf@bhOj8LEP@p6#}XPfSl&HfE!9I*GN40RbG)JgE%z6_}lipXOp?I|oP-53cEb zM>TWmqg2wZf0eBtPri~fPo0=aKO}m9m!h(A!$4;IyttDCF)6~%&ggQKScOKXnRfpx z);X=s$KBqFjt{|(c)%Z^&X7f?DZ0AUOnqHljQkw5h^x0ODl9a+{RMlrc5YakSyV@2 zL&6=NsQULn8y}AeT+F_uE}nKd7~GDlhX?#M@{=A1OKrWqWnslj`BnHeaD!JRI$`vK z#nnrWA0!Jc&+eh$1D)Y5N7e5j=?W!J{FmvHywO6yOyPnK^c2xfIg!r3OF>E&k0`m=~mSP?OrT?u1rBT_5AtmB9{g9UmCq|%o!uosd zG|4>gHU69T#EJ4+F-#ANZXyOjhWu0|KId@oWR3rd#P~vW=p$M!^FbZ2=ZB#s;Y>jx!)4bhuwRuk)yEl*ru1aSz3MtVqi{#V*~1YXbbsd zI#7eaRMz>u1jQ2Om=f+XLI*rD(mKM@y;cWVroXY1nUg~?+F%HmwJtYdjY8L(t5`^J z_hcRzJ%Ij}VPoJ%K8(t_|8ObYx*kVt;^RDz9Mx)lxc(d?B~0BscwpW9&BVyPd)yhB zx7WiavlpFvycL>Y*dh)&Sj_x8F(QSWL=c#m(L#EI<*+spF$d{aLB zC}X)6IQt}ge!pq4bHP+5ICY2-hJ<%VB=Ta}<3?od5R;E0E7eWiG?dX)*B!d6tDGoWzS4 zz`OFdreQYuTkssk-^g!;<#i3uw=XnHnoKP%%iERP9@waIm!BgeK|6(Qz^LxwLBdl3 zL*mEv`+Z$qLBy_xZA9qUF=D(cmO=J|j0D6`k?y^}AbI;>uZhAdmyuX07fAl2M`Z|$ z6bL+G_`JYdXLJg>haT0?cm)Ws+CSu(G|0>uQ0!jzEbAGSsQcYi_3b7DGjnRYY%okJ z(j4czm#1DdtuAbY@50Qic@1TkPJ2GSiy}EGVV7?fw6BN}+jq-@6$uAjwO5Kie&|C4 zbl0QG!|s>P)6gCn(X$N=6|0k1QfO{wX2ts}-Rd|#aT4ltylWng+%(&^RpKgVK*|2y zQzZoxT-`-MdWq`7Ta z*w3LGjx;p-*;icMS4|ih6dJd#A14s2KK}N8rpTzL)(pP~UwE7dC-!Se963Qfy@jM( zEe%KC4`G+C>kw^>`IY^G-(Tr11l?zg>Ih@Z@Z{t@^f3N=kWypCC#%q9Cel9vI*x_a%jK%9tpgNP70{IUpBNF|mWOVthZLW3{ulZ$9@TzS0kj z+D#yOLpORaPLxs;XTEeG#K?Qc>J60R&Z^JHvr6ZB-EZzl@^u*7Gdv#|s3_NCCMNR2 z!u9G4-&-UZ@4eN}Y<*6zTu(TP+X5@n$#dtnV^NZka4eQOO$^JgwW)BeMtG z`7c&hE*W>f`LQO``O#038TNchVuUXWrC`Nl{g^7-lGugdO?;&W2fRFy4f>gnXM5PI z@e|5)G0&I6H zD@y<@VDbYiS~Jlva66%(89F7FLoiHK0$fSSsWhY^=?*5KlS1v4)cD`(w=!Uouj2)N zTvB&0rarQ@oSI#RpXRnaw=S<*=DAtT^2|GWYOr>>XGq#3?1{MDe4yQ96>|@w2 zsf@MRT&DX@Ld5Oq<>jQ;6Rv1QxR>bVsa2HH{I-RFg?&Eea#**~gJIzC=um-bh1rve z-uLYFZbwX-ei{&uh>lI_`I5nAXzLyI@BK%28ap+vv<2fOEWTi6U$eBVLNEUu=#e+a zM-RNGtL*S^!pp?OTKc!;4U51COkTjYkV}uw`-S)i*O}TJQh9DReyYJyytcZA7Rvmj zR{bgSE@K$BNOEZFq~ENlr*-n)sRm+4gac z)R*C&-5OKz*Yr4_W{h5HFY#q;|9;ssm-7zss)Pf^H?)?+Jv)HDh2wvH2fR?ExDe@y zzuvoU*Dcm3BbCHCCawqGj2*l~-{Qi={_*pECi2+WCYO*2%l?KQ?PitpVWQ|xWq2ndV zIb9ahpL|JI1P9W|N{y|EKqh=>4<9D~yg;pBIq{-`?~iV;6@L1sPjXk27mgGA1*vaJ zu@WpMmYm&;)F+Dp_T^kE0Orx(%zdvjKHORhUie?JnZ&9WO~GkZ`eQC~1V607c%G8W z=s^M#f%;!kY7#uAXs=Y+;eZR-8<8+o*I(wPEFaXkd$RP_-||h;%=cy<866YS!_BAl zzMnh4<-XXmK+Y5^H+M^3Wo1bg(aw)6fm|e(hks<)PRW!K$aJ)}iWK(RK*q=HX7=fW z;C1Wt?XF~@GJY(d^jWT2ML}WZ8 zPnL)Thb~G+M`8vTHZe9FPy^s=5(%PZLa#z6yKFR6#@pUrQ5RXKv`dU8EK`wBN-8Dq zl0Ny3vW(IgVmIKJ{Qhw0UAd**Z+FA6rK>z1q@n-piD#O&nd6#ur3T6H2?z=Uw?WwF zz%Bs1k86(M))3mpZUf;M{Zi~5Lw`2+RC~5jrigu%AHi)pwH$UQ#NUMeTY>7(4-;B& z_d!js!=CIEB*>3^fv3jebKPRR>*mtltAp{MeTqpe2G_sc4lA_NWE{{5$a2os9(urRLZ z+ZQx_Q_g9ZbFpVjN-v7%MAlM3>fL4C-*y(qUl+>BtSTL^W^=8)oRNc2raTOt`1tar z%kYOtR)ezcgvGLdu>05+%#cvZ)f!phR1KzEZ1oVx93|T`jHBlZPr+kE_0#M} zLsfsa2kF*z?$)9Fxt$@oXDG){ysTkp(NIKleL!>-6(V9^a7+WolQ%Khiw{CZf)xbP zlyKR44k7u(@NFT4@96w_MF{a>mJ0(IFI)>4Q;v^`Rz;(-QqJJ%#FDnZ0#yi6Oun8@ zawq&S-`?yR#{E6q>$ki45;pUHJu?%kUd<`4r? z27nR?KwC*ec|IGH6{>oM|L`~~YZ)20G7j1;q%W)tSIb@FgZPM&TcIb|r(Gy9zeqy{ z3I|+y#O`*fn<=Ta>2YtMd{8OUw%Pc1<8C)~&y>Uq2kvR_x4^A@uREXF`FP~nyZUaB z$BCXe>EI+{d84z+{jO8|1dreMfXXllMI|K>tKE!@f2$Ty?gBMcccPX3Mdl%^5w)hZ$(1(;Wrt#2_(b7u+1;{gs->nwC6H37VJO0>eRb{R zBN=NQ*ZvP(l#E^=8Lz7;$uBe|+%ZKTj2WRM(*LmJY$saHpF{v6fH36$RDi-e#C&gs zk)Hk*{sdab!m%3|@i=S%r6@7$@tYgUOHbMO;{$bdR5%Oa#bNEt*```Xhu<|g?=LCy z$s2|;x;^PH(m%JaW7LP1uJmJ^h-RHLy`ettRDRJ9v_E zx5O41ZEYfR;lKVE|24;QACN=mw@+j4up+m}N# z=-)XpIT`WSU$=o65n7+>YK5)wD*EyFGwJoz)hpV{(d=&8vSs4y!2N;LoJ@HFGWkH? z!j3~&c$bD{=c~Y% zg0K_(0=^HOGMVz7gn|I6g6l8YX}1!^Z?T)3TSM_2wn9eM>gsBZOP2_I8vr?=CnPqX zPKy_il#FqEgIzQB@+AStC3}mkyw{)HxNr@+^`prPo#}DX8ma1te*`6Ej&FZrNpmW7}ZwG$ifq&wRA z3|!Dop1tDY?5qfrN!iLM8xcJt?RLRffDTrI`&u=%wF2293o|q7B^&R7u#%M1`s>P@ zzTE_6)t)=prij#BP;X6bQBR*{-{eUC$A^O3JUbl7HSzWLS+BWmm|L8dmYHN*N=wu* zB$=OO;s2ZUFLCKsxZd?JJMe(K2~w(%Y3(b4Z2nRhDDhd(Tvo|`Ol=7J!-IV0$Lm-Ba@yYrCeRwuV?{T9y}g z|Nkg0N-aYsC1D%IMG4h^B5ysAK0uXR8;9QLZNiWQ>79vi>-b9#3+)xB+x;96fj%DH zy<-PCFd+Q2Olm*8fl%2~kU#`uWXfsYeyz>G*vc-vsyT{H9xD?5Sjw;m?#qP3jk=ReO&+{ojAM?E_|6j5J zolAtQ0*bB*$YAWc4^VnlpZ{TD7c)ZnJUJ{YS0^#&4z>NH}9i6@H?i2q8h|>km}`7>6ipTr}?P7EJwUZ`ZcyHHIyF z57KrZsc%TXCNF#ZrwPL zgU}Rdt~<6z#(`31b2otT*Vm6xWNV9h_%OY1=5n0pF)c$I|4QT;0Ie`DuK_c0*=lsw z75ov>y}mcU{pF^ur6m*w)X~Y^CPh-pmxiq^@U56tvaiNy1zAGzZe>+%?>E^Qp(V{{ zu&%GthlfmX6koVge~c}Bu9_mUw(;f*x$kVwXDRf3er`Vw{#`FBWBZZkS8i=&EyDN0 zPEvO+rfz+t*4mBM>aECk2BpJM_W%nWZNf-qvPAXtx#fQ_<)sXU`vsGuV`HW`sP(U8 zWsG;<=so~Ux%qg3pzu|z9bydsoSZ3E2g$~@`rsV(b1S>n{EV|UIVGhMXXYX1$(6K^ z&dz9cFk(%vWJB?0f#XCbe?&y)o&Cfu55fU3V8mNaqjcST_nu~*{eCP5!1j(9YFL$r>FWN~swCY*ieO}3{MLA! zoV<^4)gL@~Cec1jo$noN@MI*sYe-&b@Bm7P048};_40}( zjx_l#A5eu868WIZ5}bhp@%I%lE@7c+R(El7SG(;EGCAXTMVpM?T?Hq)J$kF(sg!WO z$S+{{V)CuL>ww<^-JQ5hemIWkl$4art?vIn!NeA+L95Hl3lfTpWk;X=861cWJgw*K zL;6EY{UMH$pMEd-G~3+mXLCGJef)(jXU{UWUN|FfAS6;h5Pm`6O5`aG&vvHp3uF{U z)C{5zy%@xHJ6~m!qo)se?B?w=(`cabLa5?7<(Pw^;kb0~W3sQun~HxrI7nb3S8Ubm zko))dT}JKsz(W>_3}Ev58C|}k`y2qeBmLoaSXfx!2GIvWqs8wv;OubI^89ZDgP5!^ z!GmX6PoMh8v!}G=^$ji~)1(+(Vqf62ew`uy<#PYTvcsz9ZiY4 z{FmfU%s$&+@`U_T^=Zfg=nxcAXw`Z4slwIqmJ}k~9#_blpYtvMPxg#|U?353zoY&> z=~J*FP&at5Q%rPDEj&iNjM9V%!+QosMxJ>Q25|UKC4M(SK{;+!U+8$ zvc{>)-|YW*$BY1dOK$pp--)|azJ55ENOZ1VR3<%xWAni2u zqduJdCTMKur)o2cpK+U8&!pzCpQhB6V!s{4JF;uB_ad_%7njYik=R=QnYj3D3+f5V*sx5dKd8sk7DQw2Xg> zhn&flLp(Qw{@3!486n^rzXgp<{apnDG|!K|JI8zk(pgs3rYGu-MU)D$fzDPcehZr) z5;;ZqLgQyn+*fwb?>IU)8GdOXsQlg}ndp&X9lAUvwYNYzh$z`EK#KupS^w=Vx|8=ZkxqTv%90sEfeCY3S;9^$#;V6FvJ6Mo2l1Ve970-;=_gBbJ4Qg(U&92|)Bj zz!41LrBc%J`tPxp#;5oE{liOoa}7&Nq&BrEVZTC5&2ErO>Y7O%WUMAU;2}0L zWsjiD2(8F{98jtFBN^pZ{Wo$F;G~%ztGwn59Lcpwca!cSz62x7hJk!y&QNCG#>B(~ zw(562Tq5SwAj~j6LtRg=duQU`Ya{&dMHuh_UJn7&AG%r0B4k7&k}W)!hXWsq{9g$cPb3ch3A*vSSFRwdf+e7m@Jb_#N}HR|r}%}RulYy*1*CDW zfWUUp7_N}Y48w-Uz@zBs;_Am2vO{TSdRA8Tbbl!k9$$t2WZD~gBzWNEkxT`8<{jYF zSHpFY0w4}AS_BfxR(ko84@jvc*gJem$Qw-1t06BACgSPo&y?30S3|XZk)lF_@e}@8 zSy@#Zu%OK#{I(j9Fuy%JGCgs3gD_pn7-rm97D3`$QjYWE_<>yX4tOMJUrMCd<$FT- zL-}F%Cgg(W_TTxFoRdQX#qG80*FX0CuH4GC2Qg}h@BMLKh=7jdm3N7Nk$-mj9^dtS zN2JfPOYxz+1TPUS<&xXyg@`k|$qqrJEhJ@To}Ko7^ym>-D<#yG7JmP%SW506@(S8g zu-nrfV&0B{ACbiyDA@?NJdu=3OngGv=!uPm2Ys0%5Q-s%t@H6ew;DhEiTeBeJHLOg z-C)_h`y^asmTc8R5&+}zSukG17Y47rl9H^rC6OMopoN*3nO_|YfOr$`)@Ql7xu0h1 z=a*+qk;!o85QqFj2W-6JJ~SSs6BCx;LmgdMIG8y(bM4wle}B>&r-Mzm+7}yqpPa0J zI><*)8IG6;#F(&Pxf9MsV*VW&#g-2;S1=X;QjmA|s$MDXp&tTZM;2Heap}D^oq~b_ z!Cb*MzT;dV{d)q)`Zb~beSF->g-_%G8U>m>ift^9d0R*HrE=f@XaPEq`UK$yRdI1~ zw5(T2OYP+Ncw&CO#;7>rk?>p+5WA6>n24m?SFVTmRSO+`5P_9IyoePQ3GG%GI>L&% zHSgef%x$qu`T*5kKHfee*^|g`4hadV%WH0jH-6^pM@B;X^8Wov#8*^SlHsqJd}LSx zPP(}fO0xFK2gZ2;GqPH8S_Do?xk=UD=y& zsH&Qyl&9nL^#cQu9|2`z?fS|*3iH_-wj0FA9%Ag_yS04XL)p6d&%%mMTAz+A0gw&S#+x%L z3w3EN0*v?I%0tV=I($X@s%^sa2l2L0Tc$CyNHCrROT}rV{qC8A1t=>b0 z2RYSKxE;ttKL-_e@&iJrg4jzU3k}3AnJAs{=37KeDg3EZjWfzeP6v%OMe2mBGQmq?mGVWGMetdgRF`W;zX3H8rI(XM*1?V*kNm zZ47k-KFrTI2_CO~kui%nO=4w7vYPj6LP(T^m$p9YNFY|iveT%K!pE%4OyUL17{QS{ zgI8k+r|5#DUZ&_-su`@9hR8ECOe~?Ig+QEi zYa8PMzNa3LSie&>gdeqSZXd#8PC+XO7MJ_QLF(~he562Jq6tEOiG0`nueSNigY3Y$ zj}=)j?TuT;B5ut>i1s+cI(KrrWFamXvARaJp&V3CP7o@g8*hIxqn<1gDtX07xd|KZ zdt9oPb0f6N(4`ZBpsr)FE`&Rl&<^1}=08q|$i08BSP&r!$b)!?yfTylM;wBAaj@dV z9s(2lm;2CZ%5e@DYYEi`83`2?iDc3E)HfnR!zJLfyKqVC23Pav(|CDig)X3ZZ__kI zA}jVvZg`2MH4qq1)0ql>z;fx~?uIuF9Y0#;wuB`$+vI-O@->97e40qb~2YMH^yX z0ao%^!_s4iZJtdng%^DFQq0U9A`*$gB;m;(aCCCo|7v!{6TV8aTYa|g5t)iG&eN{0 zud536JSYN;XYk!j5JF6(*Ys^5_6#4Ekcr~MAHJ`C95PX;9xD+jID_?C-QUjvUHSg8 z+?<^EXy*{>ON$RqY~_%~$w6P1dOr3p+_+BP*HJE@#N;x9W=!zXE5fBhBqI{3wkSlE z);D_oN=o86aQIthG|+M08$5^XpWn+Pbf}hamMaYJ*aN9Oag%@{X|?}2T_r>f5!l}| z^K1&w4Pb>;jLaI@+R|b_2)2O=`Ss0jQ~`8cxijXh*K$umI>(KuKkQ66bRQI7!Mq5B zZUOI(^wI1;1q4z`iVYkR(37c|o&eMlMYjEfjT-tapP(k4D_6n*q(Gv|EiQg>^m8-Z z7>^Z#zquhx7AeVzNlAAAqo1|ewbA!|VnY7Pl`GS3II6;0S}sItKXlJTJ}L#Mwq>k< zozu1EFJ{|yu5cqQN$K#g1JdvbI}~ogm*TH=hYFLZPnhc0`sm>n`K zVZy)$1?ZQF$%Lp6UrzR+bs<97ZEX(&h$7)+K$m1R-B(Nu5{GsU5oi4KUC0a=0p#;# zcm-w7H=GyDe~J-@iJDgPn4*Ha)LHgs=}nWcx!E~7o6%6|MddOTla7DA5;Cl1o3 zOZrCIQP82L1!9OdxM*b+FD;R!4l6ZNV-dwII3W@crIfLsD<&pp1~JYmh&D{2eHe)qv63`#;bkO zdK~%rMD6D5OXiHi5gH(6>pZM;)G)@jwgVFv7zrB&q;beXg$hIxt6t7B9!0cu-)jai zUbu>DYfmOko&}u5S+YD``tv#Bfr_goFFnBQ0(3P*k&XgO!hL~HcI7K02<##3*QbG7 zL+Tqqlu9TXP8u60zMCanBnasy8Y^h$>)_urtb9JFNShpyOn2u0&$de*r5Abj|9QvDzhR zuT>^Qg58RX7t?+c#7d3bwqT9})4!2nNCldT$rM&&&{+xNTq1{&SCrNe2}u6^6&hgV7d% zlq2?nqc@gCMMa4X2?3i-OiVAwQw5-i)XBSi8Y!lMqhuglh?W!g?nf?RH6i?tMlZT= z4k}7yzmgz6%Nx z++sLmwIYICC~vBV%5ld+xMy$?-69ps5ozS&S<~;@PU$uodw*N z%xM(N`4Fw%N5du;ywn5>{@Nh-Lb((rx6Bo1XK^CJIALY@<%0)|1Y(I1GQ@xuY@v7G z{YGboShmSf^)p9W#u#hSx6G;z;{DFYu$|z<>&WN&+}wN;V*jedr*iWT4C&~?#Kr3H zgj|6qBOE{I;sbujN6?SpWGruI8-Yw@9nokA-`T|*A~)|@k47#rH{eLud=J8yo-5dW#+he3vR8&fZHf<7-36-?T)*@6|ENx0umLy60LTVyu zqP~PwvJJ}8W=blNG{S^YG=?Tx_`UC*X`bKwF|W*I`+V;Eoar3FuW>&WGRLC^LJ$<)s>eaWeEYpu9TFvtD>?1PptvtmgB&RYnvxv=} z30M+bjEQ;RHdk$Kzcz2*j6Soe%imRG50UXVs;}r#WPB3+z58FwiJgb|4GANwK^q&= zb<{4d`&4xhmnQ2#vEhd#pJX?ZbGc<@1G$m;s9@)-UJbxEr?xhT*%$6`6#}EL2I%eZ z|In6~guN$eE0-UEbfNa)UW(*0VHg;24ZT>CFviQ}+x%N-W%66T4zLowx)K8sk-$AWaC zO7zNx_G{|#nkyUPJ42YZK$TlBHgIm(HTNQ$;6%=V{aK4YiE?b5~aQir8^&y7d8iSvtp!6(1NM~ME zv#X1XnD{Ss+a5Q+YfDSZd8zb8Wm|;7Qrvrg#o(e{-=i|8OL?~65Z;)8@PwZyBh0&e z=qKA%UdUnMU$SOo=>)G-saP}n)=uViZnrJHs8rV+yqe(3c)#VR8If(}Iv2HaotK z(m5M%H9Rt5XuX{N+FzBU_jMgTEcP$WWm)+svVf7bCr|Et^lmOVR(t*9q0(f%xApbC z6cxKb>*1$m_lGi%DXikW>-zN|)#c%>_8HrIKvuGqvi0n9qb?G*Y!SGb6DzY749YaJ z*|xZ1u=+22eQG=G(` zkuDqUII3iEGQd>n!%d!;bDbuz@MF|`Y|7H9uOVFoTSTOY-l&~n>8dz#sksN;|MMg} zh|7kP&337FU z;4C@sS5{12dLixXhWKA5$_J3rh|3_&2?IBu$V?scd^wM)X9{ z3$U3>H6isIZz?JP@0Oz3v2rQ1)3#KjG<53`a~Bt_S%;LPHeaqJk27dnR^B?y z&=A#=_p{(Lg8KYH`7cbRcsd(xWd`ysxqtMVQvSGObB+j$w3(Uo%@E0JoW~!Rl!Vo% z7HG>S*k_6Wj;Tb}{0R(F2`9nVO40-H{C=xR3mF@HVl`n#TKJBwGW68MipRxt+XomW z2T+dN#2JjAD9*9&&8#d#9I0-tz0R`7esUgkM2ocT@L!?|hT#cBQi`r+v8JMhfq{WA z0wM%%#z~DzK^s@7GoLvz2ZsD4=<|l6OMTgnoC(Yo2s^}OPEKtzPrnOqm}2v1zm9fs z%i)ZWP8^w(Xf*T|ARGboK<@bMyu8j#!?a=!C0tpwUTwQLg)gl<(WyJFj%7aXcC?fL z98HHknfPNtmTRh+Y$t;TIBIVqA5Y!lq}&w?mGhO0IO` z#)_;SlB-Ec$CYQ6*^eAKl1;U_WAzHzEu}o*WXwA^ed(&@mX>|l{E>$Rk#2~eFm46UI>h`Ls3nfw_}IeAYVV#sGSapHa8e%6912Fu{^=%M zWLT9q#&L%}msS5}ZpUqHdD;cPH=ab^+B(iAiv2esG>^R@?i{;GpLCMuY8~$(Czo^C z;^%%k_Yg3IEtx<$6>6_F6GYLO^#Zr26Jl)^E!xc{x@3`Aa_{x$WDolca>7Dhj+uC46`V{yeU?OL&#KL;(J_kcdQX42#wXch8tAm2pG zpxaG83&_eE=!wOjv!O~3EsKw3B(0iAK+jW)*6%HCc|t?Tz?@xx7)I4@?mALUv619b z9IIemZY|}pfX9(74prXsl9dq%jOtKZd*|kR2g%!_-vLz+n4O)SCu`{Aj_h)+wqo!Mv<71ChBts``Y%Ty~_3; zvo_0D3`&ZM>O^TlV%ca}QrMVR+iYQL8^mQ}gpF?SOfCd5J&!0|^!V}Ps5N6?_^6$Q z6&49dv)q=yz$+8Vi|_z>iB!vCk;teyT;KXpaDy8$PBJt>W|X@6?%Ya^SL#9JGF{yz zRr~&imeZa%aSshclbQAw7XG4@1B1Facj#N@F$sXea8Rt-QNt?Qd$Rb#xiBVcdTm^f zu^P!CX-oAi4uD-+PsuI5`Jxpo#wH~=ZJH!-YkJsUjIaCWRx(A{1-?N%4zV_^N4F$B zRi^x0hu-IPG09z*j4duH5wlN%6OOLg;GSj&4lv7)`!&t)bHh|xQg-Rv%<5g6zO-#^ z>h+Aeb!p=?97Xi4q@(u!l8TQK%atSr7FN3{1PyQB<>uz*88q8|s84!T>+9RH0voTr zq)$K*M^y|%J2|NXD<%N&rGrd3o^a5@0jN(Rn!LO3R!c8Bo0&5qK(|d#P}Z1ZojGh} zzvGP}>B^B6OduSzh8(UkRVRPUz*)gmE z!@UUQ8F9eCLBF&-G4HORFbla?PWRQ#l{wpcRy=wB{0?@O$cS~A~_d)~e(7L)h;m=oIv_u__^}hwUd+oE5=g);LYX`EYqdpFVoQ!*; zcVzE26W|FY?=HB^d*P9JYp)9vP1v2+v_|(uM5qd*z@&vlXGXABvc=$Gd=@s5Y-2v< zW1R*Gm{cOG@7ZW#Z-4IBK?9f_!^@=_PGgR_dBDk&CsT`NgRun(gnAEOR~(GF@qV80 z_O#Yh(i2uJyZ~Gz1LHA8W81>}X#w5z<{A3S;)O#V!t5*lm(;AL=1#N~qcy;!(neOx=+i!;W=1j8Cs8be3EWyG5!M@U; zjRXf)FZO{H(QW8A?r;-nXcbRUxG8#eSUYjEzu8}LAY>(&z`iVZP9Y$pULm?EJ3sWg z<@_|Jl9r*y`0+|T^E*ZvM)usgbt^YZp2LW6SwKd{E~VLJdZ3zfu44y2zhAjoxL%+v zt#fv4(@@Q6(*}^{I!iNs>goV&e>&;u>9w|heor5$vkamIRb1`f*(3YO(Oo}^ zc?H)J-3o`si6e|3*+vI0LCa~<(%fQr&7drz1Gt(z7U@ELR>GY99#c!*H zQ7hah66h;dojU^-L_>+z%6{NcsHfep4<6(!-;^1Mj;GMj)-p&LBcHo}^j5BCUCZ0d zISivG(R+nCe2tnE1k~}eT2M}RdHK$de`zr)I8Y8Df7SiXTrsr`s94e8(-w}cGmW=? z2?oU$lrzG97#-O)3Nvhz9sIs3LVKe-rLCf>s{eK8t3bBrA!(5FzVa-0((xNNCVRKH z)m8HfmZ72B8Ol<5QMu07~ z;E-?t#Ly3PmAtmREcu4{sw&D!S}F}8a~Uz{Aw)>OAgb#{b*As5xto0o^^qfqCzmY~ zn}qAt!`2p_dlfgRT7rel6x5!CE?Qb}HAwkSS`!zpT$y*lc;iCaxGK8(`T-Bu z8l#WT^L142>TT#yb8R@lTr3z1nIpdrp_fB}Y7^w#F)3*|`&mLpjZ8tSGVm@Am;(g| zPE|5-(j*J|H=Ktmp7tgWCv#R(i3qdJn6*2m5S5oC%jCqj^_V`*3kCyMMfc#vHPgmV z>r~$`JB7Fc*L*b|nGxb<{_h?0@tNwr zUjfBA3=>}k)sK@N`>-98R(7}RPINV<7c08BbUbTy9tL|`#5-gU2DEkxD+vAR(kKGZ z=qViumk^RTapsxUr-9d&jG|y2RW8vZR zdbTr)ux&|XV{DlPbs!TpyRrYsdkYqoAX7|frQcA-Q!Gt(RU%=;{Pie)Yy`gn{Ndb0 z*AgXIF<~x6S0HtJ!%xq)Gw&c`zi`MB-4Ni6AQ917D80U}r%?UsVexSsEl^z=s$o`x zAVCB%h=|a~dbQZG46 zTHaeS8YBE`#Y;N=&_VBqgZX=KccA^Kn4nlXh*={eTU#X{lucV26FUb0?AywgUGe++ zK}j%Wa8L`TA)b9KEBa$a()M9!e^Rj?+_e8JJ+X?8b|v&wmRw&uKTQ4%!VKMVwMA!~ z8)U8HHjavkQiiHAEUmN5aUB$xwgjA_C_XquMPOT?BJ{tw!d#Qz>fL*19`^VDF(b^t z;tq}RvJpSr>PE2OvH(PUhE;BI7EZM{HwOR-vdNRbj{e zHbgCpcUMYILd(7f;43sTlEJnL;}zEW-=r@o`N!G+vY&@HeCSXK#>YAQOeW=%GRwvK#Qa1EX z{k1X8CtoyI|Ex52tH{dCFjjMCbVQgXgW|hVy1aN*DJBF*Xl!|hX3tPDw?-eNt|EIz zd3m|Eck7>x3I|0&&6%;<_kFswyP8~)vdMq{D}T25uLJ-eo2Y%CDplL7K@a=e_#yua z)Yu}%JH?l|(CeRxS3d4{A@AE}HhRSyI;R{Y-;CIs(hB)D8S5* zxY_V3!#4JSMpb>i9IfOu>&2YJe;wAVwKLm;4mx1?UJVZ3nu3o2jMpKFlxbv~FDh8JH;o z$!^wAZ^J{?Y>|8$HOSm)ZMOyav)-eE7(=ddUAt~wE-ORfbJng|bNl{%vyJZ<8Dq)y z#BvX((QO0%d9vM)8(XdTvhGP3El@^EL+xF86T055SD(Fw`tCdG1jDE}s$5GQI1R?% zrtob;Ll0`(V4q8*DJEhq^1r_$y?Ppu#J{6n-8FNyPfy)6*q0J0@NRJI(F=K#sM=gE zyO;wjPyRIH#fi&Bhp%6s#H_GzSp{KKQZ#J(U?3QG-dUg8p7Qc04BG#Do}O5Y4U!&U z(kF*jZt?1c=cbDRC)U}^(>;DbLgQpcB0V|^jp2i1KNZf>zc6bmZ=>sDJLi_>W=q|9 z$?A07;&mO0)l6fENH(>A%aBVV#-rTMB@3ICXxE-*=$>A2_r08BDX*Z=?k literal 0 HcmV?d00001 diff --git a/week3.html b/week3.html index 152c67d..115f77f 100644 --- a/week3.html +++ b/week3.html @@ -2,7 +2,119 @@ -week3.md -

6 逻辑回归(Logistic Regression)

6.1 分类(Classification)

在分类问题中,预测的结果是离散值(结果是否属于某一类),逻辑回归算法(Logistic Regression)被用于解决这类分类问题。

  • 垃圾邮件判断
  • 金融欺诈判断
  • 肿瘤诊断

讨论肿瘤诊断问题:

肿瘤诊断问题的目的是告诉病人是否为恶性肿瘤,是一个二元分类问题(binary class problems),则定义 ,其中 0 表示负向类(negative class),代表恶性肿瘤("-"),1 为正向类(positive class),代表良性肿瘤("+")。如图,定义最右边的样本为偏差项

在未加入偏差项时,线性回归算法给出了品红色的拟合直线,若规定

,预测为 ,即正向类;

,预测为 ,即负向类。

即以 0.5 为阈值(threshold),则我们就可以根据线性回归结果,得到相对正确的分类结果

 

接下来加入偏差项,线性回归算法给出了靛青色的拟合直线,如果阈值仍然为 0.5,可以看到算法在某些情况下会给出完全错误的结果,对于癌症、肿瘤诊断这类要求预测极其精确的问题,这种情况是无法容忍的。

不仅如此,线性回归算法的值域为 ,则当线性回归函数给出诸如 等很大/很小(负数)的数值时,结果 ,这显得非常怪异。

 

区别于线性回归算法,逻辑回归算法是一个分类算法,其输出值永远在 0 到 1 之间,即

6.2 假设函数表示(Hypothesis Representation)

为了使 ,引入逻辑回归模型,定义假设函数

对比线性回归函数 表示逻辑函数(logistic function),复合起来,则称为逻辑回归函数。

逻辑函数是 S 形函数,会将所有实数映射到 范围。

sigmoid 函数(如下图)是逻辑函数的特殊情况,其公式为

sigmoid function

应用 sigmoid 函数,则逻辑回归模型:

逻辑回归模型中, 的作用是,根据输入 以及参数 ,计算得出”输出 “的可能性(estimated probability),概率学中表示为:

 

以肿瘤诊断为例, 表示病人有 的概率得了恶性肿瘤。

6.3 决策边界(Decision Boundary)

决策边界的概念,可帮助我们更好地理解逻辑回归模型的拟合原理。

在逻辑回归中,有假设函数

为了得出分类的结果,这里和前面一样,规定以 为阈值:

回忆一下逻辑函数的图像:

sigmoid function

观察可得当 时,有 ,即

同线性回归模型的不同点在于:

直观一点来个例子, 是下图模型的假设函数:

根据上面的讨论,要进行分类,那么只要 时,就预测 ,即预测为正向类。

如果取 ,则有 ,当 时,易绘制图中的品红色直线即决策边界,为正向类(以红叉标注的数据)给出 的分类预测结果。

 

上面讨论了逻辑回归模型中线性拟合的例子,下面则是一个多项式拟合的例子,和线性回归中的情况也是类似的。

为了拟合下图数据,建模多项式假设函数:

这里取 ,决策边界对应了一个在原点处的单位圆(),如此便可给出分类结果,如图中品红色曲线:

 

当然,通过一些更为复杂的多项式,还能拟合那些图像显得非常怪异的数据,使得决策边界形似碗状、爱心状等等。

 

简单来说,决策边界就是分类的分界线,分类现在实际就由 (中的 )决定啦。

6.4 损失函数(Cost Function)

上节又留下了个问题,我们怎么知道决策边界是啥样? 多少时能很好的拟合数据?当然,见招拆招,总要来个

如果直接套用线性回归的损失函数:

其中 ,可绘制关于 的图像,如下图

回忆线性回归中的损失函数,其是一个二次凸函数(碗状),二次凸函数的重要性质是只有一个局部最小点即全局最小点。上图中有许多局部最小点,这样梯度下降算法将无法确定收敛点是全局最优。

如果是一个凸函数,可以对其进行最优化分析,这类最优化问题,称为凸优化问题。还好,损失函数不止平方损失函数一种。

对于逻辑回归,更换平方损失函数为对数损失函数:

则可绘制关于 的图像如下:

如左图,当训练集的结果为 (正样本)时,随着假设函数趋向于 ,损失函数的值会趋于 ,即意味着拟合程度很好。如果假设函数此时趋于 ,则会给出一个很高的损失,拟合程度,算法会根据其迅速纠正 值,右图 同理。

区别于平方损失函数,对数损失函数也是一个凸函数,但没有局部最优值。

6.5 简化的成本函数和梯度下降(Simplified Cost Function and Gradient Descent)

由于懒得分类讨论,对于二元分类问题,我们把损失函数简化为一个函数: -

,左边式子整体为 ,当 ,则 ,右边式子整体为0,也就和上面的分段函数一样了,而一个式子计算起来更方便。

向量化实现:

 

为了最优化 ,仍使用梯度下降法,算法同线性回归中一致:

解出偏导得:

注意,虽然形式上梯度下降算法同线性回归一样,但其中的假设函不同,即,不过求导后的结果也相同。

向量化实现:

 

对数损失函数求导的推导过程:

带入得

-

根据求偏导的性质,没有 的项都消去,则得:

所以有:

- - - - - - -

则可得对数损失函数的导数:

 

6.6 进阶优化(Advanced Optimization)

 

6.7 多类别分类: 一对多(Multiclass Classification: One-vs-all)

7 Regularization

7.1 The Problem of Overfitting

7.2 Cost Function

7.3 Regularized Linear Regression

7.4 Regularized Logistic Regression

+

6 逻辑回归(Logistic Regression)

6.1 分类(Classification)

在分类问题中,预测的结果是离散值(结果是否属于某一类),逻辑回归算法(Logistic Regression)被用于解决这类分类问题。

  • 垃圾邮件判断
  • 金融欺诈判断
  • 肿瘤诊断

讨论肿瘤诊断问题:

肿瘤诊断问题的目的是告诉病人是否为恶性肿瘤,是一个二元分类问题(binary class problems),则定义 ,其中 0 表示负向类(negative class),代表恶性肿瘤("-"),1 为正向类(positive class),代表良性肿瘤("+")。如图,定义最右边的样本为偏差项

在未加入偏差项时,线性回归算法给出了品红色的拟合直线,若规定

,预测为 ,即正向类;

,预测为 ,即负向类。

即以 0.5 为阈值(threshold),则我们就可以根据线性回归结果,得到相对正确的分类结果

 

接下来加入偏差项,线性回归算法给出了靛青色的拟合直线,如果阈值仍然为 0.5,可以看到算法在某些情况下会给出完全错误的结果,对于癌症、肿瘤诊断这类要求预测极其精确的问题,这种情况是无法容忍的。

不仅如此,线性回归算法的值域为 ,则当线性回归函数给出诸如 等很大/很小(负数)的数值时,结果 ,这显得非常怪异。

 

区别于线性回归算法,逻辑回归算法是一个分类算法,其输出值永远在 0 到 1 之间,即

6.2 假设函数表示(Hypothesis Representation)

为了使 ,引入逻辑回归模型,定义假设函数

对比线性回归函数 表示逻辑函数(logistic function),复合起来,则称为逻辑回归函数。

逻辑函数是 S 形函数,会将所有实数映射到 范围。

sigmoid 函数(如下图)是逻辑函数的特殊情况,其公式为

sigmoid function

应用 sigmoid 函数,则逻辑回归模型:

逻辑回归模型中, 的作用是,根据输入 以及参数 ,计算得出”输出 “的可能性(estimated probability),概率学中表示为:

 

以肿瘤诊断为例, 表示病人有 的概率得了恶性肿瘤。

6.3 决策边界(Decision Boundary)

决策边界的概念,可帮助我们更好地理解逻辑回归模型的拟合原理。

在逻辑回归中,有假设函数

为了得出分类的结果,这里和前面一样,规定以 为阈值:

回忆一下逻辑函数的图像:

sigmoid function

观察可得当 时,有 ,即

同线性回归模型的不同点在于:

直观一点来个例子, 是下图模型的假设函数:

根据上面的讨论,要进行分类,那么只要 时,就预测 ,即预测为正向类。

如果取 ,则有 ,当 时,易绘制图中的品红色直线即决策边界,为正向类(以红叉标注的数据)给出 的分类预测结果。

 

上面讨论了逻辑回归模型中线性拟合的例子,下面则是一个多项式拟合的例子,和线性回归中的情况也是类似的。

为了拟合下图数据,建模多项式假设函数:

这里取 ,决策边界对应了一个在原点处的单位圆(),如此便可给出分类结果,如图中品红色曲线:

 

当然,通过一些更为复杂的多项式,还能拟合那些图像显得非常怪异的数据,使得决策边界形似碗状、爱心状等等。

 

简单来说,决策边界就是分类的分界线,分类现在实际就由 (中的 )决定啦。

6.4 损失函数(Cost Function)

上节又留下了个问题,我们怎么知道决策边界是啥样? 多少时能很好的拟合数据?当然,见招拆招,总要来个

如果直接套用线性回归的损失函数:

其中 ,可绘制关于 的图像,如下图

回忆线性回归中的损失函数,其是一个二次凸函数(碗状),二次凸函数的重要性质是只有一个局部最小点即全局最小点。上图中有许多局部最小点,这样梯度下降算法将无法确定收敛点是全局最优。

如果是一个凸函数,可以对其进行最优化分析,这类最优化问题,称为凸优化问题。还好,损失函数不止平方损失函数一种。

对于逻辑回归,更换平方损失函数为对数损失函数:

则可绘制关于 的图像如下:

如左图,当训练集的结果为 (正样本)时,随着假设函数趋向于 ,损失函数的值会趋于 ,即意味着拟合程度很好。如果假设函数此时趋于 ,则会给出一个很高的损失,拟合程度,算法会根据其迅速纠正 值,右图 同理。

区别于平方损失函数,对数损失函数也是一个凸函数,但没有局部最优值。

6.5 简化的成本函数和梯度下降(Simplified Cost Function and Gradient Descent)

由于懒得分类讨论,对于二元分类问题,我们把损失函数简化为一个函数: +

,左边式子整体为 ,当 ,则 ,右边式子整体为0,也就和上面的分段函数一样了,而一个式子计算起来更方便。

向量化实现:

 

为了最优化 ,仍使用梯度下降法,算法同线性回归中一致:

解出偏导得:

注意,虽然形式上梯度下降算法同线性回归一样,但其中的假设函不同,即,不过求导后的结果也相同。

向量化实现:

 

对数损失函数求导的推导过程:

带入得

+

根据求偏导的性质,没有 的项都消去,则得:

所以有:

+ + + + + + +

则可得对数损失函数的导数:

6.6 进阶优化(Advanced Optimization)

运行梯度下降算法,其能最小化损失函数 并得出 的最优值,在使用梯度下降算法时,如果不需要观察损失函数的收敛情况,则直接计算 的导数项即可,而不需要计算 值。

我们编写代码给出损失函数及其偏导数然后传入梯度下降算法中,接下来算法则会为我们最小化损失函数给出参数的最优解。这类算法被称为最优化算法(Optimization Algorithms),梯度下降算法不是唯一的最小化算法1

一些最优化算法:

  • 梯度下降法(Gradient Descent)

  • 共轭梯度算法(Conjugate gradient)

  • 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)

    • DFP算法
    • 局部优化法(BFGS)
    • 有限内存局部优化法(L-BFGS)
  • 拉格朗日乘数法(Lagrange multiplier)

比较梯度下降算法:一些最优化算法虽然会更为复杂,难以调试,自行实现又困难重重,开源库又效率也不一,哎,做个调包侠还得碰运气。不过这些算法通常效率更高,并无需选择学习速率 (少一个参数少一份痛苦啊!)。

Octave/Matlab 中对这类高级算法做了封装,易于调用。

 

假设有 ,要求参数 的最优值。

下面为 Octave/Matlab 求解最优化问题的代码实例:

  1. 创建一个函数以返回损失函数及其偏导数:
 
  1. costFunction 函数及所需参数传入最优化函数 fminunc,以求解最优化问题:
 

'GradObj', 'on': 启用梯度目标参数(则需要将梯度传入算法)

'MaxIter', 100: 最大迭代次数为 100 次

@xxx: Octave/Matlab 中的函数指针

optTheta: 最优化得到的参数向量

functionVal: 引用函数最后一次的返回值

exitFlag: 标记损失函数是否收敛

注:Octave/Matlab 中可以使用 help fminunc 命令随时查看函数的帮助文档。

  1. 返回结果
 

6.7 多类别分类: 一对多(Multiclass Classification: One-vs-all)

一直在讨论二元分类问题,这里谈谈多类别分类问题(比如天气预报)。(⊙﹏⊙)有点累,让我歇歇,丢张图去休息啦。。。

原理是,转化多类别分类问题为多个二元分类问题,这种方法被称为 One-vs-all。

正式定义:

: 输出 (属于第 个分类)的可能性

: 类别总数,如上图

注意多类别分类问题中 的结果不再只是一个实数而是一个向量,如果类别总数为 ,现在 就是一个 维向量。

对于样本实例来说,只要看分为哪个类别时预测输出的值最大,就说它输出属于哪个类别,即

7 Regularization

7.1 The Problem of Overfitting

7.2 Cost Function

7.3 Regularized Linear Regression

7.4 Regularized Logistic Regression

\ No newline at end of file diff --git a/week3.md b/week3.md index c4621d3..9006e12 100644 --- a/week3.md +++ b/week3.md @@ -197,14 +197,102 @@ $={\left({h_\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}\right)x_j^{(i)}}$ $\frac{\partial }{\partial {\theta_{j}}}J(\theta) = -\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{\partial }{\partial {\theta_{j}}}f(\theta)}=\frac{1}{m} \sum\limits_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)} $ +## 6.6 进阶优化(Advanced Optimization) +运行梯度下降算法,其能最小化损失函数 $J(\theta)$ 并得出 $\theta$ 的最优值,在使用梯度下降算法时,如果不需要观察损失函数的收敛情况,则直接计算 $J(\theta)$ 的导数项即可,而不需要计算 $J(\theta)$ 值。 -## 6.6 进阶优化(Advanced Optimization) +我们编写代码给出损失函数及其偏导数然后传入梯度下降算法中,接下来算法则会为我们最小化损失函数给出参数的最优解。这类算法被称为**最优化算法(Optimization Algorithms)**,梯度下降算法不是唯一的最小化算法[^1]。 + +一些最优化算法: +- 梯度下降法(Gradient Descent) +- 共轭梯度算法(Conjugate gradient) +- 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods) + - DFP算法 + - 局部优化法(BFGS) + - 有限内存局部优化法(L-BFGS) +- 拉格朗日乘数法(Lagrange multiplier) + +比较梯度下降算法:一些最优化算法虽然会更为复杂,难以调试,自行实现又困难重重,开源库又效率也不一,哎,做个调包侠还得碰运气。不过这些算法通常效率更高,并无需选择学习速率 $\alpha$(少一个参数少一份痛苦啊!)。 + +Octave/Matlab 中对这类高级算法做了封装,易于调用。 + + + +假设有 $J(\theta) = (\theta_1-5)^2 + (\theta_2-5)^2$,要求参数 $\theta=\begin{bmatrix} \theta_1\\\theta_2\end{bmatrix}$的最优值。 + +下面为 Octave/Matlab 求解最优化问题的代码实例: + +1. 创建一个函数以返回损失函数及其偏导数: + +```matlab +function [jVal, gradient] = costFunction(theta) + % code to compute J(theta) + jVal=(theta(1)-5)^2+(theta(2)-5)^2; + + % code to compute derivative of J(theta) + gradient=zeros(2,1); + + gradient(1)=2*(theta(1)-5); + gradient(2)=2*(theta(2)-5); +end +``` + +2. 将 `costFunction` 函数及所需参数传入最优化函数 `fminunc`,以求解最优化问题: + +```matlab +options = optimset('GradObj', 'on', 'MaxIter', 100); +initialTheta = zeros(2,1); + [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options); +``` +> `'GradObj', 'on'`: 启用梯度目标参数(则需要将梯度传入算法) +> +> `'MaxIter', 100`: 最大迭代次数为 100 次 +> +> `@xxx`: Octave/Matlab 中的函数指针 +> +> `optTheta`: 最优化得到的参数向量 +> +> `functionVal`: 引用函数最后一次的返回值 +> +> `exitFlag`: 标记损失函数是否收敛 +注:Octave/Matlab 中可以使用 `help fminunc` 命令随时查看函数的帮助文档。 + +3. 返回结果 + +``` +optTheta = + + 5 + 5 + +functionVal = 0 + +exitFlag = 1 +``` + + +[^1]: https://en.wikipedia.org/wiki/List_of_algorithms#Optimization_algorithms ## 6.7 多类别分类: 一对多(Multiclass Classification: One-vs-all) +一直在讨论二元分类问题,这里谈谈多类别分类问题(比如天气预报)。(⊙﹏⊙)有点累,让我歇歇,丢张图去休息啦。。。 + +![](image/20180112_001720.png) + +原理是,转化多类别分类问题为**多个二元分类问题**,这种方法被称为 One-vs-all。 + +正式定义:$h_\theta^{\left( i \right)}\left( x \right)=p\left( y=i|x;\theta \right), i=\left( 1,2,3....k \right)$ + +> $h_\theta^{\left( i \right)}\left( x \right)$: 输出 $y=i$(属于第 $i$ 个分类)的可能性 +> +> $k$: 类别总数,如上图 $k=3$。 + +注意多类别分类问题中 $h_\theta(x)$ 的结果不再只是一个实数而是一个向量,如果类别总数为 $k$,现在 $h_\theta(x)$ 就是一个 $k$ 维向量。 + +对于样本实例来说,只要看分为哪个类别时预测输出的值最大,就说它输出属于哪个类别,即 $y = \mathop{\max}\limits_i\,h_\theta^{\left( i \right)}\left( x \right)$。 + # 7 Regularization ## 7.1 The Problem of Overfitting