# Regressão Ridge

A regressão Ridge é uma variação da regressão linear que ajuda a evitar o problema de superajuste. Ela faz isso adicionando uma penalidade à equação para evitar que os coeficientes fiquem muito grandes. Essa penalidade reduz a influência de variáveis menos importantes, tornando o modelo mais simples e estável. É como se o Ridge "puxasse" os coeficientes para mais perto de zero, sem eliminá-los completamente.

Essa técnica é especialmente útil quando há muitas variáveis relacionadas entre si ou quando os dados são limitados. Ao controlar o impacto de variáveis menos relevantes, a regressão Ridge cria modelos que funcionam melhor em situações práticas, ajudando a prever resultados com mais precisão em novos conjuntos de dados.

O treinamento do modelo é rápido, após o treinamento não é necessário a base de dados para realizar predições. É possível salvar e importar o treinamento finalizado em um arquivo extremamente leve.



#### EXEMPLO DE USO

```
uses
  URidgeRegression;
  
procedure ExampleRidgeRegression;
var
  vRidge: TRidgeRegression;
begin
  vRidge := TRidgeRegression.Create(0.1);
  try
    vRidge.Train('C:\Delphai\Delphai\Datasets\Housing Price.csv', True);
    ShowMessage('House price: ' + FormatCurr('##0.00', vRidge.Predict([2459, 1, 1, 1964, 3.1047807561601664, 0, 4])));
  finally
    vRidge.Free;
  end;
end;
```



#### GUIA DE CLASSES E MÉTODOS

TRidgeRegression

* _FDataset : TAIDatasetClassification;_ : acessa a base de dados atual contido no modelo.
* _procedure ClearDataset;_ : limpa a base de dados.
* _constructor Create(aAlfa : Double);_ : cria um novo objeto para ser treinado.
  * _aAlfa_ : parâmetro de regularização que controla a penalização dos coeficientes, equilibrando ajuste ao modelo e complexidade para evitar overfitting, em outras palavras, é como um "freio" que ajuda a evitar que o modelo fique muito ajustado aos dados, tornando as previsões mais confiáveis. Quanto maior o alfa, mais o modelo é simplificado.
* _constructor Create(aTrainedFile : String); overload;_ : cria o objeto carregando a estrutura de um arquivo já treinado.
* _procedure Train(aTrainingData : String; aHasHeader : Boolean = True); overload;_ : realiza o treinamento com os dados passados.
  * _aTrainingData_ : caminho do arquivo CSV.
  * _aHasHeader_ : indica se tem cabeçalho no arquivo.
* _procedure Train(aTrainingData : TDataSet); overload;_ : realiza o treinamento e gera os nós com base nos dados passados.
  * _aTrainingData_ : objeto TDataSet que contém os dados que serão usados para treinamento.
* _function Predict(aSample: TArray\<Double>; aInputNormalized : Boolean = False): String;_ : prevê o valor da amostra.
  * _aSample_ : amostra a ser analisada.
  * _aInputNormalized_ : deve ser passado como true somente se os dados da entrada já foram normalizadas por fora do componente (o que deve ser feito utilizando o range salvo no objeto).
* _procedure LoadFromFile(const FileName: string);_ : carrega do arquivo treinado.
* _procedure SaveToFile(const FileName: string);_ : salva o arquivo treinado.

