1
votes

Comment les points kmeans initiaux fonctionnent-ils dans BigQuery ML?

J'utilise BigQuery pour le machine learning, plus précisément la méthode k-means pour un ensemble de données sans étiquette où j'essaie de trouver des clusters. J'aimerais savoir si quelqu'un a découvert comment le BQ ML initie les centres de gravité.

J'ai déjà essayé de consulter la documentation mais soit il n'y a rien, soit je ne l'ai pas trouvé.

CREATE MODEL `project.dataset.model_name`
    OPTIONS(
        model_type = "kmeans",
        num_clusters = 3,
        distance_type = "euclidean",
        early_stop = TRUE,
        max_iterations = 20,
        standardize_features = TRUE)
    AS
    (SELECT * FROM `project.dataset.sample_date_to_train`  
    )


0 commentaires

3 Réponses :


0
votes

Si je devais deviner, il utilise probablement une logique similaire à TensorFlow (BQML pourrait utiliser TF sous le capot tel quel). Le partitionnement aléatoire semble être la valeur par défaut de TensorFlow, ce serait donc mon estimation.


1 commentaires

J'ai compris votre argument, je ne connaissais pas cette possibilité d'utiliser Modèle TensorFlow sur BQML , peut-être même que vous ne saviez pas haha. Mais de toute façon, je n'ai pas le modèle TF, j'utilisais le "modèle BQ" tel quel, peut-être le moyen le plus simple de créer un modèle kmeans sur BQML, mais je pense que de cette façon nous n'avons pas la possibilité de définir nos propres points de départ.



0
votes

La raison pour laquelle vous voyez des résultats différents chaque fois que vous entraînez le modèle est due à la nature aléatoire des valeurs initiales affectées aux centres de gravité. L'algorithme K-means commence par sélectionner au hasard une valeur (position) pour le nombre k de centroïdes choisis. Si vous consultez cette documentation, elle explique le processus exact lors de l'utilisation de l'algorithme K-means 1 .


0 commentaires

1
votes

Pour une personne qui cherche toujours une réponse, une mise à jour a récemment été effectuée sur BigQuery ML à ce sujet. Deux nouveaux paramètres ont été ajoutés à l'instruction CREATE MODEL , c'est-à-dire:

  • KMEANS_INIT_METHOD
  • KMEANS_INIT_COL

En gros, vous pouvez définir vos observations K personnalisées (appartenant à la table de données) qui serviront de centroïdes initiaux pour votre algorithme K -means. Vous pouvez trouver la documentation relative à ce lien < / a>. Ce n'est peut-être pas la solution la plus intéressante à votre problème, mais c'est toujours quelque chose avec lequel vous pouvez travailler si vous avez besoin de reproductibilité.


1 commentaires

Agréable! Ils mettent à jour les documents, c'est maintenant possible. Merci, @ ric-s