[
https://issues.apache.org/jira/browse/MAHOUT-638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13012175#comment-13012175
]
Dmitriy Lyubimov commented on MAHOUT-638:
-----------------------------------------
is that the best way to do row-wise outer product computation (rows A and Q)?
{code}
if ( (aRow instanceof SequentialAccessSparseVector) ||
(aRow instanceof RandomAccessSparseVector )) {
for ( Vector.Element el:aRow ) {
double mul=el.get();
for ( int j =0; j < kp; j++ )
btRow.setQuick(j, mul * qRow.getQuick(j));
btKey.set(el.index());
context.write(btKey, btValue);
}
} else {
int n = aRow.size();
for (int i = 0; i < n; i++) {
double mul = aRow.getQuick(i);
for (int j = 0; j < kp; j++)
btRow.setQuick(j, mul * qRow.getQuick(j));
btKey.set(i);
context.write(btKey, btValue);
}
}
{code}
> Stochastic svd's is not handling well all cases of sparse vectors
> ------------------------------------------------------------------
>
> Key: MAHOUT-638
> URL: https://issues.apache.org/jira/browse/MAHOUT-638
> Project: Mahout
> Issue Type: Bug
> Components: Math
> Affects Versions: 0.5
> Reporter: Dmitriy Lyubimov
> Assignee: Dmitriy Lyubimov
> Fix For: 0.5
>
>
> The Mahout patch of the algorithm is not handling all types of sparse input
> efficiently. BtJob doesn't handle SequentialSparseVector in a way to pick
> only non-zero elements from initial input and QJob doesn't iterate over
> RandomAccessSparseVector correctly. With extremely sparse inputs (0.05%
> non-zero elements) that leads to a terrible inefficiency in the
> aforementioned jobs (QJob, BtJob).
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira