3.1数据集和整体思路
数据集
本章实现的是歌曲推荐,使用的是ALS算法,ALS是spark.mllib中唯一的推荐算法,因为只有ALS算法可以进行并行运算。
使用数据集在这里,里面包含该三个文件:表一:user_artist_data.txt 包含该的是(用户ID、歌曲ID、用户听的次数)
![]()
表二:artist_data.txt 这个文件包含的是(歌曲ID,歌曲名字)
表三:artist_alias.txt 输入错误,或者不同某种原因,同一首歌曲可能具有不同ID,这个是歌曲勘误表(bad_id, good_id)
![]()
程序结构
第一步:对数据进行数据清理
ALS要求输入的数据格式是(用户、产品、值),在本实验中就是(用户ID、歌曲ID、播放次数),也就是第一个文件user_artist_data.txt中的数据,但由于输入错误或者别的原因同一首歌曲有多个ID号,需要把一首歌曲的不同ID合并成一个ID(通过第三个文件artist_alias.txt)。表三artist_alias.txt文件中第一列是歌曲错误的ID,第二列是真正的ID,所以在把表一的歌曲ID通过表三来修正。同时表一中存在数据缺失,需要进行缺失处理。最后把数据结构化为(用户ID、歌曲ID、播放次数)
第二步:把数据传给ALS进行训练,并进行预测
ALS接收到的数据(用户ID、歌曲ID、播放次数)转换为表格形式:
每一行代表一个用户,每一列代表代表一首歌曲,表格数据是用户播放次数。由于一个用户所听的歌曲很有限,所以该表格是一个稀疏矩阵。ALS的做法是,把该矩阵转化为两个矩阵的相乘
X矩阵是(用户ID-特征)矩阵,k值可以