Perguntas Frequentes
Soluções rápidas para possíveis duvidas sobre o aisp.
Uso geral
Qual algoritmo devo escolher?
Depende do tipo de problema:
- Detecção de anomalias: Use
RNSAouBNSA.- RNSA para problemas com dados contínuos.
- BNSA para problemas com dados binários.
- Classificação: Use
AIRS,RNSAouBNSA.- O
RNSAeBNSA, foram implementados para serem aplicados a classificação multiclasse. - O
AIRSé mais robusto para ruídos nos dados.
- O
- Otimização: Use
Clonalg.- A implementação pode ser aplicada à otimização (min/max) de funções objetivas.
- Clustering/Agrupamento: Use
AiNet.- Separa grupos de dados automaticamente.
- Não requer numero de grupos predefinidos.
Como normalizar meus dados para utilizar o algoritmo RNSA?
O RNSA trabalha exclusivamente com dados normalizados no intervalo entre [0, 1]. Portanto, antes de aplicá-lo, é necessário normalizar os dados se não estiver neste intervalo. Uma forma simples é fazer utilizando as ferramentas de normalização do scikit-learn, como o MinMaxScaler.
Exemplo
Neste exemplo, X representa os dados de entrada não normalizados.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_norm = scaler.fit_transform(X)
# Treinando o modelo com os dados normalizados.
rnsa = RNSA(N=100, r=0.1)
rnsa.fit(x_norm, y)
Configuração de Parâmetros
Como escolher o numero de detectores (N) no RNSA ou BNSA?
O numero de detectores afeta diretamente a performance:
- Um número reduzido de detectores pode não cobrir adequadamente o espaço não-próprio.
- Um número muito alto de detectores pode aumentar o tempo de treinamento e pode causar overfitting.
Recomendações:
- Teste diferentes valores para o número de detectores até encontrar um equilíbrio adequado entre tempo de treinamento e desempenho do modelo.
- Utilize validação cruzada para identificar o valor que apresenta os melhores resultados de forma consistente.
Qual raio (r ou aff_thresh) devo utilizar no BNSA ou RNSA?
O raio dos detectores depende da distribuição dos dados:
- Raio muito pequeno, podem não detectar anomalias.
- Raio muito grandes, podem sobrepor o self e nunca gerar detectores validos.
O que é o parâmetro r_s no RNSA?
O r_s é o raio da amostra self. Ele define uma região ao redor de cada amostra de treinamento.
Clonalg: Como definir a função objetivo?
A função objetiva deve seguir o padrão da classe base, Ela deve receber uma solução como entrada e retornar um valor do custo (ou afinidade).
def affinity_function(self, solution: Any) -> float:
pass
Existem duas formas de definir a função objetivo no Clonalg.
- Definindo a função diretamente no construtor da classe
def sphere(solution):
return np.sum(solution ** 2)
clonalg = Clonalg(
problem_size=2,
affinity_function=sphere
)
- Utilizando o registrador de funções
def sphere(solution):
return np.sum(solution ** 2)
clonalg = Clonalg(
problem_size=2,
)
clonalg.register("affinity_function", sphere)
Informações adicionais
Onde encontrar mais exemplos?
Como contribuir para o projeto?
Veja o Guia de Contribuição no GitHub.
Ainda tem dúvidas?
- Abra uma Issue no GitHub