Studying (ML) mannequin shouldn’t memorize the coaching knowledge. As a substitute, it ought to be taught properly from the given coaching knowledge in order that it may generalize properly to new, unseen knowledge.
The default settings of an ML mannequin might not work properly for each kind of drawback that we attempt to resolve. 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 person manually defines a hyperparameter worth earlier than the coaching course of, and it doesn’t be taught its worth from the information throughout the mannequin coaching course of. As soon as outlined, its worth stays fastened till it’s modified by the person.
We have to distinguish between a hyperparameter and a parameter.
A parameter learns its worth from the given knowledge, and its worth is dependent upon the values of hyperparameters. A parameter worth is up to date throughout the coaching course of.
Right here is an instance of how totally 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 person 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.
Generally, as within the above SVM instance, the number of some hyperparameters is dependent upon the kind of drawback (regression or classification) that we need to resolve. In that case, the person can merely set ‘linear’ for linear classification and ‘poly’ for non-linear classification. It’s a easy choice.
Nonetheless, for instance, the person wants to make use of superior looking strategies to pick the worth for the ‘diploma’ hyperparameter.
Earlier than discussing looking strategies, we have to perceive two necessary definitions: hyperparameter search house and hyperparameter distribution.
Hyperparameter search house
The hyperparameter search house incorporates a set of potential hyperparameter worth mixtures outlined by the person. The search will likely be restricted to this house.
The search house could 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 incorporates 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 also be necessary as a result of it decides how every worth will likely be examined throughout the tuning course of. There are 4 forms of common distributions.
- Uniform distribution: All potential values inside 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 an ordinary 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 dependent upon the kind of worth of the hyperparameter. A hyperparameter can take discrete or steady values. A discrete worth could be an integer or a string, whereas a steady worth at all times 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 lots of several types of hyperparameter tuning strategies. On this article, we’ll concentrate on solely three strategies that fall below the exhaustive search class. In an exhaustive search, the search algorithm exhaustively searches the complete search house. There are three strategies on this class: handbook search, grid search and random search.
Guide search
There is no such thing as a search algorithm to carry out a handbook search. The person simply units some values primarily based on intuition and sees the outcomes. If the outcome shouldn’t be good, the person tries one other worth and so forth. The person learns from earlier makes an attempt will set higher values in future makes an attempt. Due to this fact, handbook search falls below the knowledgeable search class.
There is no such thing as a clear definition of the hyperparameter search house in handbook search. This methodology could be time-consuming, however it might be helpful when mixed with different strategies reminiscent of grid search or random search.
Guide search turns into tough when now we have to look two or extra hyperparameters directly.
An instance for handbook search is that the person 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 checks all potential hyperparameter mixtures outlined within the search house. Due to this fact, this methodology is a brute-force methodology. This methodology is time-consuming and requires extra computational energy, particularly when the variety of hyperparameters will increase (curse of dimensionality).
To make use of this methodology successfully, we have to have a well-defined hyperparameter search house. In any other case, we’ll waste lots of time testing pointless mixtures.
Nonetheless, the person doesn’t must specify the distribution of hyperparameters.
The search algorithm doesn’t be taught from earlier makes an attempt (iterations) and subsequently doesn’t attempt higher values in future makes an attempt. Due to this fact, grid search falls below the uninformed search class.
Random search
In random search, the search algorithm randomly checks hyperparameter values in every iteration. Like in grid search, it doesn’t be taught from earlier makes an attempt and subsequently doesn’t attempt higher values in future makes an attempt. Due to this fact, random search additionally falls below uninformed search.

Random search is a lot better than grid search when there’s a giant search house and we do not know concerning the hyperparameter house. It’s also thought-about computationally environment friendly.
Once we present the identical measurement of hyperparameter house for grid search and random search, we will’t see a lot distinction between the 2. We’ve got to outline a much bigger search house in an effort to make the most of random search over grid search.
There are two methods to extend the dimensions of the hyperparameter search house.
- By rising the dimensionality (including new hyperparameters)
- By widening the vary of hyperparameters
It is strongly recommended to outline the underlying distribution for every hyperparameter. If not outlined, the algorithm will use the default one, which is the uniform distribution wherein all mixtures may have the identical likelihood of being chosen.
There are two necessary hyperparameters within the random search methodology itself!
- n_iter: The variety of iterations or the dimensions of the random pattern of hyperparameter mixtures 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 mixtures.
- random_state: We have to outline this hyperparameter to get the identical output throughout a number of perform calls.
The main drawback of random search is that it produces excessive variance throughout a number of perform calls of various random states.
That is the tip of at the moment’s article.
Please let me know in the event you’ve any questions or suggestions.
How about an AI course?
See you within the subsequent article. Completely satisfied studying to you!
Designed and written by:
Rukshan Pramoditha
2025–08–22