This git repo is based on Dr. Hua Zhou's Biostat 257 at UCLA. See the course website for further references. A similar course is taught by Dr. Lieven Vandenberghe (ECE 236B) at UCLA.
Projects include:
-
Almost-Fastest algorithms for evaluating log-likelihood functions.
- Beat state-of-art algorithms in Julia 10,000 times for evaluating large-scale linear mixed models.
- Modified Sherman-Woodbury-Morrison (SWM) for high dimension matrix inversions.
- Modified Determinant formula and SWM for calculating large-scale log-likelihood functions.
-
Various operators for a 100,000,000-observation regression problem.
-
One million node network analysis with Google Page-Rank algorithm.
-
Non-linear and convex programming for large-scale longitudinal model.
-
An expectation-maximization (EM) algorithm for random effect models with millions of observations.
Topics include:
-
Part one: Algorithms
- Computer arithmetic and elements of Jupyter Notebook.
- Introduction to Julia language.
- BLAS and LAPACK; NLA on GPU.
- Triangular systems including Gaussian elimination (GE) and LU decomposition.
- Cholesky decomposition and QR decomposition (Householder, GS and Givens).
- Sweep operator (a North Carolina invention).
- Condition number and theoretical elements of numerical linear algebra.
- Iterative solvers including Jacobi, Gauss-Seidel, SOR.
- Conjugate gradient method and other Krylov space methods.
- Special matrices including Poisson, Wathen, etc.
- Algorithms for solving spectral decomposition (SDT) and singular value decomposition (SVD).
-
Part two: Optimization
- Optimization in Julia.
- Non-linear programming: Newton-Raphson, Fisher scoring, Gauss-Newtion, Quasi-Newtion, etc.
- Karush-Kuhn-Tucker (KKT) condition for constrained optimization.
- EM algorithm and its variations: ECM, ECME, SEM, Bayesian EM, etc.
- Maximization-Minorization (MM) algorithm (a UCLA invention).
- Convex programming I: Linear programming (LP), Quadratic programming (QP).
- Convex programming II: Second order cone programming (SOCP), Semi-definite programming (SDP), Geometric programming (GP).