According to Wikipedia:
Principal component analysis (PCA) is a mathematical procedure that uses an orthogonal transformation to convert a set of observations of possibly correlated variables into a set of values of uncorrelated variables called principal components. The number of principal components is less than or equal to the number of original variables. This transformation is defined in such a way that the first principal component has as high a variance as possible (that is, accounts for as much of the variability in the data as possible), and each succeeding component in turn has the highest variance possible under the constraint that it be orthogonal to (uncorrelated with) the preceding components. Principal components are guaranteed to be independent only if the data set is jointly normally distributed. PCA is sensitive to the relative scaling of the original variables.
PCA has a variety of alternative names:
PCA with $n$ basis vectors can also be viewed as a form of “compression”/data reduction, namely the selection of an $n$ dimensional subspace $S$ such that projection of the dataset vectors to $S$ has the minimal summed $L_2$ error relative to the original dataset. (This $L_2$ minimisation interpretation is one “explanation” of the dependence of the PCA decomposition on variable scaling.)
PCA is also often used for visualising “dominant” effects in a data-set and for creating predictive models (reducing the dimensionality of the data set for either computational or machine learning/statistical regularisation considerations).
One obvious point is that PCA is only effective at finding structure which is approximately orthogonal vectors, so that other preprocessing such as detrending may be required for PCA to be informative.
The orthogonal transformation used by PCA is implicitly assuming that the dataset is generated by process with a zero “expected value”, so that generally a “mean vector” is subtracted from all the data points or, equivalently, a constant mean vector is added to all reconstructions. There are two approaches to acheiving this:
Using additional knowledge about the process generating the dataset to deteremine the mean, e.g., that the mean should actually be exactly zero.
Using the computed average of the data set as the “mean vector”.
The compression viewpoint is relatively insensitive to the choice of mean, but techniques which use the vector of PCA components as random variates can be significantly affected by the mean vector.
Given an $m$-dimensional dataset $\{y^{i}\}_{i=0}^K$ the $n$ dimensional PCA is a set of $n+1$ orthonormal $m$-dimensional vectors $\{\mathbf{v}^j\}_{j=0}^n$ (with the “artificial” vector $\mathbf{v}^0$ often referred to as $\mu$) along with a set of $n$-dimensional “coefficient” vectors $\{\lambda^{i}\}_{i=0}^K$ which can be used to represent approximations $\hat{y}^i$ to the original $y^i$ using
where the second expression absorbs the mean by using a coefficient $\lambda^i_0$ which is always $1$. The crucial property is that, other than the mean vector, all the $\mathbf{v}$s are orthonormal, i.e., $\mathbf{v}^i \cdot \mathbf{v}^j=\delta_{i j}$. In addition to optimising the “reconstruction error” for a given number of PCA basis vectors, this orthogonality gives rise to other useful calculational properties of PCA.
In the above formulation the $\lambda^i_j$s may naturally have very different magnitudes, so in some applications there is a further decomposition as
(Again the mean $\mu$ can be absorbed into an “artificial” principal component if desired.) Here the $\nu^j$ value is the “length scale” of the $\mathbf{v}^j$ principal component, so that it can generally be taken as a reasonable assumption that the loadings $w^i_j$ come from the same probability distribution, often further assumed to be the $N(0,1)$ normal distribution. (Technically the optimal $\mathbf{v}^j$ vectors turn out to be the eigenvectors of covariance matrix of the sample set, and the $\nu^j$s are the square roots of the corresponding eigenvalues.)