一个机器学习库,从头开始设计为对人类友好。它在以下方面与其他机器学习库不同:
该库旨在与稀疏的、可解释的特征一起使用,例如搜索中常见的特征(搜索关键字、过滤器)或定价(房间数量、位置、价格)。对于具有非常密集的非人类可解释特征(例如原始像素或音频样本)的问题,它无法解释。
关注可解释性有几个原因:
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
aerosolve 的工件托管在 bintray 上。如果您使用 Maven、SBT 或 Gradle,您只需指向 bintray 作为存储库并自动获取工件。
查看图像印象演示,您可以在其中学习如何教授算法以点彩画风格进行绘画。 图像印象派演示。
还有一个基于流行机器学习基准的收入预测演示。 收入预测演示。
本节深入探讨基于 thrift 的特征表示。
特征被分组为称为特征族的逻辑组。这样做的原因是我们可以一次表达整个特征族的转换,或者将两个不同的特征族交互在一起以创建一个新的特征族。
每个 FeatureVector 具有三种特征:
示例是创建训练数据和评分的基本单元。一个示例由以下部分组成:
采用这种结构的原因是:
本节深入探讨特征转换语言。
特征变换与一个与模型解耦的单独变换器模块一起应用。例如,这允许用户在评分之前拆分转换或转换数据。例如,在应用程序中,语料库中的项目可能会提前转换并存储,而上下文直到运行时才知道。然后在运行时,可以转换上下文并将它们与每个转换后的项目组合以获得最终的特征向量,然后将其提供给模型。
特征变换允许我们动态修改特征向量。这使工程师能够以可控的方式快速迭代特征工程。
以下是一些常用的特征转换示例:
请查看相应的单元测试,了解这些转换的作用、它们操作的功能类型以及它们期望的配置类型。
本节介绍可调试模型。
尽管模型目录中有多个模型,但只有两个是主要的可调试模型。其余的是为可解释模型创建转换的实验或子模型。
线性模型。 支持铰链、逻辑、epsilon 不敏感回归、排序损失函数。仅对 stringFeatures 进行操作。任务的标签存储在一个特殊的特征族中,并由配置中的 rank_key 指定。有关如何设置模型的信息,请参阅线性模型单元测试。请注意,结合量化和交叉,您可以从“线性”模型中获得难以置信的复杂性,因此它实际上不是您的常规线性模型,而是更复杂的东西,可以被认为是一个浓密的、非常宽的决策树,有数百万分支机构。
样条模型。 一般加性线性分段样条模型。训练以特征范围的最小值和最大值之间的 num_buckets 指定的更高分辨率完成。在每次迭代结束时,我们尝试将线性分段样条投影到低维函数中,例如具有 Dirac delta 端点的多项式样条。如果投影的 RMSE 高于阈值,我们将样条单独留在高分辨率分段线性模式中。这允许我们调试样条模型以获得有问题或意外复杂的功能(例如,当我们期望某种平滑度时上下跳跃)
如果你使用intellij,先尝试构建,这样thrift类就可以使用了,并且为了修复intellij内部的spark编译错误,键入command+;
并点击dependency并将相关文件从test更改为compile,例如org.apache.spark和org.apache。 hadoop:hadoop-common。我们将 gradle 配置保留为 testCompile,以减少 jar 文件的大小。
[/hidecontent]