Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

271
Views
Cómo usar el bosque de aislamiento

Estoy tratando de detectar los valores atípicos en mi conjunto de datos y encuentro el bosque de aislamiento de sklearn. No puedo entender cómo trabajar con él. Encajo mis datos de entrenamiento y me devuelve un vector con valores -1 y 1.

¿Alguien puede explicarme cómo funciona y dar un ejemplo?

¿Cómo puedo saber que los valores atípicos son valores atípicos "reales"?

¿Parámetros de sintonización?

Aquí está mi código:

 clf = IsolationForest(max_samples=10000, random_state=10) clf.fit(x_train) y_pred_train = clf.predict(x_train) y_pred_test = clf.predict(x_test) [1 1 1 ..., -1 1 1]
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Parece que tiene muchas preguntas, permítame tratar de responderlas una por una según mi leal saber y entender.

¿Cómo funciona?

Funciona debido al hecho de que la naturaleza de los valores atípicos en cualquier conjunto de datos, que son valores atípicos, es poca y diferente , lo cual es bastante diferente del algoritmo típico basado en agrupamiento o basado en la distancia. En el nivel superior, funciona con la lógica de que los valores atípicos toman menos pasos para 'aislar' en comparación con el punto 'normal' en cualquier conjunto de datos. Para hacerlo, esto es lo que hace IF; suponga que tiene un conjunto de datos de entrenamiento X con n puntos de datos, cada uno con m características. En el entrenamiento, IF crea árboles de aislamiento (árboles de búsqueda binaria) para diferentes características.

Para el entrenamiento, tienes 3 parámetros para ajustar durante la fase de entrenamiento :

  1. número de árboles de aislamiento ( n_estimators en sklearn_IsolationForest)
  2. número de muestras ( max_samples en sklearn_IsolationForest)
  3. número de características para dibujar de X para entrenar cada estimador base ( max_features en sklearn_IF).

max_samples es el número de muestras aleatorias que seleccionará del conjunto de datos original para crear árboles de aislamiento.

Durante la fase de prueba :

  • sklearn_IF encuentra la longitud de ruta del punto de datos bajo prueba de todos los árboles de aislamiento entrenados y encuentra la longitud de ruta promedio. Cuanto mayor sea la longitud de la trayectoria, más normal será el punto y viceversa.

  • Basado en la longitud de ruta promedio. Calcula la puntuación de anomalía, se puede usar decision_function de sklearn_IF para obtener esto. Para sklearn_IF, cuanto más baja es la puntuación, más anómala es la muestra.

  • En función de la puntuación de anomalía, puede decidir si la muestra dada es anómala o no estableciendo el valor adecuado de contamination en el objeto sklearn_IF. El valor predeterminado de contamination es 0,1, que puede ajustar para decidir el umbral. La cantidad de contaminación del conjunto de datos, es decir, la proporción de valores atípicos en el conjunto de datos.

Parámetros de ajuste

Entrenamiento -> n_estimators , max_samples , max_features .

Pruebas -> contamination

over 4 years ago · Santiago Trujillo Report

0

-1 representa los valores atípicos (según el modelo ajustado). Consulte el ejemplo de IsolationForest para ver una buena descripción del proceso. Si tiene algún conocimiento previo, podría proporcionar más parámetros para obtener un ajuste más preciso. Por ejemplo, si conoce la contaminación (proporción de valores atípicos en el conjunto de datos), podría proporcionarla como entrada. Por defecto se supone que es 0.1. Ver descripción de los parámetros aquí .

over 4 years ago · Santiago Trujillo Report

0

Permítanme agregar algo, que me quedé atascado, cuando leí esta pregunta.

La mayoría de las veces lo usa para la clasificación binaria (supongo), donde tiene una clase mayoritaria 0 y una clase atípica 1. Por ejemplo, si desea detectar fraude , entonces su clase principal es sin fraude (0) y el fraude es (1).

Ahora, si tiene una división de entrenamiento y prueba: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

y corres:

 clf = IsolationForest(max_samples=10000, random_state=10) clf.fit(x_train) y_pred_test = clf.predict(x_test)

La salida para la puntuación del clasificador "normal" puede ser bastante confusa. Como ya se mencionó, y_pred_test constará de [-1,1], donde 1 es su clase mayoritaria 0 y -1 es su clase menor 1. Entonces, puedo recomendarle que lo convierta:

 y_pred_test = np.where(y_pred_test == 1, 0, 1)

Entonces puede usar sus funciones de puntuación normales, etc.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!