Which machine learning algorithm is commonly used for classification tasks and is based on finding the best hyperplane that separates data points into different classes?
a) k-Nearest Neighbors (k-NN)
b) Decision Trees
c) Naive Bayes
d) Support Vector Machines (SVM)