latest news

Distractions and amusements, with a sandwich and coffee.

I'm not real and I deny I won't heal unless I cry.
•
• let it go
• more quotes

On March 14th celebrate `\pi` Day. Hug `\pi`—find a way to do it.

For those who favour `\tau=2\pi` will have to postpone celebrations until July 26th. That's what you get for thinking that `\pi` is wrong.

If you're not into details, you may opt to party on July 22nd, which is `\pi` approximation day (`\pi` ≈ 22/7). It's 20% more accurate that the official `\pi` day!

Finally, if you believe that `\pi = 3`, you should read why `\pi` is not equal to 3.

And if you've got to sleep a moment on the road

I will steer for you

And if you want to work the street alone

I'll disappear for you

—Leonard Cohen (I'm Your Man)

This year's is the 30th anniversary of `\pi` day. The theme of the art is bridging the world and making friends. So myself I again team up with my long-time friend and collaborator Jake Lever. I worled with Jake on the snowflake catalogue, where we build a world of flakes.

And so, this year we also build a world. We start with all the roads in the world and stitch them together in brand new ways. And if you walk more than 1 km in this world, you'll likely to be transported somewhere completely different.

This year's `\pi` day song is Trance Groove: Paris. Why? Because it's worth to go to new places—real or imagined.

The input data set to the art are all the roads in the world, as obtained from Open Street Map.

Road segments between intersections are represented by polylines and ends at intersections are snapped together to coincide with a resolution of 5–10 meters.

There are 108,366,429 polylines and together they span about 39,930,000 km.

We took 44 cities and sampled a square patch of 0.6 × 0.6 degrees of roads from the data set centered on the longitude and latitude coordinates below. This roughly corresponds to a square of 65 km × 65 km.

These center coordinates might be slightly different from the canonical ones associated with a city—I used Google Maps to center the coordinates on what I felt was a useful center for sampling streets. Below are these coordinates along with the number of polylines extracted.

CITY LATITUDE LONGITUDE POLYLINES --------------- ------------ ------------- --------- amsterdam 52.38179720 4.90840330 98,965 bangkok 13.72635950 100.53609560 154,348 barcelona 41.38759720 2.17333560 86,575 beijing 39.90487690 116.39331750 49,867 berlin 52.51864170 13.40732310 64,336 buenos_aires -34.61566250 -58.50333750 267,432 cairo 30.05371250 31.23528970 108,524 copenhagen 55.67346250 12.58781160 45,025 doha 25.28233490 51.53479620 50,458 dublin 53.34316360 -6.24433520 44,109 edinburgh 55.94884870 -3.18828100 34,211 hong_kong 22.31338230 114.16994610 36,329 istanbul 41.03592820 28.98158110 190,938 jakarta -6.21858830 106.85252890 253,211 johannesburg -26.20653880 28.05113830 128,840 lisbon 38.73064000 -9.13667460 98,118 london 51.50838960 -0.08585320 169,164 los_angeles 34.04362360 -118.24505510 193,899 madrid 40.41671290 -3.70329570 112,495 marrakesh 31.63192610 -7.98895890 17,442 melbourne -37.88286720 145.11800540 140,817 mexico_city 19.39741470 -99.15827060 273,477 moscow 55.75202630 37.61531070 40,043 mumbai 19.18775070 72.97777590 65,316 nairobi -1.28718700 36.83157870 31,317 new_delhi 28.61245350 77.21369970 262,503 new_york 40.72187290 -73.92426750 199,652 nice 43.70006260 7.26974590 25,564 osaka 34.66944300 135.49965600 376,652 paris 48.85837360 2.29229260 175,028 prague 50.08022370 14.43002100 58,659 rome 41.89659480 12.49983650 81,370 san_francisco 37.77526950 -122.40966350 82,462 sao_paulo -23.57343700 -46.63341590 267,742 seoul 37.54869140 126.99479350 169,593 shanghai 31.22590500 121.47386710 50,036 st_petersburg 59.93029690 30.33955910 31,186 stockholm 59.32318770 18.07408060 48,321 sydney -33.86772020 151.20734660 76,820 tokyo 35.69220740 139.75613010 694,893 toronto 43.66328030 -79.38932030 73,173 vancouver 49.25782630 -123.19394300 34,081 vienna 48.20740250 16.37336040 53,669 warsaw 52.23101840 21.01639680 54,870

Each city's road coordinates were then transformed using the equirectangular projection to make the distance between longitude meridians constant with latitude. This was done by $$ \phi' \leftarrow \phi - \text{avg}(\phi) $$ $$ \lambda' \leftarrow (\lambda - avg(\lambda)) \text{cos} (avg(\phi)) $$

where `\phi` is the latitude and `\lambda` is the longitude. The average is taken over the patch of roads extracted for the city. For all steps below these transformed coordinates were used.

Let's look at one city—Copenhagen—to get a feel for the data set.

In the zoom crop below, you can see the intersections (dots) and the individual polylines that connect the intersections.

Zooming in even more you can see the Christiansborg Slot, one of the Danish Palaces and the seat of the Danish Parliament (corresponding Google Map view).

City strips were created by sampling patches of 0.015 × 0.015 degrees (after transformation). This corresponds roughly to 1.7 km.

For each position in the strip, patches were sampled in order of the digits of `\pi` only if the number of polylines in the was `40d \le N < 40(d+1)-1` where `d` is the digit of `\pi`. Patches for `d=9` only need to have `360 \le N` polylines.

For example, the first patch is assigned to `d=3` and it must have `120 \le N < 159` polylines. The second patch is sampled so that its density is `40 \le N < 79` because it is associated with the next digit, `d=1`.

Further selection on acceptable patches is performed so that the streets line up with the previous patch. Minor local adjustments and stitching are performed to make the join appear seamless.

Below is an example of a set of city strips for Amsterdam, Bangkok, Beijing, Berlin, Copenhagen, Edinburgh, Hong Kong, Johannesburg, Marrakesh and Melbourne.

Below I zoom in on a portion of the city strips above to show the result of the stitching—individual street patches are outlined in blue squares.

It's interesting to see that some patches (e.g. 4th one on the bottom strip, which is Copenhagen) don't necessarily have roads that across the patch horizontally.

World patches are a two-dimension version of city strips but they use more than one city.

Patches are sampled from cities based on the order of the digits of `\pi`, as arranged on a 6 × 6 grid. For example, the first row of patches corresponds to 314159 and the second 265358. Each digit is assigned to a city from which the corresponding patch is sampled.

As for city strips, patches are selected only if they align with previous patches. This is now trickier to do in two-dimensions because we must match a selected patch with up to two other patches already placed.

Unlike for city strips, there is no selection made for street density.

Below is a world patch using the following digit-to-city assignment: 0:Amsterdam, 1:Doha, 2:Marrakesh, 3:Mumbai, 4:Nairobi, 5:Rome, 6:San Francisco, 7:Seoul, 8:Shanghai and 9:Vancouver.

Below I zoom in on patches in the center of the image and show the cities from which the patches were sampled.

We discuss the many ways in which analysis can be confounded when data has a large number of dimensions (variables). Collectively, these are called the "curses of dimensionality".

Some of these are unintuitive, such as the fact that the volume of the hypersphere increases and then shrinks beyond about 7 dimensions, while the volume of the hypercube always increases. This means that high-dimensional space is "mostly corners" and the distance between points increases greatly with dimension. This has consequences on correlation and classification.

Altman, N. & Krzywinski, M. (2018) Points of significance: Curse(s) of dimensionality *Nature Methods* **15**:399–400.

Inference creates a mathematical model of the datageneration process to formalize understanding or test a hypothesis about how the system behaves. Prediction aims at forecasting unobserved outcomes or future behavior. Typically we want to do both and know how biological processes work and what will happen next. Inference and ML are complementary in pointing us to biologically meaningful conclusions.

Statistics asks us to choose a model that incorporates our knowledge of the system, and ML requires us to choose a predictive algorithm by relying on its empirical capabilities. Justification for an inference model typically rests on whether we feel it adequately captures the essence of the system. The choice of pattern-learning algorithms often depends on measures of past performance in similar scenarios.

Bzdok, D., Krzywinski, M. & Altman, N. (2018) Points of Significance: Statistics vs machine learning. Nature Methods 15:233–234.

Bzdok, D., Krzywinski, M. & Altman, N. (2017) Points of Significance: Machine learning: a primer. Nature Methods 14:1119–1120.

Bzdok, D., Krzywinski, M. & Altman, N. (2017) Points of Significance: Machine learning: supervised methods. Nature Methods 15:5–6.

Celebrate `\pi` Day (March 14th) and go to brand new places. Together with Jake Lever, this year we shrink the world and play with road maps.

Streets are seamlessly streets from across the world. Finally, a halva shop on the same block!

Intriguing and personal patterns of urban development for each city appear in the Boonies, Burbs and Boutiques series.

No color—just lines. Lines from Marrakesh, Prague, Istanbul, Nice and other destinations for the mind and the heart.

The art is featured in the Pi City on the Scientific American SA Visual blog.

Check out art from previous years: 2013 `\pi` Day and 2014 `\pi` Day, 2015 `\pi` Day, 2016 `\pi` Day and 2017 `\pi` Day.

We examine two very common supervised machine learning methods: linear support vector machines (SVM) and k-nearest neighbors (kNN).

SVM is often less computationally demanding than kNN and is easier to interpret, but it can identify only a limited set of patterns. On the other hand, kNN can find very complex patterns, but its output is more challenging to interpret.

We illustrate SVM using a data set in which points fall into two categories, which are separated in SVM by a straight line "margin". SVM can be tuned using a parameter that influences the width and location of the margin, permitting points to fall within the margin or on the wrong side of the margin. We then show how kNN relaxes explicit boundary definitions, such as the straight line in SVM, and how kNN too can be tuned to create more robust classification.

Bzdok, D., Krzywinski, M. & Altman, N. (2018) Points of Significance: Machine learning: a primer. Nature Methods 15:5–6.

Bzdok, D., Krzywinski, M. & Altman, N. (2017) Points of Significance: Machine learning: a primer. Nature Methods 14:1119–1120.

In a Nature graphics blog article, I present my process behind designing the stark black-and-white Nature 10 cover.

Nature 10, 18 December 2017

In this primer, we focus on essential ML principles— a modeling strategy to let the data speak for themselves, to the extent possible.

The benefits of ML arise from its use of a large number of tuning parameters or weights, which control the algorithm’s complexity and are estimated from the data using numerical optimization. Often ML algorithms are motivated by heuristics such as models of interacting neurons or natural evolution—even if the underlying mechanism of the biological system being studied is substantially different. The utility of ML algorithms is typically assessed empirically by how well extracted patterns generalize to new observations.

We present a data scenario in which we fit to a model with 5 predictors using polynomials and show what to expect from ML when noise and sample size vary. We also demonstrate the consequences of excluding an important predictor or including a spurious one.

Bzdok, D., Krzywinski, M. & Altman, N. (2017) Points of Significance: Machine learning: a primer. Nature Methods 14:1119–1120.