The Cholesky Decomposition¶
I use this quite often whenever I'm dealing with Gaussian processes and kernel methods. Instead of doing the solver, we can simply use the cho_factor and cho_solve that's built into the scipy library. 
Direct Solver¶
# use the direct solver
weights = scipy.linalg.solve(K + alpha * identity, y)
Cholesky Factor¶
# cholesky factor
L, lower = scipy.linalg.cho_factor(K + alpha * identity)
# cholesky solver
weights = scipy.linalg.cho_solve((L, lower), y)