Pular para o conteúdo

O passo ML: Treinar modelo ajusta um modelo scikit-learn a uma tabela de origem e escreve o resultado como uma tabela de modelo. A tabela de modelo circula pelo fluxo de trabalho como qualquer outra tabela: transmita-a a um passo ML: Pontuar para acrescentar previsões a uma tabela de dados, ou consulte-a diretamente para inspecionar as métricas de treino. O passo é executado como uma tarefa gerida do PlaidCloud (tal como o passo LLM), pelo que o treino não compete com o resto do fluxo de trabalho pelos recursos.

linhas de treinocaraterísticas + etiqueta conhecidaTreinarajustar um algoritmoartefacto de modeloguardado, reutilizável→ utilizado por ML: Pontuar
O passo Treinar modelo ajusta um algoritmo a linhas cuja etiqueta já é conhecida, produzindo um artefacto de modelo guardado que o passo ML: Pontuar aplica a novas linhas.
  • Tabela de treino: a tabela a utilizar no treino. As linhas com um valor de destino vazio são excluídas do treino.
  • Tabela de modelo: a tabela de saída que recebe o registo do modelo.
  • Algoritmo: o modelo a ajustar:

    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 ao estilo XGBoost é um HistGradientBoostingClassifier do scikit-learn, um substituto estatisticamente equivalente do XGBoost, e não um invólucro em torno deste. Consulte Limites e ressalvas.

  • Coluna de destino: a coluna a prever. É obrigatória, exceto nos algoritmos não supervisionados e em sota, cuja coluna de classe é opcional. Os destinos de classificação são tratados como etiquetas de texto; os destinos de regressão são convertidos em números, e as linhas cujo destino não possa 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 utilizam.

Algoritmos O que são
xgboost_classifier, xgboost_regressor, xgboost_linear_classifier, xgboost_linear_regressor O próprio XGBoost, com o booster de árvores 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, perceptrões multicamada 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 algoritmos de aprendizagem do KNIME, que dão os resultados do KNIME; os respetivos hiperparâmetros são as definições do KNIME
kmeans, dbscan, optics, pca, mds, tsne, isolation_forest, apriori, fp_growth Algoritmos não supervisionados do KNIME: sem coluna de destino, sendo as colunas de caraterísticas as colunas numéricas (em 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 Nós do KNIME de agrupamento, amostragem, aprendizagem ativa, recomendação (als: as colunas de caraterísticas são o utilizador e o produto, e o destino é a classificação), regras de associação e dose-resposta

dbscan, mds, tsne e os outros algoritmos que não têm modelo para além dos respetivos dados guardam as suas definições na tabela de modelo, e o passo 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}. As chaves desconhecidas são rejeitadas ao guardar o passo, pelo que um parâmetro escrito incorretamente falha de imediato em vez de ser ignorado em silêncio. Os fluxos de trabalho convertidos do Alteryx também podem trazer chaves sentinela ao estilo do Alteryx, como max_depth_none; estas são traduzidas automaticamente.

Alguns parâmetros antigos que o scikit-learn removeu são aceites, mas não aplicados (por exemplo presort, ou os parâmetros de árvore do XGBoost indicados em Limites e ressalvas); tudo o que seja descartado desta forma fica registado em params_json da tabela de modelo, em dropped_params, pelo que nada desaparece em silêncio.

O separador Caraterísticas mostra uma linha por coluna da tabela de origem:

  • Caraterística: assinale as colunas a utilizar no treino. Deixe todas as caixas por assinalar para treinar com todas as colunas, exceto o destino. Com todas as caixas por assinalar, o passo treina com as colunas que a tabela tiver no momento da execução; indique 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-a em (deduzir) para obter o tipo a partir do tipo da coluna da tabela.

A preparação das caraterísticas corresponde à Modelação Assistida do Alteryx: as caraterísticas numéricas são convertidas em números (os valores que não possam ser interpretados passam a em falta) e os valores em falta são imputados com a mediana; as caraterísticas categóricas são tratadas como texto, imputadas com o valor mais frequente e codificadas em one-hot. Os valores que uma caraterística categórica nunca viu durante o treino são ignorados na altura da pontuação.

A tabela de modelo tem estas colunas:

Coluna Conteúdo
model_pickle_b64 O pipeline scikit-learn ajustado (serializado com pickle, comprimido e codificado em base64). Os modelos grandes são divididos por várias linhas; consulte Como o modelo é guardado.
chunk_index A posição da parte do modelo desta linha, a contar 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 caraterísticas utilizados e quaisquer dropped_params.
feature_names_json Matriz JSON: as colunas de caraterísticas ordenadas que o modelo espera na altura da pontuação.
class_labels_json Matriz JSON de etiquetas de classe (classificadores) ou null (regressores).
metrics_json Métricas de treino em JSON; veja abaixo.
trained_at Carimbo de data/hora UTC da execução de treino.

Como o modelo é uma tabela comum, pode consultá-lo como tal; por exemplo, extraia metrics_json num passo a jusante para condicionar um fluxo de trabalho à qualidade do modelo.

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

Um modelo ajustado pode ser grande (uma floresta aleatória deixada com as cem árvores predefinidas pode chegar às centenas de megabytes), o que excede o que um armazém de dados aceita como um único valor. Por isso, o modelo é comprimido e, se ainda for demasiado grande para uma linha, dividido por tantas linhas quantas as necessárias. Cada linha repete as colunas acima, pelo que qualquer uma indica o algoritmo, os parâmetros, as caraterísticas e as métricas; apenas model_pickle_b64 e chunk_index diferem entre elas.

Isto é relevante em dois casos:

  • Leitura das métricas. Uma tabela de modelo pode ter mais do que uma linha, pelo que deve ler as métricas a partir de uma única linha em vez de presumir que só existe uma, por exemplo com WHERE chunk_index = 0.
  • Reconstituição do modelo por si. Se ler model_pickle_b64 fora do PlaidCloud, concatene as partes pela ordem de chunk_index, descodifique de base64 e depois descomprima antes de desserializar com pickle.

Um passo ML: Pontuar faz tudo isto por si. Também verifica se todas as partes estão presentes e termina com um erro se faltar alguma, em vez de pontuar com um modelo incompleto.

  • As métricas de treino são calculadas sobre o conjunto de treino: nesta versão não existe divisão de reserva (holdout) nem validação cruzada. Trate-as como uma verificação do ajuste, não como uma estimativa do desempenho fora da amostra.
  • Conjunto de trabalho em memória: a tabela de treino é lida para memória, pelo que o passo visa cerca de um milhão de linhas. Amostre ou agregue primeiro as tabelas maiores.
  • Tamanho máximo do modelo: um modelo ajustado é rejeitado se, depois de comprimido, exceder 128 MB, e o passo termina logo que o treino acaba, com uma mensagem que indica o tamanho e o limite. Para referência: uma floresta aleatória de cem árvores sobre 17 000 linhas e 17 caraterísticas ocupa cerca de 56 MB, pelo que o limite é aproximadamente o dobro disso. Se 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 (registados em dropped_params e nas notas de mapeamento do passo quando este foi convertido do Alteryx). Valide as métricas do modelo face à sua execução de referência antes de contar com paridade.
  • A conversão de AutoML escolhe um algoritmo, não uma pesquisa: uma ferramenta AutoML do Alteryx é fundida neste passo da mesma forma que Classificação e Regressão, mas o AutoML nunca regista qual dos seus algoritmos candidatos venceu na execução do Alteryx. A conversão escolhe o primeiro algoritmo assinalado que este passo suporta e anota a escolha, em vez de reproduzir uma pesquisa automatizada; aqui não é executado nenhum ciclo de seleção de modelos. Compare um passo AutoML convertido com os seus próprios resultados do Alteryx.