implemented multi feature gradient descent