Search

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement


La liste des tâches d’optimisation des moteurs de recherche qui peuvent être automatisées ne cesse de s’allonger et je suis impatient de voir davantage d’applications d’automatisation partagées au sein de la communauté.

Impliquons-nous !

Étant donné l’accueil positif de mon introduction pratique à la colonne Python et l’importance croissante des compétences en matière d’apprentissage machine, j’ai décidé d’écrire cette pièce sur l’apprentissage machine, que j’ai essayé de rendre super facile à suivre.

J’ai codé un carnet Google Colab simple à suivre que vous pouvez utiliser pour produire un ensemble de données de formation personnalisé. Cet ensemble de données nous aidera à construire un modèle prédictif de CTR.

Cependant, au lieu d’utiliser notre modèle pour prédire le CTR, nous l’utiliserons pour savoir si l’ajout de mots-clés aux balises de titre prédit le succès.

J’envisage le succès si nos pages obtiennent plus de clics de recherche organique.

Les données de formation proviendront de la console de recherche Google et les balises de titre (et les méta descriptions) du grattage des pages.

Voici notre plan technique pour générer l’ensemble des données de formation :

  1. Extrait: Notre code se connectera à la console de recherche Google et extraira les données de notre formation initiale.
  2. Transformer: Ensuite, nous allons chercher les titres des pages et les méta descriptions et calculer si les requêtes sont dans les titres.
  3. Charger: Enfin, nous exporterons notre ensemble de données avec toutes les caractéristiques et l’importerons dans le système ML.

Dans la plupart des projets d’apprentissage machine, vous passerez la majeure partie de votre temps à rassembler l’ensemble des données de formation.

Le travail d’apprentissage machine proprement dit demande beaucoup moins d’efforts mais exige une compréhension claire des principes fondamentaux.

Afin de simplifier au maximum la partie apprentissage machine, nous allons prendre nos données et les brancher sur BigML, un ensemble d’outils d’apprentissage machine « do it for you ».

C’est ce que j’ai appris lorsque j’ai terminé ce tutoriel en utilisant les données d’un de mes clients (le vôtre peut être différent).

Une introduction pratique à l'apprentissage machine pour les professionnels du référencement

Après la position du mot-clé et les impressions de recherche, la présence de la requête dans le titre joue un rôle prédictif lorsqu’on essaie d’augmenter les clics de recherche organique.

Voyons comment j’ai effectué cette analyse en utilisant l’apprentissage machine.

Extraire, transformer et charger

Un processus très courant dans le pipeline d’apprentissage machine est appelé extraction, transformation, charge.

Traditionnellement, l’idée était de déplacer les données d’une base de données à une autre, mais dans l’apprentissage machine, on dispose rarement des données de formation source dans le format attendu par les modèles.

De nombreuses tâches liées à l’apprentissage machine sont automatisées, mais je pense que l’expertise du domaine sur le type de données qui permettent de faire de bonnes prévisions restera une compétence précieuse.

En tant qu’OSE, apprendre à construire des ensembles de données de formation personnalisés est probablement la première chose à faire pour investir du temps dans l’apprentissage et la maîtrise.

Les sources de données publiques et génériques ne sont pas aussi bonnes que celles que vous pouvez construire et conserver vous-même.

Exploiter le carnet Colab

Tout d’abord, faites une copie du carnet et créez une feuille de calcul vide que nous utiliserons pour remplir l’ensemble des données de formation.

Vous devez fournir trois éléments :

  • Le nom de la feuille de calcul.
  • L’URL du site web dans la console de recherche.
  • Un fichier d’autorisation nommé client_id.json.

Permettez-moi de vous présenter les étapes à suivre pour produire le client_id.json de l’entreprise.

Tout d’abord, il existe une configuration permettant de télécharger un fichier client_id.json que notre code Python peut utiliser pour se connecter en toute sécurité à la console de recherche Google.

Tout d’abord, assurez-vous de faire fonctionner la cellule avec le formulaire qui a les valeurs d’entrée dans le carnet.

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Le code suivant dans le carnet vous invite à télécharger le fichier client_id.json de votre ordinateur.

#Next, we need to upload the file

from google.colab import files

files.upload()

Vous pouvez cliquer sur Runtime > Courir après dans la file d’attente après avoir téléchargé le fichier client_id.json (n’oubliez pas de lancer d’abord le formulaire en haut, pour que les valeurs d’entrée soient saisies).

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Vous serez invité à demander une autorisation pour accéder à la console de recherche.

Veuillez copier et coller le code d’autorisation dans le carnet.

Il y aura une deuxième invite, qui nous permettra d’accéder à la feuille de calcul vierge.

Après avoir exécuté toutes les cellules, vous devriez obtenir un ensemble de données de formation personnalisé dans la feuille de calcul vierge comme celle-ci.

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Passons notre ensemble de données de formation au BigML et voyons ce que nous allons apprendre.

Nous passerons en revue une partie du code dans le carnet après la partie BigML.

Formation au modèle prédictif

BigML rend la construction de modèles prédictifs vraiment simple. Vous devez passer par trois phases :

  • Importer le fichier de données source (notre Google Sheet.)
  • Créer un ensemble de données qui fonctionnera pour l’apprentissage machine. Cela implique de supprimer certaines colonnes et de sélectionner la colonne d’objectif que nous allons essayer de prévoir.
  • Sélectionnez un modèle prédictif à former comme (nous utiliserons un réseau neuronal profond).

Essayons d’abord une formation simple et naïve utilisant toutes les colonnes de notre base de données.

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Ici, nous importons la feuille Google que nous avons produite avec le carnet.

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Ensuite, nous créons une source de données et sélectionnons CTR comme cible.

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Remarquez les points d’exclamation. Ils mettent en évidence les colonnes qui ne sont pas utiles pour la prédiction.

Nous avons choisi Deepnet comme modèle à construire et voyons quelles sont les caractéristiques les plus importantes.

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Une chose particulièrement intéressante est que CTR montre la requête, la page et la position comme étant les caractéristiques les plus importantes.

Cela ne nous dit rien que nous ne sachions déjà. Il est préférable d’enlever ces colonnes et d’essayer à nouveau.

Mais il y a un autre problème, plus nuancé. Nous incluons les CTR, les clics et les impressions.

Si vous y réfléchissez bien, CTR est le nombre de clics divisé par les impressions, il est donc logique que le modèle trouve ce simple lien.

Nous devons également exclure le CTR de l’ensemble des formations.

Caractéristiques indépendantes ou dépendantes

Nous ne devons inclure dans notre programme de formation que les caractéristiques indépendantes correspondant à notre objectif.

Voici pourquoi.

Une façon trop simplifiée de penser à un modèle d’apprentissage machine est d’imaginer une fonction de régression linéaire dans Excel/feuilles.

Une introduction pratique à l'apprentissage automatique pour les professionnels du référencement

Les valeurs dans nos colonnes sont converties en chiffres et le but du processus de formation est d’estimer une fonction qui, étant donné une valeur, peut faire une prédiction précise.

Nous essayons de prédire les valeurs Y, étant donné les valeurs X, et un ensemble de valeurs Y, X précédemment connues.

X est une variable indépendante, et Y est une variable dépendante. Elle dépend des valeurs de X.

Mélanger négligemment des variables indépendantes et dépendantes (comme nous l’avons fait plus haut) conduit à des modèles inutiles.

Nous pouvons corriger cela en changeant la mesure de l’objectif en clics et en supprimant la colonne CTR de notre ensemble de données.

Les clics sont indépendants des impressions car vous avez également besoin du CTR, que nous avons supprimé.

Nous avons également supprimé la page et les colonnes de requête car elles ne sont pas informatives.

Compléter le dispositif de formation par de nouvelles fonctionnalités

Souvent, les fonctionnalités auxquelles vous avez accès ne sont pas assez informatives et vous devez en inventer de nouvelles.

C’est là que votre expertise du domaine et votre connaissance de Python peuvent faire une grande différence.

Un spécialiste des données travaillant sur un modèle prédictif de CTR n’a peut-être pas l’expertise en matière de SEO pour savoir que les mots-clés des balises de titre peuvent faire la différence.

Dans le carnet, nous avons ajouté un code pour créer une nouvelle colonne, query_in_titlequi donne un score de 0 à 100 si le titre comprend la requête recherchée.

Lorsque nous l’avons inclus dans la série de formations et que nous avons examiné son importance dans le modèle prédictif (comme on le voit dans l’image ci-dessus), nous avons appris quelque chose de nouveau et de précieux.

Nous pourrions suivre un processus similaire et vérifier l’impact des requêtes dans la méta description, ou le sentiment émotionnel dans le titre et la méta description, etc.

Je trouve que ce type d’exercice est un avantage sous-estimé des modèles d’apprentissage par machine.

Les machines sont très efficaces pour trouver des modèles invisibles dans les données, à condition que vous disposiez de l’expertise nécessaire pour poser les bonnes questions.

Passons en revue le code que j’ai utilisé pour générer cette nouvelle colonne.

Ajout de nouveaux éléments d’information

Vérifier si une requête apparaît dans un titre semble simple, mais c’est vraiment nuancé.

Il est possible que la requête ne soit que partiellement incluse.

Nous pouvons effectuer une correspondance partielle en effectuant une recherche floue. Nous le faisons en Python en utilisant la bibliothèque fuzzywuzzy.

Voici le code pour cela.

!pip install fuzzywuzzy[speedup]

from fuzzywuzzy import fuzz

#remove empty rows from the data frame

df = df.dropna()
df["query_in_title"] = df.apply(lambda row: fuzz.partial_ratio(row["query"], row["title"]), axis=1)

df[["page", "query", "country", "device", "clicks", "impressions", "position", "query_in_title" ]].to_excel("client.xlsx", index=False)

from google import files

files.download("client.xlsx")

Le titre et les méta descriptions ne sont pas inclus dans l’ensemble de données de la console de recherche Google. Nous les avons ajoutés en utilisant ce bout de code.

from requests_html import HTMLSession

def get_title_meta_description(page):

  session = HTMLSession()

  try:

    r = session.get(page)

    if r.status_code == 200:

      title = r.html.xpath('//title/text()')

      meta_description = r.html.xpath("//meta[@name='description']/@content")

      #Inner utility function

      def get_first(result):

        if len(result) == 0:

          return None

        else:

          return result[0]

      return {"title": get_first(title), "meta_description": get_first(meta_description)}

    else:

      print(f"Failed to fetch page: {page} with status code {r.status_code}")

  except:

    print(f"Failed to fetch page: {page}")

    return None

Ensuite, nous pouvons l’exécuter sur toutes les URL à partir de la console de recherche.

# let's get all of them

titles_and_meta_descriptions=dict()
import time

for page in pages: 

  print(f"Fetching page: {page}")

  titles_and_meta_descriptions[page] = get_title_meta_description(page)

  #add delay between requests

  time.sleep(1)

We have code in the notebook that converts this into a data frame. Next, we can merge two data frames to build our initial training set.

merged_df=pd.merge(df, new_df, how="left", on="page")
Assurez-vous de vérifier le code que j’ai utilisé pour remplir la fiche Google. J’ai trouvé une bibliothèque qui peut synchroniser une trame de données avec les Google Sheets. J’ai soumis un patch pour simplifier le processus d’authentification dans Google Colab.
# Save DataFrame to worksheet 'Client', create it first if it doesn't exist

spread.df_to_sheet(df, index=False, sheet='Client', start='A1', replace=True)

Ressources pour en savoir plus

Il y a plus de code Python à examiner, mais comme j’ai documenté le cahier Colab, il vaut mieux s’y documenter et jouer avec.

Veillez à vérifier le code d’accès à la console de recherche Google.

Un point particulièrement intéressant pour moi était que la bibliothèque ne permettait pas d’y accéder depuis Google Colab.

J’ai examiné le code et identifié les changements nécessaires pour y parvenir.

J’ai fait des changements, j’ai vu qu’ils fonctionnaient et je les ai communiqués au concepteur de la bibliothèque.

Il les a acceptés et maintenant ils font partie de la bibliothèque et toute personne qui l’utilise bénéficiera de ma petite contribution.

J’ai hâte de voir combien d’autres SEO Python dans la communauté font des contributions open source aux bibliothèques et au code que nous utilisons tous.

L’apprentissage machine est plus facile à apprendre visuellement.

Voici quelques liens sympas pour l’apprendre sans avoir recours aux mathématiques compliquées.

Plus de ressources :


Crédits image

Toutes les captures d’écran prises par l’auteur, mai 2020



Auteur/autrice

Partager:

Articles Similaires