O componente Logistic Regression for Binary Classification treina um classificador binário com o algoritmo de regressão logística. Ele aceita dados de entrada densos e esparsos e utiliza o otimizador L-BFGS (Limited-memory BFGS).
Funcionamento
O treinamento ocorre em três etapas:
Processamento de features — O algoritmo lê as colunas de features especificadas (tipos DOUBLE ou BIGINT) e a coluna de rótulo da tabela de entrada. Se a entrada estiver no formato esparso, o componente analisa os pares chave-valor antes do processamento.
Treinamento — O L-BFGS minimiza iterativamente a função de perda. Cada iteração atualiza os pesos do modelo. O treinamento é interrompido quando a melhoria da log-verossimilhança entre duas iterações consecutivas fica abaixo de
epsilonou quando se atinge o número máximo de iterações.Previsão — O modelo treinado atribui a cada linha um rótulo de classe previsto (
prediction_result), uma pontuação de confiança (prediction_score) e uma distribuição de probabilidade entre todas as classes (prediction_detail).
Configure o componente
Escolha um dos métodos a seguir.
Método 1: Configure no Machine Learning Designer
Abra a aba de configuração do pipeline no Machine Learning Designer e defina os parâmetros no painel do componente.
Fields setting
|
Parâmetro |
Descrição |
|
Training feature columns |
Colunas de features da tabela de entrada usadas para treinamento. Aceita os tipos DOUBLE e BIGINT. Limite de 20 milhões de features. |
|
Target columns |
Coluna de rótulo na tabela de entrada. |
|
Positive class value |
Valor do rótulo que representa a classe positiva na classificação binária. |
|
Use sparse format |
Ative esta opção se os dados de entrada estiverem no formato esparso. |
Parameters setting
|
Parâmetro |
Descrição |
Padrão |
|
Regularization type |
Tipo de regularização aplicada durante o treinamento. Valores válidos: None, L1, L2. Consulte Escolher um tipo de regularização. |
— |
|
Maximum iterations |
Número máximo de iterações do L-BFGS. |
100 |
|
Regularization coefficient |
Intensidade da regularização. Não tem efeito quando Regularization type é None. |
— |
|
Minimum convergence deviance |
Limiar de convergência ( |
0,000001 |
Tuning
|
Parâmetro |
Descrição |
|
Cores |
O sistema define automaticamente. |
|
Memory size per core |
O sistema define automaticamente. |
Método 2: Configure usando comandos PAI
Execute o seguinte comando PAI por meio do componente SQL Script.
PAI -name logisticregression_binary
-project algo_public
-DmodelName="xlab_m_logistic_regression_6096"
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="l1"
-Depsilon="0.000001"
-DlabelColName="y"
-DfeatureColNames="pdays,emp_var_rate"
-DgoodValue="1"
-DinputTableName="bank_data"
Parâmetros obrigatórios
|
Parâmetro |
Descrição |
|
|
Nome da tabela de entrada. |
|
|
Coluna de rótulo na tabela de entrada. |
|
|
Nome do modelo offline de saída. |
Parâmetros opcionais
|
Parâmetro |
Descrição |
Padrão |
|
|
Colunas de features usadas para treinamento. Limite de 20 milhões de features. |
Todas as colunas numéricas |
|
|
Partições a serem usadas da tabela de entrada. Formatos: |
Tabela completa |
|
|
Tipo de regularização. Valores válidos: |
|
|
|
Coeficiente de regularização. Não tem efeito quando |
|
|
|
Número máximo de iterações do L-BFGS. |
|
|
|
Limiar de convergência. O treinamento é interrompido quando a melhoria da log-verossimilhança entre duas iterações fica abaixo deste valor. |
|
|
|
Valor do rótulo correspondente à classe positiva. Atribuído aleatoriamente se não for especificado. |
— |
|
|
Indica se os dados de entrada estão no formato esparso. Valores válidos: |
|
|
|
Delimitador entre pares chave-valor na entrada esparsa. |
|
|
|
Delimitador entre chaves e valores na entrada esparsa. |
|
|
|
Número de núcleos. |
Alocação automática |
|
|
Tamanho da memória por núcleo, em MB. |
Alocação automática |
Escolha um tipo de regularização
|
Tipo de regularização |
Quando usar |
Efeito |
|
L1 (padrão) |
Dados de alta dimensionalidade com muitas features irrelevantes |
Leva os coeficientes das features irrelevantes a zero, gerando um modelo esparso |
|
L2 |
A maioria das features é relevante e você deseja evitar coeficientes muito altos |
Reduz todos os coeficientes em direção a zero sem eliminá-los |
|
None |
Conjuntos de dados pequenos ou quando se deseja analisar a linha de base sem regularização |
Nenhuma regularização é aplicada; |
Formato de dados esparsos
Quando enableSparse é true, o componente lê cada célula como uma string de chave-valor. As chaves são índices baseados em zero e os valores devem ser numéricos. Valores de chave não numéricos causam erro.
itemDelimitersepara os pares chave-valor dentro de uma célula.kvDelimitersepara a chave do seu valor.
Exemplo de entrada com os delimitadores padrão (, e :):
|
key_value |
|
1:100,4:200,5:300 |
|
1:10,2:20,3:30 |
Exemplo
Este exemplo demonstra um fluxo completo de treinamento até previsão usando um conjunto de dados denso.
Etapa 1: Crie a tabela de treinamento
DROP TABLE IF EXISTS lr_test_input;
CREATE TABLE lr_test_input AS
SELECT *
FROM (
SELECT CAST(1 AS DOUBLE) AS f0, CAST(0 AS DOUBLE) AS f1, CAST(0 AS DOUBLE) AS f2, CAST(0 AS DOUBLE) AS f3, CAST(0 AS BIGINT) AS label
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(1 AS BIGINT)
UNION ALL
SELECT CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
) a;
A tabela resultante lr_test_input:
|
f0 |
f1 |
f2 |
f3 |
label |
|
1,0 |
0,0 |
0,0 |
0,0 |
0 |
|
0,0 |
0,0 |
1,0 |
0,0 |
1 |
|
0,0 |
0,0 |
0,0 |
1,0 |
1 |
|
0,0 |
1,0 |
0,0 |
0,0 |
0 |
|
1,0 |
0,0 |
0,0 |
0,0 |
0 |
|
0,0 |
1,0 |
0,0 |
0,0 |
0 |
Etapa 2: Treinar o modelo
DROP OFFLINEMODEL IF EXISTS lr_test_model;
PAI -name logisticregression_binary
-project algo_public
-DmodelName="lr_test_model"
-DitemDelimiter=","
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="None"
-Depsilon="0.000001"
-DkvDelimiter=":"
-DlabelColName="label"
-DfeatureColNames="f0,f1,f2,f3"
-DenableSparse="false"
-DgoodValue="1"
-DinputTableName="lr_test_input";
Etapa 3: Execute a previsão
Para obter detalhes sobre os parâmetros do componente Prediction, consulte Prediction.
DROP TABLE IF EXISTS lr_test_prediction_result;
PAI -name prediction
-project algo_public
-DdetailColName="prediction_detail"
-DmodelName="lr_test_model"
-DitemDelimiter=","
-DresultColName="prediction_result"
-Dlifecycle="28"
-DoutputTableName="lr_test_prediction_result"
-DscoreColName="prediction_score"
-DkvDelimiter=":"
-DinputTableName="lr_test_input"
-DenableSparse="false"
-DappendColNames="label";
Etapa 4: Revisar os resultados
A tabela de saída lr_test_prediction_result contém:
|
label |
prediction_result |
prediction_score |
prediction_detail |
|
0 |
0 |
0,9999998793434426 |
{"0": 0,9999998793434426, "1": 1,206565574533681e-07} |
|
1 |
1 |
0,999999799574135 |
{"0": 2,004258650156743e-07, "1": 0,999999799574135} |
|
1 |
1 |
0,999999799574135 |
{"0": 2,004258650156743e-07, "1": 0,999999799574135} |
|
0 |
0 |
0,9999998793434426 |
{"0": 0,9999998793434426, "1": 1,206565574533681e-07} |
|
0 |
0 |
0,9999998793434426 |
{"0": 0,9999998793434426, "1": 1,206565574533681e-07} |
|
0 |
0 |
0,9999998793434426 |
{"0": 0,9999998793434426, "1": 1,206565574533681e-07} |
Colunas de saída:
prediction_result— o rótulo da classe prevista (0 ou 1)prediction_score— a probabilidade da classe previstaprediction_detail— distribuição de probabilidade entre todas as classes como um objeto JSON
Todas as previsões correspondem aos rótulos reais, com pontuações de confiança acima de 0,9999.