paint-brush
Revolutionizing Alzheimer's Disease Prognisis with Machine Learningby@usblogs
208 reads

Revolutionizing Alzheimer's Disease Prognisis with Machine Learning

by Pawel KOctober 23rd, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

In the quest to combat Alzheimer's disease, people have tried many things, including understanding, finding a cure or at least predicting outcomes.

People Mentioned

Mention Thumbnail
featured image - Revolutionizing Alzheimer's Disease Prognisis with Machine Learning
Pawel K HackerNoon profile picture


In the quest to combat Alzheimer's disease, people have tried many things, including understanding, finding a cure or at least predicting outcomes.


A recent article titled "Prediction of Misfolded Proteins Spreading in Alzheimer’s Disease using Machine Learning and Spreading Models". The authors introduce a pioneering approach to predict the spread of two crucial misfolded proteins (e.g. Amyloid-β and tau) which are central to the development of the disease. Alzheimer's disease is an immense challenge that has a pervasive impact on our aging society. The study delves into the prediction of misfolded proteins' concentrations, specifically Amyloid-β, two years after an initial baseline and its potential real-world applications in the field of healthcare. In this article, first, I review briefly what is the clinical relevance, and then I go into more detail about the data science and machine learning involved.


Traditionally, research on the spreading of misfolded proteins in Alzheimer's disease has relied on simulations with numerous empirically estimated parameters. The article, authored by a team of innovative researchers, provides an alternative perspective by employing two cutting-edge machine learning techniques. These novel approaches are then compared with well-established simulation models, shedding light on a more efficient way to predict the concentrations of Amyloid-β in patients with Alzheimer's disease.


Substantially, they used autoregressive models and graph convolutional networks. As the idea is to model proteins spreading through the brain graph, graph convolutional neural networks were the ideal choice. Both methods aim to predict the concentrations of Amyloid-β two years after an initial baseline, offering invaluable insights into the disease's progression. The project has been led by Prof. Alessandro Crimi from Sano, center for Computational Medicine.


The researchers put the source code and an app based on Streamlit online.

The article is accessible at the URL: https://academic.oup.com/cercor/advance-article/doi/10.1093/cercor/bhad380/7311320

The source code is here: https://github.com/SanoScience/MP-spreading-prediction/


How does this thing work?

The first (most effective) method is based on autoregressor models.


Autoregressive models are a class of time series models that use previous time steps' values to predict the value at the current time step. These models are commonly denoted as AR(p), where "p" represents the number of previous time steps used for prediction. Autoregressive models assume that the current value of a time series is a linear combination of its past values.


There is a basic Python code example of how autoregressive models work using the statsmodels library. Look at this example:


import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt

Generate synthetic time series data

np.random.seed(0)
n = 100
time = np.arange(n)
data = 0.5 * time + np.random.normal(0, 1, n)

Plot the time series

plt.plot(time, data)
plt.xlabel("Time")
plt.ylabel("Value")
plt.title("Synthetic Time Series")
plt.show()

Fit an AR(2) model

p = 2  # Order of the autoregressive model
model = sm.tsa.AR(data)
result = model.fit(p)

Print model summary

print(result.summary())

Generate predictions

predictions = result.predict(start=p, end=n-1)

Plot the original data and the predictions

plt.plot(time, data, label="Original Data")
plt.plot(time[p:], predictions, label="AR(2) Predictions")
plt.xlabel("Time")
plt.ylabel("Value")
plt.legend()
plt.title("AR(2) Model Predictions")
plt.show()



This code is, however, meant for pairwise prediction. The authors of the paper capitalize on a more advanced approach relating all brain parts, where they find optimal values through a gradient descent similar to the training of neural networks.


The other approach they propose is using graph convolutional networks reinforced by the brain networks. More specifically, they use Spektral.


Spektral is a Python library designed for working with graph neural networks (GNNs) and handling graph-structured data. It provides a high-level interface to create, train, and evaluate GNN models for various tasks, including node classification, graph classification, and link prediction.


The main achievement of this work is that the approach outperformed previous approaches based on simulation to predict misfolded protein prediction.


There is hope that these predictions can be used to create more personalized treatments, ultimately helping Alzheimer’s disease patients.