Détecter vos marronniers avec #R


Détecter les marronniers de votre site grâce à AnomalyDetection et R

Comme chacun d’entre nous, nous avons besoin de connaître à l’avance les pages qui vont remonter à un instant donné.
Nous nous sommes dit qu’avec R il devait forcément être possible de faire cela.
Après quelques recherches, nous sommes tombés sur le package R : AnomalieDetection.

Ce package est utilisé par Twitter pour détecter quels hashtags remontent le mieux. Twitter détecte alors une forte utilisation de ce hashtag, il y a donc une anomalie et le met donc en Top Tags.

Nous avons commencé à récupérer l’url que nous souhaitions traiter avec R et Google Analytics (vous vous souvenez du fichier API analytics ?).

Cela va nous permettre de voir quand, dans l’année, cette url est fortement recherchée. Cela créera ce que l’algorithme appelle une anomalie.
On va donc reprendre le premier fichier que l’on a crée dans « Générer son reporting Analytics avec R » et y ajouter cette nouvelle fonction :

analyticsGetDateForOneUrl <- function(id, startdate, enddate, url) {
 DF <- google_analytics(id = id,
 start=startdate, end=enddate,
 metrics = c("sessions"),
 dimensions = c("date"),
 filters = paste("ga:landingPagePath=~", url,sep=""),
 max = 100000)
 colnames(DF) <- c('Date', 'Sessions'
 return(DF)
 }

Avant tout, vous devez lancer une à une ces trois commandes dans votre console R.

install.packages("devtools")
devtools::install_github("twitter/AnomalyDetection")
library(AnomalyDetection)
data <- analyticsGetDateForOneUrlRecette("Votre ID Analytics", "2015-01-01","2016-04-01", 'Votre URL sans le path')

message("Anomaly detection")
colnames(data) <- c("date","sessions")
if("date" != names(data)[1]){
stop("'date' must be in first column of data")
}

if(ncol(data) > 2){
warning("More than two columns detected in data, only first that isn't 'date' is used")
}

data <- data[,1:2]

#la date doit être convertie dans un format bien précis
data$date <- as.POSIXlt(data$date)

#les noms de colonnes doivent être modifiées
colnames(data) <- c("timestamp","count")

data[is.na(data[,2]),2] <- 0
a_result <- AnomalyDetectionTs(data, plot = T)
print(a_result)

Une fois que le code s’est exécuté voici le rendu
anomaly Detection RMais comment interpréter ce graphique ?

Lorsque l’on voit des petits cercles autour des plus grands pics, on peut interpréter que l’algorithme détecte une anomalie par rapport aux données de l’année.

Pour faire cela sur plusieurs urls, c’est assez simple. Il vous suffit d’avoir dans un dataframe, toutes les urls de votre site.
Ensuite on boucle sur le dataframe et on génère un graphique pour chaque url et le tour est joué.

Mais à quoi ça sert ? 

Pour un site E-commerce, on peut savoir quand le produit est le plus recherché dans l’année précédent et anticiper les ventes de l’année en cours.

Les exemples sont nombreux :

  • On peut savoir à quels moments les barbecues sont les plus vus et donc les mettre en avant dans notre maillage interne.
  • On peut savoir quand les cabanes sont les plus vues et donc les mettre en avant dans sur notre site.
  • On peut savoir quand les maladies apparaissent dans l’année pour pousser la vente des médicaments.

Dans un prochain article, nous allons créer une interface en utilisant Shiny. Cela vous permettra de proposer cet outils à vos équipes.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *