Welcome to pyCP_APR's documentation!¶
pyCP_APR is a Python library for tensor decomposition and anomaly detection. It is designed for the fast analysis of large datasets by accelerating computation speed using GPUs. pyCP_APR uses the CANDECOMP/PARAFAC Alternating Poisson Regression (CP-APR) tensor factorization algorithm utilizing both Numpy and PyTorch backend. While the Numpy backend can be used for the analysis of both sparse and dense tensors, PyTorch backend provides faster decomposition of large and sparse tensors on the GPU. pyCP_APR's Scikit-learn like API allows comfortable interaction with the library, and include the methods for anomaly detection via the p-values obtained from the CP-APR factorization. The anomaly detection methods via the p-values optained from CP-APR was introduced by Eren et al. in [ErenMooreAlexandrov20] using the Unified Host and Network Dataset [TKH18]. Our work follows the MATLAB Tensor Toolbox [BK06, BK08, BK+15] implementation of CP-APR [CK12].
Resources¶
Installation¶
Option 1: Install using pip
pip install git+https://github.com/lanl/pyCP_APR.git
Option 2: Install from source
git clone https://github.com/lanl/pyCP_APR.git
cd pyCP_APR
conda create --name pyCP_APR python=3.8.5
source activate pyCP_APR
python setup.py install
Prerequisites:¶
Anaconda (Optional)
numpy>=1.19.2
numpy-indexed>=0.3.5
pandas>=1.0.5
matplotlib>=3.3.4
joblib>=1.0.1
scikit-learn>=0.22.2
scipy>=1.5.3
seaborn>=0.11.1
torch>=1.6.0
requests>=2.25.1
Example Usage¶
from pyCP_APR import CP_APR
from pyCP_APR.datasets import load_dataset
# Load a sample tensor
data = load_dataset(name="TOY")
coords_train, nnz_train = data['train_coords'], data['train_count']
coords_test, nnz_test = data['test_coords'], data['test_count']
# CP-APR Object with PyTorch backend on a GPU. Transfer the latent factors back to Numpy arrays.
cp_apr = CP_APR(n_iters=10,
random_state=42,
verbose=1,
method='torch',
device='gpu',
return_type='numpy')
# Train a rank 45 tensor
M = cp_apr.fit(coords=coords_train, values=nnz_train, rank=45)
# Predict the scores over the trained tensor
y_score = cp_apr.predict_scores(coords=coords_test, values=nnz_test)
How to Cite pyCP_APR?¶
@MISC{Eren2021_pyCP_APR,
author = {M. E. {Eren} and J. S. {Moore} and E. {Skau} and M. {Bhattarai} and G. {Chennupati} and B. S. {Alexandrov}},
title = {pyCP_APR},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
doi = {10.5281/zenodo.xxxxxx},
howpublished = {\url{https://github.com/lanl/pyCP_APR}}
}
@INPROCEEDINGS{Eren2020_ISI,
author={M. E. {Eren} and J. S. {Moore} and B. S. {Alexandrov}},
booktitle={2020 IEEE International Conference on Intelligence and Security Informatics (ISI)},
title={Multi-Dimensional Anomalous Entity Detection via Poisson Tensor Factorization},
year={2020},
pages={1-6},
doi={10.1109/ISI49825.2020.9280524}
}
Authors¶
Maksim Ekin Eren: Advanced Research in Cyber Systems, Los Alamos National Laboratory
Juston S. Moore: Advanced Research in Cyber Systems, Los Alamos National Laboratory
Erik Skau: Computer, Computational, and Statistical Sciences Division, Los Alamos National Laboratory
Manish Bhattarai: Theoretical Division, Los Alamos National Laboratory
Gopinath Chennupati: Computer, Computational, and Statistical Sciences Division, Los Alamos National Laboratory
Boian S. Alexandrov: Theoretical Division, Los Alamos National Laboratory
Copyright Notice¶
© 2021. Triad National Security, LLC. All rights reserved. This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. Department of Energy/National Nuclear Security Administration. All rights in the program are reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear Security Administration. The Government is granted for itself and others acting on its behalf a nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so.
LANL C Number: C21028
License¶
This program is open source under the BSD-3 License. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Developer Test Suite¶
Developer test suits are located under tests/
directory (located here).
Tests can be ran from this folder using python -m unittest *
.
References¶
- BK06
Brett W. Bader and Tamara G. Kolda. Algorithm 862: matlab tensor classes for fast algorithm prototyping. ACM Trans. Math. Softw., 32(4):635–653, December 2006. URL: https://doi.org/10.1145/1186785.1186794, doi:10.1145/1186785.1186794.
- BK08
Brett W. Bader and Tamara G. Kolda. Efficient matlab computations with sparse and factored tensors. SIAM Journal on Scientific Computing, 30(1):205–231, 2008. URL: https://doi.org/10.1137/060676489, arXiv:https://doi.org/10.1137/060676489, doi:10.1137/060676489.
- BK+15
Brett W. Bader, Tamara G. Kolda, and others. Matlab tensor toolbox version 2.6. Available online, February 2015. URL: http://www.sandia.gov/~tgkolda/TensorToolbox/.
- CK12
Eric C. Chi and Tamara G. Kolda. On tensors, sparsity, and nonnegative factorizations. SIAM Journal on Matrix Analysis and Applications, 33(4):1272–1299, December 2012. doi:10.1137/110859063.
- TKH18
Melissa J. M. Turcotte, Alexander D. Kent, and Curtis Hash. Unified Host and Network Data Set, chapter Chapter 1, pages 1–22. World Scientific, nov 2018. URL: https://www.worldscientific.com/doi/abs/10.1142/9781786345646\_001, arXiv:https://www.worldscientific.com/doi/pdf/10.1142/9781786345646\_001, doi:10.1142/9781786345646_001.
- ErenMooreAlexandrov20
M. E. Eren, J. S. Moore, and B. S. Alexandrov. Multi-dimensional anomalous entity detection via poisson tensor factorization. In 2020 IEEE International Conference on Intelligence and Security Informatics (ISI), volume, 1–6. 2020. doi:10.1109/ISI49825.2020.9280524.