https://cdanielaam.medium.com/13-optimization-simple-linear-regression-ols-and-gradient-descent-methods-e17c94c7c279