Evalml: [Discutir] AutoClassifer.fit () e AutoRegressor.fit () são a melhor API?

Criado em 5 nov. 2019  ·  10Comentários  ·  Fonte: alteryx/evalml

Depois de chamar o ajuste, você precisa selecionar o modelo que deseja usar antes de chamar predict . Dessa forma, não é como outros objetos que possuem um método de ajuste. fit é mais parecido com search neste caso.

Comentários muito úteis

Sim, eu concordo. O regressor também pode se referir aos recursos de entrada, variáveis, etc., portanto, a regressão é melhor.

Além disso, se AutoClassification e AutoRegression forem mais análogos a "aprendizado de máquina automático", já que aprendizado de máquina, classificação e regressão são todos processos.

a menos que haja alguma oposição final, iremos com

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

Todos 10 comentários

A meu ver, há três decisões a serem tomadas

  1. Como chamamos a classe
  2. Qual é o nome recomendado da variável que contém a classe inicializada
  3. Qual é o método que dá o pontapé inicial

Para 1 e 2, aqui estão as opções que eu criei

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 e 3, aqui estão as opções que criei

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

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

Eu acho que eu gosto

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

Meu raciocínio é

  1. A classe evalml.AutoClassifierSearch é descritiva. É uma pesquisa, não um classificador em si
  2. O método informa especificamente o que está acontecendo quando você o chama. run() é muito geral.
  3. O nome da variável é amplo e não entra em conflito com as convenções de uso de clf com ferramentas como sklearn.

A alternativa que gosto é

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

Isso usa um nome de variável mais descritivo, portanto, usar run() seria adequado. A vantagem disso é que ele não introduz o termo automl extra em nossos exemplos. Minha preocupação seria que um usuário pudesse pesquisar o nome que quisesse e então my_custom_variable_name.run() não é muito descritivo.

Alguma ideia? Alguma abordagem de nomenclatura de variável que eu perdi? Mesmo que você não ache que eles são melhores, pode muito bem jogá-los lá para que os consideremos.

Eu gosto de AutoClassifierSearch() pelos mesmos motivos que você declarou acima, mas não sou muito fã de chamar a variável automl porque parece ampla e search porque é um verbo. O que você acha sobre autosearch.run() ? Alguém propôs searcher em nossa reunião e isso funciona bem, mas não sai da boca tão bem.

Eu gosto bastante de AutoClassifierSearch() e usando search() porque concordo que run() pode ser muito genérico se o usuário definir seu próprio nome de variável.

Para o nome recomendado da variável que contém a classe inicializada, sou fã de automl , searcher ou autosearch / autosearcher sobre search , mesmo que usássemos run() . (Fiz uma breve pesquisa no google e automl ou aml apareceu para algumas outras bibliotecas lá fora, para o que vale a pena).

@jeremyliweishih não tenho certeza se entendi seu ponto sobre search() . Acho que o objetivo seria escolher um verbo descritivo para esse método. você pode esclarecer o que estava dizendo?

Espero não estar entendendo mal, mas acho que @jeremyliweishih está dizendo search porque o nome recomendado da variável é um pouco estranho porque é um verbo ... pelo menos, foi essa a sensação que tive: D

@ kmax12 Eu quis dizer aquele comentário sobre o nome recomendado da variável: search = AutoClassifierSearch() . Para esclarecer, acho que AutoClassifierSearch() para o nome da classe seria ótimo e autosearch poderia funcionar para o nome da variável. autosearch = AutoClassifierSearch() . Talvez outro nome de variável de três letras também funcione (aml, asc, ats).

@jeremyliweishih eu entendo o que você estava dizendo agora. eu concordo.

Com base no que precede, acho que todos gostamos de renomear para AutoClassifierSearch e AutoRegressorSearch .

Em termos de nome de variável, também diminuímos

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

Eu pessoalmente gosto do automl, pois é descritivo. aml é semelhante se você souber o que significa, mas não acho que seja tão intuitivo. isso é o que eu vi o H20 usar em seus documentos (existem outras bibliotecas?) Em geral, não sou fã de encurtar nomes de variáveis ​​sem um bom motivo. A única vantagem que vejo em aml é que tem 3 caracteres em vez de 6.

autosearch faz sentido para mim, pois basicamente é o nome da classe. no entanto, é mais longo do que automl e não tenho certeza se adiciona clareza. Se fôssemos seguir a rota autosearch , acho que o método deveria ser run , já que autosearcher = AutoClassifierSearch(); autosearcher.search() parece um exagero na busca, haha.

Portanto, vejo duas opções com base na convenção acima

automl = AutoClassifierSearch()
automl.search()

ou

autosearch = AutoClassifierSearch()
autosearch.run()

Acho que qualquer um dos dois funcionaria, mas gosto de .search() vez de .run() !

Gosto de todas as ideias que você jogou fora. Sou um fã particular de:

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

Não para complicar uma discussão já longa com mais opções, mas: devemos dizer AutoRegressorSearch ou AutoRegressionSearch ? Sou parcial para o último. Não ouço o termo "regressor" quase tanto quanto ouço "modelo de regressão" e, da mesma forma, para classificação

Sim, eu concordo. O regressor também pode se referir aos recursos de entrada, variáveis, etc., portanto, a regressão é melhor.

Além disso, se AutoClassification e AutoRegression forem mais análogos a "aprendizado de máquina automático", já que aprendizado de máquina, classificação e regressão são todos processos.

a menos que haja alguma oposição final, iremos com

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

angela97lin picture angela97lin  ·  4Comentários

dsherry picture dsherry  ·  4Comentários

dsherry picture dsherry  ·  4Comentários

dsherry picture dsherry  ·  5Comentários

dsherry picture dsherry  ·  3Comentários