Return-Path: X-Original-To: apmail-mahout-dev-archive@www.apache.org Delivered-To: apmail-mahout-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 86E49161D for ; Fri, 22 Apr 2011 19:58:45 +0000 (UTC) Received: (qmail 20616 invoked by uid 500); 22 Apr 2011 19:58:44 -0000 Delivered-To: apmail-mahout-dev-archive@mahout.apache.org Received: (qmail 20553 invoked by uid 500); 22 Apr 2011 19:58:44 -0000 Mailing-List: contact dev-help@mahout.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@mahout.apache.org Delivered-To: mailing list dev@mahout.apache.org Received: (qmail 20539 invoked by uid 99); 22 Apr 2011 19:58:44 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Apr 2011 19:58:44 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Apr 2011 19:58:43 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 79498AE976 for ; Fri, 22 Apr 2011 19:58:06 +0000 (UTC) Date: Fri, 22 Apr 2011 19:58:06 +0000 (UTC) From: "Jake Mannix (JIRA)" To: dev@mahout.apache.org Message-ID: <791777173.77147.1303502286493.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <404149204.61933.1302921185740.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (MAHOUT-672) Implementation of Conjugate Gradient for solving large linear systems MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/MAHOUT-672?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13023364#comment-13023364 ] Jake Mannix commented on MAHOUT-672: ------------------------------------ I thought about calling it DiagonalOffsetMatrix, but these are a proper subset of multiples of the identity. :) > Implementation of Conjugate Gradient for solving large linear systems > --------------------------------------------------------------------- > > Key: MAHOUT-672 > URL: https://issues.apache.org/jira/browse/MAHOUT-672 > Project: Mahout > Issue Type: New Feature > Components: Math > Affects Versions: 0.5 > Reporter: Jonathan Traupman > Priority: Minor > Attachments: 0001-MAHOUT-672-LSMR-iterative-linear-solver.patch, 0001-MAHOUT-672-LSMR-iterative-linear-solver.patch, MAHOUT-672.patch, MAHOUT-672.patch > > Original Estimate: 48h > Remaining Estimate: 48h > > This patch contains an implementation of conjugate gradient, an iterative algorithm for solving large linear systems. In particular, it is well suited for large sparse systems where a traditional QR or Cholesky decomposition is infeasible. Conjugate gradient only works for matrices that are square, symmetric, and positive definite (basically the same types where Cholesky decomposition is applicable). Systems like these commonly occur in statistics and machine learning problems (e.g. regression). > Both a standard (in memory) solver and a distributed hadoop-based solver (basically the standard solver run using a DistributedRowMatrix a la DistributedLanczosSolver) are included. > There is already a version of this algorithm in taste package, but it doesn't operate on standard mahout matrix/vector objects, nor does it implement a distributed version. I believe this implementation will be more generically useful to the community than the specialized one in taste. > This implementation solves the following types of systems: > Ax = b, where A is square, symmetric, and positive definite > A'Ax = b where A is arbitrary but A'A is positive definite. Directly solving this system is more efficient than computing A'A explicitly then solving. > (A + lambda * I)x = b and (A'A + lambda * I)x = b, for systems where A or A'A is singular and/or not full rank. This occurs commonly if A is large and sparse. Solving a system of this form is used, for example, in ridge regression. > In addition to the normal conjugate gradient solver, this implementation also handles preconditioning, and has a sample Jacobi preconditioner included as an example. More work will be needed to build more advanced preconditioners if desired. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira