Logistic Regression using PBblas

Provided is an implementation of Logistic Regression for dense matrices using PBblas.

Files created:

PBblas/HadamardProduct.ecl - Cell wise multiplication using PBblas

PBblas/AutoMap.ecl - Function to determine map sizes for matrices. Not always optimal and is determined by rows/cols in matrix, max row/col for each partition, and CLUSTERSIZE. Partition sizes can also provided for fine tuning/better performance.

PBblas/Tests/MapTest.ecl - Can be used to predetermine map sizes for matrix. Results can be used as defaults for PBblas/AutoMap.ecl or PBblas/MatrixMap.ecl

PBblas/MU.ecl - Matrix universe for Layout_Part matrices. Same concepts as Mat/MU.ecl



Necessary updated files:
Classify.ecl - Added LR model name logistic. Renamed Original Logistic to Logistic_sparse.

PBblas.Types.ecl - Added PBblas/MU.ecl type

ML/Utils.ecl - Added Rebasing for IDs. Added support for Rebasing ID from Numbers. This is important when moving back and forth between Mat types and PBblas types.

PB.dgemm - More detailed error messages so it is easier to tell which matrices/blocks are not compatible.



You are doing a specific action, a Hadamard product.  You do not need or want to keep track of the exact row and column involved.  The Product function above should not want a row and column.  Passing in the row and column is fine for a generic function signature because the instant function may want to use the row and column.  This is not in a generic framework, so it is not needed.  The compiler will remove it, so this is not an efficancy issue.  It is more for the human reader.