Home | Develop | Download | Contact
Namespaces
Funciones en el namespace Pds::LinearModel

Funciones para trabajar con "Linear Regression": Pds::LinearModel::Predict, Pds::LinearModel::FittingNormalMeanSquare(), etc. Más...

Namespaces

namespace  Pds
 Nombre de espacio para Pds (Procesamiento Digital de Senales)
 
namespace  Pds::LinearModel
 Nombre de espacio para LinearModel (Linear Regression)
 

Linear regression : Predictor

Pds::Vector Pds::LinearModel::Predict (const Pds::Vector &W, const Pds::Matrix &X)
 Calculo del resultado del predictor. Más...
 

Linear regression : Función de custo

double Pds::LinearModel::CostMeanSquare (const Pds::Vector &W, const Pds::Matrix &X, const Pds::Vector &Y)
 Calculo el costo. Más...
 
double Pds::LinearModel::CostMeanAbsolute (const Pds::Vector &W, const Pds::Matrix &X, const Pds::Vector &Y)
 Calculo el costo. Más...
 
double Pds::LinearModel::CostMape (const Pds::Vector &W, const Pds::Matrix &X, const Pds::Vector &Y)
 Calculo el costo. Más...
 

Linear regression : Regresión de pesos

Pds::Vector Pds::LinearModel::FittingNormalMeanSquare (Pds::IterationConf &Conf, const Pds::Matrix &X, const Pds::Vector &Y)
 Calculo de pesos. Más...
 
Pds::Vector Pds::LinearModel::FittingNormalMeanSquare (const Pds::Matrix &X, const Pds::Vector &Y)
 Calculo de pesos. Más...
 
Pds::Vector Pds::LinearModel::FittingNormalMeanSquare (Pds::IterationConf &Conf, const Pds::Matrix &X, const Pds::Vector &Y, const Pds::Vector &D)
 Calculo de pesos. Más...
 
Pds::Vector Pds::LinearModel::FittingNormalMeanSquare (const Pds::Matrix &X, const Pds::Vector &Y, const Pds::Vector &D)
 Calculo de pesos. Más...
 

Linear regression : Regresión de pesos con Robust bisquare

Pds::Vector Pds::LinearModel::FittingRobustBisquare (Pds::IterationConf &Conf, const Pds::Matrix &X, const Pds::Vector &Y, unsigned int N=1)
 Calculo de pesos. Más...
 
Pds::Vector Pds::LinearModel::FittingRobustBisquare (const Pds::Matrix &X, const Pds::Vector &Y, unsigned int N=1)
 Calculo de pesos. Más...
 

Descripción detallada

Funciones para trabajar con "Linear Regression": Pds::LinearModel::Predict, Pds::LinearModel::FittingNormalMeanSquare(), etc.

#include <Pds/FuncLinearModel>

Documentación de las funciones

◆ Predict()

Pds::Vector Pds::LinearModel::Predict ( const Pds::Vector &  W,
const Pds::Matrix &  X 
)

Calculo del resultado del predictor.

\[ h_{\mathbf{w}}\left(\mathbf{X}\right)=[1~\mathbf{X}]\mathbf{w} \]

Parámetros
[in]WVector de pesos.
[in]XMatriz con los vectores de datos (muestras) en las lineas.
Devuelve
El resultado del preditor.
Ejemplos
example_linearmodel.cpp y example_linearmodel_outlier.cpp.

◆ CostMeanSquare()

double Pds::LinearModel::CostMeanSquare ( const Pds::Vector &  W,
const Pds::Matrix &  X,
const Pds::Vector &  Y 
)

Calculo el costo.

\[ h_{\mathbf{w}}\left(\mathbf{x}_l\right)=\left[\overline{1}~\mathbf{x}_l\right]\mathbf{w} \qquad \leftrightarrow \qquad h_{\mathbf{w}}\left(\mathbf{X}\right)=\left[\overline{1}~\mathbf{X}\right]\mathbf{w} \]

\[ \begin{matrix} Cost\left(\mathbf{w}\right) & = & \frac{1}{L}||h_{\mathbf{w}}\left(\mathbf{X}\right)-\mathbf{y}||^2 \\ ~ & ~ & ~\\ ~ & = & \frac{1}{L}\sum \limits_{l}^{L} \left(h_{\mathbf{w}}\left(\mathbf{x}_l\right)-y_l\right)^2 \end{matrix} \]

Parámetros
[in]WVector de pesos.
[in]XMatriz con los vectores de datos (muestras) en las lineas.
[in]YVector de datos de salida.
Devuelve
El valor de la funcion de costo usando Mean Square.

◆ CostMeanAbsolute()

double Pds::LinearModel::CostMeanAbsolute ( const Pds::Vector &  W,
const Pds::Matrix &  X,
const Pds::Vector &  Y 
)

Calculo el costo.

\[ h_{\mathbf{w}}\left(\mathbf{x}_l\right)=\left[\overline{1}~\mathbf{x}_l\right]\mathbf{w} \qquad \leftrightarrow \qquad h_{\mathbf{w}}\left(\mathbf{X}\right)=\left[\overline{1}~\mathbf{X}\right]\mathbf{w} \]

\[ \begin{matrix} Cost\left(\mathbf{w}\right) & = & \frac{1}{L}\left|h_{\mathbf{w}}\left(\mathbf{X}\right)-\mathbf{y}\right| \\ ~ & ~ & ~\\ ~ & = & \frac{1}{L}\sum \limits_{l}^{L} \left|h_{\mathbf{w}}\left(\mathbf{x}_l\right)-y_l\right| \end{matrix} \]

Parámetros
[in]WVector de pesos.
[in]XMatriz con los vectores de datos (muestras) en las lineas.
[in]YVector de datos de salida.
Devuelve
El valor de la funcion de costo usando Mean Absolute.

◆ CostMape()

double Pds::LinearModel::CostMape ( const Pds::Vector &  W,
const Pds::Matrix &  X,
const Pds::Vector &  Y 
)

Calculo el costo.

\[ h_{\mathbf{w}}\left(\mathbf{x}_l\right)=\left[\overline{1}~\mathbf{x}_l\right]\mathbf{w} \qquad \leftrightarrow \qquad h_{\mathbf{w}}\left(\mathbf{X}\right)=\left[\overline{1}~\mathbf{X}\right]\mathbf{w} \]

\[ \begin{matrix} Cost\left(\mathbf{w}\right) & = & \frac{1}{L}\sum \limits_{l}^{L} \left|\frac{h_{\mathbf{w}}\left(\mathbf{x}_l\right)-y_l}{y_l}\right| \end{matrix} \]

Parámetros
[in]WVector de pesos.
[in]XMatriz con los vectores de datos (muestras) en las lineas.
[in]YVector de datos de salida.
Devuelve
El valor de la funcion de costo usando Mean Absolute Percentage Error. Solo son contados en el promedio valores $y_l\neq 0$.

◆ FittingNormalMeanSquare() [1/4]

Pds::Vector Pds::LinearModel::FittingNormalMeanSquare ( Pds::IterationConf Conf,
const Pds::Matrix &  X,
const Pds::Vector &  Y 
)

Calculo de pesos.

\[ \mathbf{R} \leftarrow \left(\begin{matrix} 1 & \mathbf{X}\\ \end{matrix}\right) \]

\[ if(rcond>=Pds::Ml::WarningRCond)\qquad \mathbf{w} = \left(\mathbf{R}^{T}\mathbf{R}\right)^{-1} \mathbf{R}^{T} \mathbf{y} \quad with \quad Cost(\mathbf{w}) \equiv \frac{1}{L} ||\mathbf{R}\mathbf{w}-\mathbf{y}||^2 \]

\[ else \qquad \mathbf{w} \leftarrow \left(\mathbf{R}^{T}\mathbf{R}+\alpha \mathbf{I}\right)^{-1} \left(\mathbf{R}^{T} \mathbf{y} -\mathbf{R}^{T}\mathbf{R} \mathbf{w} \right) \quad with \quad Cost(\mathbf{w}) \equiv \frac{1}{L} ||\mathbf{R}\mathbf{w}-\mathbf{y}||^2+\frac{\lambda}{N} ||\mathbf{w}-\mathbf{w}_{old}||^2 \]

Parámetros
[in]ConfConfiguraciones para algun algoritmo que itera.
[in]XVector de datos $\mathbf{X}$.
[in]YVector de datos $\mathbf{y}$.
Devuelve
Un vector de pesos $\mathbf{w}$ si el calculo es posible o una vacio si no.
Ejemplos
example_linearmodel.cpp y example_linearmodel_outlier.cpp.

◆ FittingNormalMeanSquare() [2/4]

Pds::Vector Pds::LinearModel::FittingNormalMeanSquare ( const Pds::Matrix &  X,
const Pds::Vector &  Y 
)

Calculo de pesos.

\[ \mathbf{R} \leftarrow \left(\begin{matrix} 1 & \mathbf{X}\\ \end{matrix}\right), \qquad Cost(\mathbf{w}) \equiv \frac{1}{L} ||\mathbf{R}\mathbf{w}-\mathbf{y}||^2. \]

\[ if(rcond>=Pds::Ml::WarningRCond)\qquad \mathbf{w} = \left(\mathbf{R}^{T}\mathbf{R}\right)^{-1} \mathbf{R}^{T} \mathbf{y} \]

\[ else\qquad \mathbf{w} = [] \]

Parámetros
[in]XVector de datos $\mathbf{X}$.
[in]YVector de datos $\mathbf{y}$.
Devuelve
Un vector de pesos $\mathbf{w}$ si el calculo es posible o una vacio si no existe inversa de $\mathbf{R}^{T}\mathbf{R}$.

◆ FittingNormalMeanSquare() [3/4]

Pds::Vector Pds::LinearModel::FittingNormalMeanSquare ( Pds::IterationConf Conf,
const Pds::Matrix &  X,
const Pds::Vector &  Y,
const Pds::Vector &  D 
)

Calculo de pesos.

\[ \mathbf{X}= \left( \begin{matrix} \mathbf{x}_1^{T}\\ \mathbf{x}_2^{T}\\ \vdots\\ \mathbf{x}_L^{T}\\ \end{matrix} \right), \qquad \mathbf{y} = \left(\begin{matrix} y_1\\ y_2\\ \vdots\\ y_L\\ \end{matrix}\right), \qquad \mathbf{A}=diag(\mathbf{d})^T diag(\mathbf{d}) \]

\[ ||\mathbf{b}||^2_{\mathbf{A}}\equiv \mathbf{b}^{T}\mathbf{A}\mathbf{b} \]

\[ \mathbf{R} \leftarrow \left(\begin{matrix} 1 & \mathbf{X}\\ \end{matrix}\right) \]

\[ if(rcond>=Pds::Ml::WarningRCond)\qquad \mathbf{w} = \left(\mathbf{R}^{T}\mathbf{A}\mathbf{R}\right)^{-1} \mathbf{R}^{T} \mathbf{A}\mathbf{y} \quad with \quad Cost(\mathbf{w}) \equiv \frac{1}{L} ||\mathbf{R}\mathbf{w}-\mathbf{y}||^2_{\mathbf{A}} \]

\[ else \qquad \mathbf{w} \leftarrow \left(\mathbf{R}^{T}\mathbf{A}\mathbf{R}+\alpha \mathbf{I}\right)^{-1} \left(\mathbf{R}^{T} \mathbf{A}\mathbf{y} -\mathbf{R}^{T}\mathbf{A}\mathbf{R} \mathbf{w} \right) \quad with \quad Cost(\mathbf{w}) \equiv \frac{1}{L} ||\mathbf{R}\mathbf{w}-\mathbf{y}||^2_{\mathbf{A}}+\frac{\lambda}{N} ||\mathbf{w}-\mathbf{w}_{old}||^2 \]

Parámetros
[in]ConfConfiguraciones para algun algoritmo que itera.
[in]XVector de datos $\mathbf{X}$.
[in]YVector de datos $\mathbf{y}$.
[in]DVector $\mathbf{d}$ para formar $\mathbf{A}=diag(\mathbf{d})^T diag(\mathbf{d}) $.
Devuelve
Un vector de pesos $\mathbf{w}$ si el calculo es posible o una vacio si no.

◆ FittingNormalMeanSquare() [4/4]

Pds::Vector Pds::LinearModel::FittingNormalMeanSquare ( const Pds::Matrix &  X,
const Pds::Vector &  Y,
const Pds::Vector &  D 
)

Calculo de pesos.

\[ \mathbf{X}= \left( \begin{matrix} \mathbf{x}_1^{T}\\ \mathbf{x}_2^{T}\\ \vdots\\ \mathbf{x}_L^{T}\\ \end{matrix} \right), \qquad \mathbf{y} = \left(\begin{matrix} y_1\\ y_2\\ \vdots\\ y_L\\ \end{matrix}\right), \qquad \mathbf{A}=diag(\mathbf{d})^T diag(\mathbf{d}) \]

\[ ||\mathbf{b}||^2_{\mathbf{A}}\equiv \mathbf{b}^{T}\mathbf{A}\mathbf{b} \]

\[ \mathbf{R} \leftarrow \left(\begin{matrix} 1 & \mathbf{X}\\ \end{matrix}\right), \qquad Cost(\mathbf{w}) \equiv \frac{1}{L} ||\mathbf{R}\mathbf{w}-\mathbf{y}||^2_{\mathbf{A}}. \]

\[ if(rcond>=Pds::Ml::WarningRCond)\qquad \mathbf{w} = \left(\mathbf{R}^{T}\mathbf{A}\mathbf{R}\right)^{-1} \mathbf{R}^{T} \mathbf{A}\mathbf{y} \]

\[ else\qquad \mathbf{w} = [] \]

Parámetros
[in]XVector de datos $\mathbf{X}$.
[in]YVector de datos $\mathbf{y}$.
[in]DVector $\mathbf{d}$ para formar $\mathbf{A}=diag(\mathbf{d})^T diag(\mathbf{d}) $.
Devuelve
Un vector de pesos $\mathbf{w}$ si el calculo es posible o una vacio si no existe inversa de $\mathbf{R}^{T}\mathbf{R}$.

◆ FittingRobustBisquare() [1/2]

Pds::Vector Pds::LinearModel::FittingRobustBisquare ( Pds::IterationConf Conf,
const Pds::Matrix &  X,
const Pds::Vector &  Y,
unsigned int  N = 1 
)

Calculo de pesos.

\[ \begin{array}{l} W=Pds::LinearModel::FittingNormalMeanSquare(Conf,X,Y);\\ for(n=0;n<N;n++)\\ \{\\ \qquad Yr=Pds::LinearModel::Predict(W,X);\\ \qquad D= \left\{ \begin{matrix} 1 & if & Y = Yr\\ ~&~&~\\ \frac{1}{\sqrt{|Y-Yr|}} & else & ~\\ \end{matrix}\right.\\ \qquad W=Pds::LinearModel::FittingNormalMeanSquare(Conf,X,Y,D);\\ \} \end{array} \]

Parámetros
[in]ConfConfiguraciones para algun algoritmo que itera.
[in]XVector de datos $\mathbf{X}$.
[in]YVector de datos $\mathbf{y}$.
[in]NPasadas de weighted mean square method.
Devuelve
Un vector de pesos $\mathbf{w}$ si el calculo es posible o una vacio si no.
Ejemplos
example_linearmodel_outlier.cpp.

◆ FittingRobustBisquare() [2/2]

Pds::Vector Pds::LinearModel::FittingRobustBisquare ( const Pds::Matrix &  X,
const Pds::Vector &  Y,
unsigned int  N = 1 
)

Calculo de pesos.

\[ \begin{array}{l} W=Pds::LinearModel::FittingNormalMeanSquare(Conf,X,Y);\\ for(n=0;n<N;n++)\\ \{\\ \qquad Yr=Pds::LinearModel::Predict(W,X);\\ \qquad D= \left\{ \begin{matrix} 1 & if & Y = Yr\\ ~&~&~\\ \frac{1}{\sqrt{|Y-Yr|}} & else & ~\\ \end{matrix}\right.\\ \qquad W=Pds::LinearModel::FittingNormalMeanSquare(Conf,X,Y,D);\\ \} \end{array} \]

Parámetros
[in]XVector de datos $\mathbf{X}$.
[in]YVector de datos $\mathbf{y}$.
[in]NPasadas de weighted mean square method.
Devuelve
Un vector de pesos $\mathbf{w}$ si el calculo es posible o una vacio si no.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed