cameron.freenode.net changed the topic of #mlpack to: http://www.mlpack.org/ -- We don't respond instantly... but we will respond. Give it a few minutes. Or hours. -- Channel logs: http://www.mlpack.org/irc/
< zoq>
If I'm right Nishant Mehta implemented LARS/LASSO.
< stephentu>
oh i didnt take a very close look haha
< stephentu>
cool
sumedhghaisas has joined #mlpack
sumedhghaisas has quit [Ping timeout: 244 seconds]
decltype_me has quit [Ping timeout: 265 seconds]
decltype_me has joined #mlpack
stephentu has quit [Ping timeout: 256 seconds]
dataVinci has joined #mlpack
decltype_me has quit [Quit: Konversation terminated!]
dataVinci has quit [Quit: Leaving]
dataVinci has joined #mlpack
sumedh has joined #mlpack
dataVinci has quit [Quit: Leaving]
govg has quit [Quit: leaving]
govg has joined #mlpack
stephentu has joined #mlpack
< naywhayare>
stephentu: it sounds like I need to sit down and redesign the testing framework so that one can 'make lrsdp_test' or something like that
< naywhayare>
I've been hearing a lot of people asking that question recently
< naywhayare>
I think it's possible, I just need to think of what CMake voodoo is necessary to do it nicely :)
sumedh has quit [Ping timeout: 244 seconds]
sumedh has joined #mlpack
< stephentu>
naywhayare: i dont really understand the auto bug. c++ is still magical sometimes
< naywhayare>
if I had to guess, the standard probably doesn't make a firm guarantee of what 'auto' will evaluate to be (probably just "something that compiles and works")
< naywhayare>
and since armadillo has all these ridiculous types that can be cast back and forth for the purposes of delayed evaluation, different compiler versions are probably picking different armadillo class instantiations and it all goes to hell for whatever reason
< naywhayare>
I may put down the time to find a minimal case where 'auto' causes issues with Armadillo, but for me at least it's pretty low priority
< naywhayare>
(my possibly archaic opinion is that I just don't like auto because it can make code ambiguous to read, but that's not good enough justification to tell other people they shouldn't use it)
< stephentu>
naywhayare: auto is for lazy people like me who dont use real IDEs so typing a full typename a::b<arg1, arg2, ...>::c::d blah blah is annoying
< stephentu>
although in this case i saved like 5 characters
< stephentu>
anyways, on an unrelated note, do you have any other ideas for mlpack projects
< naywhayare>
real IDEs? who needs 'em! I use screen + vim :)
< stephentu>
i'm in this fun mode of procrastinating from doing actual research
< naywhayare>
hm, so I was really glad to see you work with the LRSDP code because originally I thought it would provide a nice easy way to solve machine learning problems, faster than using MATLAB + SeDuMi or whatever
< naywhayare>
I had planned to make LMNN work and also MVU, but I could never get LRSDP to consistently converge
< naywhayare>
then my research went a different direction and it became clear that I could no longer afford the time towards something which clearly wasn't going anywhere fast
< naywhayare>
especially given my lack of knowledge of optimizers and numerical solvers (at the time. maybe I could do better now -- but maybe not)
< naywhayare>
one challenge which might be suitable for you might be an SVM implementation, if you would find that interesting
< naywhayare>
we used to have one, long ago, but it was broken and untested, so I removed it
< stephentu>
is there any reason you dont just use libsvm
< stephentu>
or whatever hte standard is called
< naywhayare>
I don't mind dependencies for lower-level stuff, but I consider libsvm to be at the same level of abstraction as mlpack
< naywhayare>
the shogun project wraps all kinds of other libraries at the same abstraction level, like cover trees and libsvm and liblinear and all sorts of stuff like that
< naywhayare>
but in some sense this means that what shogun gives you is just a nice wrapper around those other libraries (and whether or not it's "nice" is in the eye of the beholder...)
< naywhayare>
often, wrapping may also incur slowdowns when data structures need to be copied or modified
< naywhayare>
my view is that by having our own implementation, we can provide something more flexible than the libsvm implementation
< naywhayare>
there is some way to use trees to accelerate SMO, I think, but the person who was associated with that is long gone, and I wouldn't touch his code with a ten-foot stick anyway...
< stephentu>
if i were to implement svms i'd just use SGD
< stephentu>
so i might not be the person for that :)
< stephentu>
how big are the matrices for MVU
< stephentu>
i'm actually looking to try to implement an interior point solver for SDPs
< stephentu>
(for fun)
< naywhayare>
what originally brought me to MVU was this paper by a former labmate:
< stephentu>
but if the MVU matrices are small then it might be better to use
< naywhayare>
I won't bother sending the PDF because the paper itself is horribly written and incomprehensible
< naywhayare>
but, it contains a blurb that suggests that the speech signal can be unfolded into 3 dimensions, not 39 (which is what's usually used for speech processing)
< naywhayare>
that would be an exciting result, but I couldn't replicate his results on the TIMIT database, which is something like 1.7 million points in 39 dimensions
< naywhayare>
for LMNN I think people would want to use matrices of about the same size or larger (depending on the dataset); the dimensionality should not be too incredibly high for LMNN
< stephentu>
i've never heard about this stuff so i'll check it out
< naywhayare>
a comparison of Weinberger's LMNN reference implementation and a fast LRSDP implementation that converges to a similar result would bring a lot of eyes to the implementation and might actually be paperworthy on its own (maybe in a workshop?)
< naywhayare>
do you want some references to read on what LMNN and MVU are?
< stephentu>
sure
< stephentu>
can you send to tu.stephenl@gmail.com
< naywhayare>
or, I guess just those acronyms should be good enough to search; still, I'll send some to that email
< stephentu>
thanks
< naywhayare>
ok, sent
< stephentu>
what do you work on?
< naywhayare>
I've spent the past handful of years thinking about the class of algorithms known as dual-tree algorithms
< naywhayare>
dual-tree algorithms are best known for providing quick solutions to problems like nearest neighbor search, but they can actually be applied to a pretty wide range of problems
< naywhayare>
minimum spanning tree calculation, density estimation, k-means clustering, mixture model parameter estimation, maximum inner-product search, even approximate matrix multiplication
< naywhayare>
the basic idea is that we'll build a query tree (for nearest neighbor, this is a tree built on the query points: those points for which we want the nearest neighbor) and a reference tree (for nearest neighbor, this is a tree built on the set of points we are searching in)
< naywhayare>
then we'll do a dual-tree traversal where we visit combinations of nodes in the two trees
< naywhayare>
and where we can, we'll prune away branches (which is what makes it fast)
< naywhayare>
so, somewhat unsurprisingly, a lot of the algorithms in mlpack are dual-tree algorithms :)
< naywhayare>
they used to be about all of the algorithms, but many of the other contributors left when they graduated from the lab, and since then people with different interests have appeared, so mlpack is a bit more general-purpose now :)
< stephentu>
neat, this is a whole world that is unfamiliar to me
< naywhayare>
people at NIPS sometimes tell me "that's not machine learning", and they're sort of right -- it's closer to computational geometry in some respects
< naywhayare>
how about yourself? when I think of Ben Recht, I think of kernel embeddings, but I think that was years ago and he's probably doing something else now
< stephentu>
our lab actually has very diverse interests
< stephentu>
theres a core group fo people into compressed sensing
< stephentu>
and they are the ones that give the weekly talks that go over my head
< naywhayare>
when I think compressed sensing, I think "sparse L1-penalized regression"... is that in the right direction?
< naywhayare>
there are people here at Georgia Tech who do compressed sensing, but I've never had a big interest in it (I guess I need to figure out how to do it with trees first)
< stephentu>
maybe circa 2006
< naywhayare>
yeah, I think my knowledge of it dates from about then too :)
< stephentu>
a lot of them work on proving convergence of optimziation for SDPs
< stephentu>
like one recent work was showing that the SDP for phase retrival
< stephentu>
has a very nice natural 1st order method
< stephentu>
with nice convergence rates
< stephentu>
etc
< stephentu>
myself i'm still pretty new
< stephentu>
so trying ot figure out hte landscape
< naywhayare>
it took me several years to get my feet on the ground and figure out what it was I wanted to do
< stephentu>
i had a brief stint with bayesian non-parametrics this summer
< stephentu>
but i think that excitement has died
< stephentu>
now i'm into sdps and trying to think about hwo to actually make them work at scale
< stephentu>
but that might be too ambitious
< stephentu>
cause honestly LRSDP sucks
< stephentu>
liek it works great when it works
< stephentu>
but theres no theory
< naywhayare>
you mentioned another SDP solving approach that was fast, but I can't remember the name of it
< stephentu>
so dual ascent methods are pretty fast
< stephentu>
but the problem is recovering the primal solution
< stephentu>
is kind of annoying
< stephentu>
and it only works when your problem has nice structure
< stephentu>
specifically, when the trace of the feasible set is constant
< stephentu>
so it works nice for graph combinatoric problems
< stephentu>
but not for nuclear norm minimization
< naywhayare>
I don't think it's too ambitious of an idea though
< naywhayare>
certainly the payoff would be high if you figured something out :)
< stephentu>
ya its one of those
< stephentu>
peopel have been pounding at this for years
< naywhayare>
do people use sampling approaches in practice for SDPs? i.e. Nystroem approximation type stuff
< naywhayare>
if that makes any sense... I think it does ?
< stephentu>
not sure
< stephentu>
that is an interesting thought
< naywhayare>
I'm not forming the thought completely, but one direction to consider might be some type of hierarchical approximation scheme
< naywhayare>
where you come up with some approximate solution to the whole SDP matrix by selecting only some of the points in the dataset
< naywhayare>
and then have additive higher-quality solutions on nearby subsets of the points
< naywhayare>
or... something like that
< naywhayare>
maybe there's nothing there, but maybe there is. I'm reminded of a recent ICML paper:
< naywhayare>
that's sort of hierarchical approximation of a kernel matrix, but the basic ideas there might be somehow applicable. I am not an optimization expert, though, so maybe my thoughts are entirely in outer space :)
< naywhayare>
anyway, it's getting late... headed home for now
< stephentu>
thanks for the thoughts-- i have no intuition if SDPs can actually be approximated reasonably well (unlike the case for SVMs and other classification problems).
< stephentu>
recently , ben gave me a bunch of papers relating to condition number of SDPs
< stephentu>
i think that may be the way to go to try to capture the notion of "stability" of an SDP
< stephentu>
but these papers are pretty deep and haven't been able to wrap my head aroudn them