Implementing a Principal Component Analysis In Python (2014)
sebastianraschka.com
sebastianraschka.com
http://michaeljflynn.net/2017/02/06/a-tutorial-on-principal-...
http://www.janeriksolem.net/pca-for-images-using-python.html
I guess this kind of tutorials in python are more popular since the R / Matlab people come with statistics background and don't really need the tutorials on PCA.
http://www.stat.cmu.edu/~cshalizi/uADA/12/lectures/ch18.pdf
https://en.wikipedia.org/wiki/Power_iteration
I've used it to analyse the Voynich Manuscript: http://web.onetel.com/~hibou/voynich/VoynichPagesPCA.html
Libraries like TensorFlow, Theano, etc. are great because then I can focus on what I want (math) instead of spending my time telling a computer how it should multiply things together in an imperative sense.
U,d,Vt=svd(X)
D=diag(d)
Xhat= U[:,:2].dot(D[:2, :2])
l=2 # desired vector space dimension
U,d,Vt = linalg.svd(X,full_matrices=False)
P=(U*(1/d))[:,:l]
xnew = dot(x,P)
My favourite would be Infomax '95 paper by Bell and Sejnowski. Under this setup:
ICA is a single layer neural network that maps N inputs to N outputs. The loss function being maximised is the mutual info between input and output.
"Principal Component Analysis is a dimensionally invalid method that gives people a delusion that they are doing something useful with their data. If you change the units that one of the variables is measured in, it will change all the "principal components"! It's for that reason that I made no mention of PCA in my book. I am not a slavish conformist, regurgitating whatever other people think should be taught. I think before I teach."
The issue he is having with PCA can be solved by normalizing the data.