Currently in GradientDescent.scala, weights is constructed as a dense vector:

    initialWeights = Vectors.dense(new Array[Double](numFeatures))

And the numFeatures is determined in the loadLibSVMFile as the max index of features.

But in the case of using hash function to compute feature index, it results in a huge dense vector being generated taking lots of memory space.

Any suggestions?