In primo luogo, che vi consiglio vivamente il libro Social Network Analysis for Startups da Maksim Tsvetovat e Alexander Kouznetsov. Un libro come questo è una manna dal cielo per i programmatori che hanno bisogno di acquisire rapidamente una fluidità di base in una specifica disciplina (in questo caso la teoria dei grafi) in modo che possano iniziare a scrivere codice per risolvere i problemi in questo dominio. Entrambi gli autori sono teorici del grafo accademico, ma il pubblico previsto del loro libro è programmatore. Quasi tutti i numerosi esempi presentati nel libro sono in python usando la libreria networkx.
In secondo luogo, per i progetti che avete in mente, due tipi di librerie sono molto utili, se non indispensabili:
grafico di analisi: ad esempio, l'eccellente networkx (python), oppure igraph (python, R, et. al.) sono due che posso raccomandare altamente; e
grafico di rendering: l'eccellente graphViz, che può essere utilizzato autonomo dalla riga di comando, ma più probabilmente si vuole utilizzarlo come una libreria; ci sono attacchi graphviz in tutte le principali lingue (ad esempio, per Python ci sono almeno tre io sappia, anche se pygraphviz è la mia preferenza, per la R c'è rgraphviz che è parte della suite bioconductor pacchetto). Rgraphviz ha una documentazione eccellente (vedi in particolare la vignetta inclusa nel pacchetto).
È molto facile da installare e cominciare a sperimentare con queste librerie e in particolare il loro utilizzo
imparare all'essenziale grafico lessico teorico e unità di analisi (ad esempio, distribuzione sequenza gradi, nodi traversali, grafico operatori);
per distinguere nodi critici in un grafico (ad es. Centralità del grado, centralità dell'autovettore, assortimento); e
per identificare le sottostrutture del grafico prototipo (ad esempio, struttura bipartitica, triangoli , cicli, cricche, cluster, comunità e nuclei).
il valore di usare una libreria grafo-analisi per comprendere rapidamente questi elementi essenziali della teoria dei grafi è che per la maggior parte v'è una mappatura 1: 1 tra le concetti ho appena citato e funzioni nella libreria (networkx o igraph).
Ad esempio, è possibile generare rapidamente due grafici casuali di dimensioni uguali (numero di nodo), renderli e quindi visualizzarli, quindi calcolare facilmente per esempio la sequenza di gradi media o la centralità di interferenza per entrambi e osservatore di prima mano come il valore di questi parametri influenza la struttura di un grafico.
W/r/t la combinazione di tecniche Teoriche ML e Graph, ecco la mia esperienza personale limitata. Io uso ML nel mio lavoro quotidiano e nella teoria dei grafi meno spesso, ma raramente insieme. Questa è solo un'osservazione empirica limitata alla mia esperienza personale, quindi il fatto di non aver trovato un problema in cui mi è sembrato naturale combinare tecniche in questi due domini. Molto spesso l'analisi teorica del grafico è utile nel punto cieco di ML, che è la disponibilità di una quantità notevole di dati di addestramento etichettati - le tecniche ML supervisionate dipendono fortemente da questo.
Una classe di problemi per illustrare questo punto è rilevamento/previsione di frodi online. Non è quasi mai possibile raccogliere dati (ad es. Set di transazioni online attribuite a un particolare utente) che è possibile separare con ragionevole certezza e etichettare come "account fraudolento". Se fossero particolarmente intelligenti ed efficaci, dichiarerai erroneamente "legittimi" e per quelli per i quali è stata sospettata la frode, molto spesso la diagnostica di primo livello (ad es., ulteriori verifiche di identificazione o un periodo di attesa maggiore per incassare) sono spesso sufficienti a far cessare ulteriori attività (che consentirebbe una classificazione definita). Infine, anche se in qualche modo riesci a raccogliere un set di dati ragionevolmente privo di rumore per addestrare il tuo algoritmo ML, sarà certamente seriamente sbilanciato (cioè, molto più punti "legittimi" di "frodi"); questo problema può essere gestito con la pre-elaborazione delle statistiche (ricampionamento) e con la regolazione degli algoritmi (ponderazione), ma è comunque un problema che probabilmente peggiorerà la qualità dei risultati.
Così mentre non sono mai stato in grado di utilizzare con successo le tecniche ML per questi tipi di problemi, in almeno due casi, ho usato la teoria dei grafi con un certo successo - nell'istanza più recente, applicando un modello adattato da il progetto di un gruppo di Carnegie Mellon inizialmente diretto a detection of online auction fraud on ebay.
Solo per aggiungere alla tua raccomandazione libro grande. Gli autori (prof. Stanford) hanno una lezione gratuita a partire da quest'anno: http://www.pgm-class.org/ – Lostsoul