Punti nello spazio e separazione lineare (?)
Buongiorno a tutti, sto cercando aiuto per risolvere un problema:
Ho due insieme di punti rappresentati da 3 coordinate xyz nello spazio (sono coordinate di atomi).
Il mio scopo è quello di trovare il miglior piano (NON iperpiano) che separi i due insiemi.
Quale sarebbe l'approccio migliore?
E' necessario l'uso di algoritmi come Percettrone o Support Vector Machine, oppure in questo caso ci sono approcci più immediati?
Il punto è che il mio scopo NON e' quello di addestrare un classificatore, ovvero non è machine learning. Lo scopo è quello di trovare il piano per poi verificare la distanza dallo stesso piano (in Angstorm) degli atomi di altre proteine superimposte.
Ho due insieme di punti rappresentati da 3 coordinate xyz nello spazio (sono coordinate di atomi).
Il mio scopo è quello di trovare il miglior piano (NON iperpiano) che separi i due insiemi.
Quale sarebbe l'approccio migliore?
E' necessario l'uso di algoritmi come Percettrone o Support Vector Machine, oppure in questo caso ci sono approcci più immediati?
Il punto è che il mio scopo NON e' quello di addestrare un classificatore, ovvero non è machine learning. Lo scopo è quello di trovare il piano per poi verificare la distanza dallo stesso piano (in Angstorm) degli atomi di altre proteine superimposte.
Risposte
Benvenuto nel forum. Non credo proprio di poterti essere d'aiuto, però segnalo un punto che suona strano:
coordinate xyz nello spazio ...Come "NON iperpiano"? Cosa vuoi dire? In uno spazio 3-dimensionale, piano e iperpiano sono sinonimi. Penso sia meglio chiarire subito questo punto per evitare perdite di tempo successive.
il miglior piano (NON iperpiano)...
"dissonance":
Benvenuto nel forum. Non credo proprio di poterti essere d'aiuto, però segnalo un punto che suona strano:coordinate xyz nello spazio ...Come "NON iperpiano"? Cosa vuoi dire? In uno spazio 3-dimensionale, piano e iperpiano sono sinonimi. Penso sia meglio chiarire subito questo punto per evitare perdite di tempo successive.
il miglior piano (NON iperpiano)...
Sì, probabilmente ho usato io un termine improprio.
Quello che intendo è che a me non interessa un sistema che proietti i punti in spazi a più dimensioni per classificare i dati (come fanno le SVT ad esempio, per separare dati non separabili linearmente).
A me interessa proprio calcolare il piano nello spazio tridimensionale che separi meglio i due gruppi di atomi.
Dovresti anche definire che vuol dire per te "separare meglio"...
Quando posso dire che un piano [tex]$\Pi$[/tex] separa i due sistemi [tex]$S_1$[/tex] ed [tex]$S_2$[/tex] meglio di un altro piano [tex]$\Pi^\prime$[/tex]?
Non che sia sicuro di poterti aiutare, ma almeno così avrei qualche spunto da cui partire.
Quando posso dire che un piano [tex]$\Pi$[/tex] separa i due sistemi [tex]$S_1$[/tex] ed [tex]$S_2$[/tex] meglio di un altro piano [tex]$\Pi^\prime$[/tex]?
Non che sia sicuro di poterti aiutare, ma almeno così avrei qualche spunto da cui partire.
"gugo82":
Dovresti anche definire che vuol dire per te "separare meglio"...
Quando posso dire che un piano [tex]$\Pi$[/tex] separa i due sistemi [tex]$S_1$[/tex] ed [tex]$S_2$[/tex] meglio di un altro piano [tex]$\Pi^\prime$[/tex]?
Non che sia sicuro di poterti aiutare, ma almeno così avrei qualche spunto da cui partire.
E anche qui hai ragione (è che oggi ho proprio fuso, farei meglio ad andare a dormire e ripensarci domani

Insomma, se ho ben capito, il problema lo possiamo scrivere come segue:
Se non si aggiungono condizioni su [tex]$S,S^\prime$[/tex] il problema può non avere soluzione: ad esempio, se $[tex]S=\{ \mathfrak{o}\}$[/tex] ed [tex]$S^\prime =\{ \pm e^1,\pm e^2,\pm e^3\}$[/tex] (qui [tex]$\mathfrak{o} =(0,0,0)$[/tex] ed [tex]$e^j=(\delta_1^j,\delta_2^j,\delta_3^j)$[/tex], [tex]$j=1,2,3$[/tex], sono i vettori della base canonica di [tex]$\mathbb{R}^3$[/tex]), allora non esiste nessun piano che separi [tex]$S$[/tex] ed [tex]$S^\prime$[/tex].
A ben vedere ciò accade perchè le uniche coppie di insiemi disgiunti che possono sempre essere separate da un piano sono quelle costituite da due insiemi convessi; per le altre coppie di insiemi non c'è la certezza che possano essere separate da un piano.
Quindi, in generale, il problema non ha soluzione.
Per ovviare a questo inconveniente, si potrebbe fare l'ulteriore ipotesi che gli inviluppi convessi [tex]$\text{conv} S, \text{conv} S^\prime$[/tex] siano disgiunti (probabilmente basta richiedere che abbiano gli interni relativi disgiunti): in tal caso il problema di ottimizzazione avrebbe almeno senso (poiché c'è almeno un piano che separa [tex]$\text{conv} S, \text{conv} S^\prime$[/tex] e quindi anche [tex]$S$[/tex] ed [tex]$S^\prime$[/tex]) e si potrebbe andare a cercare di stabilire l'esistenza di una soluzione con qualche tecnica standard.
Ci dovresti lavorare un po' sù.
Siano [tex]$S:=\{ x_1,\ldots ,x_n\} ,\ S^\prime :=\{ x_{n+1} ,\ldots ,x_N\}$[/tex] sottoinsiemi di [tex]$\mathbb{R}^3$[/tex] ([tex]$n
Determinare un "versore normale" [tex]$\nu \in \mathbb{S}^2:=\{ u\in \mathbb{R}^3:\ |u|=1\}$[/tex] ed un "termine noto" [tex]$d\in \mathbb{R}$[/tex] tali che il piano [tex]$\Pi_{\nu ,d}$[/tex] d'equazione [tex]$\langle \nu ,x\rangle =d$[/tex] (qui [tex]$\langle \cdot ,\cdot \rangle$[/tex] è il prodotto scalare di [tex]$\mathbb{R}^3$[/tex]) verifichi le seguenti condizioni:
1) [tex]$\forall x_h\in S,\ \forall x_k\in S^\prime ,\ \langle \nu ,x_h\rangle \leq d\leq \langle \nu ,x_k\rangle$[/tex] (separazione debole dei punti di [tex]$S$[/tex] ed [tex]$S^\prime$[/tex])
2) sia massima la funzione [tex]$F(\nu ,d):=\frac{1}{N} \ \sum_{i=1}^N |\langle \nu ,x_i\rangle - d|$[/tex] (media delle distanze dei punti di [tex]$S\cup S^\prime$[/tex] dal piano [tex]$\Pi_{\nu ,d}$[/tex])
Se non si aggiungono condizioni su [tex]$S,S^\prime$[/tex] il problema può non avere soluzione: ad esempio, se $[tex]S=\{ \mathfrak{o}\}$[/tex] ed [tex]$S^\prime =\{ \pm e^1,\pm e^2,\pm e^3\}$[/tex] (qui [tex]$\mathfrak{o} =(0,0,0)$[/tex] ed [tex]$e^j=(\delta_1^j,\delta_2^j,\delta_3^j)$[/tex], [tex]$j=1,2,3$[/tex], sono i vettori della base canonica di [tex]$\mathbb{R}^3$[/tex]), allora non esiste nessun piano che separi [tex]$S$[/tex] ed [tex]$S^\prime$[/tex].
A ben vedere ciò accade perchè le uniche coppie di insiemi disgiunti che possono sempre essere separate da un piano sono quelle costituite da due insiemi convessi; per le altre coppie di insiemi non c'è la certezza che possano essere separate da un piano.
Quindi, in generale, il problema non ha soluzione.
Per ovviare a questo inconveniente, si potrebbe fare l'ulteriore ipotesi che gli inviluppi convessi [tex]$\text{conv} S, \text{conv} S^\prime$[/tex] siano disgiunti (probabilmente basta richiedere che abbiano gli interni relativi disgiunti): in tal caso il problema di ottimizzazione avrebbe almeno senso (poiché c'è almeno un piano che separa [tex]$\text{conv} S, \text{conv} S^\prime$[/tex] e quindi anche [tex]$S$[/tex] ed [tex]$S^\prime$[/tex]) e si potrebbe andare a cercare di stabilire l'esistenza di una soluzione con qualche tecnica standard.
Ci dovresti lavorare un po' sù.
Certo, probabilmente, se gli insiemi di punti [tex]$S,S^\prime$[/tex] non sono assegnati a priori, esiste qualche tecnica per separare i punti in modo che il problema di ottimizzazione abbia senso.
E non credo serva necessariamente la statistica per separare i punti (a meno di non voler puntare tutto solo su una soluzione numerica, che può anche essere del tutto sballata senza un teorema di esistenza); probabilmente c'è qualche algoritmo che consente una divisione "comoda" dei punti in due insiemi senza ricorrere ad indagini numeriche.
Ovviamente, non interessandomi di queste cose, più di qualche idea non so darti.
E non credo serva necessariamente la statistica per separare i punti (a meno di non voler puntare tutto solo su una soluzione numerica, che può anche essere del tutto sballata senza un teorema di esistenza); probabilmente c'è qualche algoritmo che consente una divisione "comoda" dei punti in due insiemi senza ricorrere ad indagini numeriche.
Ovviamente, non interessandomi di queste cose, più di qualche idea non so darti.
"gugo82":
Insomma, se ho ben capito, il problema lo possiamo scrivere come segue:
Siano [tex]$S:=\{ x_1,\ldots ,x_n\} ,\ S^\prime :=\{ x_{n+1} ,\ldots ,x_N\}$[/tex] sottoinsiemi di [tex]$\mathbb{R}^3$[/tex] ([tex]$n
Determinare un "versore normale" [tex]$\nu \in \mathbb{S}^2:=\{ u\in \mathbb{R}^3:\ |u|=1\}$[/tex] ed un "termine noto" [tex]$d\in \mathbb{R}$[/tex] tali che il piano [tex]$\Pi_{\nu ,d}$[/tex] d'equazione [tex]$\langle \nu ,x\rangle =d$[/tex] (qui [tex]$\langle \cdot ,\cdot \rangle$[/tex] è il prodotto scalare di [tex]$\mathbb{R}^3$[/tex]) verifichi le seguenti condizioni:
1) [tex]$\forall x_h\in S,\ \forall x_k\in S^\prime ,\ \langle \nu ,x_h\rangle \leq d\leq \langle \nu ,x_k\rangle$[/tex] (separazione debole dei punti di [tex]$S$[/tex] ed [tex]$S^\prime$[/tex])
2) sia massima la funzione [tex]$F(\nu ,d):=\frac{1}{N} \ \sum_{i=1}^N |\langle \nu ,x_i\rangle - d|$[/tex] (media delle distanze dei punti di [tex]$S\cup S^\prime$[/tex] dal piano [tex]$\Pi_{\nu ,d}$[/tex])
Se non si aggiungono condizioni su [tex]$S,S^\prime$[/tex] il problema può non avere soluzione: ad esempio, se $[tex]S=\{ \mathfrak{o}\}$[/tex] ed [tex]$S^\prime =\{ \pm e^1,\pm e^2,\pm e^3\}$[/tex] (qui [tex]$\mathfrak{o} =(0,0,0)$[/tex] ed [tex]$e^j=(\delta_1^j,\delta_2^j,\delta_3^j)$[/tex], [tex]$j=1,2,3$[/tex], sono i vettori della base canonica di [tex]$\mathbb{R}^3$[/tex]), allora non esiste nessun piano che separi [tex]$S$[/tex] ed [tex]$S^\prime$[/tex].
A ben vedere ciò accade perchè le uniche coppie di insiemi disgiunti che possono sempre essere separate da un piano sono quelle costituite da due insiemi convessi; per le altre coppie di insiemi non c'è la certezza che possano essere separate da un piano.
Quindi, in generale, il problema non ha soluzione.
Per ovviare a questo inconveniente, si potrebbe fare l'ulteriore ipotesi che gli inviluppi convessi [tex]$\text{conv} S, \text{conv} S^\prime$[/tex] siano disgiunti (probabilmente basta richiedere che abbiano gli interni relativi disgiunti): in tal caso il problema di ottimizzazione avrebbe almeno senso (poiché c'è almeno un piano che separa [tex]$\text{conv} S, \text{conv} S^\prime$[/tex] e quindi anche [tex]$S$[/tex] ed [tex]$S^\prime$[/tex]) e si potrebbe andare a cercare di stabilire l'esistenza di una soluzione con qualche tecnica standard.
Ci dovresti lavorare un po' sù.
Hai ragione, infatti non c'è la sicurezza che i punti siano linearmente separabili (cioè detto in parole povere, ci potrebbero essere alcuni punti dell'insieme A che stanno al dilà del piano insieme ai punti dell'insieme B e viceversa, per qualunque piano).
E' proprio per questo che nascono le reti neurali a strato nascosto e, ancora meglio, le support vector machine.
Comunque per ora ho risolto con una soluzione che è molto simile a quella proposta da Sergio (l'analisi k-means non serve poichè so già a quale insieme appartiene ogni punto). Sono partito dal vettore A-B (dove A e B sono i centroidi dei due insiemi), l'ho riscritto nella forma gamma*versore e ho variato gamma in un certo intervallo con una funzione di scoring basata sulla distanza dei punti da questo piano (ortogonale appunto al vettore gamma*versore).
A quel punto ho preso il gamma che mi dava il minimo (non il massimo).
Per Sergio: se può interessarti, le SVM sono un metodo di machine learning inventato nei laboratori Bells negli anni '90. Per avere un'idea molto informale delle differenze con le reti neurali a strato nascosto (di cui risolvono alcuni problemi) c'è la pagina di wikipedia italiana:
http://it.wikipedia.org/wiki/Macchine_a ... i_supporto
In rete comunque si trova molto materiale, sono fighe, ma abbastanza incasinate per chi come me non è un matematico
