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:
Nota Coloque o valor do parâmetro entre aspas simples. Por exemplo: |
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:
|
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:
|
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:
|
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 |
automl | Especifica se deve ativar o recurso de ajuste automático de parâmetros. Valores válidos:
|
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 Nota Defina o parâmetro
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');