了解如何计算马尔可夫链中的去除效果

问题描述

我目前正在尝试为“营销多渠道归因”建模。我遇到的所有文章和软件包都使用特殊的“开始”状态,并且使用此处给出的以下矩阵运算([Python中的马尔可夫链])[1]根据该开始状态计算去除效果。

def removal_effects(df,conversion_rate):
removal_effects_dict = {}
channels = [channel for channel in df.columns if channel not in ['Start','Null','Conversion']]
for channel in channels:
    removal_df = df.drop(channel,axis=1).drop(channel,axis=0)
    for column in removal_df.columns:
        row_sum = np.sum(list(removal_df.loc[column]))
        null_pct = float(1) - row_sum
        if null_pct != 0:
            removal_df.loc[column]['Null'] = null_pct
        removal_df.loc['Null']['Null'] = 1.0

    removal_to_conv = removal_df[
        ['Null','Conversion']].drop(['Null','Conversion'],axis=0)
    removal_to_non_conv = removal_df.drop(
        ['Null',axis=1).drop(['Null',axis=0)

    removal_inv_diff = np.linalg.inv(
        np.identity(
            len(removal_to_non_conv.columns)) - np.asarray(removal_to_non_conv))
    removal_dot_prod = np.dot(removal_inv_diff,np.asarray(removal_to_conv))
    removal_cvr = pd.DataFrame(removal_dot_prod,index=removal_to_conv.index)[[1]].loc['Start'].values[0]
    removal_effect = 1 - removal_cvr / conversion_rate
    removal_effects_dict[channel] = removal_effect

return removal_effects_dict

我的问题主要分为两部分:

  1. 我们能否将第一次触摸视为每个路径的开始状态。
  2. 如果没有开始状态,我们如何计算去除效果(任何文档或对该公式的解释将非常有帮助)

我的参考文献:

https://gist.github.com/MortenHegewald/fb1d8051cd818c25283cbcbc4b587e5c#file-removal_effects-py

www.analyzecore.com/2016/08/03/attribution-model-r-part-1/

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...