I have an incremental online clustering algorithm which need 4 parameters that should be specified by the user before execution. The algorithm will gives "good results" if "a good parameter values" are chosen, but there is no way to know beforehand what are the best matching parameter values. We can for example perform many executions and evaluate the results after each execution until we find the optimal parameter values. However, if we change the dataset that the algorithm process, we need to determine again what are the optimal parameter values for that dataset. Moreover, the online algorithm is supposed to process a continuously arriving and evolving data stream, i.e. we don't have all data beforehand.


My problem is not the online clustering algorithm itself; I just wonder if there is any solutions/methods to automatically adapt the parameter values during the execution ? How is it possible to use an approximation algorithm to adapt the parameter values in my case ? Which approximate algorithm can I use and how to adapt it (if necessary) to this problem ? Any idea is welcome.

  • $\begingroup$ Simultaneously cross-posted on CS Theory. $\endgroup$ – JeffE Feb 15 '12 at 10:09

There are many different types of approximations (or "surrogate models") you could try. Some that come to mind are Kriging, MARS, and Radial Basis Functions. These types of surrogate models (as opposed to polynomial regression) can accommodate a wide range of functional relationships, but you might need to experiment a bit to find which works best for your application.

Also, since finding the optimal parameters is your ultimate goal, you might want to check out the Efficient Global Optimization method. This method adaptively constructs a kriging model as it searches for the global optimum. I've had a lot of success with this method in the past.

| cite | improve this answer | |
  • $\begingroup$ well, I've never had an experience with approximations, the articles on wikipedia about this surrogate models is a little confusing. Is there any straightforward algorithms that will allow me to quickly try some experiment on my application ? In particular, if you had a good experience with the efficient global optimization, it would be perfect if this method could help me to automatically adapt the parameter values of my algorithm. $\endgroup$ – user995434 Feb 7 '12 at 15:34
  • $\begingroup$ It's really hard to provide anything useful without more information on your environment, but if MATLAB is an option, it looks like TOMLAB (tomopt.com/tomlab) has an EGO implementation (never used it myself). $\endgroup$ – Barron Feb 7 '12 at 18:13
  • $\begingroup$ I code in C++, I don't use Matlab, but if you have just a simplified version of the algorithm, I can implement it myself. $\endgroup$ – user995434 Feb 7 '12 at 19:15
  • $\begingroup$ The algorithm is what it is. I don't know how to simplify it other than to point you to an existing implementation, which I've done. I understand that implementing a complex algorithm yourself may not have been the quick solution you were hoping for, but this is the best idea I have. Maybe a better answer will come along. $\endgroup$ – Barron Feb 7 '12 at 19:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.