SubspaceScout


import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sheshe import SubspaceScout, ModalBoundaryClustering

X, y = load_iris(return_X_y=True)
scout = SubspaceScout().fit(X, y)
pair = scout.results_[0]["features"]
ModalBoundaryClustering().fit(X[:, pair], y).plot_classes(X[:, pair], y)
plt.show()

Identifica subconjuntos de características informativos para que ModalBoundaryClustering se ejecute solo donde importa en espacios de alta dimensión. Usa información mutua u opcionalmente calificadores basados en modelos para clasificar interacciones y emplea búsqueda en haz para enumerar subespacios prometedores.

Formulación matemática

La información mutua entre un subconjunto X y el objetivo Y es I(X;Y)=∑_{x,y} p(x,y) log(p(x,y)/(p(x)p(y))).

El objetivo de sinergia para un conjunto S es Synergy(S) = I(S;Y) - ∑_{i∈S} I(X_i;Y), capturando información más allá de las características individuales.

La búsqueda en haz crece subespacios orden por orden y retiene aquellos con mayores puntuaciones.

Ejemplo


from sheshe import SubspaceScout
scout = SubspaceScout()
scout.fit(X, y)
subspaces = scout.results_

Ejemplos de uso


from sheshe import SubspaceScout

scout = SubspaceScout(random_state=0)
scout.fit(X, y)          # fit

from sheshe import SubspaceScout

scout = SubspaceScout(random_state=0).fit(X, y)
results = scout.results_ # access discovered subspaces

Ejemplos adicionales


from sheshe import SubspaceScout

scout = SubspaceScout(
    # model_method='lightgbm',  # por defecto usa información mutua
    max_order=4,
    top_m=50,
    base_pairs_limit=12,
    beam_width=10,
    extend_candidate_pool=16,
    branch_per_parent=4,
    marginal_gain_min=1e-3,
    max_eval_per_order=150,
    sample_size=4096,
    time_budget_s=None,
    task='classification',
    random_state=0,
)
subspaces = scout.fit(X, y)

Parámetros

  • model_method (None o "lightgbm" o "ebm", por defecto None): modelo usado para puntuar subespacios. None usa información mutua.
  • max_order (int, por defecto 3): tamaño máximo de combinaciones de características a explorar.
  • n_bins (int, por defecto 8): número de bins para discretizar características.
  • top_m (int, por defecto 20): número de características preseleccionadas por información mutua individual.
  • branch_per_parent (int, por defecto 5): máximo de extensiones generadas por subespacio padre.
  • density_occup_min (float, por defecto 0.03): ocupación mínima para que un subespacio sea válido.
  • min_support (int, por defecto 30): número mínimo de muestras requerido en un subespacio.
  • sample_size (int o None, por defecto 4096): tamaño de muestra opcional para acelerar cálculos.
  • task ("classification" o "regression", por defecto "classification"): tipo de tarea.
  • random_state (int, por defecto 0): semilla para reproducibilidad.
  • base_pairs_limit (int, por defecto 12): número máximo de pares semilla para búsquedas de orden superior.
  • beam_width (int, por defecto 12): número de candidatos retenidos en cada orden durante la búsqueda en haz.
  • extend_candidate_pool (int o None, por defecto 16): características candidatas aleatorias por padre cuando el orden ≥3.
  • marginal_gain_min (float, por defecto 1e-3): ganancia mínima de sinergia para aceptar una extensión.
  • max_eval_per_order (int o None, por defecto 1000): límite de evaluaciones de información mutua por orden.
  • time_budget_s (float o None, por defecto None): presupuesto de tiempo global en segundos para fit.
  • objective ("mi_joint" o "mi_synergy", por defecto "mi_joint"): puntuación usada para ordenar subespacios.
  • min_per_order (int, por defecto 1): número mínimo de subespacios a conservar por orden.

Métodos

  • fit(X, y) – descubre subespacios y los almacena en results_.