Locally Weighted Projection Regression (LWPR) is a recent algorithm that achieves nonlinear function approximation in high dimensional spaces with redundant and irrelevant input dimensions. At its core, it uses locally linear models, spanned by a small number of univariate regressions in selected directions in input space. A locally weighted variant of Partial Least Squares (PLS) is employed for doing the dimensionality reduction. This nonparametric local learning system
1) learns rapidly with second order learning methods based on incremental training, 2) uses statistically sound stochastic cross validation to learn, 3) adjusts its weighting kernels based on local information only, 4) has a computational complexity that is linear in the number of inputs, and 5) can deal with a large number of - possibly redundant - inputs, as shown in evaluations with up to 50 dimensional data sets. To our knowledge, this is the first truly incremental spatially localized learning method to combine all these properties.

We have implemented the LWPR algorithm in plain ANSI C, with wrappers and bindings for C++, Matlab/Octave, and Python (using Numpy). LWPR models can be stored in platform-dependent binary files or optionally in platform-independent, human-readable XML files. The latter functionality relies on the XML parser Expat as the only dependency.

LWPR models are fully interchangeable between the different implementations, that is, you could train a regression model in Matlab, store it to a file, and load it from a Python script or C++ program to calculate predictions. Just as well, you could train a model from real robot data collected online in C/C++, and later inspect the LWPR model comfortably within Matlab.

Other available revisons

Version 1.2.4

Version 1.2.3

Corrected bugs in the Python module (missing Py_DECREF
in functions returning multiple numpy arrays that led
to a memory leak, as well as bad preprocessor directive
"USE_EXPAT" instead of "HAVE_LIBEXPAT")
Thanks to Benjamin Dittes

Corrected bad preprocessor directive (see above) in
C++ wrapper lwpr.hh. Also added casts between signed
and unsigned integers in lwpr.hh and cross.cc
Thanks to Peter Pastor, Robert Nickl and Adrian Haith

Comments

Raj (on September 24, 2008, 09:43:49)

I go through some journal papers and conference papers based on LWPR algorithm. From my knowledge in all the papers LWPR algorithm used in Controlling the robot arms. Now my question is can i use LWPR algorithm to control the movements of mobile robots?

waiting for your reply

Thank you

Stefan (on October 28, 2008, 13:17:55)

Dear Raj,
In general, there is no reason why you should not be able to use LWPR for mobile robots. However, without a clearer picture of what you want to learn, it is hard to judge whether other algorithms wouldn't be more suitable.
Cheers, Stefan