| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| rame.r [2007/05/03 02:58] – 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 }} | |
| | {{ rame.r:polynomial_transformation.png?385 }} |
| In this transformation function, users should specify //α// and //β//. | In this transformation function, users should specify //α// and //β//. |
| |
| ====== Concept ====== | ====== Concept ====== |
| 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. |
| | |
| | {{ 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. |
| | |
| | {{ 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! |
| For example, all transformation functions in rame.r could transform a //d//-dimensional point to a //d//'-dimensional one where //d//' is given by users. Therefore, //T//(//s<sub>i</sub>//) is a //d//'-dimensional vector and some measure functions in rame.r could estimate the correlation between one scalar //f//(//s<sub>i</sub>// and one vector //T//(//s<sub>i</sub>//). In other words, the measure functions in rame.r could be as complicated as another regression tool. | For example, all transformation functions in rame.r could transform a //d//-dimensional point to a //d//'-dimensional one where //d//' is given by users. Therefore, //T//(//s<sub>i</sub>//) is a //d//'-dimensional vector and some measure functions in rame.r could estimate the correlation between one scalar //f//(//s<sub>i</sub>// and one vector //T//(//s<sub>i</sub>//). In other words, the measure functions in rame.r could be as complicated as another regression tool. |
| |
| rame.r regards regression as a general optimization problem and uses [[http://mbi.ee.ncku.edu.tw/rame/|RAME]] as its core engine. rame.r is especially suitable when either //T//() or //M//() has to be very complicated. If you have any chance to make both //T//() and //M//() become good (ex. differentiable), please don't use rame.r since it is non-deterministic.{{linear_transformation.png|}} | rame.r regards regression as a general optimization problem and uses [[http://mbi.ee.ncku.edu.tw/rame/|RAME]] as its core engine. rame.r is especially suitable when either //T//() or //M//() has to be very complicated. If you have any chance to make both //T//() and //M//() become good (ex. differentiable), please don't use rame.r since it is non-deterministic. |