开源
Aerosolve:基于Java的机器学习库
来源:元经纪     阅读:1181
网站管理员
发布于 2023-03-15 03:32
查看主页

概述

这个“为人类设计的机器学习包”由Airbnb创建,旨在帮助为主机支持动态定价建议。它基于Java,特别适用于拥有地理位置相关变量的项目。 支持的操作系统:Windows、Linux和macOS

一个机器学习库,从头开始设计为对人类友好。它在以下方面与其他机器学习库不同:

该库旨在与稀疏的、可解释的特征一起使用,例如搜索中常见的特征(搜索关键字、过滤器)或定价(房间数量、位置、价格)。对于具有非常密集的非人类可解释特征(例如原始像素或音频样本)的问题,它无法解释。

关注可解释性有几个原因:

如何使用?

[hidecontent type="logged" desc="隐藏内容:登录后可查看"]

aerosolve 的工件托管在 bintray 上。如果您使用 Maven、SBT 或 Gradle,您只需指向 bintray 作为存储库并自动获取工件。

查看图像印象演示,您可以在其中学习如何教授算法以点彩画风格进行绘画。 图像印象派演示。

还有一个基于流行机器学习基准的收入预测演示。 收入预测演示。

特征表示

本节深入探讨基于 thrift 的特征表示

特征被分组为称为特征族的逻辑组。这样做的原因是我们可以一次表达整个特征族的转换,或者将两个不同的特征族交互在一起以创建一个新的特征族。

每个 FeatureVector 具有三种特征:

  • stringFeatures - 这是特征族到二进制特征字符串的映射。例如“GEO”-> {“旧金山”,“CA”,“美国”}
  • floatFeatures - 这是特征系列到特征名称和值的映射。例如“LOC”-> {“纬度”:37.75,“经度”:-122.43}
  • denseFeatures - 这是特征族到密集浮点数组的映射。除了图像内容分析代码外,没有真正使用过。

示例表示

示例是创建训练数据和评分的基本单元。一个示例由以下部分组成:

  • context - 这是一个在示例中出现一次的 FeatureVector。例如,它可以是代表搜索会话的特征。例如“关键字”->“免费停车”
  • example(0..N) - 这是一个重复的 FeatureVectors 列表,表示正在评分的项目。这些可以对应于搜索会话中的文档。例如“上市城市”->“旧金山”

采用这种结构的原因是:

  • 为数百个项目使用一个上下文可以在 RPC 期间甚至磁盘上节省大量空间
  • 您可以为上下文计算一次转换,然后将转换后的上下文与每个项目一起重复应用
  • 拥有项目列表允许使用基于列表的损失函数,例如成对排名损失、支配损失等,我们可以同时评估多个项目

特征变换语言

本节深入探讨特征转换语言

特征变换与一个与模型解耦的单独变换器模块一起应用。例如,这允许用户在评分之前拆分转换或转换数据。例如,在应用程序中,语料库中的项目可能会提前转换并存储,而上下文直到运行时才知道。然后在运行时,可以转换上下文并将它们与每个转换后的项目组合以获得最终的特征向量,然后将其提供给模型。

特征变换允许我们动态修改特征向量。这使工程师能够以可控的方式快速迭代特征工程。

以下是一些常用的特征转换示例:

  • 列表转换。指定要应用的其他转换的元转换
  • 交叉变换。仅对 stringFeatures 进行操作。允许两个不同的字符串特征系列之间的交互。例如“Keyword”交叉“LISTING CITY”创建新特征族“Keyword_x_city”->“Free parking^San Francisco”
  • 多尺度网格变换为二维坐标构造多个嵌套网格。对地理建模很有用。

请查看相应的单元测试,了解这些转换的作用、它们操作的功能类型以及它们期望的配置类型。

模型种类

本节介绍可调试模型

尽管模型目录中有多个模型,但只有两个是主要的可调试模型。其余的是为可解释模型创建转换的实验或子模型。

线性模型。 支持铰链、逻辑、epsilon 不敏感回归、排序损失函数。仅对 stringFeatures 进行操作。任务的标签存储在一个特殊的特征族中,并由配置中的 rank_key 指定。有关如何设置模型的信息,请参阅线性模型单元测试。请注意,结合量化和交叉,您可以从“线性”模型中获得难以置信的复杂性,因此它实际上不是您的常规线性模型,而是更复杂的东西,可以被认为是一个浓密的、非常宽的决策树,有数百万分支机构。

样条模型。 一般加性线性分段样条模型。训练以特征范围的最小值和最大值之间的 num_buckets 指定的更高分辨率完成。在每次迭代结束时,我们尝试将线性分段样条投影到低维函数中,例如具有 Dirac delta 端点的多项式样条。如果投影的 RMSE 高于阈值,我们将样条单独留在高分辨率分段线性模式中。这允许我们调试样条模型以获得有问题或意外复杂的功能(例如,当我们期望某种平滑度时上下跳跃)

  • 增强树桩模型 - 小型紧凑模型。不是很容易解释,但尺寸小对特征选择很有用。
  • 决策树模型 - 仅在内存中。主要用于为线性或样条模型生成变换。
  • Maxout 神经网络模型。实验性的,主要用作比较基线。

集成开发环境

如果你使用intellij,先尝试构建,这样thrift类就可以使用了,并且为了修复intellij内部的spark编译错误,键入command+;并点击dependency并将相关文件从test更改为compile,例如org.apache.spark和org.apache。 hadoop:hadoop-common。我们将 gradle 配置保留为 testCompile,以减少 jar 文件的大小。

[/hidecontent]

 

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 开源
《石破天惊:良渚文化石器造型研究》 新书发布
100Hz和180Hz显示器一飞冲天:销量增速飙升700%
Intel Panther Lake首发版本曝光!其它等明年
8.5小时!
夏津农商银行:优化金融服务 为创业梦想“加码”

首页

分类

定制方案

消息

我的