Gradient Descent
Gradient Descent is an optimization algorithm that optimize the cost of the function.The goal is to continue to try different values for the coefficients, evaluate their cost and
select new coefficients that have a slightly better (lower) cost.
https://www.hackerearth.com/blog/machine-learning/3-types-gradient-descent-algorithms-small-large-data-sets/
https://medium.com/@zhaoyi0113/python-implementation-of-batch-gradient-descent-379fa19eb428