Descrição
O aprendizado semi-supervisionado aborda situações em que os conjuntos de dados de treinamento contêm uma mistura de amostras rotuladas e não rotuladas. O módulo `sklearn.semi_supervised` do Scikit-learn fornece estimadores projetados para utilizar esses dados não rotulados, compreendendo melhor a distribuição dos dados e melhorando a generalização para amostras novas e não vistas. Essas técnicas são particularmente eficazes quando os dados rotulados são escassos, mas os dados não rotulados são abundantes.
É importante notar que os algoritmos semi-supervisionados dependem de suposições sobre a distribuição dos dados para obter ganhos de desempenho. O módulo oferece duas abordagens principais: Self Training e Label Propagation.
O Self Training, baseado no algoritmo de Yarowsky, permite que qualquer classificador supervisionado que suporte `predict_proba` funcione de maneira semi-supervisionada. O `SelfTrainingClassifier` prevê iterativamente rótulos para amostras não rotuladas e adiciona um subconjunto delas ao conjunto de dados rotulados. A seleção dessas amostras pode ser baseada em probabilidades de previsão, usando um limite ou selecionando as k-melhores amostras. Esse processo continua até que todas as amostras sejam rotuladas ou nenhuma nova amostra seja selecionada em uma iteração, com o número máximo de iterações controlável via `max_iter`.
O Label Propagation abrange vários algoritmos de inferência de grafos semi-supervisionados, incluindo `LabelPropagation` e `LabelSpreading`. Esses modelos constroem um grafo de similaridade entre todos os pontos de dados de entrada. A ideia central é que a estrutura dos dados não rotulados é consistente com as estruturas de classe, permitindo que os rótulos de classe se propaguem para observações não rotuladas. O `LabelPropagation` realiza um clamping rígido dos rótulos de entrada, enquanto o `LabelSpreading` oferece uma abordagem mais robusta minimizando uma função de perda com propriedades de regularização, tornando-o mais resiliente a ruídos. Ambos os modelos suportam métodos de kernel integrados como RBF e KNN, influenciando a escalabilidade e o desempenho. O kernel RBF cria um grafo denso, potencialmente intensivo em memória, enquanto o kernel KNN gera um grafo esparso, oferecendo melhor eficiência de memória e tempos de execução reduzidos.
Esses métodos são valiosos para tarefas onde a rotulagem manual é cara ou demorada, permitindo a criação de modelos mais robustos e precisos ao aproveitar a riqueza de dados não rotulados disponíveis. A escolha entre Self Training e Label Propagation depende das características específicas do conjunto de dados e da abordagem desejada para alavancar informações não rotuladas.
Destaques de Aprendizado Semi-supervisionado com Scikit-learn
Suporta classificação semi-supervisionada
Utiliza dados não rotulados para melhorar a generalização
Inclui o algoritmo Self Training
Suporta Label Propagation e Label Spreading
Constrói grafos de similaridade para propagação de rótulos
Oferece métodos de kernel RBF e KNN
Permite controle sobre o clamping de rótulos na propagação
Processo de aprendizado iterativo para Self Training
Adaptável a vários classificadores supervisionados para Self Training
Lida com cenários com dados rotulados limitados
Aprimora a compreensão da distribuição subjacente dos dados
Primeiros passos com Aprendizado Semi-supervisionado com Scikit-learn
Acessar modelo: Importar estimadores relevantes de `sklearn.semi_supervised`.
Preparar dados: Organizar amostras rotuladas e não rotuladas.
Configurar estimador: Instanciar `SelfTrainingClassifier` ou `LabelPropagation`/`LabelSpreading` com os parâmetros desejados.
Treinar modelo: Ajustar o estimador escolhido ao conjunto de dados preparado.
Prever rótulos: Usar o modelo treinado para prever rótulos para novos dados.
Avaliar desempenho: Avaliar a precisão do modelo e as capacidades de generalização.
Casos de uso de Aprendizado Semi-supervisionado com Scikit-learn
- Classificação de Texto
- Reconhecimento de Imagem
- Detecção de Fraude
- Segmentação de Clientes
- Diagnóstico Médico
- Reconhecimento de Fala




