Skip to content

harr_wavelet_expansion

Bases: discrete_wavelet_expansion

Haar Wavelet Expansion.

Applies the Haar wavelet function for feature expansion.

Notes

Formally, given the input variable \(\mathbf{x} \in R^{m}\), to approximate the underlying mapping \(f: R^m \to R^n\) with wavelet analysis, we can define the approximated output as

\[
    \begin{equation}
    f(\mathbf{x}) \approx \sum_{s, t} \left \langle f(\mathbf{x}), \phi_{s, t} (\mathbf{x} | a, b) \right \rangle \cdot \phi_{s, t} (\mathbf{x} | a, b),
    \end{equation}
\]

where \(\phi_{s, t} (\cdot | a, b)\) denotes the child wavelet defined by hyper-parameters \(a > 1\) and \(b > 0\):

\[
    \begin{equation}
    \phi_{s, t}(x | a, b) = \frac{1}{\sqrt{a^s}} \phi \left( \frac{x - t \cdot b \cdot a^s}{a^s} \right).
    \end{equation}
\]

Based on the wavelet mapping \(\phi_{s, t} (\cdot | a, b)\), we can introduce the \(1_{st}\)-order and \(2_{nd}\)-order wavelet data expansion functions as follows:

\[
    \begin{equation}
    \kappa(\mathbf{x} | d=1) = \left[ \phi_{0, 0}(\mathbf{x}), \phi_{0, 1}(\mathbf{x}), \cdots, \phi_{s, t}(\mathbf{x}) \right] \in R^{D_1}.
    \end{equation}
\]

and

\[
    \begin{equation}
    \kappa(\mathbf{x} | d=2) = \kappa(\mathbf{x} | d=1) \otimes \kappa(\mathbf{x} | d=1) \in R^{D_2}.
    \end{equation}
\]

The output dimensions of the order-1 and order-2 wavelet expansions are \(D_1 = s \cdot t \cdot m\) and \(D_2 = (s \cdot t \cdot m)^2\), respectively.

Specifically, the functions \(\left\{ \phi_{s, t}\right\}_{ s, t \in Z}\) defines the orthonormal basis of the space and the mapping \(\phi(\cdot)\) used in the child wavelet may have different representations.

For Harr wavelet, it can be represented as follows:

Harr Wavelet:

\[
    \begin{equation}
    \begin{aligned}
    &\phi(\tau) = \begin{cases}
    1, & 0 \le \tau < \frac{1}{2},\\
    -1, & \frac{1}{2} \le \tau < 1,\\
    0, & \text{ otherwise}.
    \end{cases}
    \end{aligned}
    \end{equation}
\]

Attributes:

Name Type Description
wavelet callable

Haar wavelet function used during the transformation.

Methods:

Name Description
Inherits all methods from `discrete_wavelet_expansion`.
Source code in tinybig/expansion/wavelet_expansion.py
class harr_wavelet_expansion(discrete_wavelet_expansion):
    r"""
        Haar Wavelet Expansion.

        Applies the Haar wavelet function for feature expansion.

        Notes
        ----------
        Formally, given the input variable $\mathbf{x} \in R^{m}$, to approximate the underlying mapping $f: R^m \to R^n$ with wavelet analysis, we can define the approximated output as

        $$
            \begin{equation}
            f(\mathbf{x}) \approx \sum_{s, t} \left \langle f(\mathbf{x}), \phi_{s, t} (\mathbf{x} | a, b) \right \rangle \cdot \phi_{s, t} (\mathbf{x} | a, b),
            \end{equation}
        $$

        where $\phi_{s, t} (\cdot | a, b)$ denotes the child wavelet defined by hyper-parameters $a > 1$ and $b > 0$:

        $$
            \begin{equation}
            \phi_{s, t}(x | a, b) = \frac{1}{\sqrt{a^s}} \phi \left( \frac{x - t \cdot b \cdot a^s}{a^s} \right).
            \end{equation}
        $$

        Based on the wavelet mapping $\phi_{s, t} (\cdot | a, b)$, we can introduce the $1_{st}$-order and $2_{nd}$-order wavelet data expansion functions as follows:

        $$
            \begin{equation}
            \kappa(\mathbf{x} | d=1) = \left[ \phi_{0, 0}(\mathbf{x}), \phi_{0, 1}(\mathbf{x}), \cdots, \phi_{s, t}(\mathbf{x}) \right] \in R^{D_1}.
            \end{equation}
        $$

        and

        $$
            \begin{equation}
            \kappa(\mathbf{x} | d=2) = \kappa(\mathbf{x} | d=1) \otimes \kappa(\mathbf{x} | d=1) \in R^{D_2}.
            \end{equation}
        $$

        The output dimensions of the order-1 and order-2 wavelet expansions are $D_1 = s \cdot t \cdot m$ and $D_2 = (s \cdot t \cdot m)^2$, respectively.

        Specifically, the functions $\left\{ \phi_{s, t}\right\}_{ s, t \in Z}$ defines the orthonormal basis of the space and
        the mapping $\phi(\cdot)$ used in the child wavelet may have different representations.

        For Harr wavelet, it can be represented as follows:

        __Harr Wavelet:__

        $$
            \begin{equation}
            \begin{aligned}
            &\phi(\tau) = \begin{cases}
            1, & 0 \le \tau < \frac{1}{2},\\
            -1, & \frac{1}{2} \le \tau < 1,\\
            0, & \text{ otherwise}.
            \end{cases}
            \end{aligned}
            \end{equation}
        $$


        Attributes
        ----------
        wavelet : callable
            Haar wavelet function used during the transformation.

        Methods
        -------
        Inherits all methods from `discrete_wavelet_expansion`.
    """
    def __init__(self, name: str = 'harr_wavelet_expansion', a: float = 1.0, b: float = 1.0, *args, **kwargs):
        """
            Initializes the Haar wavelet expansion.

            Parameters
            ----------
            name : str, optional
                Name of the transformation. Defaults to 'harr_wavelet_expansion'.
            a : float, optional
                The scaling factor for the wavelet. Defaults to 1.0.
            b : float, optional
                The translation factor for the wavelet. Defaults to 1.0.
            *args : tuple
                Additional positional arguments.
            **kwargs : dict
                Additional keyword arguments.
        """
        super().__init__(name=name, *args, **kwargs)
        self.wavelet = harr_wavelet(a=a, b=b)

__init__(name='harr_wavelet_expansion', a=1.0, b=1.0, *args, **kwargs)

Initializes the Haar wavelet expansion.

Parameters:

Name Type Description Default
name str

Name of the transformation. Defaults to 'harr_wavelet_expansion'.

'harr_wavelet_expansion'
a float

The scaling factor for the wavelet. Defaults to 1.0.

1.0
b float

The translation factor for the wavelet. Defaults to 1.0.

1.0
*args tuple

Additional positional arguments.

()
**kwargs dict

Additional keyword arguments.

{}
Source code in tinybig/expansion/wavelet_expansion.py
def __init__(self, name: str = 'harr_wavelet_expansion', a: float = 1.0, b: float = 1.0, *args, **kwargs):
    """
        Initializes the Haar wavelet expansion.

        Parameters
        ----------
        name : str, optional
            Name of the transformation. Defaults to 'harr_wavelet_expansion'.
        a : float, optional
            The scaling factor for the wavelet. Defaults to 1.0.
        b : float, optional
            The translation factor for the wavelet. Defaults to 1.0.
        *args : tuple
            Additional positional arguments.
        **kwargs : dict
            Additional keyword arguments.
    """
    super().__init__(name=name, *args, **kwargs)
    self.wavelet = harr_wavelet(a=a, b=b)