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
]
Comments
It estimates the coefficient using Gradient Descent method. Once the coefficients are computed, outputs are predicted using linearpredict method. Output 'parameters' can be passed to linearpredict function