Evalml: [Discusión] ¿Son AutoClassifer.fit () y AutoRegressor.fit () la mejor API?

Creado en 5 nov. 2019  ·  10Comentarios  ·  Fuente: alteryx/evalml

Después de llamar a Fit, debe seleccionar el modelo que desea usar antes de llamar a predict . De esa manera, no es como otros objetos que tienen un método de ajuste. fit es más como search en este caso.

Comentario más útil

Sí, estoy de acuerdo. Regressor también puede referirse a las características de entrada, variables, etc., por lo que la regresión es mejor.

Además, si la clasificación automática y la regresión automática son más análogas al "aprendizaje automático automático", ya que el aprendizaje automático, la clasificación y la regresión son todos procesos.

a menos que haya una oposición final, iremos con

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()

Todos 10 comentarios

A mi modo de ver, hay tres decisiones que tomar

  1. Como llamamos a la clase
  2. ¿Cuál es el nombre recomendado de la variable que contiene la clase inicializada?
  3. ¿Cuál es el método con el que arranca las cosas?

Para 1 y 2, aquí están las opciones que se me ocurrieron.

import evalml

clf = evalml.AutoClassifierSearch()
auto = evalml.AutoClassifierSearch()
automl = evalml.AutoClassifierSearch()
seacher = evalml.AutoClassifierSearch()

clf = evalml.AutoClassifier()
auto = evalml.AutoClassifier()
automl = evalml.AutoClassifier()
seacher = evalml.AutoClassifier()

Para 2 y 3, estas son las opciones que se me ocurrieron.

clf.search()
auto.search()
automl.search()
seacher.search()

clf.run()
auto.run()
automl.run()
seacher.run()

pienso que me gusta

import evalml
automl = evalml.AutoClassifierSearch()
automl.search()

Mi razonamiento es

  1. La clase evalml.AutoClassifierSearch es descriptiva. Es una búsqueda, no un clasificador en sí mismo.
  2. El método le dice específicamente qué está sucediendo cuando lo llama. run() es muy general.
  3. El nombre de la variable es amplio y no entra en conflicto con las convenciones de usar clf con herramientas como sklearn.

La alternativa que me gusta es

import evalml
search = evalml.AutoClassifierSearch()
search.run()

Esto usa un nombre de variable más descriptivo, por lo que usar run() estaría bien. La ventaja de esto es que no introduce el término adicional automl en nuestros ejemplos. Mi preocupación sería que un usuario pudiera buscar por nombre lo que quisiera y luego my_custom_variable_name.run() no es muy descriptivo.

¿Alguna idea? ¿Algún enfoque de nomenclatura variable que me perdí? Incluso si no cree que sean mejores, también podría tirarlos para que los consideremos.

Me gusta AutoClassifierSearch() por las mismas razones que mencionaste anteriormente, pero no soy un fanático de llamar a la variable automl ya que parece amplia y search ya que es un verbo. ¿Qué opinas de autosearch.run() ? Alguien propuso searcher en nuestra reunión y eso funciona muy bien, pero no sale tan bien de la lengua.

Me gusta bastante AutoClassifierSearch() y usar search() ya que estoy de acuerdo en que run() podría ser demasiado genérico si el usuario define su propio nombre de variable.

Para el nombre recomendado de la variable que contiene la clase inicializada, soy fan de automl , searcher o autosearch / autosearcher sobre search , incluso si elegimos run() . (Hice una breve búsqueda en Google y automl o aml aparecen para algunas otras bibliotecas, por lo que vale).

@jeremyliweishih No estoy seguro de haber entendido tu punto sobre search() . Creo que el objetivo sería elegir un verbo descriptivo para ese método. ¿Puedes aclarar lo que estabas diciendo?

Con suerte no estoy malinterpretando, pero creo que @jeremyliweishih está diciendo search ya que el nombre recomendado de la variable es un poco extraño porque es un verbo ... al menos, esa fue también la sensación que tuve: D

@ kmax12 Quise decir ese comentario sobre el nombre recomendado de la variable: search = AutoClassifierSearch() . Para aclarar, creo que AutoClassifierSearch() para el nombre de la clase sería genial y autosearch podría funcionar para el nombre de la variable. autosearch = AutoClassifierSearch() . Quizás otro nombre de variable de tres letras también podría funcionar (aml, asc, ats).

@jeremyliweishih, entiendo lo que estabas diciendo ahora. estoy de acuerdo.

Basado en lo anterior, creo que a todos nos gusta cambiar el nombre a AutoClassifierSearch y AutoRegressorSearch .

En términos del nombre de la variable, también estamos abajo

autosearch = AutoClassifierSearch()
automl = AutoClassifierSearch()
aml = AutoClassifierSearch()

Personalmente, me gusta automl ya que es descriptivo. aml es similar si sabes lo que significa, pero no creo que sea tan intuitivo. esto es lo que he visto que utiliza H20 en sus documentos (¿hay otras bibliotecas?). Generalmente no soy un fanático de acortar los nombres de las variables sin una buena razón. La única ventaja que veo en aml es que tiene 3 caracteres en lugar de 6.

autosearch tiene sentido para mí ya que básicamente es el nombre de la clase. sin embargo, es más largo que automl y no estoy seguro de que añada claridad. Si tuviéramos que seguir la ruta autosearch , creo que el método debería ser run , ya que autosearcher = AutoClassifierSearch(); autosearcher.search() parece una exageración en la búsqueda, jaja.

Entonces veo dos opciones basadas en la conversación anterior.

automl = AutoClassifierSearch()
automl.search()

o

autosearch = AutoClassifierSearch()
autosearch.run()

Creo que cualquiera funcionaría, ¡pero me gusta .search() más de .run() !

Me gustan todas las ideas que has descartado. Soy un fan particular de:

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()

No para complicar una discusión ya larga con más opciones, pero: ¿deberíamos decir AutoRegressorSearch o AutoRegressionSearch ? Soy parcial por lo último. No escucho el término "regresor" tanto como escucho "modelo de regresión" y lo mismo ocurre con la clasificación

Sí, estoy de acuerdo. Regressor también puede referirse a las características de entrada, variables, etc., por lo que la regresión es mejor.

Además, si la clasificación automática y la regresión automática son más análogas al "aprendizaje automático automático", ya que el aprendizaje automático, la clasificación y la regresión son todos procesos.

a menos que haya una oposición final, iremos con

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()
¿Fue útil esta página
0 / 5 - 0 calificaciones