avatar
[请教]一个R问题# DataSciences - 数据科学
c*z
1
我最近做life time value,用的BTYD包
http://cran.r-project.org/web/packages/BTYD/vignettes/BTYD-walk
里面主要的方程是
pnbd.EstimateParameters 它会call optim,使用L-BFGS-B method
pnbd.LL 这是Pareto/NBD的likelihood function
我能够replicate原文章的结果,但是公司自己的数据有这么三个issue
1. L-BFGS-B method requires a finite value for fn 应该是likelihood function
overflow了,我对所有数据先取一次log,基本上解决了这个问题
2. 非常非常的慢,即使我使用十分之一的数据,把data frame变成matrix也没有帮助
3. 结果不stable,几乎总是取得local optimal,我试着用了 mothod = SANN (
simulated annealing) 也没有帮助
有点stuck了,所以想问问大家
多谢多谢!
chao
avatar
c*z
2
没有数据确实很难诊断问题,如果能给些方向性的指点就不胜感激了
avatar
l*n
3
2的可能性之一是收敛条件和迭代数量,改一下应该可以快些
3的话主要是初值的问题

function

【在 c***z 的大作中提到】
: 我最近做life time value,用的BTYD包
: http://cran.r-project.org/web/packages/BTYD/vignettes/BTYD-walk
: 里面主要的方程是
: pnbd.EstimateParameters 它会call optim,使用L-BFGS-B method
: pnbd.LL 这是Pareto/NBD的likelihood function
: 我能够replicate原文章的结果,但是公司自己的数据有这么三个issue
: 1. L-BFGS-B method requires a finite value for fn 应该是likelihood function
: overflow了,我对所有数据先取一次log,基本上解决了这个问题
: 2. 非常非常的慢,即使我使用十分之一的数据,把data frame变成matrix也没有帮助
: 3. 结果不stable,几乎总是取得local optimal,我试着用了 mothod = SANN (

avatar
w*c
4
bless.
avatar
z*n
5
in the manual:
This function may take some time to run.
try to read the code to see if the authors pass gr to optim or not.

function

【在 c***z 的大作中提到】
: 我最近做life time value,用的BTYD包
: http://cran.r-project.org/web/packages/BTYD/vignettes/BTYD-walk
: 里面主要的方程是
: pnbd.EstimateParameters 它会call optim,使用L-BFGS-B method
: pnbd.LL 这是Pareto/NBD的likelihood function
: 我能够replicate原文章的结果,但是公司自己的数据有这么三个issue
: 1. L-BFGS-B method requires a finite value for fn 应该是likelihood function
: overflow了,我对所有数据先取一次log,基本上解决了这个问题
: 2. 非常非常的慢,即使我使用十分之一的数据,把data frame变成matrix也没有帮助
: 3. 结果不stable,几乎总是取得local optimal,我试着用了 mothod = SANN (

avatar
c*z
6
@longtian大牛:
Issue 2 能展开说说吗?我看了一下optim的代码,它会call一个C程序叫做C_optim,
好像收敛条件和迭代数量得在那里改?有点头大,很久没有弄C了。
@zhanghan大牛:
原作者没有pass gr,不知道从那个超复杂的likelyhood弄个gr会有多麻烦?
多谢各位大牛!
avatar
c*z
7
I found the controls for the convergence tolerance and max number of
iterations in the optim() function.
Am playing with the different methods and combination of controls.
Thanks a lot!
avatar
c*z
8
OK, got some running code and stable results. However one parameter is too
big and p_alive is always 1.
Any clue to fix this? Thanks a lot!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。