| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| rame.r [2007/04/21 13:07] – dirty | rame.r [2011/01/28 04:15] (current) – old revision restored dirty |
|---|
| |
| If you are interested in the background of rame.r, the [[#concept|Concept]] section at the bottom of this page could be helpful. Or just follow the [[#quick_start|Quick Start]] section which covers most operations of rame.r. Other materials such as [[#usage|Usage]] are available in this page, too. | If you are interested in the background of rame.r, the [[#concept|Concept]] section at the bottom of this page could be helpful. Or just follow the [[#quick_start|Quick Start]] section which covers most operations of rame.r. Other materials such as [[#usage|Usage]] are available in this page, too. |
| |
| |
| |
| |
| |
| |
| ====== Quick Start ====== | ====== Quick Start ====== |
| |
| You might need to read the [[#concept|Concept]] section for some symbols of this document such as //T//(), //M//(), and //s<sub>i</sub>//. In rame.r, a dataset is represented as one text file. This is a 4-dimensional dataset. | You might need to read the [[#concept|Concept]] section for some symbols of this document such as //T//(), //M//(), and //s<sub>i</sub>//. In rame.r, a dataset is represented as one text file. This is a 4-dimensional dataset. |
| <file> | <file> |
| In this file, one row represent an instance //s<sub>i</sub>// composed of the leading function value //f//(//s<sub>i</sub>//) and a list of index:value pairs. | In this file, one row represent an instance //s<sub>i</sub>// composed of the leading function value //f//(//s<sub>i</sub>//) and a list of index:value pairs. |
| |
| 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: |
| | |
| | {{ 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! |