Introducció

En aquest projecte, aprendrem a utilitzar Hadoop per a implementar un flux de treball d'aprenentatge automàtic. Utilitzarem l'ecosistema Hadoop per a processar grans volums de dades i aplicar algorismes d'aprenentatge automàtic per a obtenir insights valuosos. Aquest projecte inclou els següents passos:

  1. Preparació de les dades
  2. Processament de les dades amb MapReduce
  3. Aplicació d'algorismes d'aprenentatge automàtic
  4. Avaluació del model
  5. Optimització i ajust del model

  1. Preparació de les dades

1.1. Recopilació de dades

Per a aquest projecte, utilitzarem un conjunt de dades públics. Podeu descarregar el conjunt de dades des de aquest enllaç.

1.2. Emmagatzematge de dades a HDFS

Un cop descarregat el conjunt de dades, el primer pas és carregar-lo a HDFS.

# Crear un directori a HDFS
hdfs dfs -mkdir /user/hadoop/ml_project

# Carregar el conjunt de dades a HDFS
hdfs dfs -put local_dataset.csv /user/hadoop/ml_project/

  1. Processament de les dades amb MapReduce

2.1. Escriure un programa MapReduce

El següent pas és escriure un programa MapReduce per a processar les dades. A continuació es mostra un exemple de codi en Java per a un treball MapReduce que calcula la mitjana de valors d'un conjunt de dades.

Mapper.java

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class AverageMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    private final static Text word = new Text("average");
    private IntWritable number = new IntWritable();

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String[] fields = value.toString().split(",");
        int num = Integer.parseInt(fields[1]);
        number.set(num);
        context.write(word, number);
    }
}

Reducer.java

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class AverageReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        int sum = 0;
        int count = 0;
        for (IntWritable val : values) {
            sum += val.get();
            count++;
        }
        int average = sum / count;
        context.write(key, new IntWritable(average));
    }
}

Driver.java

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class AverageDriver {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "average calculation");
        job.setJarByClass(AverageDriver.class);
        job.setMapperClass(AverageMapper.class);
        job.setReducerClass(AverageReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

2.2. Executar el treball MapReduce

Compila i executa el treball MapReduce:

# Compilar el codi Java
javac -classpath `hadoop classpath` -d . AverageMapper.java AverageReducer.java AverageDriver.java

# Crear un fitxer JAR
jar -cvf average.jar *.class

# Executar el treball MapReduce
hadoop jar average.jar AverageDriver /user/hadoop/ml_project/local_dataset.csv /user/hadoop/ml_project/output

  1. Aplicació d'algorismes d'aprenentatge automàtic

3.1. Utilitzar Apache Mahout

Apache Mahout és una biblioteca d'aprenentatge automàtic que s'integra amb Hadoop. Utilitzarem Mahout per a aplicar un algorisme de classificació.

# Convertir les dades a format seqüencial
mahout seqdirectory -i /user/hadoop/ml_project/output -o /user/hadoop/ml_project/seqdata

# Vectoritzar les dades
mahout seq2sparse -i /user/hadoop/ml_project/seqdata -o /user/hadoop/ml_project/vectors

# Aplicar l'algorisme de classificació
mahout trainnb -i /user/hadoop/ml_project/vectors -o /user/hadoop/ml_project/model -li /user/hadoop/ml_project/labels -ow -c

  1. Avaluació del model

4.1. Validació creuada

Utilitzarem la validació creuada per a avaluar el rendiment del nostre model.

mahout testnb -i /user/hadoop/ml_project/vectors -m /user/hadoop/ml_project/model -l /user/hadoop/ml_project/labels -ow -o /user/hadoop/ml_project/predictions

  1. Optimització i ajust del model

5.1. Ajust de paràmetres

Experimenta amb diferents paràmetres i algorismes per a millorar el rendiment del model. Prova diferents tècniques de preprocessament de dades, com la normalització i la selecció de característiques.

Conclusió

En aquest projecte, hem après a utilitzar Hadoop per a implementar un flux de treball d'aprenentatge automàtic. Hem cobert la preparació de dades, el processament amb MapReduce, l'aplicació d'algorismes d'aprenentatge automàtic amb Apache Mahout, l'avaluació del model i l'optimització. Aquest projecte proporciona una base sòlida per a aplicar tècniques d'aprenentatge automàtic a grans volums de dades utilitzant l'ecosistema Hadoop.

Exercicis pràctics

  1. Experimenta amb diferents conjunts de dades: Prova aquest flux de treball amb altres conjunts de dades públics.
  2. Prova altres algorismes: Utilitza altres algorismes d'aprenentatge automàtic disponibles a Apache Mahout.
  3. Optimitza el teu model: Experimenta amb diferents tècniques de preprocessament de dades i ajust de paràmetres per a millorar el rendiment del teu model.

Solucions als exercicis

  1. Experimenta amb diferents conjunts de dades: Descarrega un nou conjunt de dades, carrega'l a HDFS i segueix els passos del projecte per a processar-lo i aplicar un algorisme d'aprenentatge automàtic.
  2. Prova altres algorismes: Consulta la documentació d'Apache Mahout per a veure quins altres algorismes estan disponibles i com utilitzar-los.
  3. Optimitza el teu model: Prova diferents tècniques de preprocessament, com la normalització, la selecció de característiques i l'ajust de paràmetres, per a veure com afecten el rendiment del teu model.
© Copyright 2024. Tots els drets reservats