linearfit

Linear Regression. It uses Gradient Descent to estimate the coefficients.

Syntax

parameters = linearfit(X,y)

parameters = linearfit(X,y,options)

Inputs

X
Training data.
Type: double
Dimension: vector | matrix
y
Target values.
Type: double
Dimension: vector | matrix
options
Type: struct
alpha
Learning rate of the Gradient Descent algorithm (default: 0.01).
Type: double | integer
Dimension: scalar
to_normalize
If true, input data X will be normalized before performing regression (default: false). It is done by subtracting mean and dividing by the standard deviation.
Type: Boolean
Dimension: logical
l2_penalty
Regularization Strength (default: 0). If value greater than 0, it becomes Ridge Regression.
Type: double | integer
Dimension: scalar
iters
Maximum number of iterations to apply Gradient Descent (default: 500).
Type: integer
Dimension: scalar
method
Optimization method to be used to estimate coefficients. Only supported method is Gradient Descent. Default: 'gd'
Type: char
Dimension: string

Outputs

parameters
Contains all the values passed to linearfit method as options. Additionally it has below key-value pairs.
Type: struct
scorer
Function handle pointing to r2 function (R2 Coefficient of Determination).
Type: function handle
intercept
Estimated intercept.
Type: integer
Dimension: scalar
coef
Estimated coefficients
Type: double
Dimension: vector
params
Contains both intercept and coef as a vector. It is used by predict method.
Type: double
Dimension: vector
costHistory
Cost of the model during training from 0 to specified number of iterations. It can be plotted.
Type: double
Dimension: vector
n_samples
Number of rows in the training data.
Type: integer
Dimension: scalar
n_features
Number of columns in the training data.
Type: integer
Dimension: scalar

Example

Usage of linearfit with options

X = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15; 16 17 18; 19 20 21];
y = [1, 2, 3, 4, 5, 6, 7];
options = struct;
options.to_normalize = true;
options.alpha = 0.3;
parameters = linearfit(X, y, options)
parameters = struct [
alpha: 0.3
coef: [Matrix] 3 x 1
0.66667
0.66667
0.66667
costHistory: [Matrix] 1 x 500 Row[1] …
intercept: 4
iters: 500
l2_penalty: 0
method: gd
n_features: 3
n_samples: 7
params: [Matrix] 4 x 1
4.00000
0.66667
0.66667
0.66667
scorer: @rmse
to_normalize: 1
]