# Efficient L1-Norm Principal-Component Analysis via Bit Flipping

Disclaimer: The provided code links for this paper are external links. Science Nest has no responsibility for the accuracy, legality or content of these links. Also, by downloading this code(s), you agree to comply with the terms of use as set out by the author(s) of the code(s).

 Authors P. Markopoulos, S. Kundu, Shubham Chamadia, D. Pados Journal/Conference Name IEEE Transactions on Signal Processing Paper Category Signal Processing Paper Abstract It was shown recently that the $K$ L1-norm principal components (L1-PCs) of a real-valued data matrix $\mathbf X \in \mathbb {R}^{D \times N}$ ($N$ data samples of $D$ dimensions) can be exactly calculated with cost $\mathcal {O}(2^{NK})$ or, when advantageous, $\mathcal {O}(N^{dK - K + 1})$ where $d=\mathrm{rank}(\mathbf X)$ , $K. In applications where$\mathbf X$is large (e.g., “big” data of large$N$and/or “heavy” data of large$d$), these costs are prohibitive. In this paper, we present a novel suboptimal algorithm for the calculation of the$K < d$L1-PCs of$\mathbf X$of cost$\mathcal O (ND \mathrm{min} \lbrace N,D\rbrace + N^2K^2(K^2 + d))\$, which is comparable to that of standard L2-norm PC analysis. Our theoretical and experimental studies show that the proposed algorithm calculates the exact optimal L1-PCs with high frequency and achieves higher value in the L1-PC optimization metric than any known alternative algorithm of comparable computational cost. The superiority of the calculated L1-PCs over standard L2-PCs (singular vectors) in characterizing potentially faulty data/measurements is demonstrated with experiments in data dimensionality reduction and disease diagnosis from genomic data. Date of publication 2017 Code Programming Language Python Comment