Curso de Big Data K19: caso de recomendación de películas de Spark y problema de arranque en frío del sistema de recomendación

Correo electrónico del autor del artículo: [email protected] Dirección: Huizhou, Guangdong

 ▲ El programa de este capítulo

⚪ Dominar los casos de Spark: recomendaciones de películas;

⚪ Almacenamiento de modelos de Master Spark;

⚪ Carga del modelo Master Spark;

⚪ Domine el problema del arranque en frío del sistema de recomendación de Spark;

1. Caso – Recomendación de película

1. Recomendaciones basadas en usuarios

1. Descripción

Ahora vamos a procesar el conjunto de datos ml-100k. El archivo u.data contiene 100.000 datos, principalmente valoraciones de películas de los usuarios.

2. Código

importar org.apache.spark._

importar org.apache.spark.mllib.recommendation.{ALS,Rating}

objeto Demo11{

def principal(argumentos:Matriz[Cadena]):Unidad={

val conf=new SparkConf().setMaster("local").setAppName("ml-100k")

val sc=nuevo SparkContext(conf)

val rawData=sc.textFile("d://ml-100k/u.data")

val rawRatings=rawData.map(_.split("\t").take(3))

val calificaciones=rawRatings.map{

case Array(usuario,película,calificación)=>

Clasificación (usuario.aInt,película.aInt,clasificación.aDoble)

}

modelo val=ALS.train(calificaciones,50,10,0.01)

val rs1=model.predict(789,123)//Predice la calificación del usuario No. 789 para la película No. 123

val rs2=model.recommendProducts(789,10)//Recomendar 10 películas (top10) para el usuario número 789

}

}

2. Verifique el contenido recomendado

1. Descripción

Para probar visualmente la efectividad de las recomendaciones, simplemente puede comparar los títulos de las películas calificadas por los usuarios con los títulos de las películas recomendadas.

código

val películas=sc.textFile("d://ml-100k/u.item")

val titles=movies.map(line=>line.split("\\|").take(2))

.map(array=>(array(0).toInt,array(1))).collectAsMap()

println(titles(123))//Ver el título de la película número 123

2. Descripción

Para el usuario 789, podemos encontrar las películas a las que ha estado expuesto, las 10 películas con las calificaciones más altas y sus nombres. Para una implementación específica, primero puede usar la función keyBy de Spark para crear un par clave-valor RDD a partir del RDD de calificaciones. Su clave principal es la identificación de usuario. Luego use la función de búsqueda para devolver al conductor solo los datos de calificación correspondientes al valor clave dado (es decir, una ID de usuario específica).

código

val movieForUser789=ratings.keyBy(_.user).lookup(789)

println(movieForUser789.size)//Comprueba cuántas películas ha calificado el usuario 789

3. Descripción

A continuación, necesitamos obtener las 10 películas con las calificaciones más altas de este usuario. El método específico es usar el atributo de calificación del objeto Rating para ordenar la colección moviesForUser y seleccionar las 10 calificaciones principales (incluida la ID de película correspondiente). Luego utilícelo como entrada y utilice títulos para asignarlo al formato "(nombre de la película, clasificación específica)". Luego imprima el nombre y la calificación específica:

Código 1

movieForUser789.sortBy(-_.rating).take(10)

.map(calificación=>(títulos(calificación.producto),calificación.calificación))

.foreach(imprimirln)

Resultado 1

(El padrino, El (1972),5.0)

(Trainspotting (1996), 5.0)

(Hombre muerto caminando (1995), 5.0)

(Guerra de las Galaxias (1977), 5.0)

(Swingers (1996), 5.0)

(Saliendo de Las Vegas (1995), 5.0)

(Encuadernado (1996), 5,0)

(Fargo (1996),5.0)

(Última Cena, La (1995),5.0)

(Partes privadas (1997), 4.0)

Código 2

Supongo que te gusta

Origin blog.csdn.net/u013955758/article/details/132567577
Recomendado
Clasificación