Eu tenho um problema de classificação binária (aprendizado supervisionado), onde todos os meus recursos são booleanos, com o seguinte toque: Eu quero aprender um classificador que é monótono . Em outras palavras, alterar qualquer subconjunto de recursos de 0 para 1 nunca deve alterar a saída do classificador de 1 para 0.
Como posso aprender um classificador monótono ? Posso adaptar métodos de classificação padrão de alguma forma, para impor a restrição de monotonicidade?
Eu posso ver como adaptar a regressão logística de uma forma que garanta que ele aprenda um modelo monotônico: podemos exigir que o coeficiente de cada recurso seja não negativo e, em seguida, aplique um algoritmo de otimização restrito para inferir os coeficientes do modelo. Existe uma maneira razoável de adaptar outros esquemas de aprendizado supervisionado (por exemplo, florestas aleatórias, aumento de gradiente, redes neurais)? Ou existem algoritmos dedicados que são apropriados para esta situação?
Infelizmente, apenas a aplicação de um classificador de florestas aleatórias padrão não garante um classificador monótono, mesmo que o conjunto de treinamento seja monótono (vem de um cenário monótono e não apresenta ruídos ou violações da monotonicidade). Consulte https://cs.stackexchange.com/q/69220/755 para obter um exemplo explícito, isto é, um exemplo de um conjunto de treinamento monótono, em que florestas aleatórias podem aprender um classificador não monótono - mesmo que exista um classificador monótono isso é igualmente bom. Isso sugere que podemos precisar de alguma técnica mais sofisticada se quisermos aprender um classificador monótono.
Respostas:
Embora seja uma pergunta antiga, acabei de descobrir que as árvores com gradiente aumentado suportam essa funcionalidade e ela já está implementada no XGBoost. Verifique aqui para mais detalhes
fonte