works well with sparse data