SourceForge.net: Bronzekopf project Bronzekopf: Project Web Hosting

Bronzekopf

In olden times, wise men like Roger Bacon were said to have a Bronze Head which would tell them secrets of nature. The ignorant couldn't understand that it was their techniques which made them wise, so they assumed it was done by magic. Their Bronze Head was really a way of doing things. Their Bronze Head was the method of science. I think that machine learning techniques and Bayesian inference will be the "Bronze Head" of the future, so I named my little machine learning project "Bronzekopf."

Users

Download Bronzekopf files

Project detail and discuss

Get support

Project Information

About this project:

This is the Bronzekopf project ("bronzekopf")

Open source versions of KD-Tree, KNN, Kernel regression, a time series class, weighted KR and eventually LWPR for Lush. Bronzekopf is a project in the Lush (Lisp Universal SHell) programming language. The present release is for Lush 1.2.1; it will be updated for Lush 2.0 soon. Bronzekopf is a general tool for non-parametric statistics and time series forecasting. It's presently pretty rough, but I have found it very useful, and far superior to any other Kernel regression or time series packages for the types of things I need done. This should be considered an early alpha release. The design of Bronzekopf was inspired by John Wolberg's book, "Expert Trading Systems: Modeling Financial Markets with Kernel Regression." The time series class owes a lot to ZOO from the CRAN project.

Immediate future plans:

The time series class needs rounding out; more classical econometric techniques will be added to it. A class for block bootstrap/reality check will eventually be added, as this is stuff I need for my own work. A friend of mine is working on a class for unscented particle filters; I hope he pulls it off. RVM's are also interesting. In more practical realms, I have some code fragments I use to dump data to HDF files which I may some day include here as a sort of crude time series database. I'm also hoping someone inspires me to port the SOCI package to Lush for more conventional database access. You don't really need databases most of the time, but for deploying commercial applications, it can be very helpful.

Longer term plans:

A sort of long term goal with all this is making it look like Orange or labview where you can draw little flowcharts instead of slinging lisp. Yann and Leon made this look easy with BPTool and NetTool in the SN2.8 package, so I figure it shouldn't be too hard to do. I have also thought about writing some macros to make porting this stuff to R easier. I think R would benefit from both the ANN/KR stuff and the time series class (once it is compilable). R is a great environment to interact with data. Lush is a great environment for hacking fast machine learning code out. It might make a good marriage at some point. Obviously, I have a lot more code which makes the wheels on this thing spin. Some of it is, well, proprietary, as in "that's my edge." Some of it is less so, and may end up here.

Why Lush?

Everyone knows Lisp is awesome, but nobody ever created an awesome Lisp for numerics. Until Yann Lecun and Leon Bottou invented Lush. There were probably other ones out there, but these fellows were kind enough to open source theirs. The IDX type is a great compromise between a pointer and a matrix; a near perfect level of abstraction for people who think in Matlab or people who think in C. They've written a great set of libraries for it which makes Lush comparable to basic Matlab in interpreted form ... except you get all the Lisp greatness with it, and the object system is far better than the one nobody ever uses in Matlab. In compiled form, Lush is astoundingly faster than Matlab; C/Fortran speed. Finally, Lush wins over every other Lisp by making it trivial to import C or C++ libraries. Essentially, you just write some C in #{ }# macro brackets and use $ in front of the variable name to pull the variable into the Lush namespace. Unlike every other Lisp (other than the orphaned XLispStat), Lush has also decent plotting facilities built in, and an outstanding help tool and autodoc feature. These guys thought of everything. Ralf Juengling, the guy who developed the next iteration of Lush, also put in lots of great stuff I'm looking forward to using in Lush 2.0.

Lush is a pure hackers Lisp. Common Lisp and its descendents are all compromises between the world of MacLisp and Interlisp. While there are some great Common Lisps out there I consider Common Lisp a failure as a language design, like most "designs by committee." Common Lisp is interesting and very complete in some ways, but it is not designed by hackers, and certainly not people interested in numerics: it's designed to make large groups of very opinionated people happy. Lush was designed to get stuff done. If you look at the things they've done with it thus far; pilot robots, do handwriting recognition in ATM machines, cook up lots of research, develop some great machine learning tools -you will realize that this is a very productive language. Bronzekopf is my first project in Lush; I worked on it for 3-4 hours a day for a few months, and I'm not a very good coder. I think that in itself is a great testimonial for its productivity. Plus, my code runs faster than it would in Matlab or R.

admin links

Project web management

SCP access

SFTP access

New project management