Sto usando un classificatore multiclasse (un Support Vector Machine, tramite One-Vs-All) per classificare i campioni di dati. Diciamo che attualmente ho classi distinte n
.Come scoprire nuove classi in un algoritmo di apprendimento automatico di classificazione?
Tuttavia, nello scenario che sto affrontando, è possibile che un nuovo campione di dati può appartenere a un nuova classen+1
che non è stato visto prima.
Quindi immagino si possa dire che ho bisogno di una forma di apprendimento online, poiché all'inizio non vi è un set di allenamento distinto adatto a tutti i dati che appaiono in seguito. Invece ho bisogno che SVM si adatti dinamicamente a nuove classi che potrebbero apparire in futuro.
quindi mi chiedo su se e come posso ...
identificare che un nuovo campione di dati non lo fa abbastanza in forma nelle classi esistenti, ma invece dovrebbe comportare la creazione di una nuova classe.
integrare questa nuova classe nel classificatore esistente.
posso vagamente in mente un paio di idee che potrebbero essere gli approcci per risolvere questo problema:
Se nessuno dei classificatori SVM binari (come ho uno per ogni classe, nel caso OVA) prevede una probabilità abbastanza alta (es.> 0.5) per il nuovo campione di dati, potrei presumere che questo nuovo campione di dati possa rappresentare una nuova classe.
Potrei formare un nuovo classificatore binario per quella nuova classe e aggiungerlo al SVM multiclasse.
Tuttavia, questi sono solo i miei pensieri ingenui. Mi chiedo se ci sia un approccio "corretto" per questo invece, ad es. usando un algoritmo di Clustering per trovare tutte le classi.
O forse il mio approccio di provare a utilizzare un SVM per questo non è nemmeno appropriato per questo tipo di problema?
L'aiuto su questo è molto apprezzato.
Vuoi continuare ad usare SVM? Qual è la gamma di classi di cui stai parlando? – Mido
- No, non ho necessariamente bisogno di usare SVM. Lo sto solo usando come sembra essere l'algoritmo basato sul kernel più comune. - Non so se sto capendo correttamente la tua domanda sull'intervallo di classi - le classi saranno probabilmente in un intervallo di una dozzina o due fino a cento classi distinte o così. – Oliver
È necessario considerare che non è possibile addestrare un SVM in una classe con un singolo punto dati. Ciò significa che quando trovi un punto che probabilmente appartiene a una nuova classe, dovrai aspettare di ottenere più punti vicini prima di addestrare un classificatore per quella classe. Il problema sorge quando inizi a ottenere due punti che non puoi classificare dove ognuno di essi appartiene a una classe diversa. – Mido