### EigenFaces

```EigenFaces
(squared) Variance
• A measure of how "spread out" a sequence of
numbers are.

1
λ=
( − μ)2

=1
1
μ=

=1
Covariance matrix
• A measure of correlation between data
elements.
• Example:
– Data set of size n
– Each data element has 3 fields:
• Height
• Weight
• Birth date
Covariance
• [Collect data from class]
Covariance
λ11
λ21
⋮
λ1
… λ1
… λ2
⋱
⋮
… λ

1
λ =
( − μ )( − μ )

λ12
λ22
⋮
λ2
=1
Covariance
• The diagonals are the variance of that feature
• Non-diagonals are a measure of correlation
– High-positive == positive correlation
• one goes up, other goes up
– Low-negative == negative correlation
• one goes up, other goes down
– Near-zero == no correlation
• unrelated
– [How high depends on the range of values]
Covariance
• You can calculate it with a matrix:
– Raw Matrix is a p x q matrix
• p features
• q samples
– Convert to mean-deviation form
• Calculate the average sample
• Subtract this from all samples.
– Multiply MeanDev (a p x q matrix) by its transpose
(a q x p matrix)
– Multiply by 1/n to get the covariance matrix.
Covariance
• [Calculate our covariance matrix]
EigenSystems
• An EigenSystem is:
A vector  (the eigenvector)
A scalar λ (the eigenvalue)
• Such that:
= λ
(the zero vector isn't an eigenvector)
• In general, not all matrices have eigenvectors.
EigenSystems and PCA
• When you calculate the eigen-system of an n x
n Covariance matrix you get:
– n eigenvectors (each of dimension n)
– n matching eigenvalues
• The biggest eigen-value "explains" the largest
amount of variance in the data set.
Example
• Say we have a 2d data set
–
–
–
–
–
First eigen-pair (v1 = [0.8, 0.6], λ=800.0)
Second eigen-pair (v2 = [-0.6, 0.8], λ=100.0)
8x as much variance is along v1 as v2.
v1 and v2 are perpendicular to each other
v1 and v2 define a new set of basis vectors for this data set.
v2
v1
Conversions between basis vectors
• Let's take one data point…
– Let's say it is [-1.5, 0.4] in "world units"
• Project it onto v1 and v2 to get the coordinates relative to
(v1, v2 unit-length basis vectors)
= ●1
●2
−0.9
≈
0.9
v2
v1
To convert back to "world units":
0 ∗ 1
=
1 ∗ 2
PCA and compression
• Example:
– n (the number of features) is high (~100)
– Most of the variance is captured by 3 eigenvectors.
– You can throw out the other 97 eigen-vectors.
– You can represent most of the data for each
sample using just 3 numbers per sample (instead
of 100)
• For a large data set, this can be huge.
EigenFaces
1. Collect database images
a. Subject looking straight ahead, no emotion, neutral
lighting.
b. Crop:
i. on the top include all of the eyebrows
ii. on the bottom include just to the chin
iii. on the sides, include all of the face.
c. Size to 32x32, grayscale (a limit of the eigen-solver)
d. In code, include a way to convert to (and from) a
VectorN.
EigenFaces, cont.
2. Calculate the average image
a. Just pixel (Vector element) by element.
EigenFaces, cont.
3. Calculate the Covariance matrix
4. Calculate the EigenSystem
a. Keep the eigen-pairs that preserve n% of the
data variance (98% or so)
b. Your Eigen-database is the 32x32 average image
and the (here) 8 32x32 eigen-face images.
Eigenfaces, cont.
5. Represent each of your faces as a q-value vector (q =
# of eigenfaces).
–
–
Subtract the average and project onto the q eigenfaces
The images I'm showing here are the original image and
the 8-value "eigen-coordinates
9.08
187.4
-551.7
1277.0
150.9
-133.6
-114.4
249.3
-328.8
338.9
29.2
13.14
-371.9
16.8
-108.0
3.35
EigenFaces, cont.
6. (for demonstration of compression)
– You can reconstruct a compressed image by:
• Repeat for each eigenface:
– Add the eigen-coord * eigenface to X
– Here are the reconstructions of the 2 images on the last
slide:
Original
Reconstruction
EigenFaces, cont.
7. Facial Recognition
– Take a novel image (same size as database
images)
– Using the eigenfaces computed earlier (this novel
image is usually NOT part of this computation),
compute eigen-coordinates.
– Calculate the q-dimensional distance
(pythagorean theorem in q-dimensions) between
this image and each database image.
•
The database image with the smallest distance is your
best match.
```