Source: https://www.cs.rice.edu/~as143/Papers/SLIDE_MLSys.pdf