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 renduMais 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.
Bonjour,
Sur la première fonction, j’obtiens l’erreur suivante :
Erreur : unexpected symbol in:
« colnames(DF) <- c('Date', 'Sessions'
return"
après la ligne colnames(DF) <- c('Date', 'Sessions'
Une solution ?
Merci
Arnaud
Hello,
Je pense que le code n’est pas complet sur le premier bloc Analytics. J’ai ajouté une parenthèse après ‘Sessions’ et ça fonctionne mieux 😉
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)
}
Merci pour ce tuto en tous cas !
Merci Arthur, c’est un ancien code.
Je vais le refaire et le mettre sur le gist.