@atpassos_ml @mathieuen while looped pointer increments for array of structs (index, value) is the way libsvm works http://bit.ly/9mMTWu
2010-11-13 22:33:47@atpassos_ml I suspect that depending on the sparsity of the weight vector, the dumb sparse-dense product may well be faster.
2010-11-13 22:42:15@mathieuen @atpassos_ml for linear classifiers dense - sparse is probably faster and fits in memory.
2010-11-13 22:48:09@ogrisel between 2 features vectors, sparse-sparse is the way to go but between feature vector and weight vector, sparse-dense may be faster
2010-11-13 22:48:37@mathieuen @atpassos_ml for sparsity inducing manifold learners such as stacked autoencoders, weights matrix of 1e4 x n_features might not
2010-11-13 22:49:47@ogrisel @mathieuen Someone should write down the state of the art and benchmarks for sparsity algorithms, as it's often implemented badly
2010-11-13 22:56:57@ogrisel @mathieuen Someone should write down the state of the art and benchmarks for sparsity algorithms, as it's often implemented badly
2010-11-13 22:56:57@atpassos_ml @mathieuen sounds like a cool new blog post -hint- -hint- ! :)
2010-11-13 22:58:41@ogrisel @atpassos_ml My intuition is that the merge algo is better if only few dimensions are non zero in both the feat and the weight vect
2010-11-13 23:02:36@ogrisel @atpassos_ml Since it takes time to create benchmarks, a collaborative effort on github would be cool!
2010-11-13 23:03:54@mathieuen @ogrisel Precisely, as it only iterates through each nonzero feat or weight element once. If you have sparse weight this helps
2010-11-13 23:05:09@mathieuen @ogrisel Precisely, as it only iterates through each nonzero feat or weight element once. If you have sparse weight this helps
2010-11-13 23:05:09@mathieuen @ogrisel I'm in, except writing C code to actually test this can be annoying-ish.
2010-11-13 23:06:44@mathieuen @ogrisel I'm in, except writing C code to actually test this can be annoying-ish.
2010-11-13 23:06:44@mathieuen @ogrisel The problem with merge is the tradeoff between cache-niceness and being able to change the sparsity pattern quickly
2010-11-13 23:07:11@mathieuen @ogrisel The problem with merge is the tradeoff between cache-niceness and being able to change the sparsity pattern quickly
2010-11-13 23:07:11@atpassos_ml @ogrisel Bob Carpenter was saying that adding and removing elements to the sparse weight vector at train time was too slow.
2010-11-13 23:15:26@atpassos_ml @ogrisel So training and prediction have different requirements...
2010-11-13 23:16:07@mathieuen @ogrisel That's kind of what I was thinking. So any comparison should deal with both scenarios separately
2010-11-13 23:17:48@mathieuen @ogrisel That's kind of what I was thinking. So any comparison should deal with both scenarios separately
2010-11-13 23:17:48@mathieuen @atpassos_ml true I forgot about the case when a zero weight starts to be non-zero during training...
2010-11-13 23:34:08@ogrisel @mathieuen I'd say the most general impl. is 3 arrays: 1 with values, 2 with indices, 3 with index of the next; sort after k. iters
2010-11-13 23:48:04@ogrisel @mathieuen I'd say the most general impl. is 3 arrays: 1 with values, 2 with indices, 3 with index of the next; sort after k. iters
2010-11-13 23:48:04@atpassos_ml @mathieuen interesting: you should learn cython with http://bit.ly/bP5Sqx and implement it, benchmark it and blog it
2010-11-14 00:04:16