【推荐系统】利用FM模型进行分类回归任务

简介: DictVectorizer:它是可以将非结构化的数据转成array格式,这里将字典数据转成数组,一般情况下使用字典是因为在推荐系统中的矩阵一般是稀疏的,所以采用字典存储数据高效,可以不用存储大量无用的0

一、FM回归任务


1. 导库


import numpy as np

from sklearn.feature_extraction import DictVectorizer

from pyfm import pylibfm


DictVectorizer:它是可以将非结构化的数据转成array格式,这里将字典数据转成数组,一般情况下使用字典是因为在推荐系统中的矩阵一般是稀疏的,所以采用字典存储数据高效,可以不用存储大量无用的0


它转成数组的原理和OneHot差不多,对于数值型数据,它是保留原值,而对于非数值型则会将其利用OneHot进行编码,形成一个稀疏矩阵,每列表示同个特征不同值的选择门


2. 加载数据


"""加载数据"""

def loadData(filename, path="data/ml-100k/"):

   data = []

   y= []

   

   users = set()

   items = set()

   

   with open(path + filename) as f:

       for line in f:

           (user, movie, rating, ts) = line.split('\t')

           data.append({"user_id":str(user), "movie_id":str(movie)})

           y.append(float(rating))

           users.add(user)

           items.add(movie)

   

   return (data, np.array(y), users, items)


3. 获取数据


"""获取数据"""

(train_data, y_train, train_users, train_items) = loadData("ua.base")

(test_data, y_test, test_users, test_items) = loadData("ua.test")


4. 定义编码器


vec = DictVectorizer() # 将字典数据进行编码

X_train = vec.fit_transform(train_data)

X_test = vec.fit_transform(test_data)


5. 构建模型


fm = pylibfm.FM(num_factors = 10, # 交互特征维度

              num_iter = 10, # 迭代次数

              verbose = True, # 是否打印日志

              task = "regression", # 模式

              initial_learning_rate = 0.001, # 学习率

              learning_rate_schedule = "optimal")

fm.fit(X_train, y_train)


6. 衡量误差


pred = fm.predict(X_test)

from sklearn.metrics import mean_squared_error

print("FM MSE: %.4f" % mean_squared_error(y_test, pred)) # 均方误差


二、FM分类任务


1. 导库


import numpy as np

from sklearn.feature_extraction import DictVectorizer

from sklearn.model_selection import train_test_split

from sklearn.datasets import make_classification

from pyfm import pylibfm


2. 构造数据


"""加载数据"""

X, y = make_classification(n_samples=1000,n_features=100, n_clusters_per_class=1)


"""将数据转成字典类型"""

data = [ {v: k for k, v in dict(zip(i, range(len(i)))).items()}  for i in X]


3. 划分数据集


"""划分数据集"""

X_train, X_test, y_train, y_test = train_test_split(data, y, test_size = 0.1, random_state = 2021)


4. 定义编码器


vec = DictVectorizer()

X_train = vec.fit_transform(X_train)

X_test = vec.fit_transform(X_test)


5. 构建模型


"""构建模型"""

fm = pylibfm.FM(num_factors = 2,

              num_iter = 10,

              verbose = True,

              task = "classification",

              initial_learning_rate = 0.0001,

              learning_rate_schedule = "optimal")

fm.fit(X_train, y_train)


6. 衡量误差


"""衡量误差"""

from sklearn.metrics import log_loss

print("Validation log loss: %.4f" % log_loss(y_test,fm.predict(X_test)))

目录
相关文章
|
26天前
|
机器学习/深度学习 数据采集 搜索推荐
使用Python实现智能食品推荐系统的深度学习模型
使用Python实现智能食品推荐系统的深度学习模型
70 2
|
2月前
|
机器学习/深度学习 搜索推荐 大数据
深度解析:如何通过精妙的特征工程与创新模型结构大幅提升推荐系统中的召回率,带你一步步攻克大数据检索难题
【10月更文挑战第2天】在处理大规模数据集的推荐系统项目时,提高检索模型的召回率成为关键挑战。本文分享了通过改进特征工程(如加入用户活跃时段和物品相似度)和优化模型结构(引入注意力机制)来提升召回率的具体策略与实现代码。严格的A/B测试验证了新模型的有效性,为改善用户体验奠定了基础。这次实践加深了对特征工程与模型优化的理解,并为未来的技术探索提供了方向。
120 2
深度解析:如何通过精妙的特征工程与创新模型结构大幅提升推荐系统中的召回率,带你一步步攻克大数据检索难题
|
2月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
40 4
|
2月前
|
机器学习/深度学习 搜索推荐 TensorFlow
使用Python实现智能电子商务推荐系统:深度学习模型详解
使用Python实现智能电子商务推荐系统:深度学习模型详解
211 4
|
3月前
|
搜索推荐 算法
模型小,还高效!港大最新推荐系统EasyRec:零样本文本推荐能力超越OpenAI、Bert
【9月更文挑战第21天】香港大学研究者开发了一种名为EasyRec的新推荐系统,利用语言模型的强大文本理解和生成能力,解决了传统推荐算法在零样本学习场景中的局限。EasyRec通过文本-行为对齐框架,结合对比学习和协同语言模型调优,提升了推荐准确性。实验表明,EasyRec在多个真实世界数据集上的表现优于现有模型,但其性能依赖高质量文本数据且计算复杂度较高。论文详见:http://arxiv.org/abs/2408.08821
72 7
|
2月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统的矩阵分解和FM模型
推荐系统的矩阵分解和FM模型
23 0
|
5月前
|
机器学习/深度学习 数据采集 搜索推荐
打开黑盒神经网络!港大推出全新会说话的推荐系统大模型XRec,从黑盒预测到可解释
【7月更文挑战第2天】港大研发XRec模型,将可解释性引入推荐系统。XRec结合大型语言模型的语义理解与协同过滤,生成推荐的文本解释,提升透明度。该模型无关设计允许与各类推荐系统配合,增强用户体验。然而,计算资源需求高、数据质量和用户理解能力可能影响其效果。[查看论文](https://arxiv.org/pdf/2406.02377)**
71 11
|
4月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
171 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
6月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
6月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)