User Tools

Site Tools


rame.r

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rame.r [2007/05/03 02:58] – dirtyrame.r [2011/01/28 04:15] (current) – old revision restored dirty
Line 15: Line 15:
  
 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!
Line 27: Line 33:
 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.
rame.r.1178161137.txt.gz · Last modified: by dirty