You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mahout.apache.org by "Raphael Cendrillon (Issue Comment Edited) (JIRA)" <ji...@apache.org> on 2011/11/27 21:51:40 UTC

[jira] [Issue Comment Edited] (MAHOUT-817) Add PCA options to SSVD code

    [ https://issues.apache.org/jira/browse/MAHOUT-817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13158010#comment-13158010 ] 

Raphael Cendrillon edited comment on MAHOUT-817 at 11/27/11 8:51 PM:
---------------------------------------------------------------------

Could you expand on this a little?

If I understand correctly we need to implicitly do mean-subtraction of A whenever we work with B.
It seems this is equivalent to subtracting qs'*a_mean from B, where qs is the sum of the rows of Q
and a_mean is the mean of the rows of A. So if bi is the ith column of B then the column with
implicit mean-subtraction of A is

  bi - qs'*a_mean( i )

where a_mean( i ) is the ith element of a_mean.

It seems there are two jobs that need to be modified: BBT-job and V-job. Since they both work column wise it should
be straightforward to pass in the vector qs and the scalar a_mean(i).

One question: is it necessary to do mean-subtraction of A before computing the QR decomposition, or will the columns of Q still
form a good basis even without mean-subtraction?

Could you explain what the 'column mean' is? I thought that each data point corresponds to a row in A, so that subtraction of row means
would be more appropriate?




                
      was (Author: cendrillon):
    Could you expand on this a little?

If I understand correctly we need to implicitly do mean-subtraction of A whenever we work with B.
It seems this is equivalent to subtracting qs'*a_mean from B, where qs is the sum of the rows of Q
and a_mean is the mean of the rows of A. So if bi is the ith column of B then the column with
implicit mean-subtraction of A is

  bi - qs'*a_mean(i)

where a_mean(i) is the ith element of a_mean.

It seems there are two jobs that need to be modified: BBT-job and V-job. Since they both work column wise it should
be straightforward to pass in the vector qs and the scalar a_mean(i).

One question: is it necessary to do mean-subtraction of A before computing the QR decomposition, or will the columns of Q still
form a good basis even without mean-subtraction?

Could you explain what the 'column mean' is? I thought that each data point corresponds to a row in A, so that subtraction of row means
would be more appropriate?




                  
> Add PCA options to SSVD code
> ----------------------------
>
>                 Key: MAHOUT-817
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-817
>             Project: Mahout
>          Issue Type: New Feature
>    Affects Versions: 0.6
>            Reporter: Dmitriy Lyubimov
>            Assignee: Dmitriy Lyubimov
>             Fix For: Backlog
>
>
> It seems that a simple solution should exist to integrate PCA mean subtraction into SSVD algorithm without making it a pre-requisite step and also avoiding densifying the big input. 
> Several approaches were suggested:
> 1) subtract mean off B
> 2) propagate mean vector deeper into algorithm algebraically where the data is already collapsed to smaller matrices
> 3) --?
> It needs some math done first . I'll take a stab at 1 and 2 but thoughts and math are welcome.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira