xLearn机器学习库:安装与实践指南

这篇具有很好参考价值的文章主要介绍了xLearn机器学习库:安装与实践指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在机器学习的领域里,不乏优秀的库和框架,如scikit-learn、TensorFlow和PyTorch等。然而,xLearn以其独特的优势,在处理特定类型的数据和问题时显得尤为出色。特别是对于那些需要处理大规模稀疏数据集的用户,如点击率预测(CTR)、推荐系统和反欺诈检测,xLearn提供了一个高效、易于使用的解决方案。

xlearn 是一个开源的机器学习库,专注于提供高效、灵活的算法来处理大规模稀疏数据。特别适用于点击率预测(CTR)、推荐系统、欺诈检测等场景。xlearn 的主要特点包括:

  • 算法支持:xlearn 支持多种流行的机器学习算法,包括线性模型(如线性回归、逻辑回归)、因子分解机(FM)、场感知因子分解机(FFM)等。
  • 稀疏数据优化:xlearn 专门为处理稀疏数据(如大量的零值特征)进行了优化,这在处理诸如用户-物品交互数据时非常有用。
  • 高性能:xlearn 使用了并行计算技术,包括多线程和GPU加速,可以快速处理大规模数据集。
  • 易于使用:xlearn 提供了简洁的Python API,使得模型的训练和预测变得非常简单。用户可以通过几行代码就完成模型的设置和训练。
  • 交叉验证:xlearn 支持交叉验证功能,帮助用户评估模型的泛化能力。
  • 模型保存与加载:训练好的模型可以保存到文件中,并在需要时重新加载,方便模型的部署和后续的预测。
  • 命令行工具:xlearn 还提供了一个命令行工具,使得用户可以在不写代码的情况下训练和预测模型。

安装

源码安装

git clone https://github.com/aksnzhy/xlearn.git

cd xlearn
mkdir build
cd build
cmake ../
make

如果编译成功,将在 build 文件夹下看到 xlearn_trainxlearn_predict 这两个可执行文件。可以通过如下命令检查 xLearn 是否安装成功:

./run_example.sh

常见问题:

  • 编译错误:确保您的系统上安装了CMake和GCC或Clang。
  • 缺少依赖:安装所需的依赖库,如OpenMP(用于多线程)。

pip安装

pip install xlearn

安装后,在Python中执行:

import xlearn as xl


xl.hello()
-------------------------------------------------------------------------
         _
        | |
   __  _| |     ___  __ _ _ __ _ __
   \ \/ / |    / _ \/ _` | '__| '_ \
    >  <| |___|  __/ (_| | |  | | | |
   /_/\_\_____/\___|\__,_|_|  |_| |_|

      xLearn   -- 0.44 Version --
-------------------------------------------------------------------------

API列表

命令行接口
  • 训练
xlearn_train <train_file_path> [OPTIONS]

参数选项:

参数 描述 示例
-s <type> 机器学习模型类型(默认为 0) 对于分类任务:
0 – 线性模型 (GLM)
1 – 因子分解机 (FM)
2 – 面向字段的因子分解机 (FFM)
对于回归任务:
3 – 线性模型 (GLM)
4 – 因子分解机 (FM)
5 – 面向字段的因子分解机 (FFM)
-x <metric> 指标 可以是 ‘acc’、‘prec’、‘recall’、‘f1’、‘auc’(用于分类),以及 ‘mae’、‘mape’、‘rmsd (rmse)’(用于回归)。默认情况下,xLearn 不会打印任何评估指标信息(只打印损失值)
-p <opt_method> 选择优化方法 包括 ‘sgd’、‘adagrad’ 和 ‘ftrl’。默认情况下,xLearn 使用 ‘adagrad’ 优化方法
-v <validate_file> 验证数据的路径 此选项默认为空,xLearn 将不执行验证过程
-m <model_file> 模型转储文件的路径 默认情况下,模型文件名为 ‘train_file’ + ‘.model’。如果将此值设置为 ‘none’,则 xLearn 将不会转储模型检查点
-pre <pre-model> 预训练模型的路径 可用于在线学习
-t <txt_model_file> TEXT 模型检查点文件的路径 默认情况下不设置此选项,xLearn 将不会转储 TEXT 模型。
-l <log_file> 日志文件的路径 默认情况下,xLearn 使用 ‘/tmp/xlearn_log.*’
-k <number_of_K> FM 和 FFM 任务使用的潜在因子数量 默认使用 4。当将 k 设置为 1 和 4 时,将获得相同的模型大小。这是因为使用 SSE 指令,内存需要对齐。因此,即使将 k 设置为 1,仍然会从 k = 2 到 4 填充一些虚拟的零
-r <learning_rate> 优化方法的学习率 默认为 0.2,xLearn 可以使用自适应梯度下降(AdaGrad)来解决优化问题,如果选择 AdaGrad 方法,学习率将自适应更改
-b <lambda_for_regu> L2 正则项的 Lambda 默认为 0.00002,可以通过将此值设置为零来禁用正则项
-alpha ftrl 使用的超参数
-beta :ftrl 使用的超参数
-lambda_1 ftrl 使用的超参数
-lambda_2 ftrl 使用的超参数
-u <model_scale> 用于初始化模型参数的超参数 默认为 0.66
-e <epoch_number> 训练过程的 epoch 数 默认为 10,xLearn 将默认执行提前停止,因此此值只是一个上限
-f <fold_number> 用于交叉验证的折数 如果设置了 --cv 选项就是该数,默认为5
-nthread <thread_number> 用于多线程无锁学习(Hogwild!)的线程数
-block <block_size> 用于磁盘上的训练的块大小
-sw <stop_window> 用于提前停止的停止窗口的大小 默认为 2
-seed <random_seed> 用于洗牌数据集的随机种子
--disk 开启用于大规模机器学习问题的磁盘上的训练
--cv 在训练任务中开启交叉验证 如果使用此选项,xLearn 将忽略验证文件(由 -t 选项设置)
--dis-lock-free 禁用无锁训练 无锁训练可以加速训练,但结果是不确定的,建议在训练数据较大且稀疏使用
  • 预测
xlearn_predict <test_file_path> <model_file_path> [OPTIONS]

参数选项:

参数 描述 示例
-o <output_file> 输出文件的路径 默认情况下,此值将设置为 ‘test_file’ + ‘.out’
-l <log_file_path> 日志文件的路径 默认情况下,xLearn 使用 ‘/tmp/xlearn_log’
-nthread <thread number> 用于多线程无锁学习(Hogwild!)的线程数
-block <block_size> 用于磁盘上的预测的块大小
--sign 将输出结果转换为 0 和 1
--sigmoid 将输出结果转换为 0 ~ 1(概率)
--disk 磁盘上的预测
--no-norm 禁用逐实例的规范化 默认情况下,xLearn 在训练和预测过程中都会使用逐实例的规范化
Python接口
  • API列表
import xlearn as xl      # 导入 xLearn 包

# 这部分是关于数据的
# X 是特征数据,可以是 pandas DataFrame 或 numpy.ndarray,
# y 是标签,默认为 None,可以是 pandas DataFrame\Series、数组或列表,
# field_map 是特征的字段映射,默认为 None,可以是 pandas DataFrame\Series、数组或列表
dmatrix = xl.DMatrix(X, y, field_map)

model = create_linear()  # 创建线性模型。

model = create_fm()      # 创建因子分解机。

model = create_ffm()     # 创建基于字段的因子分解机。

model.show()             # 显示模型信息。

model.fit(param, "model_path")   # 训练模型。

model.cv(param)    # 执行交叉验证。

# 用户可以选择以下两者之一
model.predict("model_path", "output_path")  # 进行预测,将结果输出到文件,返回 None。
model.predict("model_path")                 # 进行预测,通过 numpy.ndarray 返回结果。

# 用户可以选择以下两者之一
model.setTrain("data_path")      # 为 xLearn 从文件中设置训练数据。
model.setTrain(dmatrix)          # 为 xLearn 从 DMatrix 设置训练数据。

# 用户可以选择以下两者之一
# 注意:此验证类型必须与训练一致
# 也就是说,如果从文件设置了训练,必须从文件设置验证
model.setValidate("data_path")   # 为 xLearn 从文件中设置验证数据。
model.setValidate(dmatrix)       # 为 xLearn 从 DMatrix 设置验证数据。

# 用户可以选择以下两者之一
model.setTest("data_path")       # 为 xLearn 从文件中设置测试数据。
model.setTest(dmatrix)           # 为 xLearn 从 DMatrix 设置测试数据。

model.setQuiet()    # 设置 xLearn 为静默训练模型。

model.setOnDisk()   # 设置 xLearn 使用磁盘上的训练。

model.setNoBin()    # 不为训练和测试数据生成二进制文件。

model.setSign()     # 将预测转换为 0 和 1。

model.setSigmoid()  # 将预测转换为 (0, 1)。

model.disableNorm()  # 禁用逐实例规范化。

model.disableLockFree()   # 禁用无锁训练。

model.disableEarlyStop()  # 禁用早停。
  • 超参数列表
参数名 类型 描述 适用任务
task 字符串 模型任务类型,‘binary’ 表示二分类,‘reg’ 表示回归。 所有
metric 字符串 评估指标,分类任务可选 ‘acc’、‘prec’、‘recall’、‘f1’、‘auc’,回归任务可选 ‘mae’、‘mape’、‘rmse’、‘rmsd’。 所有
lr 浮点数 学习率。 所有
lambda 浮点数 L2正则化系数。 所有
k 整数 FM 和 FFM 的潜在因子个数。 FM、FFM
init 浮点数 模型初始化参数。 所有
alpha 浮点数 FTRL 优化的超参数。 FTRL
beta 浮点数 FTRL 优化的超参数。 FTRL
lambda_1 浮点数 FTRL 优化的超参数。 FTRL
lambda_2 浮点数 FTRL 优化的超参数。 FTRL
nthread 整数 CPU 核心数,用于多线程计算。 所有
epoch 整数 训练轮数。 所有
fold 整数 交叉验证的折数。 交叉验证
opt 字符串 优化方法,可选 ‘sgd’、‘adagrad’、‘ftrl’。 所有
stop_window 整数 早停的窗口大小。 所有
block_size 整数 磁盘训练的块大小。 磁盘训练

实践样例

Criteo 在线广告预估

Kaggle 预测广告是否会被用户点击

在这个样例中,将使用xLearn来解决一个经典的机器学习问题:在线广告预估。给定一个用户和正在访问的页面,点击给定广告的概率是多少?我们将使用Criteo提供的数据集来训练和测试我们的模型。
python

样例数据在: https://github.com/aksnzhy/xlearn/demo/classification/criteo_ctr/,代码如下:

import xlearn as xl

# 训练任务
ffm_model = xl.create_ffm()  # 使用场感因式分解机
ffm_model.setTrain("./small_train.txt")  # 训练数据
ffm_model.setValidate("./small_test.txt")  # 验证数据

# 参数:
#  0. 二元分类
#  1. 学习率:0.2
#  2. 正则化 lambda:0.002
#  3. 评估指标:准确率
param = {'task': 'binary', 'lr': 0.2, 'lambda': 0.002, 'metric': 'acc'}

# 开始训练
# 训练得到的模型将保存在 model.out 文件中
ffm_model.fit(param, './model.out')

# 预测任务
ffm_model.setTest("./small_test.txt")  # 测试数据
ffm_model.setSigmoid()  # 将输出转换为 0-1

# 开始预测
# 输出结果将保存在 output.txt 文件中
ffm_model.predict("./model.out", "./output.txt")
蘑菇分类

数据集来自 UCI Machine Learning Repositpry

蘑菇分类是一个经典的二分类问题,从UCI机器学习数据集中获取数据。在这个问题中,将使用线性模型来预测蘑菇是否可食用。

样例数据在: https://github.com/aksnzhy/xlearn/demo/classification/mushroom/.

代码如下:

# 导入 xlearn 库
import xlearn as xl

# 训练任务
linear_model = xl.create_linear()  # 使用线性模型
linear_model.setTrain("./agaricus_train.txt")  # 训练数据
linear_model.setValidate("./agaricus_test.txt")  # 验证数据

# 参数:
#  0. 二分类任务
#  1. 学习率: 0.2
#  2. 正则化 lambda: 0.002
#  3. 评估指标: 准确度
#  4. 使用 sgd 优化方法
param = {'task': 'binary', 'lr': 0.2,
         'lambda': 0.002, 'metric': 'acc',
         'opt': 'sgd'}

# 开始训练
# 训练好的模型将保存在 model.out 文件中
linear_model.fit(param, './model.out')

# 预测任务
linear_model.setTest("./agaricus_test.txt")  # 测试数据
linear_model.setSigmoid()  # 将输出转换为 0-1

# 开始预测
# 预测结果将保存在 output.txt 文件中
linear_model.predict("./model.out", "./output.txt")
泰塔尼克生还预测

在这个挑战中,将使用xLearn来解决泰塔尼克生还预测问题。将使用Kaggle提供的数据集来训练和测试模型。(Kaggle链接)

样例数据在: https://github.com/aksnzhy/xlearn/demo/classification/titanic/.

代码如下:

import xlearn as xl

# 训练任务
fm_model = xl.create_fm()  # 使用因子分解机
fm_model.setTrain("./titanic_train.txt")  # 训练数据

# 参数:
#  0. 二分类任务
#  1. 学习率: 0.2
#  2. Lambda: 0.002
#  3. 评估指标: 准确率
param = {'task':'binary', 'lr':0.2, 'lambda':0.002, 'metric':'acc'}

# 使用交叉验证
fm_model.cv(param)
房价预测

在这个挑战中,将使用xLearn来解决房价预测回归问题。将使用Kaggle提供的数据集来训练和测试模型。数据来自 Kaggle

样例数据在: https://github.com/aksnzhy/xlearn/demo/regression/house_price/.

代码如下:

import xlearn as xl

# 训练任务
ffm_model = xl.create_fm()  # 使用因子分解机
ffm_model.setTrain("./house_price_train.txt")  # 训练数据

# 参数:
#  0. 二元任务
#  1. 学习率: 0.2
#  2. 正则项 lambda: 0.002
#  4. 评价指标: rmse
param = {'task':'reg', 'lr':0.2, 'lambda':0.002, 'metric':'rmse'}

# 使用交叉验证
ffm_model.cv(param)

更新信息

自xLearn停止更新以来,可以看到市面上有许多新的机器学习库和框架的出现,它们提供了更多的功能和更好的性能。然而,尽管xLearn不再得到官方的支持,它在处理大规模稀疏数据方面仍然有其独特的价值和优势。

替代方案

  • scikit-learn:这是一个广泛使用的机器学习库,提供了大量的算法和工具,适用于各种机器学习任务
  • TensorFlow:这是一个由Google开发的深度学习框架,适用于复杂的神经网络模型
  • PyTorch:另一个流行的深度学习框架,以其动态计算图和易用性而闻名
  • LightGBM:这是一个由微软开发的高效的梯度增强框架,特别适合于分类和回归任务

xLearn的价值

尽管有新的工具出现,xLearn仍然在某些特定场景中具有价值,特别是在以下方面:

  • 处理稀疏数据:xLearn专门为处理稀疏数据(如大量的零值特征)进行了优化,这在处理诸如用户-物品交互数据时非常有用
  • 高效性:xLearn使用了并行计算技术,包括多线程和GPU加速,可以快速处理大规模数据集
  • 易于使用:xLearn提供了简洁的Python API,使得模型的训练和预测变得非常简单

尽管xLearn不再得到官方的支持,但它在处理大规模稀疏数据方面仍然有其独特的价值和优势。对于那些已经在使用xLearn或者想要探索其功能的用户来说,继续使用它仍然是一个可行的选择。同时,也可以考虑探索其他库,以利用它们提供的最新功能和性能改进。文章来源地址https://www.toymoban.com/news/detail-821703.html

参考

  • https://xlearn-doc-cn.readthedocs.io/en/latest/all_api/index.html
  • 深入FFM原理与实践(美团技术团队)
  • 一文读懂FM算法优势,并用python实现
  • Introductory Guide – Factorization Machines & their application on huge datasets (with codes in Python)
  • 简单高效的组合特征自动挖掘框架

到了这里,关于xLearn机器学习库:安装与实践指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习学习率(lr)调参

    lr全称learning rate(一下简称lr),是机器学习和深度学习中最为重要的超参数之一,会影响模型训练结果的好坏,有时候甚至会直接导致整个模型无法使用。 lr最直接的可观测的影响就是loss值的变化,较大的学习率会更容易收敛也更容易出现陷入局部最优解的情况,而过大的

    2024年02月04日
    浏览(44)
  • 机器学习指南:如何学习机器学习?

    机器学习         你有没有想过计算机是如何从数据中学习和变得更聪明的?这就是机器学习 (ML) 的魔力!这就像计算机科学和统计学的酷炫组合,计算机从大量信息中学习以解决问题并做出预测,就像人类一样。         可以这样想:想象一下,你想教你的电脑

    2024年01月21日
    浏览(58)
  • 机器学习技术(三)——机器学习实践案例总体流程

    前面学习了一些基础知识,但还没有步入机器学习算法。通过两个案例,来掌握机器学习模型的训练与评估、机器学习模型搭建的总体流程以及特征处理、决策树模型、交叉检验、网格搜索等常用数据挖掘方法的知识。 1、决策树对鸢尾花分类 1.数据来源 本道题目使用数据集

    2024年02月12日
    浏览(72)
  • 基础元件学习——LC和LR电路

    本系列文章是我在学习电路基础知识过程中顺道记录下一些重点,感觉比较新颖,遂记之。 本文为基础元件学习中的一部分 基础元件学习——元器件学习内容了解 基础元件学习——电阻元件知识(一) 基础元件学习——电阻元件知识(二) 基础元件学习——敏感电阻知识

    2024年02月09日
    浏览(50)
  • 【机器学习学习】第一天:入门指南

    引言 当今社会,机器学习技术已经被广泛应用于许多领域,如自然语言处理、图像处理和金融分析等。然而,机器学习这一领域需要掌握大量的数学知识和编程技能,因此对于初学者来说,可能会感到非常困难。本文将为初学者提供一份机器学习入门指南,帮助他们了解机器

    2024年02月02日
    浏览(43)
  • 【Python机器学习】实验04(2) 机器学习应用实践--手动调参

    上一次练习中,我们采用逻辑回归并且应用到一个分类任务。 但是,我们用训练数据训练了模型,然后又用训练数据来测试模型,是否客观?接下来,我们仅对实验1的数据划分进行修改 需要改的地方为:下面红色部分给出了具体的修改。 1 训练数据数量将会变少 2 评估模型

    2024年02月15日
    浏览(50)
  • 【深度学习:图像分割指南】计算机视觉中的图像分割指南:最佳实践

    图像分割是计算机视觉中的一项关键任务,其目标是将图像划分为不同的有意义且可区分的区域或对象。这是物体识别、跟踪和检测、医学成像和机器人等各种应用中的一项基本任务。 许多技术可用于图像分割,从传统方法到基于深度学习的方法。随着深度学习的出现,图像

    2024年01月23日
    浏览(90)
  • 机器学习算法入门与编程实践

    1.无监督学习的两个主要任务是(多选) BD A 回归                                        B 降维 C 分类                                        D 聚类 2.下列对无监督学习描述错误的是   C   A 无标签                                                B 核心是聚

    2024年02月04日
    浏览(37)
  • 图解7: PySpark 机器学习实践

    作者:禅与计算机程序设计艺术 PySpark 是 Apache Spark 的 Python API ,它提供了一个快速、通用、高性能的计算框架。利用 PySpark 可以轻松进行数据处理、特征提取、模型训练等机器学习任务。其独特的数据抽象机制使得开发人员能够方便地在不同数据源之间共享计算逻辑,从而

    2024年02月07日
    浏览(41)
  • 深入探索Apache ZooKeeper:关键技术学习与实践指南

    Apache ZooKeeper,作为一款广受认可的分布式协调服务,为大型分布式系统提供了强大的数据一致性、服务注册与发现、分布式锁、配置管理等基础服务。本文将深入剖析ZooKeeper的技术内核,梳理其关键学习点,并结合实践场景给出学习与应用建议,帮助读者全方位掌握这一重要

    2024年04月28日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包