--- 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
[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.
[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