| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| rame.r [2007/05/03 03:02] – dirty | rame.r [2011/01/28 04:15] (current) – old revision restored dirty |
|---|
| rame.r now provides two types of transformation function. The first one is: | rame.r now provides two types of transformation function. The first one is: |
| |
| {{ polynomial_transformation.png?385 }} | {{ rame.r:polynomial_transformation.png?385 }} |
| |
| In this transformation function, users should specify //α// and //β//. | In this transformation function, users should specify //α// and //β//. |
| Suppose there is a dataset { //s//<sub>1</sub>, //s//<sub>2</sub>, ..., //s<sub>n</sub>// } of with each instance has a function value { //f//(//s//<sub>1</sub>), //f//(//s//<sub>2</sub>), ..., //f//(//s<sub>n</sub>//) }. You might regard each sample //s<sub>i</sub>// as a //d//-dimensional vector <//f//<sub>1</sub>, //f//<sub>2</sub>, ..., //f<sub>d</sub>//>. In general, [[wp>multiple_linear_regression|Multiple Linear Regression]] transforms a //d//-dimensional dataset into an 1-dimensional dataset to fit the corresponding function values. As the following figure shown, there are 4 samples { //s//<sub>1</sub>, //s//<sub>2</sub>, //s//<sub>3</sub>, //s//<sub>4</sub> } on a 2-dimensional plane. | Suppose there is a dataset { //s//<sub>1</sub>, //s//<sub>2</sub>, ..., //s<sub>n</sub>// } of with each instance has a function value { //f//(//s//<sub>1</sub>), //f//(//s//<sub>2</sub>), ..., //f//(//s<sub>n</sub>//) }. You might regard each sample //s<sub>i</sub>// as a //d//-dimensional vector <//f//<sub>1</sub>, //f//<sub>2</sub>, ..., //f<sub>d</sub>//>. In general, [[wp>multiple_linear_regression|Multiple Linear Regression]] transforms a //d//-dimensional dataset into an 1-dimensional dataset to fit the corresponding function values. As the following figure shown, there are 4 samples { //s//<sub>1</sub>, //s//<sub>2</sub>, //s//<sub>3</sub>, //s//<sub>4</sub> } on a 2-dimensional plane. |
| |
| {{ linear_transformation.png?226 }} | {{ rame.r:linear_transformation.png?226 }} |
| |
| We can use a **linear transformation function //T//()** to transform these points, that is, //T//(//s<sub>i</sub>//) = //T//(<//f//<sub>1</sub>, //f//<sub>2</sub>>) = //w//<sub>0</sub> + //w//<sub>1</sub>//f//<sub>1</sub> + //w//<sub>2</sub>//f//<sub>2</sub>. The goal of most regression tools is to determine { //w//<sub>0</sub>, //w//<sub>1</sub>, //w//<sub>2</sub> } for maximizing the correlation between { //f//(//s//<sub>1</sub>), //f//(//s//<sub>2</sub>), //f//(//s//<sub>3</sub>), //f//(//s//<sub>4</sub>) } and { //T//(//s//<sub>1</sub>), //T//(//s//<sub>2</sub>), //T//(//s//<sub>3</sub>), //T//(//s//<sub>4</sub>) }. We can use a **measure function //M//()** to see how fit are {//f//(//s<sub>i</sub>//)} and {//T//(//s<sub>i</sub>//)}. One typical measure function is [[wp>root_mean_square_deviation|Root Mean Square Deviation]] as shown in the next figure. | We can use a **linear transformation function //T//()** to transform these points, that is, //T//(//s<sub>i</sub>//) = //T//(<//f//<sub>1</sub>, //f//<sub>2</sub>>) = //w//<sub>0</sub> + //w//<sub>1</sub>//f//<sub>1</sub> + //w//<sub>2</sub>//f//<sub>2</sub>. The goal of most regression tools is to determine { //w//<sub>0</sub>, //w//<sub>1</sub>, //w//<sub>2</sub> } for maximizing the correlation between { //f//(//s//<sub>1</sub>), //f//(//s//<sub>2</sub>), //f//(//s//<sub>3</sub>), //f//(//s//<sub>4</sub>) } and { //T//(//s//<sub>1</sub>), //T//(//s//<sub>2</sub>), //T//(//s//<sub>3</sub>), //T//(//s//<sub>4</sub>) }. We can use a **measure function //M//()** to see how fit are {//f//(//s<sub>i</sub>//)} and {//T//(//s<sub>i</sub>//)}. One typical measure function is [[wp>root_mean_square_deviation|Root Mean Square Deviation]] as shown in the next figure. |
| |
| {{ rmsd.png?211 }} | {{ rame.r:rmsd.png?211 }} |
| |
| So we got an optimization problem: __to determine variables in the transformation function //T//() for optimizing the measure function //M//()__. Conventional techniques assume that //T//() and //M//() have good properties (ex. differentiable). These assumptions make the optimization process easier, faster, and (probably) deterministic. However, these assumptions also imply limitations on //T//() and //M//(). That's why we introduce rame.r which could support any //T//() and //M//(), i.e. have no limitations! | So we got an optimization problem: __to determine variables in the transformation function //T//() for optimizing the measure function //M//()__. Conventional techniques assume that //T//() and //M//() have good properties (ex. differentiable). These assumptions make the optimization process easier, faster, and (probably) deterministic. However, these assumptions also imply limitations on //T//() and //M//(). That's why we introduce rame.r which could support any //T//() and //M//(), i.e. have no limitations! |