# Finding Paul Revere

YouTube search... ...Google search

- Using Metadata to Find Paul Revere | Kieran Healy
- The data come from an appendix to David Hackett Fischer's Paul Revere's Ride (Oxford University Press, 1995)
- The Other Ride of Paul Revere: The Brokerage Role In The Making of The American Revolution | Shin-Kap Han
- Math for Intelligence
- Social Network Analysis (SNA)

London, 1772.

I have been asked by my superiors to give a brief demonstration of the surprising effectiveness of even the simplest techniques of the new-fangled Social Networke Analysis in the pursuit of those who would seek to undermine the liberty enjoyed by His Majesty’s subjects. This is in connection with the discussion of the role of “metadata” in certain recent events and the assurances of various respectable parties that the government was merely “sifting through this so-called metadata” and that the “information acquired does not include the content of any communications”. I will show how we can use this “metadata” to find key persons involved in terrorist groups operating within the Colonies at the present time. I shall also endeavour to show how these methods work in what might be called a relational manner...

## To play...

1. Download from Kieran Healy files | Github for reference

2. Download from Mark Bernico's files | GitHub]; *Boston - 1776.ipynb* Jupyter notebook and *PaulRevereAppD.csv* data file

3. Upload Mark Bernico's files to your Google Drive

### Notebook Setup

4. Obtain a Colaboratory account if you don't already have one

5. Setup Colab app in your Google Drive account by watching 1:45 minutes into the following video. Optionally starting at 2:35 setting up a GPU; menu Edit | Notebook settings

6. How to upload from a local file on your computer to Colab by watching the following video, and from this Colab's Help Notebook 'copy and paste' into new cells per the video

7. Note: As you step though the notebook, you will need to put parenthesis around two print statements; *print(people_x_groups.shape)* & *print(groups_x_people.shape)*

8. Save your notebook; File | Save <or> *CNTRL+S* Note: To open your recent files in Colab click here

9. Extra credit: Edit the notebook to graph organizations as shown in Healy's blog by switching the order of the matrix multiplication; *groups_adj = groups_x_people.dot(people_x_groups)* and replicating the code for *groups_adj*.

### Functional Explanations

- NumPy for Matrices are collections of elements into rows and columns. Matrix multiplication relies on Dot Product to multiply various combinations of rows and columns. A thing about multiplying matrices is that the order matters - multiply one way to see group relationships and multiply opposite way to view people relationships.
- NetworkX for creation, manipulation, and study of the structure, dynamics, and functions of complex networks
- Matplotlib for generating plots, histograms, power spectra, bar charts, errorcharts, scatterplots, etc
- In 1974's The Duality of Persons and Groups, Ronald Breiger laid out a technique for obtaining a persons x persons adjacency matrix and a groups x groups adjacency matrix from a persons x groups affiliation matrix.
- Adjacency Matrix - is a 2D array of size V x V where V is the number of vertices in a graph. The matrix is often used in network analysis to represent the adjacency of each person to each other person in a network. An adjacency matrix is a square person-by-person matrix

- Eigenvector Centrality - a measure of the influence of a node in a network

- Knowledge Graphs are very useful ways of presenting information about social networks.

Google Drive Option: How to upload from a local file on your computer to Colab by watching 6:30 minutes into the Notebook Setup video. From this Colab's Help Notebook 'copy and paste' per the video

Get Started: 3 Ways to Load CSV files into Colab | A Apte - Towards Data Science