如何进行FM算法原理分析与实践
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,本篇文章为大家展示了如何进行FM算法原理分析与实践,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。简介FM是Steffen Rendle在2010年提出的,FM
千家信息网最后更新 2024年11月14日如何进行FM算法原理分析与实践
本篇文章为大家展示了如何进行FM算法原理分析与实践,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
简介
FM是Steffen Rendle在2010年提出的,FM算法的核心在于特征组合,以此来减少人工参与特征组合工作。对于FM,其优势可分以下三点:
FM能处理数据高度稀疏场景,SVM则不能;
FM具有线性的计算复杂度,而SVM依赖于support vector。
FM能够在任意的实数特征向量中生效。
FM原理
FM的数据结构如下
FM通过不同特征的组合,生成新的含义。然而,特征组合也随之带来一些问题:
特征之间两两组合容易导致维度灾难;
组合后的特征未必有效,可能存在特征冗余现象;
组合后特征样本非常稀疏,如果原始样本中不存在对应的组合,则无法学习参数,那么该组合就显得无效。
虽然有这些缺点,但是也并不影响FM在广告推荐领域的地位,每个算法都有风靡一时的过去,抱着敬畏之心的态度去学习是没问题的。下面,来看看FM的算法原理。
目标函数
我们知道,线性模型的目标函数为:
分类模型
FM可以用来进行分类,为了方便,这里使用sklearn里面的iris数据集作为实验数据,将target等于2的作为正样本,其余作为负样本,并采用train_test_split方法划分训练集与测试集,然后通过FM构建分类模型,并通过测试集验证FM的效果。完整Demo代码如下
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from pyfm import pylibfm
from sklearn.feature_extraction import DictVectorizer
def load_data():
"""
调用sklearn的iris数据集,筛选正负样本并构造切分训练测试数据集
"""
iris_data = load_iris()
X = iris_data['data']
y = iris_data['target'] == 2
data = [ {v: k for k, v in dict(zip(i, range(len(i)))).items()} for i in X]
X_train,X_test,y_train, y_test = train_test_split(data,y, test_size=0.3, random_state=0)
return X_train,X_test,y_train, y_test
X_train,X_test,y_train, y_test = load_data()
v = DictVectorizer()
X_train = v.fit_transform(X_train)
X_test = v.transform(X_test)
fm = pylibfm.FM(num_factors=2,
num_iter=200,
verbose=True,
task="classification",
initial_learning_rate=0.001,
learning_rate_schedule="optimal")
fm.fit(X_train, y_train)
y_preds = fm.predict(X_test)
y_preds_label = y_preds > 0.5
from sklearn.metrics import log_loss,accuracy_score
print ("Validation log loss: %.4f" % log_loss(y_test, y_preds))
print ("accuracy: %.4f" % accuracy_score(y_test, y_preds_label))
实验结果
通过上面代码,跑出的结果如下(注:每次实验结果不一定相同):
Training log loss: 0.12161Validation log loss: 0.1868accuracy: 0.9778
上述内容就是如何进行FM算法原理分析与实践,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
特征
组合
数据
算法
样本
原理
模型
结果
实验
测试
分析
实践
稀疏
代码
内容
函数
技能
目标
知识
线性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全知识图片视频
三维地下管线系统数据库
数据库中怎么查询指定日期
南阳师范网络安全专业
网络安全点实施时间
广西mac软件开发
中泰证券软件开发面试
网络安全案例实践
页面连接数据库
天津数据库培训条件
两融配资软件开发
服务器搭建在电脑上
斗地主软件开发成本
云图计划 服务器连接失败
网络安全法宣贯方案
数据库三大范式名字
物联控制板和服务器通信的原理
数据库交换
夏普服务器原理图
java选择修改数据库
思科网络技术学院官网网址
新炬网络是算力网络技术
软件开发 专科
潍坊市网络安全空间协会
双阳区网络技术服务参考价格
网络安全和网络文明小论文
利用网络技术侦查手段
腾讯云服务器安全组问题
洛阳易视网络技术有限公司
java选择修改数据库