Skip to content

Instantly share code, notes, and snippets.

@leliel12
Last active May 26, 2020 16:38
Show Gist options
  • Select an option

  • Save leliel12/6751e170b867184f18db120028249f61 to your computer and use it in GitHub Desktop.

Select an option

Save leliel12/6751e170b867184f18db120028249f61 to your computer and use it in GitHub Desktop.

--- Para pablo

Bueno los pasos del experimento son los siguientes

  • El experimento consiste en entrenar un clasificador con dos tiles y 2000 fuentes cada uno y tratar de aprender de que tile es cada una de esas fuentes.

  • Las 2000 fuentes son sacas al azar sin reposicion y todas son desconocidas.

  • El clasificador se entrena siempre usando 10 kfolds.

  • Primero se buscaros cuales eran los hiper parametros para los clasificadores

    • SVM-Linear
    • SVM-RBF
    • RF.
    • KNN Para esto se utilizaron un dataset compuesto de los tiles b261 y b278 (los mas estudiados (y tal vez muy cercanos)).

    Para la busqueda de los parametros se utilizo un grid search que maximiza la presicion con los siguientes parámetros:

    • SVM-Linear
      • 'C': [1, 10, 100, 104, 105, 106].
    • KNN -
      • weights": ['uniform', 'distance'],
      • p : [1, 2, 3],
      • n_neighbors": [5, 10, 40, 45, 50, 55, 56, 57, 58, 59, 60, 100]
    • RF -
      • 'max_features': ['auto', 'sqrt', "log2", None, 0.2, 0.5],
      • "min_samples_split": [2, 5, 10],
      • "n_estimators": [500],
      • "criterion": ["entropy"].
    • SVM-RBF -
      • 'C': [1, 10, 30, 50, 100],
      • gamma: np.array([1.e-4, 3.e-4, 1.e+3, 3.e-3]),

    Notas:

    • En todos los casos lo que se hizo fue una combinacion de todos los parametros.
    • Algunos hiperparametros ya son los finales ajustados manualmente a valores que daban mejores resultados.

    El ganador fue SVM-Lineal con C=100 que daba una precision de ~0.85 (El plot completo esta aca https://github.com/leliel12/denoise/blob/master/plots/cmp_models_curve.pdf)

  • El siguiente paso consistio en buscar cuales son los features que mejor separaban estas dos clases/tiles.

  • Se utilizo un RFE como explica el paper Guyon et al (se adjunta link a documentación al final)[1][2] seleccionando y eliminando de a 1 feature por vez, con la salvedad de que cada evaluación de un feature se realizco haciendo un CROSS-Validation de 10 K-Folds.

  • De esto se seleccionaron 28 features y el listado completo puede encontrarse en [3], a este set de features lo llame.

  • Al total de features lo llame "All-Features", a los 28 seleccionado "RFE", y al restante "Not-RFE".

  • Al comparar estos 3 subsets de features con la clasificacion b278-b261 se puede observar como RFE explica casi igual que All-Features https://github.com/leliel12/denoise/blob/master/plots/rfe_curve.pdf

  • Luego arme los heatmap comparando entre todos las combinaciones posibles de los tiles para los 3 subsets de featutes. Los resultados estan en [4] (se puede hacer zoom)

  • finalmente se hizo el experimento de tratar de clasificar las variables que fracazo

Referencias

[0] RFE con Cross Validation: https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html#sklearn.feature_selection.RFECV

[1] Guyon, I., Weston, J., Barnhill, S., & Vapnik, V., “Gene selection for cancer classification using support vector machines”, Mach. Learn., 46(1-3), 389–422, 2002.

[2] https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFE.html#sklearn.feature_selection.RFE

[3] Tabla con listado de features https://github.com/leliel12/denoise/blob/master/05_FS_analysis.ipynb

[4] https://github.com/leliel12/denoise/blob/master/07_tables.ipynb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment