Contact: vpetricek@eharmony.com

Fix a bug in quadratic feature expansion (-q) when a namespace is missing for some examples. Predictions for such example and model may differ depending on the
previous examples. This is due to subsets not being cleared when an example is parsed in. Old value of subsets from previous example at that position in
delay_ring is reused.

This bug exists in the latest version on github (4.1+) as well as 3.0 (for which there exists a smaller testcase exhibiting the bug)

To replicate

input:
2048 examples with namespace 'l' to fill in the delay_ring and an example without namespace 'l' which will reuse a slot in delay_ring and also the 'subsets'.

--- file: input -----------------------------
0 |l C
1 |l C
[... cut 2045 same lines ...]
1 |l C
1 |g M:1
---------------------------------------------

Here is a script to train a model, make predictions the usual way and then predict for each example separately with a new instance of vw. If the predictions
differ we hit the bug.

 --- file: run.sh -----------------------------------------------------------------
 #!/bin/sh

 VW=vw41

         $VW --bit_precision 20 \
                              -d input \
                              --final_regressor model \
                              --learning_rate 0.1 \
                              -q lg \

 # 1. feed vowpal all data at once
 echo "unsafe testing"
 cat input | $VW -i model -t -p output.unsafe

 # 2. execute vowpal for each example separately
 echo "safe testing"
 > output.safe
 cat input |
 while read line
 do
         echo $line | $VW -t -i model -p output.line --quiet
         cat output.safe output.line > temp
         mv temp output.safe
         echo -n "."
 done
 rm output.line

 # compare the two prediction sets - if they differ we hit the bug
 diff -u output.safe output.unsafe
 ---------------------------------------------------------------------------
commit before modifying for differential predictions. currently loss eventually blows up
matrix factorization working reasonably well
commit before updating from main repository
matrix factorization uses new format for weight vector, checking for bugs
print rank when initializing
Merge branch 'master' of git://github.com/JohnLangford/vowpal_wabbit
finally checked in matrix factorization code :)
small change to hashstring function
change to parser to guard against decay_learning_rate problem for small inputs (learning rate decayed before examples were processed)
commit before silencing debug and removing normalization on updates
commenting out debugging before recoding matrix factorization
things unbroken, maybe?
matrix factorization working in initial tests, fixed bug on threads for testing
added regularization for matrix factorization and R script for parameter sweeps
RunTests: Add abs() on delta in fuzzy compare
RunTests: Add -E <epsilon> fuzzy compare option
Makefile: add -f (fuzzy-floating-point compare) to RunTests
added -f to Makefile
Merge pull request #21 from arielf/master

minor improvements to RunTests (and 'make test')
tweak precision