[JAVA] [Apprentissage automatique avec Apache Spark] Vecteur fragmenté (vecteur fragmenté) et vecteur dense (vecteur dense)

Aperçu

--Organisation du vecteur clairsemé et du vecteur dense d'Apache Spark

environnement

Qu'est-ce que Sparse Vector?

Sparse signifie «écraser».

Lorsque les éléments d'un vecteur contiennent plusieurs 0 Par exemple

[0.1,0.0,0.0,0.0,0.3]

Quand il y avait un vecteur

Pour exprimer ce vecteur

"** La valeur du premier élément est 0,1 **, la valeur du dernier élément est 0,3 ** et le nombre d'éléments est 5 **."

Il est basé sur l'idée que l'information est suffisante. (Les valeurs des autres éléments sont ** 0,0 **)

De cette manière, la quantité d'informations peut être réduite, donc l'avantage est que ** la mémoire peut être économisée **.

Quelque chose comme un vecteur clairsemé est implémenté dans la plupart des bibliothèques d'apprentissage automatique.

Vecteur Sparce dans Spark

Désormais, il est facile de créer un vecteur clairsemé dans Spark.

Utilisez ** org.apache.spark.ml.linalg.SparseVector ** dans le package ** spark.ml **.

La classe ** SparseVector ** s'initialise avec un tableau d'index (indices) et un tableau de valeurs (valeurs)

Si vous voulez créer [0.1,0.0,0.0,0.0,0.3], tableau d'index (indices) `` new int [] {0, 2} '' et tableau de valeurs (valeurs) `nouveau double C'est OK si vous initialisez avec [] {0.1, 0.5} ''

image.png

SparseVector


// SparseVector(Vecteur clairsemé)
int size = 3;//Taille de l'élément vectoriel
int[] indices = new int[] { 0, 4 };
double[] svalues = new double[] { 0.1, 0.5 };
Vector svec = new SparseVector(size, indices, svalues);
System.out.println("SparseVector=" + Arrays.toString(svec.toArray()));

Résultat d'exécution


SparseVector=[0.1, 0.0, 0.0, 0.0, 0.5]

Il peut être mis en réseau avec `` Vector # toArray '', mais bien sûr, la mémoire consommée est enregistrée car seuls les indices (tableau d'indices) et les valeurs (tableau de valeurs) sont conservés lorsqu'ils ne sont pas nécessaires.

Qu'est-ce que le vecteur dense?

Associez-le au vecteur clairsemé. Il contient toutes les valeurs des éléments du vecteur comme un tableau général.

[0.1,0.0,0.0,0.0,0.3]

Vecteur dense dans Spark

Dense Vecotr s'initialise en spécifiant un tableau de valeurs (valeurs)

Si vous voulez créer [0,1, 0,0, 0,0, 0,0, 0,3] '', passez le tableau nouveau double [] {0,1, 0,0, 0,0, 0,0, 0,5} '' du nombre d'éléments. Est un vecteur dense

image.png

DenseVector


// DenseVector(Vecteur dense)
double[] dvalues = new double[] { 0.1, 0.0, 0.0, 0.0, 0.5 };
Vector dvec = new DenseVector(dvalues);
System.out.println("DenseVector=" + Arrays.toString(dvec.toArray()));

Résultat d'exécution


DenseVector=[0.1, 0.0, 0.0, 0.0, 0.5]

Code source complet (Java)

Utilisez ** Apache Spark ** à partir de Java

SparkVectorExamples.java


package org.riversun.spark;

import java.util.Arrays;

import org.apache.spark.ml.linalg.DenseVector;
import org.apache.spark.ml.linalg.SparseVector;
import org.apache.spark.ml.linalg.Vector;

public class SparkVectorExamples {

	public static void main(String[] args) {

		// DenseVector(Vecteur dense)
		double[] dvalues = new double[] { 0.1, 0.0, 0.0, 0.0, 0.5 };
		Vector dvec = new DenseVector(dvalues);
		System.out.println("DenseVector=" + Arrays.toString(dvec.toArray()));

		// SparseVector(Vecteur clairsemé)
		int size = 5;//Taille de l'élément vectoriel
		int[] indices = new int[] { 0, 4 };
		double[] svalues = new double[] { 0.1, 0.5 };
		Vector svec = new SparseVector(size, indices, svalues);
		System.out.println("SparseVector=" + Arrays.toString(svec.toArray()));
	}
}

Résultat d'exécution


DenseVector=[0.1, 0.0, 0.0, 0.0, 0.5]
SparseVector=[0.1, 0.0, 0.0, 0.0, 0.5]

Recommended Posts

[Apprentissage automatique avec Apache Spark] Vecteur fragmenté (vecteur fragmenté) et vecteur dense (vecteur dense)
Premiers pas avec le Machine Learning avec Spark "Price Estimate" # 1 Chargement des ensembles de données avec Apache Spark (Java)
Liaison de données avec Spark et Cassandra
[Apprentissage automatique avec Apache Spark] Associez l'importance (Feature Importance) d'une variable de modèle d'arbre au nom de la variable (nom de la variable explicative)
Introduction à l'apprentissage automatique avec Spark "Price Estimate" # 2 Prétraitement des données (gestion des variables de catégorie)
Introduction à l'apprentissage automatique avec Spark "Estimation de prix" # 3 Apprenons avec les données d'entraînement et créons un [moteur d'estimation de prix]