Skip to content

Fix HNOCA kernel to be the squared Jarrad kernel #64

@Marius1311

Description

@Marius1311

Problem

The HNOCA kernel is currently computed as:

kernel_matrix.data /= 2 * n_neighbors - kernel_matrix.data
kernel_matrix.data = kernel_matrix.data**2

This means the base kernel before squaring uses 2 * n_neighbors as the denominator, while the Jarrad (Jaccard-based) kernel uses 4 * n_neighbors:

kernel_matrix.data /= 4 * n_neighbors - kernel_matrix.data  # Jarrad / Jaccard

Fix

To be faithful to the original HNOCA implementation, the HNOCA kernel should be the Jarrad kernel squared, i.e.:

HNOCA(x, y) = Jarrad(x, y)^2

This requires changing the denominator from 2 * n_neighbors to 4 * n_neighbors:

kernel_matrix.data /= 4 * n_neighbors - kernel_matrix.data
kernel_matrix.data = kernel_matrix.data**2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions