Discusión sobre el artículo "Aprendizaje automático y Data Science (Parte 8): Clusterización con el método de k-medias en MQL5"

 

Artículo publicado Aprendizaje automático y Data Science (Parte 8): Clusterización con el método de k-medias en MQL5:

Para todos los que trabajan con datos, incluidos los tráders, la minería de datos puede descubrir posibilidades completamente nuevas, porque a menudo los datos no son tan simples como parecen. Resulta difícil para el ojo humano ver patrones y relaciones profundas en un conjunto de datos. Una solución sería el algoritmo de k-medias o k-means. Veamos si resulta útil.

El análisis de clústeres consiste en la ordenación de un conjunto de objetos en grupos de tal forma que los objetos con los mismos atributos se coloquen en los mismos grupos (clústeres).

Por ejemplo, en las tiendas, los productos semejantes se encuentran juntos porque alguien los ha clasificado en grupos. Cuando los datos del conjunto no se clasifican en grupos, el análisis de clústeres hará lo mismo: recopilará los valores de datos más similares en grupos (clústeres), destacando los datos del conjunto común.

El análisis de clústeres en sí mismo no es un algoritmo. Para resolver el problema principal, podemos usar varios algoritmos que se distinguen sustancialmente en su comprensión de lo que es un clúster.

Fuente de la imagen: Wikipedia

Los tres tipos de clusterización más conocidos son:
  1. Exclusiva 
  2. Superpuesta 
  3. Jerárquica 

Autor: Omega J Msigwa

 

En primer lugar, me gustaría dar las gracias al autor por compartir este artículo. Espero que el autor, además de explicar estas teorías, puede dar ejemplos de cómo K-mean clustering se utiliza en el comercio real, si no hay un ejemplo correspondiente, este u otros artículos del autor son prácticamente indistinguibles de los libros de texto. El aprendizaje automático se utiliza en muchos campos.

Estaría bien que el autor ilustrara mejor estas teorías de aprendizaje automático con ejemplos de mecanismos de trading de MT5. Gracias de nuevo por compartir.

 
m_cols = Matrix.Cols();
      n = Matrix.Rows(); //número de elementos | Filas de la matriz
      
      InitialCentroids.Resize(m_clusters,m_cols);     
      vector cluster_comb_v = {};
      matrix cluster_comb_m = {};      
      vector rand_v = {};
      
      for (ulong i=0; i<m_clusters; i++) 
        {
          rand_v = Matrix.Row(i * m_clusters); 
          InitialCentroids.Row(rand_v,i);
        }     
     Print("Initial Centroids matrix\n",InitialCentroids);    

hola Omega J Msigwa, gracias por tu articulo tan util.

¿me estoy perdiendo algo o en el código anterior te refieres a DMatrix?

 
Mahdi Ebrahimzadeh #:

Hola Omega J Msigwa, gracias por su artículo tan útil.

¿me estoy perdiendo algo o en el código anterior te refieres a DMatrix?

Me refiero a Matrix como se explica en el artículo, ya que este código se encuentra bajo la función

void CKMeans::KMeansClustering(const matrix &Matrix, matrix &clustered_matrix,int iterations = 10)
 { 
      m_cols = Matrix.Cols();
      n = Matrix.Rows(); //número de elementos | Filas de la matriz
      
      InitialCentroids.Resize(m_clusters,m_cols);
      cluster_assign.Resize(n);
            
      clustered_matrix.Resize(m_clusters, m_clusters*n);
      clustered_matrix.Fill(NULL);
      
      vector cluster_comb_v = {};
      matrix cluster_comb_m = {};      
      vector rand_v = {};      
      for (ulong i=0; i<m_clusters; i++) 
        {
          rand_v = Matrix.Row(i * m_clusters); 
          InitialCentroids.Row(rand_v,i);
        }     
     Print("Initial Centroids matrix\n",InitialCentroids);    
.... rest of the code