From 7ad45a829ece2d3a04fa7c63fc33a4b0912ca8de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gi=C3=B9=20Marcer?= Date: Sun, 24 May 2020 12:01:36 +0200 Subject: [PATCH] ex-7: revised and typo-fixed In addition, the folder ex-7/iters was created in order to plot the results of the Perceptron method as a function of the iterations parameter. --- ex-7/fisher.c | 9 +- ex-7/iters/iter.py | 25 ++ ex-7/iters/iters.txt | 11 + ex-7/main.c | 13 +- ex-7/plot.py | 17 +- notes/docs/bibliography.bib | 21 +- notes/images/7-fisher-plane.pdf | Bin 38928 -> 37224 bytes notes/images/7-fisher-proj.pdf | Bin 9718 -> 11544 bytes notes/images/7-points.pdf | Bin 34090 -> 35365 bytes notes/sections/7.md | 395 ++++++++++++++++++++------------ notes/todo | 3 + 11 files changed, 332 insertions(+), 162 deletions(-) create mode 100644 ex-7/iters/iter.py create mode 100644 ex-7/iters/iters.txt diff --git a/ex-7/fisher.c b/ex-7/fisher.c index 8216595..25d8279 100644 --- a/ex-7/fisher.c +++ b/ex-7/fisher.c @@ -39,9 +39,9 @@ gsl_vector* normal_mean(struct par *p) { * between the two classes. * The projection vector w is given by * - * w = Sw⁻¹ (μ₂ - μ₁) + * w = Σ_w⁻¹ (μ₂ - μ₁) * - * where Sw = Σ₁ + Σ₂ is the so-called within-class + * where Σ_w = Σ₁ + Σ₂ is the so-called within-class * covariance matrix. */ gsl_vector* fisher_proj(sample_t *c1, sample_t *c2) { @@ -54,10 +54,11 @@ gsl_vector* fisher_proj(sample_t *c1, sample_t *c2) { gsl_vector *mu2 = normal_mean(&c2->p); /* Compute the inverse of the within-class - * covariance Sw⁻¹. + * covariance Σ_w⁻¹. * Note: by definition Σ is symmetrical and * positive-definite, so Cholesky is appropriate. */ + gsl_matrix_add(cov1, cov2); gsl_linalg_cholesky_decomp(cov1); gsl_linalg_cholesky_invert(cov1); @@ -67,7 +68,7 @@ gsl_vector* fisher_proj(sample_t *c1, sample_t *c2) { gsl_vector_memcpy(diff, mu2); gsl_vector_sub(diff, mu1); - /* Finally multiply diff by Sw. + /* Finally multiply diff by Σ_w. * This uses the rather low-level CBLAS * functions gsl_blas_dgemv: * diff --git a/ex-7/iters/iter.py b/ex-7/iters/iter.py new file mode 100644 index 0000000..44e0aae --- /dev/null +++ b/ex-7/iters/iter.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +import numpy as np +import matplotlib.pyplot as plt + + +iter, w_x, w_y, b = np.loadtxt('ex-7/iters/iters.txt') + +plt.figure(figsize=(5, 4)) +plt.rcParams['font.size'] = 8 + +plt.subplot(211) +plt.title('weight vector', loc='right') +plt.plot(iter, w, color='#92182b') +plt.ylabel('w') +plt.xlabel('N') + +plt.subplot(212) +plt.title('bias', loc='right') +plt.plot(iter, b, color='gray') +plt.ylabel('b') +plt.xlabel('N') + +plt.tight_layout() +plt.show() diff --git a/ex-7/iters/iters.txt b/ex-7/iters/iters.txt new file mode 100644 index 0000000..e9db0ec --- /dev/null +++ b/ex-7/iters/iters.txt @@ -0,0 +1,11 @@ +#iters w_x w_y b b + 1 0.427 0.904 1.749 + 2 0.566 0.824 1.445 + 3 0.654 0.756 1.213 + 4 0.654 0.756 1.213 + 5 0.654 0.756 1.213 + 7 0.654 0.756 1.213 + 6 0.654 0.756 1.213 + 8 0.654 0.756 1.213 + 9 0.654 0.756 1.213 +10 0.654 0.756 1.213 diff --git a/ex-7/main.c b/ex-7/main.c index 67f146e..7bc5b76 100644 --- a/ex-7/main.c +++ b/ex-7/main.c @@ -95,7 +95,7 @@ int main(int argc, char **argv) { * dataset to get an approximate * solution in `iter` iterations. */ - fputs("# Perceptron \n\n", stderr); + // fputs("# Perceptron \n\n", stderr); w = percep_train(signal, noise, opts.iter, &cut); } else { @@ -107,20 +107,21 @@ int main(int argc, char **argv) { /* Print the results of the method * selected: weights and threshold. */ + fprintf(stderr, "\n* i: %d\n", opts.iter); fprintf(stderr, "* w: [%.3f, %.3f]\n", gsl_vector_get(w, 0), gsl_vector_get(w, 1)); fprintf(stderr, "* cut: %.3f\n", cut); - gsl_vector_fprintf(stdout, w, "%g"); - printf("%f\n", cut); +// gsl_vector_fprintf(stdout, w, "%g"); +// printf("%f\n", cut); /* Print data to stdout for plotting. * Note: we print the sizes to be able * to set apart the two matrices. */ - printf("%ld %ld %d\n", opts.nsig, opts.nnoise, 2); - gsl_matrix_fprintf(stdout, signal->data, "%g"); - gsl_matrix_fprintf(stdout, noise->data, "%g"); +// printf("%ld %ld %d\n", opts.nsig, opts.nnoise, 2); +// gsl_matrix_fprintf(stdout, signal->data, "%g"); +// gsl_matrix_fprintf(stdout, noise->data, "%g"); // free memory gsl_rng_free(r); diff --git a/ex-7/plot.py b/ex-7/plot.py index 5cfbdeb..04ea7e7 100755 --- a/ex-7/plot.py +++ b/ex-7/plot.py @@ -7,7 +7,6 @@ def line(x, y, **args): '''line between two points x,y''' plot([x[0], y[0]], [x[1], y[1]], **args) -rcParams['font.size'] = 12 w = loadtxt(sys.stdin, max_rows=2) v = array([[0, -1], [1, 0]]) @ w cut = float(input()) @@ -16,7 +15,11 @@ n, m, d = map(int, input().split()) data = loadtxt(sys.stdin).reshape(n + m, d) signal, noise = data[:n].T, data[n:].T +plt.figure(figsize=(3, 3)) +rcParams['font.size'] = 8 figure() +figure(figsize=(3, 3)) +rcParams['font.size'] = 8 subplot(aspect='equal') scatter(*signal, edgecolor='xkcd:charcoal', c='xkcd:dark yellow', label='signal') @@ -24,18 +27,22 @@ scatter(*noise, edgecolor='xkcd:charcoal', c='xkcd:pale purple', label='noise') line(-20*w, 20*w, c='xkcd:midnight blue', label='projection') line(w-10*v, w+10*v, c='xkcd:scarlet', label='cut') +xlabel('x') +ylabel('y') xlim(-1.5, 8) ylim(-1.5, 8) legend() tight_layout() +savefig('notes/images/7-fisher-plane.pdf') -figure() +plt.figure(figsize=(3, 3)) +rcParams['font.size'] = 8 sig_proj = np.dot(w, signal) noise_proj = np.dot(w, noise) hist(sig_proj, color='xkcd:dark yellow', label='signal') hist(noise_proj, color='xkcd:pale purple', label='noise') -axvline(cut, c='xkcd:scarlet') +axvline(cut, c='xkcd:scarlet', label='cut') +xlabel('projection line') legend() tight_layout() - -show() +savefig('notes/images/7-fisher-proj.pdf') diff --git a/notes/docs/bibliography.bib b/notes/docs/bibliography.bib index 50df816..987787c 100644 --- a/notes/docs/bibliography.bib +++ b/notes/docs/bibliography.bib @@ -140,17 +140,32 @@ @book{hecht02, title={Optics}, + author={Eugene Hecht}, year={2002}, - publisher={Pearson}, - author={Eugene Hecht} + publisher={Pearson} } @article{lucy74, title={An iterative technique for the rectification of observed distributions}, - author={Lucy, Leon B}, + author={Lucy, Leon B.}, journal={The astronomical journal}, volume={79}, pages={745}, year={1974} } + +@book{bishop06, + title={Pattern Recognition and Machine Learning}, + author={Bishop, Christopher M.}, + year={2006}, + pages={186 -- 189}, + publisher={Springer} +} + +@techreport{novikoff63, + title={On convergence proofs for perceptrons}, + author={Novikoff, Albert B}, + year={1963}, + institution={Stanford Researhc INST Menlo Park CA} +} diff --git a/notes/images/7-fisher-plane.pdf b/notes/images/7-fisher-plane.pdf index c74d6195cfd50469716528ff50fc82e83cdedbed..1f31fad1e07b3ee998b467da57e88f0946858cf2 100644 GIT binary patch delta 28598 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 kN?cAQrTn`T|GnRsIJtavYH}F=2U34v5&!@I delta 30404 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 W;&FfXfImO&2p4+uL^o%THW1{ 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 delta 2487 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 delta 29622 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%0D>fU#nZ8X^O-Q(eWh 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 LuV2e+Dq#OFzIZ9f diff --git a/notes/sections/7.md b/notes/sections/7.md index 7b6e415..801ed05 100644 --- a/notes/sections/7.md +++ b/notes/sections/7.md @@ -2,9 +2,8 @@ ## Generating points according to Gaussian distributions {#sec:sampling} -The first task of exercise 7 is to generate two sets of 2D points $(x, y)$ -according to two bivariate Gaussian distributions with parameters: - +Two sets of 2D points $(x, y)$ - signal and noise - is to be generated according +to two bivariate Gaussian distributions with parameters: $$ \text{signal} \quad \begin{cases} @@ -21,262 +20,361 @@ $$ \end{cases} $$ -where $\mu$ stands for the mean, $\sigma_x$ and $\sigma_y$ are the standard +where $\mu$ stands for the mean, $\sigma_x$ and $\sigma_y$ for the standard deviations in $x$ and $y$ directions respectively and $\rho$ is the bivariate -correlation, hence: - +correlation, namely: $$ \sigma_{xy} = \rho \sigma_x \sigma_y $$ where $\sigma_{xy}$ is the covariance of $x$ and $y$. In the code, default settings are $N_s = 800$ points for the signal and $N_n = -1000$ points for the noise but can be changed from the command-line. Both -samples were handled as matrices of dimension $n$ x 2, where $n$ is the number -of points in the sample. The library `gsl_matrix` provided by GSL was employed -for this purpose and the function `gsl_ran_bivariate_gaussian()` was used for -generating the points. +1000$ points for the noise but can be customized from the input command-line. +Both samples were handled as matrices of dimension $n$ x 2, where $n$ is the +number of points in the sample. The library `gsl_matrix` provided by GSL was +employed for this purpose and the function `gsl_ran_bivariate_gaussian()` was +used for generating the points. An example of the two samples is shown in @fig:points. -![Example of points sorted according to two Gaussian with -the given parameters. Noise points in pink and signal points -in yellow.](images/7-points.pdf){#fig:points} +![Example of points sampled according to the two Gaussian distributions +with the given parameters.](images/7-points.pdf){#fig:points} Assuming not to know how the points were generated, a model of classification -must then be implemented in order to assign each point to the right class +is then to be implemented in order to assign each point to the right class (signal or noise) to which it 'most probably' belongs to. The point is how -'most probably' can be interpreted and implemented. +'most probably' can be interpreted and implemented. +Here, the Fisher linear discriminant and the Perceptron were implemented and +described in the following two sections. The results are compared in +@sec:7_results. + ## Fisher linear discriminant + ### The projection direction The Fisher linear discriminant (FLD) is a linear classification model based on dimensionality reduction. It allows to reduce this 2D classification problem into a one-dimensional decision surface. -Consider the case of two classes (in this case the signal and the noise): the -simplest representation of a linear discriminant is obtained by taking a linear -function of a sampled 2D point $x$ so that: - +Consider the case of two classes (in this case signal and noise): the simplest +representation of a linear discriminant is obtained by taking a linear function +$\hat{x}$ of a sampled 2D point $x$ so that: $$ \hat{x} = w^T x $$ -where $w$ is the so-called 'weight vector'. An input point $x$ is commonly -assigned to the first class if $\hat{x} \geqslant w_{th}$ and to the second one -otherwise, where $w_{th}$ is a threshold value somehow defined. -In general, the projection onto one dimension leads to a considerable loss of -information and classes that are well separated in the original 2D space may -become strongly overlapping in one dimension. However, by adjusting the -components of the weight vector, a projection that maximizes the classes -separation can be selected. +where $w$ is the so-called 'weight vector' and $w^T$ stands for its transpose. +An input point $x$ is commonly assigned to the first class if $\hat{x} \geqslant +w_{th}$ and to the second one otherwise, where $w_{th}$ is a threshold value +somehow defined. In general, the projection onto one dimension leads to a +considerable loss of information and classes that are well separated in the +original 2D space may become strongly overlapping in one dimension. However, by +adjusting the components of the weight vector, a projection that maximizes the +classes separation can be selected [@bishop06]. To begin with, consider $N_1$ points of class $C_1$ and $N_2$ points of class -$C_2$, so that the means $m_1$ and $m_2$ of the two classes are given by: - +$C_2$, so that the means $\mu_1$ and $\mu_2$ of the two classes are given by: $$ - m_1 = \frac{1}{N_1} \sum_{n \in C_1} x_n + \mu_1 = \frac{1}{N_1} \sum_{n \in C_1} x_n \et - m_2 = \frac{1}{N_2} \sum_{n \in C_2} x_n + \mu_2 = \frac{1}{N_2} \sum_{n \in C_2} x_n $$ The simplest measure of the separation of the classes is the separation of the projected class means. This suggests to choose $w$ so as to maximize: - $$ - \hat{m}_2 − \hat{m}_1 = w^T (m_2 − m_1) + \hat{\mu}_2 − \hat{\mu}_1 = w^T (\mu_2 − \mu_1) $$ This expression can be made arbitrarily large simply by increasing the magnitude of $w$. To solve this problem, $w$ can be constrained to have unit length, so that $| w^2 | = 1$. Using a Lagrange multiplier to perform the constrained -maximization, it can be found that $w \propto (m_2 − m_1)$. - -![The plot on the left shows samples from two classes along with the histograms -resulting from projection onto the line joining the class means: note that -there is considerable overlap in the projected space. The right plot shows the -corresponding projection based on the Fisher linear discriminant, showing the -greatly improved classes separation.](images/7-fisher.png){#fig:overlap} - +maximization, it can be found that $w \propto (\mu_2 − \mu_1)$, meaning that the +line onto the points must be projected is the one joining the class means. There is still a problem with this approach, however, as illustrated in @fig:overlap: the two classes are well separated in the original 2D space but -have considerable overlap when projected onto the line joining their means. +have considerable overlap when projected onto the line joining their means +which maximize their projections distance. + +![The plot on the left shows samples from two classes along with the +histograms resulting fromthe projection onto the line joining the +class means: note that there is considerable overlap in the projected +space. The right plot shows the corresponding projection based on the +Fisher linear discriminant, showing the greatly improved classes +separation. Fifure from [@bishop06]](images/7-fisher.png){#fig:overlap} + The idea to solve it is to maximize a function that will give a large separation between the projected classes means while also giving a small variance within each class, thereby minimizing the class overlap. -The within-classes variance of the transformed data of each class $k$ is given +The within-class variance of the transformed data of each class $k$ is given by: - $$ - s_k^2 = \sum_{n \in C_k} (\hat{x}_n - \hat{m}_k)^2 + \hat{s}_k^2 = \sum_{n \in c_k} (\hat{x}_n - \hat{\mu}_k)^2 $$ -The total within-classes variance for the whole data set can be simply defined -as $s^2 = s_1^2 + s_2^2$. The Fisher criterion is therefore defined to be the -ratio of the between-classes distance to the within-classes variance and is +The total within-class variance for the whole data set is simply defined as +$\hat{s}^2 = \hat{s}_1^2 + \hat{s}_2^2$. The Fisher criterion is defined to +be the ratio of the between-class distance to the within-class variance and is given by: - $$ - J(w) = \frac{(\hat{m}_2 - \hat{m}_1)^2}{s^2} + F(w) = \frac{(\hat{\mu}_2 - \hat{\mu}_1)^2}{\hat{s}^2} $$ -Differentiating $J(w)$ with respect to $w$, it can be found that it is -maximized when: +The dependence on $w$ can be made explicit: +\begin{align*} + (\hat{\mu}_2 - \hat{\mu}_1)^2 &= (w^T \mu_2 - w^T \mu_1)^2 \\ + &= [w^T (\mu_2 - \mu_1)]^2 \\ + &= [w^T (\mu_2 - \mu_1)][w^T (\mu_2 - \mu_1)] \\ + &= [w^T (\mu_2 - \mu_1)][(\mu_2 - \mu_1)^T w] + = w^T M w +\end{align*} +where $M$ is the between-distance matrix. Similarly, as regards the denominator: +\begin{align*} + \hat{s}^2 &= \hat{s}_1^2 + \hat{s}_2^2 = \\ + &= \sum_{n \in c_1} (\hat{x}_n - \hat{\mu}_1)^2 + + \sum_{n \in c_2} (\hat{x}_n - \hat{\mu}_2)^2 + = w^T \Sigma_w w +\end{align*} + +where $\Sigma_w$ is the total within-class covariance matrix: +\begin{align*} + \Sigma_w &= \sum_{n \in c_1} (x_n − \mu_1)(x_n − \mu_1)^T + + \sum_{n \in c_2} (x_n − \mu_2)(x_n − \mu_2)^T \\ + &= \Sigma_1 + \Sigma_2 + = \begin{pmatrix} + \sigma_x^2 & \sigma_{xy} \\ + \sigma_{xy} & \sigma_y^2 + \end{pmatrix}_1 + + \begin{pmatrix} + \sigma_x^2 & \sigma_{xy} \\ + \sigma_{xy} & \sigma_y^2 + \end{pmatrix}_2 +\end{align*} + +Where $\Sigma_1$ and $\Sigma_2$ are the covariance matrix of the two samples. +The Fisher criterion can therefore be rewritten in the form: $$ - w = S_b^{-1} (m_2 - m_1) + F(w) = \frac{w^T M w}{w^T \Sigma_w w} $$ -where $S_b$ is the covariance matrix, given by: - +Differentiating with respect to $w$, it can be found that $F(w)$ is maximized +when: $$ - S_b = S_1 + S_2 + w = \Sigma_w^{-1} (\mu_2 - \mu_1) $$ -where $S_1$ and $S_2$ are the covariance matrix of the two classes, namely: - -$$ -\begin{pmatrix} -\sigma_x^2 & \sigma_{xy} \\ -\sigma_{xy} & \sigma_y^2 -\end{pmatrix} -$$ - -This is not truly a discriminant but rather a specific choice of direction for -projection of the data down to one dimension: the projected data can then be +This is not truly a discriminant but rather a specific choice of the direction +for projection of the data down to one dimension: the projected data can then be used to construct a discriminant by choosing a threshold for the classification. When implemented, the parameters given in @sec:sampling were used to compute -the covariance matrices $S_1$ and $S_2$ of the two classes and their sum $S$. -Then $S$, being a symmetrical and positive-definite matrix, was inverted with -the Cholesky method, already discussed in @sec:MLM. -Lastly, the matrix-vector product was computed with the `gsl_blas_dgemv()` -function provided by GSL. +the covariance matrices and their sum $\Sigma_w$. Then $\Sigma_w$, being a +symmetrical and positive-definite matrix, was inverted with the Cholesky method, +already discussed in @sec:MLM. Lastly, the matrix-vector product was computed +with the `gsl_blas_dgemv()` function provided by GSL. ### The threshold -The cut was fixed by the condition of conditional probability being the same -for each class: - +The threshold $t_{\text{cut}}$ was fixed by the condition of conditional +probability $P(c_k | t_{\text{cut}})$ being the same for both classes $c_k$: $$ t_{\text{cut}} = x \, | \hspace{20pt} \frac{P(c_1 | x)}{P(c_2 | x)} = - \frac{p(x | c_1) \, p(c_1)}{p(x | c_1) \, p(c_2)} = 1 + \frac{P(x | c_1) \, P(c_1)}{P(x | c_1) \, P(c_2)} = 1 $$ -where $p(x | c_k)$ is the probability for point $x$ along the Fisher projection -line of belonging to the class $k$. If the classes are bivariate Gaussian, as -in the present case, then $p(x | c_k)$ is simply given by its projected normal -distribution $\mathscr{G} (\hat{μ}, \hat{S})$. With a bit of math, the solution -is then: - +where $P(x | c_k)$ is the probability for point $x$ along the Fisher projection +line of being sampled according to the class $k$. If each class is a bivariate +Gaussian, as in the present case, then $P(x | c_k)$ is simply given by its +projected normal distribution with mean $\hat{m} = w^T m$ and variance $\hat{s} += w^T S w$, being $S$ the covariance matrix of the class. +With a bit of math, the following solution can be found: $$ - t = \frac{b}{a} + \sqrt{\left( \frac{b}{a} \right)^2 - \frac{c}{a}} + t_{\text{cut}} = \frac{b}{a} + + \sqrt{\left( \frac{b}{a} \right)^2 - \frac{c}{a}} $$ where: - - $a = \hat{S}_1^2 - \hat{S}_2^2$ - - $b = \hat{m}_2 \, \hat{S}_1^2 - \hat{M}_1 \, \hat{S}_2^2$ - - $c = \hat{M}_2^2 \, \hat{S}_1^2 - \hat{M}_1^2 \, \hat{S}_2^2 - - 2 \, \hat{S}_1^2 \, \hat{S}_2^2 \, \ln(\alpha)$ - - $\alpha = p(c_1) / p(c_2)$ - -The ratio of the prior probability $\alpha$ was computed as: + - $a = \hat{s}_1^2 - \hat{s}_2^2$ + - $b = \hat{\mu}_2 \, \hat{s}_1^2 - \hat{\mu}_1 \, \hat{s}_2^2$ + - $c = \hat{\mu}_2^2 \, \hat{s}_1^2 - \hat{\mu}_1^2 \, \hat{s}_2^2 + - 2 \, \hat{s}_1^2 \, \hat{s}_2^2 \, \ln(\alpha)$ + - $\alpha = P(c_1) / P(c_2)$ +The ratio of the prior probabilities $\alpha$ is simply given by: $$ \alpha = \frac{N_s}{N_n} $$ The projection of the points was accomplished by the use of the function -`gsl_blas_ddot()`, which computed a dot product between two vectors, which in -this case were the weight vector and the position of the point to be projected. +`gsl_blas_ddot()`, which computes the element wise product between two vectors. + +Results obtained for the same samples in @fig:points are shown in +@fig:fisher_proj. The weight vector and the treshold were found to be: +$$ + w = (0.707, 0.707) \et + t_{\text{cut}} = 1.323 +$$
-![View from above of the samples.](images/7-fisher-plane.pdf){height=5.7cm} -![Gaussian of the samples on the projection - line.](images/7-fisher-proj.pdf){height=5.7cm} +![View of the samples in the plane.](images/7-fisher-plane.pdf) +![View of the samples projections onto the projection + line.](images/7-fisher-proj.pdf) -Aerial and lateral views of the projection direction, in blue, and the cut, in -red. +Aerial and lateral views of the samples. Projection line in blu and cut in red.
-Results obtained for the same sample in @fig:points are shown in -@fig:fisher_proj. The weight vector $w$ was found to be: - +Since the vector $w$ turned out to be parallel with the line joining the means +of the two classes (reminded to be $(0, 0)$ and $(4, 4)$), one can be mislead +and assume that the inverse of the total covariance matrix $\Sigma_w$ is +isotropic, namely proportional to the unit matrix. +That's not true. In this special sample, the vector joining the means turns out +to be an eigenvector of the covariance matrix $\Sigma_w^{-1}$. In fact: since +$\sigma_x = \sigma_y$ for both signal and noise: $$ - w = (0.707, 0.707) + \Sigma_1 = \begin{pmatrix} + \sigma_x^2 & \sigma_{xy} \\ + \sigma_{xy} & \sigma_x^2 + \end{pmatrix}_1 + \et + \Sigma_2 = \begin{pmatrix} + \sigma_x^2 & \sigma_{xy} \\ + \sigma_{xy} & \sigma_x^2 + \end{pmatrix}_2 $$ -and $t_{\text{cut}}$ is 1.323 far from the origin of the axes. Hence, as can be -seen, the vector $w$ turned out to be parallel to the line joining the means of -the two classes (reminded to be $(0, 0)$ and $(4, 4)$) which means that the -total covariance matrix $S$ is isotropic, proportional to the unit matrix. +$\Sigma_w$ takes the form: +$$ + \Sigma_w = \begin{pmatrix} + A & B \\ + B & A + \end{pmatrix} +$$ + +Which can be easily inverted by Gaussian elimination: +\begin{align*} + \begin{pmatrix} + A & B & \vline & 1 & 0 \\ + B & A & \vline & 0 & 1 \\ + \end{pmatrix} &\longrightarrow + \begin{pmatrix} + A - B & 0 & \vline & 1 - B & - B \\ + 0 & A - B & \vline & - B & 1 - B \\ + \end{pmatrix} \\ &\longrightarrow + \begin{pmatrix} + 1 & 0 & \vline & (1 - B)/(A - B) & - B/(A - B) \\ + 0 & 1 & \vline & - B/(A - B) & (1 - B)/(A - B) \\ + \end{pmatrix} +\end{align*} + +Hence: +$$ + \Sigma_w^{-1} = \begin{pmatrix} + \tilde{A} & \tilde{B} \\ + \tilde{B} & \tilde{A} + \end{pmatrix} +$$ + +Thus, $\Sigma_w$ and $\Sigma_w^{-1}$ share the same eigenvectors $v_1$ and +$v_2$: +$$ + v_1 = \begin{pmatrix} + 1 \\ + -1 + \end{pmatrix} \et + v_2 = \begin{pmatrix} + 1 \\ + 1 + \end{pmatrix} +$$ + +and the vector joining the means is clearly a multiple of $v_2$, causing $w$ to +be a multiple of it. ## Perceptron In machine learning, the perceptron is an algorithm for supervised learning of -linear binary classifiers. +linear binary classifiers. + Supervised learning is the machine learning task of inferring a function $f$ that maps an input $x$ to an output $f(x)$ based on a set of training -input-output pairs. Each example is a pair consisting of an input object and an -output value. The inferred function can be used for mapping new examples. The -algorithm will be generalized to correctly determine the class labels for unseen -instances. - -The aim is to determine the bias $b$ such that the threshold function $f(x)$: +input-output pairs, where each pair consists of an input object and an output +value. The inferred function can be used for mapping new examples: the algorithm +is generalized to correctly determine the class labels for unseen instances. +The aim of the perceptron algorithm is to determine the weight vector $w$ and +bias $b$ such that the so-called 'threshold function' $f(x)$ returns a binary +value: it is expected to return 1 for signal points and 0 for noise points: $$ - f(x) = x \cdot w + b \hspace{20pt} - \begin{cases} - \geqslant 0 \incase x \in \text{signal} \\ - < 0 \incase x \in \text{noise} - \end{cases} + f(x) = \theta(w^T \cdot x + b) $$ {#eq:perc} -The training was performed as follow. Initial values were set as $w = (0,0)$ and -$b = 0$. From these, the perceptron starts to improve their estimations. The -sample was passed point by point into a iterative procedure a grand total of -$N_c$ calls: each time, the projection $w \cdot x$ of the point was computed -and then the variable $\Delta$ was defined as: - +where $\theta$ is the Heaviside theta function. +The training was performed using the generated sample as training set. From an +initial guess for $w$ and $b$ (which were set to be all null in the code), the +perceptron starts to improve their estimations. The training set is passed point +by point into a iterative procedure a customizable number $N$ of times: for +every point, the output of $f(x)$ is computed. Afterwards, the variable +$\Delta$, which is defined as: $$ - \Delta = r * (e - \theta (f(x)) + \Delta = r [e - f(x)] $$ where: - - $r$ is the learning rate of the perceptron: it is between 0 and 1. The - larger $r$, the more volatile the weight changes. In the code, it was set - $r = 0.8$; - - $e$ is the expected value, namely 0 if $x$ is noise and 1 if it is signal; - - $\theta$ is the Heaviside theta function; - - $o$ is the observed value of $f(x)$ defined in @eq:perc. + - $r \in [0, 1]$ is the learning rate of the perceptron: the larger $r$, the + more volatile the weight changes. In the code it was arbitrarily set $r = + 0.8$; + - $e$ is the expected output value, namely 1 if $x$ is signal and 0 if it is + noise; -Then $b$ and $w$ must be updated as: +is used to update $b$ and $w$: $$ b \to b + \Delta \et - w \to w + x \Delta + w \to w + \Delta x $$ -
-![View from above of the samples.](images/7-percep-plane.pdf){height=5.7cm} -![Gaussian of the samples on the projection - line.](images/7-percep-proj.pdf){height=5.7cm} +To see how it works, consider the four possible situations: -Aerial and lateral views of the projection direction, in blue, and the cut, in -red. -
+ - $e = 1 \quad \wedge \quad f(x) = 1 \quad \dot \vee \quad e = 0 \quad \wedge + \quad f(x) = 0 \quad \Longrightarrow \quad \Delta = 0$ + the current estimations work properly: $b$ and $w$ do not need to be updated; + - $e = 1 \quad \wedge \quad f(x) = 0 \quad \Longrightarrow \quad + \Delta = 1$ + the current $b$ and $w$ underestimate the correct output: they must be + increased; + - $e = 0 \quad \wedge \quad f(x) = 1 \quad \Longrightarrow \quad + \Delta = -1$ + the current $b$ and $w$ overestimate the correct output: they must be + decreased. -It can be shown that this method converges to the coveted function. -As stated in the previous section, the weight vector must finally be normalized. +Whilst the $b$ updating is obvious, as regarsd $w$ the following consideration +may help clarify. Consider the case with $e = 0 \quad \wedge \quad f(x) = 1 +\quad \Longrightarrow \quad \Delta = -1$: +$$ + w^T \cdot x \to (w^T + \Delta x^T) \cdot x + = w^T \cdot x + \Delta |x|^2 + = w^T \cdot x - |x|^2 \leq w^T \cdot x +$$ -With $N_c = 5$, the values of $w$ and $t_{\text{cut}}$ level off up to the third +Similarly for the case with $e = 1$ and $f(x) = 0$. + +As far as convergence is concerned, the perceptron will never get to the state +with all the input points classified correctly if the training set is not +linearly separable, meaning that the signal cannot be separated from the noise +by a line in the plane. In this case, no approximate solutions will be gradually +approached. On the other hand, if the training set is linearly separable, it can +be shown that this method converges to the coveted function [@novikoff63]. +As in the previous section, once found, the weight vector is to be normalized. + +With $N = 5$ iterations, the values of $w$ and $t_{\text{cut}}$ level off up to the third digit. The following results were obtained: $$ @@ -287,7 +385,16 @@ where, once again, $t_{\text{cut}}$ is computed from the origin of the axes. In this case, the projection line does not lies along the mains of the two samples. Plots in @fig:percep_proj. -## Efficiency test +
+![View from above of the samples.](images/7-percep-plane.pdf){height=5.7cm} +![Gaussian of the samples on the projection + line.](images/7-percep-proj.pdf){height=5.7cm} + +Aerial and lateral views of the projection direction, in blue, and the cut, in +red. +
+ +## Efficiency test {#sec:7_results} A program was implemented to check the validity of the two classification methods. diff --git a/notes/todo b/notes/todo index e1c458c..3e0e592 100644 --- a/notes/todo +++ b/notes/todo @@ -1,3 +1,6 @@ - riscrivere il readme di: 1, 2, 6 - rileggere il 7 - completare il 2 +- riscrivere il 2 + +On the lambert W function, formula 4.19 Corless