What is Hard and Soft Voting in Machine Learning?

Ilyas Ahmed
7 min readMay 31, 2023

Introduction

Hard voting and soft voting are two different ways to combine the predictions of multiple classifiers in ensemble machine learning algorithms.

Hard voting is the simplest approach. Each classifier makes a prediction, and the ensemble’s prediction is simply the majority vote. For example, if three classifiers predict that an image is of a cat and one classifier predicts that it is of a deer, the ensemble’s prediction will be that the image is of a cat.

Soft voting takes into account the confidence of each classifier’s prediction. Each classifier assigns a probability to each class, and the ensemble’s prediction is the class with the highest total probability. For example, if one classifier predicts that an image is of a cat with a probability of 0.9 and another classifier predicts that it is of a deer with a probability of 0.1, the ensemble’s prediction will be that the image is of a cat.

Hard voting is simpler to implement, but it can be less accurate than soft voting. This is because hard voting ignores the confidence of each classifier’s prediction. Soft voting is more accurate, but it is also more complex to implement. The best approach to use will depend on the specific application. If accuracy is the most important factor, then soft voting is the better choice. However, if simplicity is more important, then hard voting may be a better option.

Hard Voting

How does Hard Voting Work?

Hard voting is a simple algorithm that can be used to combine the predictions of multiple classifiers. The algorithm works by first having each classifier make a prediction. The ensemble’s prediction is then simply the majority vote of the individual classifiers.

For example, let’s say we have three classifiers, each of which is trained to classify images of cats (0) and deers (1). The first classifier predicts that an image is of a cat, the second classifier predicts that it is of a deer, and the third classifier is cat. The ensemble’s prediction would be that the image is of a cat, because two of the three classifiers made that prediction. The image depicted below shows the same.

Depiction of Hard Voting in Ensemble Machine Learning

Advantages of Hard Voting

Hard voting has several advantages over other ensemble learning algorithms. First, it is very simple to implement. Second, it is very effective. Third, it can be used with any type of classifier.

The simplicity of hard voting makes it a popular choice for machine learning practitioners. Hard voting is also very effective, and can often outperform other ensemble learning algorithms. Finally, hard voting can be used with any type of classifier, making it a versatile tool.

Disadvantages of Hard Voting

Hard voting also has some disadvantages. First, it can be less accurate than soft voting, which takes into account the confidence of each classifier’s prediction. Second, hard voting can be less robust to noise in the data.

The accuracy of hard voting can be limited by the fact that it ignores the confidence of each classifier’s prediction. This means that hard voting can be more likely to make mistakes when the individual classifiers are not very confident in their predictions.

Hard voting can also be less robust to noise in the data. This is because hard voting is based on the majority vote of the individual classifiers. If the data is noisy, it is more likely that the majority vote will be incorrect.

Python Code — Hard Voting

The sample code first creates a list of classifiers. It then creates a voting classifier and trains it on the training data. Finally, it makes predictions on the test data and evaluates the accuracy.

The VotingClassifier class in scikit-learn can be used to combine the predictions of multiple classifiers. The voting parameter can be set to 'hard' to use hard voting.

import numpy as np
from sklearn.ensemble import VotingClassifier

# Create a list of classifiers.
classifiers = [
KNeighborsClassifier(n_neighbors=5),
RandomForestClassifier(n_estimators=100),
DecisionTreeClassifier()
]

# Create a voting classifier.
voting_clf = VotingClassifier(estimators=classifiers, voting='hard')

# Train the voting classifier.
voting_clf.fit(X_train, y_train)

# Make predictions.
y_pred = voting_clf.predict(X_test)

# Evaluate the accuracy.
print(accuracy_score(y_test, y_pred))

Soft Voting

How does Soft Voting Work?

Soft voting is an algorithm that can be used to combine the predictions of multiple classifiers using the probability of predictions. The algorithm works by first having each classifier assign a probability to each class. The ensemble’s prediction is then simply the class with the highest total probability.

For example, let’s say we have three classifiers, each of which is trained to classify images of cats (1) and deers (0). The first classifier predicts that the image is of a cat with a probability of 0.7 and deer with a probability of 0.3, the second classifier predicts that the image is of a cat with a probability of 0.4 and deer with a probability of 0.6, and the third classifier predicts that the image is of a cat with a probability of 0.9 and deer with a probability of 0.1. The ensemble’s prediction would be that the image is of a cat, because the total probability of the cat class is (0.7 + 0.4 + 0.9) / 3 = 0.666 and the probability of deer class is (0.3 + 0.6 + 0.1) / 3 = 0.333. The image depicted below shows the same.

Depiction of Soft Voting in Ensemble Machine Learning

Soft voting is a simple algorithm, but it can be very effective. This is because it takes advantage of the fact that multiple classifiers can often make more accurate predictions than a single classifier.

Advantages of Soft Voting

Soft voting has several advantages over hard voting. First, it is more accurate than hard voting. Second, it is more robust to noise in the data. Third, it can be used with any type of classifier.

The accuracy of soft voting is due to the fact that it takes into account the confidence of each classifier’s prediction. This means that soft voting is less likely to make mistakes when the individual classifiers are not very confident in their predictions.

Soft voting is also more robust to noise in the data. This is because soft voting is based on the total probability of each class. If the data is noisy, it is more likely that the total probability of the correct class will be higher than the total probability of the incorrect classes.

Finally, soft voting can be used with any type of classifier. This is because soft voting does not require the classifiers to be trained in the same way.

Disadvantages of Soft Voting

Soft voting also has some disadvantages. First, it is more complex to implement than hard voting. Second, it can be less efficient than hard voting. The complexity of soft voting is due to the fact that it requires each classifier to assign a probability to each class. This can be a time-consuming process, especially if there are a large number of classes.

Python Code — Soft Voting

The sample code shown below creates a list of classifiers. It then creates a voting classifier and trains it on the training data. Finally, it makes predictions on the test data and evaluates the accuracy.

The VotingClassifier class in scikit-learn can be used to combine the predictions of multiple classifiers. The voting parameter can be set to 'soft' to use soft voting. In soft voting, the predictions of each classifier are weighted by their confidence scores. The class with the highest weighted sum is then chosen as the ensemble’s prediction.

import numpy as np
from sklearn.ensemble import VotingClassifier

# Create a list of classifiers.
classifiers = [
KNeighborsClassifier(n_neighbors=5),
RandomForestClassifier(n_estimators=100),
DecisionTreeClassifier()
]

# Create a voting classifier.
voting_clf = VotingClassifier(estimators=classifiers, voting='soft')

# Train the voting classifier.
voting_clf.fit(X_train, y_train)

# Make predictions.
y_pred = voting_clf.predict_proba(X_test)

# Evaluate the accuracy.
print(accuracy_score(y_test, y_pred.argmax(axis=1)))

Conclusion

Hard voting is simpler to implement, but it can be less accurate than soft voting. This is because hard voting ignores the confidence of each classifier’s prediction. Soft voting is more accurate, but it is also more complex to implement.

The best approach to use will depend on the specific application. If accuracy is the most important factor, then soft voting is the better choice. However, if simplicity is more important, then hard voting may be a better option.

Hard voting:

  • Simple to implement
  • Less accurate than soft voting
  • Better for applications where simplicity is more important

Soft voting:

  • More complex to implement
  • More accurate than hard voting
  • Better for applications where accuracy is more important

Here are some examples of when hard voting and soft voting might be used:

Hard voting:

  • A spam filter that uses multiple classifiers to identify spam emails
  • A fraud detection system that uses multiple classifiers to identify fraudulent transactions
  • A medical diagnosis system that uses multiple classifiers to identify diseases

Soft voting:

  • A stock market prediction system that uses multiple classifiers to predict stock prices
  • A weather forecasting system that uses multiple classifiers to predict the weather
  • A climate change prediction system that uses multiple classifiers to predict the effects of climate change

Ultimately, the best way to decide which approach to use is to experiment with both hard voting and soft voting and see which one performs better on your specific data set.

Follow me more for exciting topics on Machine Learning Ilyas Ahmed

--

--

Ilyas Ahmed
Ilyas Ahmed

Written by Ilyas Ahmed

Data Scientist at Wipro Arabia Ltd. Experienced in ML, NLP and Comp. Vision. Sharing what I know :)