MLJ 是一个用于 Julia 的机器学习框架,旨在提供一种便捷的方式来使用和组合 Julia ML/Stats 生态系统中提供的众多工具和模型。
MLJ 在 MIT 许可证下发布,并由艾伦·图灵研究所赞助。
扩展 MLJ 的类别变量编码。
难度。中等。持续时间。350 小时
MLJ 提供了类别变量的基本独热编码,但没有提供复杂的编码技术。独热编码相当有限,特别是当类别具有非常多的类时。存在许多其他技术,而该项目旨在使其中一些技术可供 MLJ 用户使用。
导师。 Anthony Blaom(最佳联系方式:Julia Slack 上的私信)
精通 Julia 语言至关重要。
强烈建议熟悉 Git 工作流程。
机器学习和数据科学工作流程的经验。
熟悉 MLJ 的 API 更好。
在这个项目中,您将调查用于对类别变量进行独热编码的流行现有方法。在与导师协作的情况下,您将制定一个将其中一些技术集成到 MLJ 中的计划。您将开始实施该计划,最初专注于简单的方法,为现有的 Julia 包提供 MLJ 接口,或在需要时提供新的实现。如果项目进展顺利,您将实现更高级的技术,例如通过 MLJFlux.jl(MLJ 的神经网络接口)进行实体嵌入。
MLJ 中现有的编码:OneHotEncoder;ContinuousEncoder;UnivariateContinuousTimeEncoder
StatsModels.jl 编码器
MLJ 功能请求
Guo 和 Berkhahn [(2016]](https://arxiv.org/abs/1604.06737)“类别变量的实体嵌入”
实现用于 MLJ 机器学习平台的生存分析模型。
难度。中等 - 困难。持续时间。350 小时
生存/事件时间分析是统计学的一个重要领域,它关注的是理解事件随时间的分布。生存分析提出了一个独特的挑战,因为我们也对没有发生的事件感兴趣,我们将其称为“删失”。生存分析方法在许多现实世界环境中都很重要,例如医疗保健(疾病预后)、金融和经济学(违约风险)、商业活动(客户流失)、工程(组件寿命)等等。该项目旨在使用 MLJ 机器学习框架实现执行生存者分析的模型。
mlr3proba 目前是最完整的生存分析接口,让我们将 SurvivalAnalysisA.jl 提升到相同的标准 - 但要从沿途的错误中吸取教训。
导师。 Sebastian Vollmer、Anthony Blaom、
精通 Julia 语言至关重要。
强烈建议熟悉 Git 工作流程。
具有一些生存分析经验。
熟悉 MLJ 的 API 更好。
对机器学习目标和工作流程有初步了解
优先考虑。
您将致力于创建一个具有各种指标的生存分析包,能够对经典模型和 ML 模型进行分布预测。您将在早期引入竞争风险,以及预测转换,并包括左删失和区间删失。您将编写基本的模型(Cox PH 和 AFT),以及一个作为概念验证的 ML 模型(可能决策树最简单或 Coxnet)。
具体来说,您将
熟悉 MLJ 中的训练和评估机器
学习模型。
对于 SurvivalAnalysis.jl,实现MLJ 模型接口。
考虑通过 SurvSHAP(t) 解释 SurvivalAnalysis
为目前在 Julia 中未实现的较新高级生存分析
模型开发概念验证。
Mateusz Krzyziński 等人,SurvSHAP(t):机器学习生存模型的时间相关解释,知识基础系统 262(2023 年 2 月):110234
Kvamme,H.,Borgan,Ø. 和 Scheel,I.(2019)。使用神经网络和 Cox 回归进行事件时间预测。机器学习研究杂志,20(129),1-30。
Lee,C.,Zame,W. R.,Yoon,J. 和 van der Schaar,M.(2018)。Deephit:一种用于具有竞争风险的生存分析的深度学习方法。在第三十二届人工智能 AAAI 会议上。
Katzman,J. L.,Shaham,U.,Cloninger,A.,Bates,J.,Jiang,T. 和 Kluger,Y.(2018)。DeepSurv:使用 Cox 比例风险深度神经网络的个性化治疗推荐系统。BMC 医学研究方法学,18(1),24。
Gensheimer,M. F. 和 Narasimhan,B.(2019)。神经网络的可扩展离散时间生存模型。](https://peerj.com/articles/6257/) PeerJ,7,e6257。
贝叶斯方法和概率监督学习提供不确定性量化。本项目旨在增加集成,以使用 Turing 结合贝叶斯和非贝叶斯方法。
难度。困难。持续时间。350 小时。
作为第一步,在 Turing 中重现SOSSMLJ。该项目的大部分内容是实现结合多个预测分布的方法。
Turing 和 MLJ 之间的接口
预测分布的集成、堆叠的比较
跨各种设置的可重复基准。
帮助使用 MLJ 的数据科学家使用MLflow跟踪和共享他们的机器学习实验。本项目此阶段的重点是
支持出现在并行化模型调整中的异步工作流
在训练迭代模型(例如神经网络)时支持实时日志记录
难度。中等。持续时间。350 小时。
MLflow 是一个用于机器学习生命周期的开源平台。它允许数据科学家将实验元数据和输出上传到平台,以进行复制和共享。MLJ 已经允许用户将基本模型性能评估报告到 MLflow 服务,而该项目则试图大大增强这种集成。
精通 Julia 语言至关重要
了解异步编程原理
强烈建议熟悉 Git 工作流程。
一般熟悉数据科学工作流程
您将熟悉 MLJ、MLflow 和 MLflowClient.jl 客户端 API。
您将熟悉提供 MLJ <–> MLflow 集成的 MLJFlow.jl 包
实施允许正确异步记录模型性能评估所需的更改
将日志记录扩展到(并行化)模型调整(MLJ 的TunedModel
包装器)
将日志记录扩展到迭代模型的受控训练(MLJ 的IteratedModel
包装器)
导师。 Anthony Blaom
诊断并利用加快常见 MLJ 工作流的机会。
难度。中等。持续时间。350 小时。
除了调查一些已知的性能瓶颈外,您还将拥有自由裁量权来确定加快常见 MLJ 工作流的机会,以及更好地利用内存资源。
精通 Julia 语言至关重要。
具有多线程和多处理器计算经验至关重要,最好是在 Julia 中。
强烈建议熟悉 Git 工作流程。
熟悉机器学习目标和工作流程优先
在这个项目中,您将
熟悉 MLJ 中机器学习模型的训练、评估和调整
对常见工作流进行基准测试和分析,以确定进一步代码优化的机会,重点关注最流行的模型
努力解决发现的问题
推出用于迭代模型的新数据前端,以避免不必要的数据复制
尝试将多处理器并行性添加到当前的学习网络调度程序中
实现其中一些优化
导师。 Anthony Blaom、Okon Samuel。