Diskussion zum Artikel "Datenwissenschaft und maschinelles Lernen (Teil 08): K-Means Clustering in reinem MQL5"

 

Neuer Artikel Datenwissenschaft und maschinelles Lernen (Teil 08): K-Means Clustering in reinem MQL5 :

Data Mining ist für Datenwissenschaftler und Händler von entscheidender Bedeutung, da die Daten oft nicht so einfach sind, wie wir denken. Das menschliche Auge kann die kleinen zugrundeliegenden Muster und Beziehungen im Datensatz nicht erkennen, vielleicht kann uns der Algorithmus K-Means dabei helfen. Finden wir es heraus...

Bei der Clustering-Analyse geht es darum, eine Menge von Objekten so zu gruppieren, dass Objekte mit denselben Attributen in dieselben Gruppen (Cluster) eingeordnet werden.

Wenn Sie in ein Einkaufszentrum gehen, werden Sie ähnliche Artikel finden, die zusammen aufbewahrt werden, richtig? Wenn der Datensatz nicht gruppiert ist, wird die Clustering-Analyse genau das tun: Die Datenwerte gruppieren, die einander in gewisser Weise ähnlicher sind als der Rest der Gruppen (Clusters).

Die Clustering-Analyse selbst ist kein spezifischer Algorithmus. Die allgemeine Aufgabe kann durch verschiedene Algorithmen gelöst werden, die sich in ihrem Verständnis dessen, was ein Cluster ist, erheblich unterscheiden.

Bildquelle: wikipedia

Es gibt drei weithin bekannte Arten von Clustern:
  1. Exklusives Clustering 
  2. Überlappendes Clustering 
  3. Hierarchisches Clustering 

Autor: Omega J Msigwa

 

Zunächst einmal möchte ich dem Autor für die Bereitstellung dieses Artikels danken. Ich hoffe, dass der Autor neben der Erläuterung dieser Theorien auch Beispiele dafür geben kann, wie das K-Mean-Clustering im realen Handel eingesetzt wird. Wenn es kein entsprechendes Beispiel gibt, sind dieser oder andere Artikel des Autors praktisch nicht von Lehrbüchern zu unterscheiden. Maschinelles Lernen wird in vielen Bereichen eingesetzt.

Es wäre schön, wenn der Autor diese Theorien des maschinellen Lernens besser mit Beispielen von MT5-Handelsmechanismen illustrieren könnte. Nochmals vielen Dank für den Austausch.

 
m_cols = Matrix.Cols();
      n = Matrix.Rows(); //Anzahl der Elemente | Matrixzeilen
      
      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);    

Hallo Omega J Msigwa, danke für Ihren sehr nützlichen Artikel.

Übersehe ich etwas oder meinen Sie im obigen Code DMatrix?

 
Mahdi Ebrahimzadeh #:

Hallo Omega J Msigwa, danke für Ihren sehr nützlichen Artikel.

Übersehe ich etwas oder meinen Sie im obigen Code DMatrix?

Ich meine Matrix, wie im Artikel erklärt, denn dieser Code befindet sich unter der Funktion

void CKMeans::KMeansClustering(const matrix &Matrix, matrix &clustered_matrix,int iterations = 10)
 { 
      m_cols = Matrix.Cols();
      n = Matrix.Rows(); //Anzahl der Elemente | Matrixzeilen
      
      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