Todos os produtos
Search
Central de documentação

PolarDB:Algoritmo LightGBM

Última atualização: Sep 24, 2026

Este tópico descreve o algoritmo LightGBM.

Introdução

O LightGBM (light gradient boosting machine) é um framework de gradient boosting distribuído baseado em algoritmos de árvore de decisão. Ele foi projetado para ser rápido e eficiente, com baixo uso de memória, alta precisão e suporte a processamento paralelo e de dados em grande escala. O LightGBM reduz o uso de memória, diminui os custos de comunicação e melhora a eficiência em ambientes paralelos com múltiplas máquinas. Ele alcança aceleração linear na computação de dados.

Cenários

O LightGBM é um framework de algoritmos que inclui modelos como GBDT, florestas aleatórias e regressão logística. Geralmente, é utilizado em cenários como classificação binária, classificação multiclasse e ordenação.

Por exemplo, em cenários de recomendação personalizada de products, é necessário que você crie modelos de previsão de cliques. Para criar o modelo, use comportamentos passados do usuário, como cliques, impressões sem cliques e compras, para prever a probabilidade de o usuário clicar ou comprar um item. Os recursos são extraídos dos comportamentos e propriedades do usuário, incluindo:

  • Recursos categóricos: tipo string, como gênero (masculino/feminino).

  • Tipos de itens: roupas, brinquedos, eletrônicos, entre outros.

  • Recursos numéricos: tipo inteiro ou ponto flutuante, como popularidade do usuário ou preço do item.

Descrição dos parâmetros

A tabela a seguir descreve os valores do parâmetro model_parameter na sintaxe CREATE MODEL. Por favor, selecione os parâmetros conforme necessário.

Parâmetro

Descrição

boosting_type

O tipo de aprendiz fraco. Valores válidos:

  • gbdt (padrão): usa um modelo baseado em árvore para computação.

  • gblinear: usa um modelo linear para computação.

  • rf: usa um modelo de floresta aleatória para computação.

  • dart: usa a técnica de dropout para remover algumas árvores e evitar overfitting.

  • goss: usa o algoritmo Gradient-based One-Side Sampling (GOSS) para computação. Este método é rápido, mas pode levar a underfitting.

Nota

Coloque o valor do parâmetro entre aspas simples. Por exemplo: boosting_type='gbdt'

n_estimators

O número de iterações. Deve ser um número inteiro. O valor padrão é 100.

loss

A tarefa de aprendizado e o objetivo de aprendizado correspondente. Valores válidos:

  • binary (padrão): classificação binária.

  • regression: usa um modelo de regressão regularizado com L2.

  • regression_l1: usa um modelo de regressão regularizado com L1.

  • multiclass: classificação multiclasse.

num_leaves

O número de folhas. Deve ser um número inteiro. O valor padrão é 128.

max_depth

A profundidade máxima da árvore. Deve ser um número inteiro. O valor padrão é 7.

Nota

Um valor de -1 indica profundidade ilimitada para a árvore. No entanto, para evitar overfitting, defina um valor adequado.

learning_rate

A taxa de aprendizado. Deve ser um número de ponto flutuante. O valor padrão é 0,06.

max_leaf_nodes

O número máximo de nós folha em uma árvore. O valor pode ser vazio ou um número inteiro. O valor padrão é vazio, o que significa que não há limite para o número de nós folha.

min_samples_leaf

O número mínimo de amostras em um nó folha. Deve ser um número inteiro. O valor padrão é 20.

Nota

Se o número de amostras em um nó folha for menor que este valor, o algoritmo poda o nó junto com seu nó irmão.

subsample

A proporção de amostras usadas para a criação do modelo em relação ao número total de amostras. Deve ser um número de ponto flutuante de 0 a 1. O valor padrão é 1.

Nota

Se o valor for menor que 1, o modelo usa apenas essa proporção das amostras para sua criação.

max_features

A proporção de recursos a serem usados para a criação do modelo. O valor é um número de ponto flutuante. O intervalo válido é de 0 a 1. O valor padrão é 1.

max_depth

A profundidade máxima da árvore. O valor deve ser um número inteiro. O valor padrão é 7.

Nota

Um valor maior melhora a precisão, mas pode causar overfitting.

random_state

A semente de números aleatórios. Deve ser um número inteiro. O valor padrão é 1.

Nota

Definir valores diferentes afeta a construção da árvore e a divisão dos dados de criação do modelo.

model_type

A classe de armazenamento do modelo. Valores válidos:

  • pkl (padrão): um arquivo PKL.

  • pmml: um arquivo Predictive Model Markup Language (PMML). Este formato pode exibir informações como a estrutura da árvore.

n_jobs

O número de threads para a criação do modelo. Deve ser um número inteiro. O valor padrão é 4.

Nota

Um número maior de threads resulta em uma criação de modelo mais rápida.

is_unbalance

Especifica se deve aumentar o peso das classes com menos amostras para resolver o problema de desequilíbrio de amostras. Valores válidos:

  • False (padrão): não aumenta o peso das classes com menos amostras.

  • True: aumenta o peso das classes com menos amostras.

categorical_feature

Os recursos categóricos. O valor é um array de strings. O algoritmo geralmente define isso automaticamente ao verificar o tipo de dados, mas especifique-o manualmente.

Exemplo: Se o parâmetro categorical_feature estiver definido como 'AirportTo,DayOfWeek', os recursos AirportTo e DayOfWeek serão tratados como recursos categóricos.

automl

Especifica se deve ativar o recurso de ajuste automático de parâmetros. Valores válidos:

  • False (padrão): desativa o ajuste automático de parâmetros.

  • True: ative o ajuste automático de parâmetros. Quando ativado, o early stopping é usado por padrão para interromper as iterações quando a tarefa de aprendizado e seu objetivo correspondente (o valor do parâmetro loss) não apresentam melhoria.

automl_train_tag

A tag para a criação do modelo.

automl_test_tag

A tag para testes.

automl_column

O nome da coluna usado pelo ajuste automático para distinguir entre o conjunto de criação do modelo e o conjunto de desenvolvimento. Ao usar este parâmetro, especifique automl_column e automl_test_tag. A quantidade de dados para automl_train_tag deve ser de 4 a 9 vezes maior que a quantidade de dados para automl_test_tag.

Nota

Defina o parâmetro automl_column para iniciar uma busca automática pela combinação ideal de parâmetros. Adicione o prefixo automl_ aos parâmetros existentes, como learning_rate e subsample, para buscar seus melhores valores. Por exemplo:

automl_column='automl_column',automl_train_tag='train',automl_test_tag='test',automl_learning_rate='0.05.0.04.0.03.0.01',automl_subsample='0.6.0.5'

Esta configuração busca a melhor taxa de aprendizado no conjunto {0,05, 0,04, 0,03, 0,01} e a melhor proporção de subamostragem no conjunto {0,6, 0,5}.

Exemplos

Criação de modelo e aprendizado de modelo offline

/*polar4ai*/CREATE MODEL airline_gbm WITH
(model_class = 'lightgbm',
x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols='Delay',model_parameter=(boosting_type='gbdt'))
AS (SELECT * FROM db4ai.airlines);

Avaliação do modelo

/*polar4ai*/SELECT Airline FROM EVALUATE(MODEL airline_gbm, 
SELECT * FROM db4ai.airlines LIMIT 20) WITH 
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',y_cols='Delay',metrics='acc');

Previsão do modelo

/*polar4ai*/SELECT Airline FROM PREDICT(MODEL airline_gbm,
SELECT * FROM db4ai.airlines limit 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length');