Paul Hubenig created MAHOUT-1078:
------------------------------------

             Summary: matrixmult gives wrong answer
                 Key: MAHOUT-1078
                 URL: https://issues.apache.org/jira/browse/MAHOUT-1078
             Project: Mahout
          Issue Type: Bug
          Components: Math
    Affects Versions: 0.7
            Reporter: Paul Hubenig


Create a simple matrix: 
1 2
3 4

package exp

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.Path
import org.apache.hadoop.io.{IOUtils, IntWritable, SequenceFile}
import org.apache.mahout.math.{SequentialAccessSparseVector, VectorWritable, 
RandomAccessSparseVector}

object MakeMatrix extends App with CommonMethods {
  val matrixFileOutput = "/Users/phubenig/matrixFile.sf"

  val conf = new Configuration()

  val fs = getFileSystem(true, conf)
  val path = new Path(matrixFileOutput)
  val arr = Array(Array(1, 2), Array(3, 4))
  val rank = 2

  val key = new org.apache.hadoop.io.IntWritable()
  val writer = SequenceFile.createWriter(fs, conf, path, classOf[IntWritable], 
classOf[VectorWritable])

  for (i <- 0 until rank) {
    key.set(i)
    val v = new SequentialAccessSparseVector(rank)
    for (j <- 0 until rank) {
      v.setQuick(j, arr(i)(j))
    }
    writer.append(key, new VectorWritable(v))
  }

  IOUtils.closeStream(writer)
}

Engage mahout to square this matrix.

$ mahout matrixmult --numRowsA 2 --numColsA 2 --numRowsB 2 --numColsB 2 
--inputPathA matrixFile.sf --inputPathB matrixFile.sf

Read back the result:


I get the answer:??

(0, 0): 10.0
(0, 1): 14.0
(1, 0): 14.0
(1, 1): 20.0

i.e.,

10 14
14 20

Correct answer??
1 2    1 2         7 10
      x         =
3 4     3 4        15 22

I tried mahout transpose and that seems to work.

Am I specifying the matrix wrong somehow?

10 =|(1, 3)| * |(1,3)|
20 =|(2,4)| * |(2,4)|
14 = (1,3) , (2,4)  

but why is it doing this?

Instead of two vectors in the matrix creation program, I also tried one vector 
consisting of:  (1, 2, 3, 4) - matrixmult also give the wrong answer.

Regardless of convention used (???) that I don't understand, here is no 
documentation and no error checking.



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to