Source code for dtaianomaly.anomaly_detection.KernelPrincipalComponentAnalysis

from pyod.models.kpca import KPCA

from dtaianomaly.anomaly_detection.BaseDetector import Supervision
from dtaianomaly.anomaly_detection.PyODAnomalyDetector import PyODAnomalyDetector


[docs] class KernelPrincipalComponentAnalysis(PyODAnomalyDetector): """ Anomaly detector based on the Kernel Principal Component Analysis (KPCA). Standard PCA maps the data to a lower dimensional space through linear projections. Deviations in this lower dimensional space are then considered to be anomalies. KPCA [hoffmann2007kernel]_ is a non-linear extension of PCA, which maps the data into a new kernel space, from which the principal components are learned. Notes ----- KPCA inherets from :py:class:`~dtaianomaly.anomaly_detection.PyodAnomalyDetector`. Parameters ---------- window_size: int or str The window size to use for extracting sliding windows from the time series. This value will be passed to :py:meth:`~dtaianomaly.anomaly_detection.compute_window_size`. stride: int, default=1 The stride, i.e., the step size for extracting sliding windows from the time series. **kwargs: Arguments to be passed to the PyOD PCA. Attributes ---------- window_size_: int The effectively used window size for this anomaly detector pyod_detector_ : KPCA A KPCA-detector of PyOD Examples -------- >>> from dtaianomaly.anomaly_detection import KernelPrincipalComponentAnalysis >>> from dtaianomaly.data import demonstration_time_series >>> x, y = demonstration_time_series() >>> kpca = KernelPrincipalComponentAnalysis(10, n_components=2).fit(x) >>> kpca.decision_function(x) array([0.03151377, 0.03697829, 0.04415575, ..., 0.03345565, 0.0330048 , 0.03089501]) References ---------- .. [hoffmann2007kernel] Heiko Hoffmann. Kernel pca for novelty detection. Pattern recognition, 40(3):863–874, 2007, doi: `10.1016/j.patcog.2006.07.009 <https://doi.org/10.1016/j.patcog.2006.07.009>`_. """ def _initialize_detector(self, **kwargs) -> KPCA: return KPCA(**kwargs) def _supervision(self): return Supervision.SEMI_SUPERVISED