centrex/laravel-btyd
Composer 安装命令:
composer require centrex/laravel-btyd
包简介
Laravel package for BTYD (BG/NBD + Gamma-Gamma) CLV prediction
README 文档
README
Implements the Buy 'Til You Die model for customer lifetime value (CLV) prediction. Fits BG/NBD parameters (purchase frequency + churn) and Gamma-Gamma parameters (monetary value) using MLE via Nelder-Mead optimisation. Supports persisting fitted parameters to the database for reuse.
Installation
composer require centrex/laravel-btyd
php artisan vendor:publish --tag="laravel-btyd-migrations"
php artisan migrate
Usage
1. Build customer summaries from transaction history
use Centrex\Btyd\Btyd; // Each transaction: ['date' => Carbon|string, 'amount' => float] $transactions = [ ['date' => '2024-01-15', 'amount' => 120.00], ['date' => '2024-03-02', 'amount' => 85.50], ['date' => '2024-06-18', 'amount' => 200.00], ]; $summary = Btyd::transactionsToSummary($transactions); // returns: frequency, recency (days), T (days since first purchase), monetary, n_transactions, total_revenue
2. Fit the models on a cohort
$btyd = new Btyd(); // Fit BG/NBD on cohort summaries (frequency, recency, T required per customer) $bgnbdParams = $btyd->fitBgNbd($cohortSummaries); // returns: ['r' => ..., 'alpha' => ..., 'a' => ..., 'b' => ...] // Fit Gamma-Gamma on customers with at least 1 repeat purchase (frequency, monetary required) $ggParams = $btyd->fitGammaGamma($cohortSummaries); // returns: ['p' => ..., 'q' => ..., 'v' => ...]
3. Predict for individual customers
// Expected number of transactions over the next 12 months $expectedTx = $btyd->expectedTransactions($customerSummary, horizonMonths: 12); // Expected monetary value per transaction $expectedMonetary = $btyd->expectedMonetary($customerSummary); // Customer lifetime value (expectedTx × expectedMonetary) $clv = $btyd->customerClv($customerSummary, horizonMonths: 12);
4. Persist fitted parameters
use Centrex\Btyd\Models\BtydParam; // Save fitted params for a given model class BtydParam::updateOrCreate( ['model' => App\Models\Customer::class], ['params' => array_merge($bgnbdParams, $ggParams)], ); // Load later $params = BtydParam::getParams(App\Models\Customer::class);
Full workflow example
$btyd = new Btyd(); // Build summaries for all customers $summaries = Customer::all()->map(fn ($c) => Btyd::transactionsToSummary($c->orders->map(fn ($o) => [ 'date' => $o->created_at, 'amount' => $o->total, ])->toArray()) )->toArray(); // Fit $btyd->fitBgNbd($summaries); $btyd->fitGammaGamma($summaries); // Predict CLV for a single customer $clv = $btyd->customerClv($summaries[0], 12); echo "12-month CLV: {$clv}";
Testing
composer test # full suite composer test:unit # pest only composer test:types # phpstan composer lint # pint
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.
centrex/laravel-btyd 适用场景与选型建议
centrex/laravel-btyd 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 392 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「centrex」 「btyd」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 centrex/laravel-btyd 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 centrex/laravel-btyd 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 centrex/laravel-btyd 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Manage settings in laravel
Manage address in laravel
This is my package laravel-open-exchange-rates
Add virtual columns in any model of laravel
This is my package tallui
Payroll package for laravel
统计信息
- 总下载量: 392
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 29
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-22