From 1d88fb842a1321f77d3b3cf70f17c0e192c7eb8a Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Thu, 11 Oct 2018 12:05:48 +0800 Subject: [PATCH] 7 --- 7.md | 372 +++++++++++++++++++ img/cython_vs_numba.png | Bin 0 -> 44061 bytes img/tex-41f6cdbb5eab68455940bb18f5d2eb38.gif | Bin 0 -> 683 bytes img/tex-569030d1a75c430d7fb7eae39ba2681c.gif | Bin 0 -> 1849 bytes img/tex-6dabaeb72eb89ffd11a70a83032db2c6.gif | Bin 0 -> 1581 bytes img/tex-75db0522195fefad89d39b56cad146ee.gif | Bin 0 -> 507 bytes 6 files changed, 372 insertions(+) create mode 100644 7.md create mode 100644 img/cython_vs_numba.png create mode 100644 img/tex-41f6cdbb5eab68455940bb18f5d2eb38.gif create mode 100644 img/tex-569030d1a75c430d7fb7eae39ba2681c.gif create mode 100644 img/tex-6dabaeb72eb89ffd11a70a83032db2c6.gif create mode 100644 img/tex-75db0522195fefad89d39b56cad146ee.gif diff --git a/7.md b/7.md new file mode 100644 index 0000000..68964d8 --- /dev/null +++ b/7.md @@ -0,0 +1,372 @@ +# 七、线性回归和健康结果 + +## 糖尿病数据集 + +我们将使用来自糖尿病患者的数据集。 数据由 442 个样本和 10 个变量(都是生理特征)组成,因此它很高而且很窄。 因变量是基线后一年疾病进展的定量测量。 + +这是一个经典的数据集,由 Efron,Hastie,Johnstone 和 Tibshirani 在他们的最小角度回归的论文中使用,也是 scikit-learn 中包含的众多数据集之一。 + +```py +data = datasets.load_diabetes() + +feature_names=['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6'] + +trn,test,y_trn,y_test = train_test_split(data.data, data.target, test_size=0.2) + +trn.shape, test.shape + +# ((353, 10), (89, 10)) +``` + +## Sklearn 中的线性回归 + +考虑系统`Xβ=y`,其中`X`的行比列更多。 当你有比变量更多的数据样本时会发生这种情况。 我们想要找到`β^`来最小化: + +![\big\vert\big\vert X\beta - y \big\vert\big\vert_2](img/tex-75db0522195fefad89d39b56cad146ee.gif) + +让我们从使用 sklearn 实现开始: + +```py +regr = linear_model.LinearRegression() +%timeit regr.fit(trn, y_trn) + +# 458 µs ± 62.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) + +pred = regr.predict(test) +``` + +有一些指标来表示我们的预测有多好,会很有帮助。 我们将研究均方范数(L2)和平均绝对误差(L1)。 + + +```py +def regr_metrics(act, pred): + return (math.sqrt(metrics.mean_squared_error(act, pred)), + metrics.mean_absolute_error(act, pred)) + +regr_metrics(y_test, regr.predict(test)) + +# (75.36166834955054, 60.629082113104403) +``` + +## 多项式特征 + +线性回归找到最佳系数`βi`: + +![x_0\beta_0 + x_1\beta_1 + x_2\beta_2 = y](img/tex-41f6cdbb5eab68455940bb18f5d2eb38.gif) + +添加多项式特征仍然是线性回归问题,只需更多项: + +![x_0\beta_0 + x_1\beta_1 + x_2\beta_2 + x_0^2\beta_3 + x_0 x_1\beta_4 + x_0 x_2\beta_5 + x_1^2\beta_6 + x_1 x_2\beta_7 + x_2^2\beta_8 = y](img/tex-569030d1a75c430d7fb7eae39ba2681c.gif) + +我们需要使用原始数据`X`来计算其他多项式特征。 + +```py +trn.shape + +# (353, 10) +``` + +现在,我们想通过添加更多功能,来尝试提高模型的表现。 目前,我们的模型在每个变量中都是线性的,但我们可以添加多项式特征来改变它。 + +```py +poly = PolynomialFeatures(include_bias=False) + +trn_feat = poly.fit_transform(trn) + +', '.join(poly.get_feature_names(feature_names)) + +# 'age, sex, bmi, bp, s1, s2, s3, s4, s5, s6, age^2, age sex, age bmi, age bp, age s1, age s2, age s3, age s4, age s5, age s6, sex^2, sex bmi, sex bp, sex s1, sex s2, sex s3, sex s4, sex s5, sex s6, bmi^2, bmi bp, bmi s1, bmi s2, bmi s3, bmi s4, bmi s5, bmi s6, bp^2, bp s1, bp s2, bp s3, bp s4, bp s5, bp s6, s1^2, s1 s2, s1 s3, s1 s4, s1 s5, s1 s6, s2^2, s2 s3, s2 s4, s2 s5, s2 s6, s3^2, s3 s4, s3 s5, s3 s6, s4^2, s4 s5, s4 s6, s5^2, s5 s6, s6^2' + +trn_feat.shape + +# (353, 65) + +regr.fit(trn_feat, y_trn) + +# LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) + +regr_metrics(y_test, regr.predict(poly.fit_transform(test))) + +# (55.747345922929185, 42.836164292252235) +``` + +时间对于特征数是平方的,对于样本数是线性的,所以这将变得非常慢! + +```py +%timeit poly.fit_transform(trn) + +# 635 µs ± 9.25 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) +``` + +## 加速特征生成 + +我们想加快速度。 我们将使用 Numba,一个直接将代码编译为 C 的 Python 库。 + +Numba 是一个编译器。 + +### 资源 + +Jake VanderPlas 的[这个教程](https://jakevdp.github.io/blog/2012/08/24/numba-vs-cython/)是一个很好的介绍。 在这里,Jake 使用 Numba 实现了一个[非平凡的算法](https://jakevdp.github.io/blog/2015/02/24/optimizing-python-with-numpy-and-numba/)(非均匀快速傅里叶变换)。 + +Cython 是另一种选择。 我发现 Cython 主要比 Numba 更多的知识(它更接近 C),但提供类似 Numba 的加速。 + +![](img/cython_vs_numba.png) + +这里是预先编译(AOT)编译器,即时编译(JIT)编译器和解释器之间差异的[全面回答](https://softwareengineering.stackexchange.com/questions/246094/understanding-the-differences-traditional-interpreter-jit-compiler-jit-interp)。 + +### 使用向量化和原生代码进行实验 + + +让我们先了解一下 Numba,然后我们将回到我们的糖尿病数据集回归的多项式特征问题。 + +```py +%matplotlib inline + +import math, numpy as np, matplotlib.pyplot as plt +from pandas_summary import DataFrameSummary +from scipy import ndimage + +from numba import jit, vectorize, guvectorize, cuda, float32, void, float64 +``` + +我们将展示以下方面的影响: + ++ 避免内存分配和副本(比 CPU 计算慢) ++ 更好的局部性 ++ 向量化 + +如果我们一次在整个数组上使用 numpy,它会创建大量的临时值,并且不能使用缓存。 如果我们一次使用 numba 循环遍历数组项,那么我们就不必分配大型临时数组,并且可以复用缓存数据,因为我们正在对每个数组项进行多次计算。 + +```py +# 无类型和没有向量化 +def proc_python(xx,yy): + zz = np.zeros(nobs, dtype='float32') + for j in range(nobs): + x, y = xx[j], yy[j] + x = x*2 - ( y * 55 ) + y = x + y*2 + z = x + y + 99 + z = z * ( z - .88 ) + zz[j] = z + return zz + + nobs = 10000 +x = np.random.randn(nobs).astype('float32') +y = np.random.randn(nobs).astype('float32') + +%timeit proc_python(x,y) + +# 49.8 ms ± 1.19 ms per loop (mean ± std. dev. of 7 runs, 10 loops each) +``` + +### NumPy + +Numpy 让我们对其向量化: + +```py +# 有类型和向量化 +def proc_numpy(x,y): + z = np.zeros(nobs, dtype='float32') + x = x*2 - ( y * 55 ) + y = x + y*2 + z = x + y + 99 + z = z * ( z - .88 ) + return z + +np.allclose( proc_numpy(x,y), proc_python(x,y), atol=1e-4 ) + +# True + +%timeit proc_numpy(x,y) # Typed and vectorized + +# 35.9 µs ± 166 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) +``` + +### Numba + +Numba 提供几种不同的装饰器。 我们将尝试两种不同的方法: + ++ `@jit`:非常一般 ++ `@vectorize`:不需要编写for循环。操作相同大小的向量时很有用 + +首先,我们将使用 Numba 的`jit`(即时)编译器装饰器,而无需显式向量化。 这避免了大量内存分配,因此我们有更好的局部性: + +```py +@jit() +def proc_numba(xx,yy,zz): + for j in range(nobs): + x, y = xx[j], yy[j] + x = x*2 - ( y * 55 ) + y = x + y*2 + z = x + y + 99 + z = z * ( z - .88 ) + zz[j] = z + return zz + +z = np.zeros(nobs).astype('float32') +np.allclose( proc_numpy(x,y), proc_numba(x,y,z), atol=1e-4 ) + +# True + +%timeit proc_numba(x,y,z) + +# 6.4 µs ± 17.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) +``` + +现在我们将使用 Numba 的`vectorize`装饰器。 Numba 的编译器以比普通 Python 和 Numpy 更聪明的方式优化它。 它为你写了一个 Numpy `ufunc`,传统上它涉及编写 C 并且不那么简单。 + +```py +@vectorize +def vec_numba(x,y): + x = x*2 - ( y * 55 ) + y = x + y*2 + z = x + y + 99 + return z * ( z - .88 ) + +np.allclose(vec_numba(x,y), proc_numba(x,y,z), atol=1e-4 ) + +# True + +%timeit vec_numba(x,y) + +# 5.82 µs ± 14.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) +``` + +Numba 很棒。 看看这有多快! + +### Numba 多项式特征 + +```py +@jit(nopython=True) +def vec_poly(x, res): + m,n=x.shape + feat_idx=0 + for i in range(n): + v1=x[:,i] + for k in range(m): res[k,feat_idx] = v1[k] + feat_idx+=1 + for j in range(i,n): + for k in range(m): res[k,feat_idx] = v1[k]*x[k,j] + feat_idx+=1 +``` + +### 行序和列序存储 + +来自 [Eli Bendersky 的博客文章](http://eli.thegreenplace.net/2015/memory-layout-of-multi-dimensional-arrays/): + +“矩阵的行序布局将第一行放在连续的内存中,然后是第二行放在它后面,然后是第三行,依此类推。列序布局将第一列放在连续内存中,然后放入第二列,等等....虽然知道特定数据集使用哪种布局对于良好的性能至关重要,但对于哪种布局“更好”的问题,没有单一的答案。” + +“事实证明,匹配算法与数据布局的工作方式,可以决定应用程序的性能。” + +“简短的说法是:始终按照布局顺序遍历数据。” + +列序布局:Fortran,Matlab,R 和 Julia + +行序布局:C,C ++,Python,Pascal,Mathematica + +```py +trn = np.asfortranarray(trn) +test = np.asfortranarray(test) + +m,n=trn.shape +n_feat = n*(n+1)//2 + n +trn_feat = np.zeros((m,n_feat), order='F') +test_feat = np.zeros((len(y_test), n_feat), order='F') + +vec_poly(trn, trn_feat) +vec_poly(test, test_feat) + +regr.fit(trn_feat, y_trn) + +# LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) + +regr_metrics(y_test, regr.predict(test_feat)) + +# (55.74734592292935, 42.836164292252306) + +%timeit vec_poly(trn, trn_feat) + +# 7.33 µs ± 19.8 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) +``` + +回想一下,这是 sklearn `PolynomialFeatures`实现的时间,它是由专家创建的: + +```py +%timeit poly.fit_transform(trn) + +# 635 µs ± 9.25 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) + +605/7.7 + +# 78.57142857142857 +``` + +这是一个大问题! Numba 太神奇了! 只需一行代码,我们就可以获得比 scikit 学习快 78 倍的速度(由专家优化)。 + +### 正则化和噪声 + +正则化是一种减少过拟合,并创建更好地泛化到新数据的模型的方法。 + +### 正则化 + +Lasso 回归使用 L1 惩罚,产生稀疏系数。 参数`α`用于加权惩罚项。 Scikit Learn 的`LassoCV`使用许多不同的`α`值进行交叉验证。 + +观看 [Lasso 回归的 Coursera 视频](https://www.coursera.org/learn/machine-learning-data-analysis/lecture/0KIy7/what-is-lasso-regression),了解更多信息。 + +```py +reg_regr = linear_model.LassoCV(n_alphas=10) + +reg_regr.fit(trn_feat, y_trn) + +''' +/home/jhoward/anaconda3/lib/python3.6/site-packages/sklearn/linear_model/coordinate_descent.py:484: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems. + ConvergenceWarning) + +LassoCV(alphas=None, copy_X=True, cv=None, eps=0.001, fit_intercept=True, + max_iter=1000, n_alphas=10, n_jobs=1, normalize=False, positive=False, + precompute='auto', random_state=None, selection='cyclic', tol=0.0001, + verbose=False) +''' + +reg_regr.alpha_ + +# 0.0098199431661591518 + +regr_metrics(y_test, reg_regr.predict(test_feat)) + +# (50.0982471642817, 40.065199085003101) +``` + +### 噪声 + +现在我们将为数据添加一些噪音。 + +```py +idxs = np.random.randint(0, len(trn), 10) + +y_trn2 = np.copy(y_trn) +y_trn2[idxs] *= 10 # label noise + +regr = linear_model.LinearRegression() +regr.fit(trn, y_trn) +regr_metrics(y_test, regr.predict(test)) + +# (51.1766253181518, 41.415992803872754) + +regr.fit(trn, y_trn2) +regr_metrics(y_test, regr.predict(test)) + +# (62.66110319520415, 53.21914420254862) +``` + +Huber 损失是一种损失函数,对异常值的敏感度低于平方误差损失。 对于小的误差值,它是二次的,对于大的值,它是线性的。 + +![L(x)= \begin{cases} \frac{1}{2}x^2, & \text{for } \lvert x\rvert\leq \delta \\ \delta(\lvert x \rvert - \frac{1}{2}\delta), & \text{otherwise} \end{cases}](img/tex-6dabaeb72eb89ffd11a70a83032db2c6.gif) + +```py +hregr = linear_model.HuberRegressor() +hregr.fit(trn, y_trn2) +regr_metrics(y_test, hregr.predict(test)) + +# (51.24055602541746, 41.670840571376822) +``` diff --git a/img/cython_vs_numba.png b/img/cython_vs_numba.png new file mode 100644 index 0000000000000000000000000000000000000000..c6173edab47ffc0d6f6fa6f2156d31b97542412a GIT binary patch literal 44061 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þ`!wQ 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 AGynhq literal 0 HcmV?d00001 diff --git a/img/tex-41f6cdbb5eab68455940bb18f5d2eb38.gif b/img/tex-41f6cdbb5eab68455940bb18f5d2eb38.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e65efc2c6e0225929ed02b6941874823c503c1b GIT binary patch literal 683 zcmV;c0#yA+Nk%w1VYL7d0J8u9|Ns9000640s+gFVc6N5Uy1G!QanImv5_@m$}$mrJysuw{}wcBnyNcqsyoE+y0Agif!P0&>8JF0laZg!__$ z#S$`Dv>_BWhC`_1P&f$XFR1+<#6fg+czJ9CZg6rRfp=>Y2?AXb0tR7n2M7WH2uL0> z6ABAnAqAG0nw%D%5}<@2qyU$hn;@zHtZNyk5(apgVF(oo4J;G~dH@6+!o;-47rq6+ z6$cK}$H@}ZNzN9~(h~v=1d-X-9pU313Id2LTfZ*OU|rX|=Tg3?2Fa4Cv?2 zodN~#J`lh+hQNag{r(Ab_+eeUg9$w>q_DsQuQC1={&n01Z^%Xf3FzgkRRCXtY9J{* zD9}>E%MfNnC?I&?A%%W3v-uQ}GsMn#0S5#WSYc*?q)Uf9@YNvdf&ht@G{AR>LdgUV zw`Tj+iQ9#%StsSa|J2!I$EVIqcMiM3XjQUCI9)e*7SdxH&fJX!bd=ZQC zn}7@&ittWA_JU;!wQmc^eeA6y;Nhl;u58wkZQQym7|`>3V07)(Zx}KZ+ZD_LFqvLJ zPd9zp9?sSKnEswegBpnlQn(LmO#}BI1X?r2@G~4 zp%XpWV?=n!5n#v!1w0sxhb1*q00RLuAV-KFoS5QkSj-c^jCinkfs8aVu|Onu*&t#g RJ_0$!k3#O_Aq5ct06X818Dsze literal 0 HcmV?d00001 diff --git a/img/tex-569030d1a75c430d7fb7eae39ba2681c.gif b/img/tex-569030d1a75c430d7fb7eae39ba2681c.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7b3614ec4a3a29be8c3375ca6b38a1e329cf303 GIT binary patch literal 1849 zcmV-92gdkENk%w1VK)L60J8u9|Ns9000640s+gFVc6N5Uy1GM)VnRbO zW2&xf>%L-n!gOtKGJ5ZP@Bg($Lt-ERkI1AFAS4=>P+${Kj9RbQY(XIzaI@gB_Ujd! zQ`_$M%x=3k2g&SBudm{OxqT17>-icB0|Em>V1k5(hl7Ps4|o)ajewDiij+*2j*t_Q zmz18H7NL9x0}~DjS*EC}tEUpFN(KcMtg)_?w*a!3yS+%Xwy?apfWO8-!WGDTmk-Gr z1GP5K(bCj4)*#a>4XT^~+aKLn;~wQ#=N;)I-+dM99PLr^8}uRX;r49>xdS@TWrN{w z0>BXXS`_ROP@oC{0u~&&v=G2SZUdoIyhtwNl8yci*?If`Q6j~EA?J-u0utfM4kag2 zXt{(CfdYgKgtIWjfdU6lI&!dybAV0_J%0ujietddoI5Eb1u7z81)@+71lSs2>C~kT zHDEOwb;8)A8NOD1Y1U~`v=`2nm7vz;P`6pRc9qIY>Ds$b$!3s?v@cb=O#|!H%GIl3 zur(402q?e+fC6z2AP@im!8HoR04P|1aRcT)n>&B*LSZ!G45u}7_AIS6>Czfvr>31D zv}@cLbkANbTy^aUznQ|$y!&%;-WYt}Rvw)B@Z%Dahh2{P`i1AKE!uuvy}R+=<8KH$ zUxo8!1QilAm^9(QKmtSL(~r&;fcpaQG5+HKGxr&Cz3DLWx#*|V1_9sWVL8D0Rs22 zh+G$;g$4ivLy+O-mtiWPz?c~jpk@~YJW#=$LpbH<1$2UGC!QGS8HpiPutou#Q#AUh zn1_Z5*^PUm_h^){xcMffcUqcgrgB=KC}@5DSpl3AG_b~`b%qM&rE-wUW(B885NS|= zTC@O_6BKGdrL*RlX>_X&ag#WZ{s~L0q^4#n=mohl!6>iEPISNl@>$@ltkB|m>;=6( zk$|TwoSHxY6(|r|0W2nfqIeWMPyoCm&ReAi?%Fb_K^535!2$nb!|%Iftl_4;X;}0s zx&0yMW{d#WTV|&%cF^wx_yQoW1shX9u&Nf1D8R!IA3RgM`i6X2!WB;-FuFZz?CF6d z%Ur+${{s7G#M#|ku*5UL?5NJa(p4b`E>HN!!nL?o0L>{p;GV0I1b{~^4X~(LgfRNq z^}r(T%fSL#FIeBuOC|8{$V&&3_GJUh5m4KM`q3e1K%>2NcDKqAb|l)Ryn)|pkBwRd zh|@hV+kvhLOy}pmpNcl+!<`X_9&#olgHhW zFBsmD9k{-$=cf-!00Jg>DdzCuP7uItR53UJyB^2UfDUGk7}Np|I1fGZH3tXZ@*_e5 zxAdJ<|2pdxD9?NX;XDGquHx5gq(y9*-~DAQug^sL{;5tr$J?K8{lLtVU-QOiKkDJ( z6qDN@|19D^aa`|5+#8_#3fMkZ5P)j9gH8YD_c$0$PkaqvUg&xgzYR*T5C0M%`T~ZB z1bmPaVE4n9oouDp3sFqKJoE=twb; z(tPSlrXGl>M!l5BQM5pk8x0l=&?EtYalnNm+*t;YYEy+UAOJ#6~m{@|H>1r1&aP*xBuKnH&aL1UpXS;~STr3l1?M>XqHFnq7FbpWjobShdH naOr}aO>GwBs@m4R0kH3Ltr7+++uGXpwz$o$Zg=~E2mk;(Eqh6H literal 0 HcmV?d00001 diff --git a/img/tex-6dabaeb72eb89ffd11a70a83032db2c6.gif b/img/tex-6dabaeb72eb89ffd11a70a83032db2c6.gif new file mode 100644 index 0000000000000000000000000000000000000000..619ec27627d42d6f6c12813fc44e103d217da4d7 GIT binary patch literal 1581 zcmV+|2GaRQNk%w1VFv*>0J8u9|Ns90004G&b|NAoR8&+lGBQL&M3|VEy1KgD+}scl z5N2j(?(XiYs;bP)%!r7HA^8LW00000EC2ui00#j#000F35XecZy*TSl+u~p-j$~<` zXsWI(KqyEn&vb3yxLPPl?*G7`aQFx~G6}@kt0x690+gR2su~Ce3%C{tV@I+^x>hwsUpp*h)A5F-Spk=}WjsOIf zT7c5n1Oy{X0yxPEi2|4+92C;{F(d_oNF_W}kaES!D7XX`ic<3eq@~g{RJ#Vkfk6iW zigqg@KwDE3D;tD88UyMEQDw7k=(S*?g#vTj;xj5@q~R&WMUerxerAV*$h;b-~dre5)6P+p*LePfHP?fB4B!8 ztpmFgve9n35`X}M060m|d$Gu+2PEGo=HB89qS;D7-<_UPk+ zBOp+mF~DKqo(*cXh~P3J-iYHPLkJL=1yfRH(E*K3P^An7ymCP~=K$%X7iMix<_`sM zSHYGz#iSEYgVm7GY7_`W(1By-nL-pWN^nR8SY0r{a0@VI=%H$0@Bo~8HVTAV?2P2) z1aS$fT?q#a>gc9FprYOp3~V_;VpPt+fB^(t%IT^o44`ImT3%2Z0J4bc5~7IW`Oc)Q z_Id)J6jTQiCcCW&9R)|$pumZI{v_cm5CV9ph5!aAFcyoC@h6~v6uf9dZ|Tia1+ULC zaq0*hnku6SvE5Y141a=ffU4!DAOM{gAfV(51AG{QnkK?a?sTsTan6_p%bIYBV_k4c zD&5u;unh4!jEW-&hzZ1wL*9_-5bbU-?{^JXAPj31q&sm76`MTFs6dQ7!K^s!S8jvZ zSb*(+P*O~8&J}p;L#h>YT<;AH0$>l3igCa!2Q62yG_q&b&>K5OA6-Mz0E8%ksGjg6 zfInDbB*Qo10O$4BGBhN#2L+usm;(niKqG=I)Q+RdhO#xs(n`eg-hp5khJ?M+14Smigm0X-#YL!#Y0)?>?7kZHyQE|YbfX3uc zfBf^F1#U;YDTOL{qsmX_NWj3-QNUIuP)pHbAUc%XFEFzDkW|nRJ#!od6AZ8$Av8E9 zzO)8G2Ljt=isOd~VxTf=dLc{jgh2`p2{gBP22egYl8*Ht3WD<1DcG};17LzY&kK$M zt+Sl$yki^~dk)`gqSFH0xZpt7vEpOQBAgQ($8>XB(O_by2(yfgIS6u|>WbC_#!>1B zm0A(KW-*xn4X6S;JI#K|vn@c_Fc^Bs1G3KZ$8JezJt&Y5eL6sZ102CV20#EN$4~_p zUGhEb@lG13b{|sItsxWWq$MZBwdsIjWh+p`!tO#1txa(R_u`q;YOuBp=&P2tJWCw* zXaRubXa;xdPQh#x%%&tHT-^Z*ELV`ABBhcZeQKsUz%ok_R1E{)JOP-{q0OVU@(p$x fh_1@Hs!*kio$zGDA;1^UdNN`G@3g0*A^-q8*nN>) literal 0 HcmV?d00001 diff --git a/img/tex-75db0522195fefad89d39b56cad146ee.gif b/img/tex-75db0522195fefad89d39b56cad146ee.gif new file mode 100644 index 0000000000000000000000000000000000000000..428cd4951739806c28e98daa87d4cc49767a5af8 GIT binary patch literal 507 zcmZ?wbhEHbj9`#pIKsg2|Nnmm28La`cHOyiCnO}q*4FmjyLV}6X#xTQE-o&sR;^M} zQkpSiMp;>zk&)4vGiN$FI)Lhl2Z}#g7(uFaKm^E62G)NH3JfZi(=t}A%Xz&|U1~XV ziACoNZ(v!oyLbzW3if zEw_XNIUCq|f*x&j+qK*`PnD59qEaVImAj@^FSk5An3s_)O_!;Mfv2^%uf8d)K#Pr$ zx4nablaI4(EeXT{8zp1`g}IoelMQUSmP}B?*ML*2@MY#PO5t> zy0tK3LW8Te5dWc4CWlTI?dER+NjixKdgu5&laumrNKbOjGOXOB`bAN}u^~~F#ezfl zb@xo;H&TWMrkpnnSp}p-yuK~D=^`p1m3JpYA<%G;pFl;IYr+FJEgFl^1Txo)9M5e5lsqql2u`s^;>o`0=H;K!Axuf^XV)aT;iIT5*| OkUNV}$()0c!5RQjrm4XI literal 0 HcmV?d00001 -- GitLab