Il preclustering aiuta a costruire un modello predittivo migliore?


9

Per il compito di sfornare la modellazione stavo considerando:

  1. Calcola k cluster per i dati
  2. Costruisci k modelli per ogni cluster individualmente.

La logica di ciò è che non c'è nulla da dimostrare che la popolazione di abbonati sia omogenea, quindi è ragionevole supporre che il processo di generazione dei dati possa essere diverso per "gruppi" diversi

La mia domanda è: è un metodo appropriato? Violare qualcosa o è considerato cattivo per qualche motivo? Se è così, perché?

In caso contrario, condivideresti alcune migliori pratiche su tale questione? E la seconda cosa - è generalmente meglio o peggio fare la preclusterizzazione rispetto all'albero modello (Come definito in Witten, Frank - albero di classificazione / regressione con modelli alle foglie. Intuitivamente sembra che la fase dell'albero decisionale sia solo un'altra forma di raggruppamento, ma idk se presenta dei vantaggi rispetto al clustering "normale".).

Risposte:


3

Esiste un metodo chiamato regressione clusterwise che risolve un problema simile (prima raggruppa i dati e quindi crea modelli predittivi). Vedi per esempio questo.


1
L'ho cercato qui: tandfonline.com/doi/abs/10.1080/00273170701836653 e ho trovato quanto segue in astratto: "In alcuni casi, la maggior parte della variazione nella variabile di risposta è spiegata raggruppando gli oggetti, con un piccolo vantaggio aggiuntivo fornito da i modelli di regressione all'interno del cluster. Di conseguenza, esiste un enorme potenziale di overfitting con regressione clusterwise ". Non sembra davvero promettente.
Ziel,

Ok, ma non dicono che fallisce sempre. Non ho mai usato quel metodo, so solo che potrebbe essere una combinazione di approccio supervisionato e non supervisionato, ma c'è un piccolo numero di articoli che usano questo metodo.
Miroslav Sabo,

Inoltre, la maggior parte delle applicazioni che ho trovato riguardano il marketing e la finanza, quindi forse è adatto soprattutto per questo tipo di dati.
Miroslav Sabo,

1
Sembra molto intuitivo per il settore del marketing: sfornamento, cross / upsell.
Ziel,

2

Due punti troppo lunghi per essere un commento:

  • i cluster puri (ovvero contenenti casi di una sola classe) non sono di per sé un problema: i cosiddetti classificatori a una classe modellano ciascuna classe indipendentemente da tutte le altre. Possono affrontarlo perfettamente.

  • Tuttavia, se i cluster di dati in modo che le classi siano abbastanza separate, ovvero i cluster siano piuttosto puri, ciò significa che esiste una struttura molto forte, una struttura che l'analisi dei cluster è in grado di trovare senza guida dalle etichette delle classi. Ciò significa che alcuni tipi di classificatori come i metodi vicini più vicini basati sulla stessa misura di distanza utilizzata dall'analisi del cluster sono appropriati per i dati.

  • L'altra possibilità, le situazioni in cui i cluster non sono puri, ma una combinazione di cluster e metodi di classificazione possono fare bene è appropriata per gli alberi. L'albero farà la parte del clustering (e i nodi puri non sono considerati un problema). Ecco un esempio artificiale, una versione a 2 cluster del problema XOR:
    Cluster XOR

  • Un altro modo per includere le informazioni del cluster senza correre il rischio di avere cluster puri sarebbe quello di utilizzare il clustering come un passo di generazione di funzionalità: aggiungere il risultato dell'analisi del cluster come nuove variate alla matrice dei dati.

  • Ti chiedi se è male per qualche motivo: una trappola è che questo approccio porta a modelli con molti gradi di libertà. Dovrai stare particolarmente attento a non esagerare.

  • Dai un'occhiata agli alberi basati su modelli, ad esempio la risposta di mbq qui penso che implementino un concetto molto vicino al guaio che cerchi. Possono essere implementati anche come foresta: ad es. Pacchetto R mobForest .


1

In questi giorni sto affrontando un problema simile. Ho centinaia di funzionalità per costruire classificatore. Dopo aver provato diversi modelli (es: foreste casuali, aumento del gradiente, ecc ...), ho ancora una bassa precisione / richiamo. Quindi sto provando a fare un po 'di clustering quindi a costruire classificatori in diversi gruppi. La mia preoccupazione è, proprio come dice Anony-Mousse, come posso ottenere maggiori informazioni dal classificatore se uso tutte le informazioni nel clustering? Quindi, ecco cosa farò dopo:

  1. Utilizzare alcune funzionalità (meno, in base alle conoscenze precedenti) per eseguire il clustering.
  2. Usa altre funzionalità (altro) per addestrare i classificatori.

Penso che possa anche aiutare a ridurre la complessità, vorrei che aiutasse.


1

Costruire cluster e quindi modelli corrispondenti è assolutamente fattibile. Il caso patologico osservato nei commenti in cui i cluster separano perfettamente le variabili di risultato porterebbe difficoltà per i classificatori è un problema teorico, ma che ritengo improbabile (specialmente in un caso ad alta dimensione). Inoltre, se potessi creare tali cluster, potresti semplicemente utilizzare quei cluster per la previsione!kkk

Inoltre, se il processo inizia con campioni, i classificatori possono utilizzare solo campioni . Pertanto, un approccio più efficace sarebbe quello di utilizzare i cluster nella costruzione di un singolo classificatore che incorpora l'eterogeneità nei cluster utilizzando una miscela di regressioni. Nel clustering basato sul modello, si presume che i dati siano generati da una distribuzione della miscela dove con probabilità e con probabilità e e . Una regressione della miscela è un'estensione che consente di modellare i dati come dipendenti dai co-variati;N / k Y iN ( μ i , σ 2 i ) i = 1 π i = 2 1 - π μ 1μ 2 σ 2 1σ 2 2 μ i β i X i β iNN/kYiN(μi,σi2)i=1πi=21πμ1 μ2σ12σ22μi viene sostituito con , dove è necessario stimare . Mentre questo esempio è per un caso univariato e gaussiano, il framework può ospitare molti dati (il log multinomiale sarebbe appropriato per le variabili categoriali). Il pacchetto flexmix per R fornisce una descrizione più dettagliata e ovviamente un modo relativamente semplice ed estensibile per implementare questo approccio.βiXiβi

In alternativa, in un contesto discriminatorio, si potrebbe provare a incorporare le assegnazioni di cluster (hard o soft) come funzionalità per l'addestramento dell'algoritmo di classificazione scelto (ad es. NB, ANN, SVM, RF, ecc.)


0

Bene, se i tuoi cluster sono davvero buoni, i tuoi classificatori saranno una merda. Perché non hanno abbastanza diversione nei loro dati di allenamento.

Supponiamo che i tuoi cluster siano perfetti, cioè puri. Non puoi nemmeno più addestrare correttamente un classificatore lì. I classificatori hanno bisogno di esempi positivi e negativi!

La foresta casuale ha molto successo nel fare esattamente l'opposto. Prendono un campione casuale di dati, addestrano un classificatore su quello e quindi usano tutti i classificatori addestrati.

Ciò che potrebbe funzionare è usare il clustering e quindi formare un classificatore su ogni coppia di cluster, almeno se non sono abbastanza d'accordo (se una classe è divisa in due cluster, non è ancora possibile addestrare un classificatore lì!)


Lo scopo del clustering non è quello di trovare cluster "puri", vale a dire quelli che sono fantastici nel discriminare la mia variabile target. Lo scopo del raggruppamento è trovare gruppi omogenei nell'area "altro". Per fare un esempio: penso che a Churn ci siano clienti "solo di qualità" e clienti "di ottimizzazione dei costi". Non penso che dovrei supporre che le caratteristiche rilevanti per la classificazione siano le stesse in entrambi i gruppi, quindi voglio costruire un modello separato per ciascun gruppo. Ovviamente non ho gruppi espliciti di "qualità" e "costo", quindi l'idea di raggruppare per derivare prima tali gruppi dai dati.
Ziel,

Qualsiasi tipo di ulteriore squilibrio e correlazione nei dati può danneggiare. Vedi, un classificatore potrebbe voler discernere "solo qualità" e "ottimizzazione dei costi". Se ottiene solo un gruppo, non può fare uso di questa distinzione.
Ha QUIT - Anony-Mousse,

1
Ma solo se segui un approccio a due livelli, prima classifica i cluster, quindi valuta il classificatore del cluster. Altrimenti, il classificatore costante è inutile. Quindi stai mettendo tutto l'onere per il clustering.
Ha QUIT - Anony-Mousse il

1
Bene, è così che ho capito il PO.
cbeleites insoddisfatto di SX il

1
Ovviamente puoi farlo, ma è probabile che i tuoi cluster non siano così buoni e che tu stia meglio con un insieme adeguato, di classificatori "sovrapposti". Proprio come fa RandomForests.
Ha QUIT - Anony-Mousse,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.