Pular para o conteúdo

A etapa ML: Treinar modelo ajusta um modelo scikit-learn em uma tabela de origem e grava o resultado como uma tabela de modelo. A tabela de modelo flui pelo fluxo de trabalho como qualquer outra tabela: passe-a para uma etapa ML: Pontuar para anexar previsões a uma tabela de dados ou consulte-a diretamente para inspecionar as métricas de treinamento. A etapa é executada como um job gerenciado do PlaidCloud (como a etapa de LLM), de modo que o treinamento não compete por recursos com o restante do fluxo de trabalho.

linhas de treinamentoatributos + rótulo conhecidoTreinarajustar um algoritmoartefato de modelosalvo, reutilizável→ usado por ML: Pontuar
ML: Treinar modelo ajusta um algoritmo em linhas cujo rótulo já é conhecido e produz um artefato de modelo salvo que ML: Pontuar aplica a novas linhas.
  • Tabela de treinamento: a tabela usada no treinamento. Linhas com valor de destino vazio são excluídas do treinamento.
  • Tabela de modelo: a tabela de saída que recebe o registro do modelo.
  • Algoritmo: o modelo a ser ajustado:

    Algoritmo Valor Família
    Regressão logística logistic_regression Classificação
    Classificador de árvore de decisão decision_tree Classificação
    Classificador de floresta aleatória random_forest Classificação
    Classificador de gradient boosting (estilo XGBoost) xgb_classifier Classificação
    Regressão linear linear_regression Regressão
    Regressor de árvore de decisão decision_tree_regressor Regressão
    Regressor de floresta aleatória random_forest_regressor Regressão

    O algoritmo estilo XGBoost é um HistGradientBoostingClassifier do scikit-learn, um substituto estatisticamente equivalente ao XGBoost, e não um wrapper em torno dele. Consulte Limites e ressalvas.

  • Coluna de destino: a coluna a ser prevista. É obrigatória, exceto para os algoritmos não supervisionados e para sota, cuja coluna de classe é opcional. Os destinos de classificação são tratados como rótulos de texto; os destinos de regressão são convertidos em números, e as linhas cujo destino não pode ser interpretado como número são excluídas.

A lista Algoritmo também oferece estes algoritmos. Os fluxos de trabalho KNIME convertidos também os usam.

Algoritmos O que são
xgboost_classifier, xgboost_regressor, xgboost_linear_classifier, xgboost_linear_regressor O próprio XGBoost, com o booster de árvore ou linear
gradient_boosting_classifier, gradient_boosting_regressor Gradient boosting do scikit-learn
svm, svm_regressor, mlp, mlp_regressor, dummy, dummy_regressor Máquinas de vetores de suporte, perceptrons multicamadas e modelos de referência do scikit-learn
knime_decision_tree, knime_tree_ensemble, naive_bayes, knn, lda, pnn_dda, fuzzy_rules, sota Os próprios aprendizes do KNIME, que produzem os resultados do KNIME; seus hiperparâmetros são as configurações do KNIME
kmeans, dbscan, optics, pca, mds, tsne, isolation_forest, apriori, fp_growth Os algoritmos não supervisionados do KNIME: sem coluna de destino, e as colunas de atributos são as colunas numéricas (para apriori e fp_growth, a única coluna de listas de itens)
kmedoids, fuzzy_cmeans, hierarchical, hierarchical_tree, silhouette, h2o_pca, mds_projection, smote, target_shuffling, knn_distance, prediction_fusion, al_uncertainty, al_combiner, al_selector, al_density, al_density_table, distribution_creator, distribution_splitter, weak_label, als, rule_table, optics_table, dose_response Os nós do KNIME de agrupamento, amostragem, aprendizado ativo, recomendação (als: as colunas de atributos são o usuário e o produto, e o destino é a avaliação), regras de associação e dose-resposta

dbscan, mds, tsne e os outros algoritmos que não têm modelo separado de seus dados mantêm suas configurações na tabela de modelo, e ML: Pontuar organiza a tabela que recebe.

Um objeto JSON opcional com hiperparâmetros do scikit-learn para o algoritmo escolhido, por exemplo {"max_depth": 5, "n_estimators": 200}. Chaves desconhecidas são rejeitadas ao salvar a etapa, de modo que um parâmetro digitado incorretamente falha imediatamente em vez de ser ignorado silenciosamente. Os fluxos de trabalho convertidos do Alteryx também podem conter chaves sentinela no estilo do Alteryx, como max_depth_none; elas são traduzidas para você.

Alguns parâmetros legados que o scikit-learn removeu são aceitos, mas não aplicados (por exemplo presort, ou os ajustes de árvore do XGBoost listados em Limites e ressalvas); tudo o que for descartado dessa forma é registrado em dropped_params, no params_json da tabela de modelo, de modo que nada desaparece silenciosamente.

A guia Atributos mostra uma linha para cada coluna da tabela de origem:

  • Atributo: marque as colunas a serem usadas no treinamento. Deixe todas as caixas desmarcadas para treinar com todas as colunas, exceto o destino. Com todas as caixas desmarcadas, a etapa treina com as colunas que a tabela tiver no momento da execução; liste colunas em Excluir colunas (exclude_columns) para deixar algumas de fora.
  • Substituição de tipo: force o tratamento de uma coluna como Numérico ou Categórico, ou deixe em (inferir) para derivar o tipo do tipo da coluna da tabela.

A preparação dos atributos corresponde ao Alteryx Assisted Modeling: os atributos numéricos são convertidos em números (valores que não podem ser interpretados viram ausentes) e os valores ausentes são imputados com a mediana; os atributos categóricos são tratados como texto, imputados com o valor mais frequente e codificados com one-hot. Valores que um atributo categórico nunca viu durante o treinamento são ignorados no momento da pontuação.

A tabela de modelo tem estas colunas:

Coluna Conteúdo
model_pickle_b64 O pipeline scikit-learn ajustado (serializado com pickle, compactado e codificado em base64). Modelos grandes são divididos em várias linhas; consulte Como o modelo é armazenado.
chunk_index A posição da parte do modelo desta linha, contada a partir de 0.
algorithm O valor do algoritmo, por exemplo logistic_regression.
params_json JSON: os parâmetros do scikit-learn aplicados, os tipos de atributos usados e quaisquer dropped_params.
feature_names_json Matriz JSON: as colunas de atributos, em ordem, que o modelo espera no momento da pontuação.
class_labels_json Matriz JSON de rótulos de classe (classificadores) ou null (regressores).
metrics_json Métricas de treinamento em JSON; veja abaixo.
trained_at Carimbo de data/hora UTC da execução do treinamento.

Como o modelo é uma tabela comum, você pode consultá-lo como tal; por exemplo, extraia metrics_json em uma etapa posterior para condicionar um fluxo de trabalho à qualidade do modelo.

metrics_json contém uma chave kind (classification ou regression), train_accuracy para classificadores ou train_r2 e train_rmse para regressores, e n_training_rows.

Um modelo ajustado pode ser grande (uma floresta aleatória mantida nas cem árvores padrão pode chegar a centenas de megabytes), e isso é mais do que um data warehouse aceita como um único valor. Por isso, o modelo é compactado e, se ainda for grande demais para uma linha, dividido em quantas linhas forem necessárias. Cada linha repete as colunas acima, então qualquer uma delas informa o algoritmo, os parâmetros, os atributos e as métricas; apenas model_pickle_b64 e chunk_index diferem entre elas.

Isso importa em dois casos:

  • Leitura das métricas. Uma tabela de modelo pode conter mais de uma linha, portanto leia as métricas de uma única linha em vez de presumir que há apenas uma, por exemplo com WHERE chunk_index = 0.
  • Remontagem do modelo por conta própria. Se você ler model_pickle_b64 fora do PlaidCloud, concatene as partes na ordem de chunk_index, decodifique de base64 e descompacte antes de desserializar com pickle.

Uma etapa ML: Pontuar faz tudo isso por você. Ela também verifica se todas as partes estão presentes e para com um erro se alguma estiver ausente, em vez de pontuar com um modelo incompleto.

  • As métricas de treinamento são calculadas sobre o conjunto de treinamento: não há divisão de reserva (holdout) nem validação cruzada nesta versão. Trate-as como uma verificação de ajuste, não como uma estimativa do desempenho fora da amostra.
  • Conjunto de trabalho em memória: a tabela de treinamento é lida na memória, então a etapa é indicada para cerca de um milhão de linhas. Faça amostragem ou agregue tabelas maiores antes.
  • Tamanho máximo do modelo: um modelo ajustado é rejeitado se passar de 128 MB depois de compactado, e a etapa para assim que o treinamento termina, com uma mensagem que informa o tamanho e o limite. Para ter uma referência: uma floresta aleatória de cem árvores sobre 17.000 linhas e 17 atributos chega a cerca de 56 MB, então o limite é aproximadamente o dobro disso. Se você o atingir, treine menos árvores (n_estimators) ou limite max_depth.
  • Aproximação do XGBoost: xgb_classifier treina um HistGradientBoostingClassifier do scikit-learn; os algoritmos xgboost_* executam o próprio XGBoost. Os parâmetros de árvore específicos do XGBoost gamma, min_child_weight, subsample e a família colsample_* não têm equivalente e são descartados (registrados em dropped_params e nas notas de mapeamento da etapa quando ela foi convertida do Alteryx). Valide as métricas do modelo em relação à sua execução de referência antes de confiar na paridade.
  • A conversão do AutoML escolhe um algoritmo, não uma busca: uma ferramenta AutoML do Alteryx é fundida a esta etapa da mesma forma que Classification e Regression, mas o AutoML nunca registra qual dos algoritmos candidatos de fato venceu durante a execução no Alteryx. A conversão escolhe o primeiro algoritmo marcado que esta etapa oferece e anota a escolha, em vez de reproduzir uma busca automatizada; nenhum ciclo de seleção de modelo é executado aqui. Compare uma etapa AutoML convertida com seus próprios resultados do Alteryx.