Studying (ML) mannequin mustn’t memorize the coaching knowledge. As a substitute, it ought to study properly from the given coaching knowledge in order that it will probably generalize properly to new, unseen knowledge.
The default settings of an ML mannequin might not work properly for each kind of downside that we attempt to clear up. We have to manually modify these settings for higher outcomes. Right here, “settings” discuss with hyperparameters.
What’s a hyperparameter in an ML mannequin?
The consumer manually defines a hyperparameter worth earlier than the coaching course of, and it doesn’t study its worth from the info in the course of the mannequin coaching course of. As soon as outlined, its worth stays mounted till it’s modified by the consumer.
We have to distinguish between a hyperparameter and a parameter.
A parameter learns its worth from the given knowledge, and its worth is determined by the values of hyperparameters. A parameter worth is up to date in the course of the coaching course of.
Right here is an instance of how completely different hyperparameter values have an effect on the Assist Vector Machine (SVM) mannequin.
from sklearn.svm import SVC
clf_1 = SVC(kernel='linear')
clf_2 = SVC(C, kernel='poly', diploma=3)
clf_3 = SVC(C, kernel='poly', diploma=1)
Each clf_1 and clf_3 fashions carry out SVM linear classification, whereas the clf_2 mannequin performs non-linear classification. On this case, the consumer can carry out each linear and non-linear classification duties by altering the worth of the ‘kernel’ hyperparameter within the SVC() class.
What’s hyperparameter tuning?
Hyperparameter tuning is an iterative means of optimizing a mannequin’s efficiency by discovering the optimum values for hyperparameters with out inflicting overfitting.
Typically, as within the above SVM instance, the number of some hyperparameters is determined by the kind of downside (regression or classification) that we wish to clear up. In that case, the consumer can merely set ‘linear’ for linear classification and ‘poly’ for non-linear classification. It’s a easy choice.
Nonetheless, for instance, the consumer wants to make use of superior looking out strategies to pick the worth for the ‘diploma’ hyperparameter.
Earlier than discussing looking out strategies, we have to perceive two necessary definitions: hyperparameter search house and hyperparameter distribution.
Hyperparameter search house
The hyperparameter search house accommodates a set of attainable hyperparameter worth combos outlined by the consumer. The search will likely be restricted to this house.
The search house might be n-dimensional, the place n is a constructive integer.
The variety of dimensions within the search house is the variety of hyperparameters. (e.g three-d — 3 hyperparameters).
The search house is outlined as a Python dictionary which accommodates hyperparameter names as keys and values for these hyperparameters as lists of values.
search_space = {'hyparam_1':[val_1, val_2],
'hyparam_2':[val_1, val_2],
'hyparam_3':['str_val_1', 'str_val_2']}
Hyperparameter distribution
The underlying distribution of a hyperparameter can be necessary as a result of it decides how every worth will likely be examined in the course of the tuning course of. There are 4 sorts of in style distributions.
- Uniform distribution: All attainable values throughout the search house will likely be equally chosen.
- Log-uniform distribution: A logarithmic scale is utilized to uniformly distributed values. That is helpful when the vary of hyperparameters is giant.
- Regular distribution: Values are distributed round a zero imply and a regular deviation of 1.
- Log-normal distribution: A logarithmic scale is utilized to usually distributed values. That is helpful when the vary of hyperparameters is giant.
The selection of the distribution additionally is determined by the kind of worth of the hyperparameter. A hyperparameter can take discrete or steady values. A discrete worth might be an integer or a string, whereas a steady worth all the time takes floating-point numbers.
from scipy.stats import randint, uniform, loguniform, norm
# Outline the parameter distributions
param_distributions = {
'hyparam_1': randint(low=50, excessive=75),
'hyparam_2': uniform(loc=0.01, scale=0.19),
'hyparam_3': loguniform(0.1, 1.0)
}
- randint(50, 75): Selects random integers in between 50 and 74
- uniform(0.01, 0.49): Selects floating-point numbers evenly between 0.01 and 0.5 (steady uniform distribution)
- loguniform(0.1, 1.0): Selects values between 0.1 and 1.0 on a log scale (log-uniform distribution)
Hyperparameter tuning strategies
There are numerous various kinds of hyperparameter tuning strategies. On this article, we are going to deal with solely three strategies that fall below the exhaustive search class. In an exhaustive search, the search algorithm exhaustively searches the whole search house. There are three strategies on this class: handbook search, grid search and random search.
Guide search
There isn’t a search algorithm to carry out a handbook search. The consumer simply units some values based mostly on intuition and sees the outcomes. If the outcome just isn’t good, the consumer tries one other worth and so forth. The consumer learns from earlier makes an attempt will set higher values in future makes an attempt. Subsequently, handbook search falls below the knowledgeable search class.
There isn’t a clear definition of the hyperparameter search house in handbook search. This technique might be time-consuming, however it might be helpful when mixed with different strategies corresponding to grid search or random search.
Guide search turns into tough when we’ve to go looking two or extra hyperparameters directly.
An instance for handbook search is that the consumer can merely set ‘linear’ for linear classification and ‘poly’ for non-linear classification in an SVM mannequin.
from sklearn.svm import SVC
linear_clf = SVC(kernel='linear')
non_linear_clf = SVC(C, kernel='poly')
Grid search
In grid search, the search algorithm assessments all attainable hyperparameter combos outlined within the search house. Subsequently, this technique is a brute-force technique. This technique is time-consuming and requires extra computational energy, particularly when the variety of hyperparameters will increase (curse of dimensionality).
To make use of this technique successfully, we have to have a well-defined hyperparameter search house. In any other case, we are going to waste a number of time testing pointless combos.
Nonetheless, the consumer doesn’t have to specify the distribution of hyperparameters.
The search algorithm doesn’t study from earlier makes an attempt (iterations) and subsequently doesn’t strive higher values in future makes an attempt. Subsequently, grid search falls below the uninformed search class.
Random search
In random search, the search algorithm randomly assessments hyperparameter values in every iteration. Like in grid search, it doesn’t study from earlier makes an attempt and subsequently doesn’t strive higher values in future makes an attempt. Subsequently, random search additionally falls below uninformed search.

Random search is significantly better than grid search when there’s a giant search house and we do not know in regards to the hyperparameter house. It’s also thought-about computationally environment friendly.
After we present the identical measurement of hyperparameter house for grid search and random search, we will’t see a lot distinction between the 2. Now we have to outline a much bigger search house with the intention to benefit from random search over grid search.
There are two methods to extend the scale of the hyperparameter search house.
- By growing the dimensionality (including new hyperparameters)
- By widening the vary of hyperparameters
It is suggested to outline the underlying distribution for every hyperparameter. If not outlined, the algorithm will use the default one, which is the uniform distribution during which all combos could have the identical chance of being chosen.
There are two necessary hyperparameters within the random search technique itself!
- n_iter: The variety of iterations or the scale of the random pattern of hyperparameter combos to check. Takes an integer. This trades off runtime vs high quality of the output. We have to outline this to permit the algorithm to check a random pattern of combos.
- random_state: We have to outline this hyperparameter to get the identical output throughout a number of perform calls.
The most important drawback of random search is that it produces excessive variance throughout a number of perform calls of various random states.
That is the top of immediately’s article.
Please let me know should you’ve any questions or suggestions.
How about an AI course?
See you within the subsequent article. Joyful studying to you!
Designed and written by:
Rukshan Pramoditha
2025–08–22