当前位置: 首页 > 知识库问答 >
问题:

如何发送屏幕视图事件,以帮助Firebase预测做出更准确的预测

公良英资
2023-03-14

我有一个活动,在视图分页器中有多个Fragments。

目前,这是我的方式,将屏幕视图事件发送到Google Analytics和Firebase。

public static void trackView(Activity activity, String view) {
    trackFBView(activity, view);
    trackGAView(view);
}

private static void trackFBView(Activity activity, String view) {
    if (activity == null) {
        return;
    }

    FirebaseAnalytics firebaseAnalytics = getFirebaseAnalytics();
    if (firebaseAnalytics == null) {
        return;
    }

    firebaseAnalytics.setCurrentScreen(activity, view, null);
}

private static void trackGAView(String view) {
    Tracker tracker = Utils.getTracker();
    if (tracker == null) {
        return;
    }
    tracker.setScreenName(view);
    tracker.send(new HitBuilders.ScreenViewBuilder().build());
}

public static FirebaseAnalytics getFirebaseAnalytics() {
    if (false == isGooglePlayServicesAvailable()) {
        return null;
    }

    return FirebaseAnalytics.getInstance(JStockApplication.instance());
}

在我的<code>ViewPager<code>的侦听器中,这是我发送屏幕视图事件的方式。

private ViewPager.OnPageChangeListener getOnPageChangeListener() {
    return new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {

            if (position == 0) {
                Utils.trackView(DetailedStockFragmentActivity.this, "InfoFragment");

经过一些测试,我意识到我确实在GA中收到了屏幕视图事件,但在Firebase中没有。

后来,我认识到<code>firebaseAnalytics。setCurrentScreen实际上不会向Firebase发送屏幕视图事件<代码>firebaseAnalytics。setCurrentScreen仅准备一个隐式参数。它只会在下一次事件中发送到firebase。

目前,在我的片段中,我没有明确地触发任何事件。

我想知道,为了帮助Firebase做出更好的预测(帮助Firebase在查看哪个屏幕时识别用户),我想知道我是否应该按如下方式明确发送“屏幕视图”事件?

private static void trackFBView(Activity activity, String view) {
    if (activity == null) {
        return;
    }

    FirebaseAnalytics firebaseAnalytics = getFirebaseAnalytics();
    if (firebaseAnalytics == null) {
        return;
    }

    firebaseAnalytics.setCurrentScreen(activity, view, null);

    // Question: Should I do this to help Firebase makes better prediction?
    firebaseAnalytics.logEvent(view + "_ScreenView", null);
}

共有1个答案

阮炯
2023-03-14

我认为这里有几个误解。

首先,正如您已经注意到的,< code>html" target="_blank">setCurrentScreen创建了一个自动附加到未来事件的参数。事件是唯一被发送到Firebase并附有参数的东西——一个参数只能与一个事件相关联。“屏幕参数”比普通参数稍微特殊一点,因为它们出现在崩溃报告日志中,您可以更容易地使用它们来创建受众。这个回答很好地总结了我刚才所说的话。

第二个误解是关于Firebase Predictions的工作原理。截至今天,预测只能对事件进行操作。也就是说,如果您创建自定义预测,它将不使用任何参数,只能预测用户是否将执行操作(事件)。

就你的情况而言,我需要更多地了解你想做什么。如果你在寻找用户参与,这已经与“流失”预测结合在一起了。(不,记录分析事件不会影响预测,因为它是基于全局“用户是否使用此应用程序”的想法。)现在,另一方面,如果你想知道用户是否正在使用你的应用程序的一部分,那么你可以创建一个自定义事件,如select_stock,并使用预测来猜测用户是否会查看股票。我喜欢将预测或A/B测试视为用于衡量参与度或正在执行的特定操作的增加。

作为一般的经验法则,你应该在应用中加入用户操作,而不是被动的收视率。例如,当用户选择股票、收藏股票、共享股票、搜索股票等时,您可以执行一个操作。然后,在预测或A / B测试中,您可以看到您所做的更改如何影响用户整体参与度的特定部分 - “用户是否正在做或多或少的X?

TL;DR:不,日志记录事件不会影响流失预测,因为它们是一般的,“此应用程序是否预计将在未来 7 天内使用?但是,您可能试图弄清楚用户是否要执行或多或少的某个操作,然后记录一个事件以用于预测或A / B测试。

有关预定义预测的信息、使用预测功能的概述,以及有关如何使用预测的完整示例的演讲。

编辑、回答评论:

首先,我想说我不是Firebase工程师,我怀疑Google员工会与您分享他们的商业秘密,所以我在这里主要是猜测。我将使用一个结账示例,因为这是我能想到的最简单的一个。

好吧,为了尝试理解预测,我们需要先了解一点机器学习。如果你仔细想想,ML模型有点愚蠢:它们只是试图将一组输入映射到一些输出数字(概率)。由于预测不接受事件参数,因此我猜Google会按照给定用户会话期间发生的分析事件序列进行馈送。AFAIK,输入提供给ML模型的顺序并不重要,因此事件发生的顺序不会被考虑在内(Google可能已经找到了解决这个问题的方法,dunno)。

有了关于ML模型的假设,我们可以回到结帐的例子。基本上,我认为通过跟踪用户访问的屏幕,你实际上是在误导或者至少是记录无意义的事件。假设用户通过“购物车”、“输入您的地址”和“结账”屏幕。在这种情况下,模型将自我训练,以发现这些事件集与购买高度相关。

你可能会想,“嗯,那太好了!没有那么快,这种预测是无用的,因为它实际上并没有预测任何东西。它只是在说,“哦,看,进入结帐屏幕的用户通常会购买东西。在这种情况下,我认为记录屏幕事件实际上会让你的预测变得更糟:假设用户访问了结帐屏幕,但后来离开了,因为他们害怕给你他们的信用卡或其他东西。模特会想,“他们访问了那个屏幕,所以他们完全会买东西,”但这是错误的。

不。另一方面,对我来说,记录我之前提到的用户行为会更有用。例如,可以使用< code>item_added_to_card事件的数量来训练实际预测物品的更准确的预测。用户往购物车里添加的商品越多,他们可能就越愿意买东西。

再说一次,我不太了解你的应用程序,但是记录点击事件来查看详细的文章窗格,喜欢文章,或者分享文章,在我看来,比起简单地查看文章窗格,它们可以提供更多的见解。但是,我觉得还是要看你有什么样的用户行为。如果你的大多数购买过东西的用户也在文章屏幕上花了很多时间,那么是的,我看不出记录一个事件有什么坏处。

我试图表达的一般观点是,我认为预测在衡量用户参与度的事件中会做得更好。因此,被动收视率可以工作,但是如果某些用户喜欢保持屏幕打开,或者文章视图甚至是您的默认选项卡,该怎么办?然后,它并没有真正为模型提供任何新信息,因为几乎所有用户都会通过该屏幕。我的经验法则是,“如果用户点击它,请记录它。然后,您一定会为ML模型获取大量分析事件以查找模式,例如单击以查看文章的用户更有可能购买东西。

PS:逆向工程这种模型很难,我的假设可能完全错误。

 类似资料:
  • 从早期版本的 Photoshop 中迁移预设 您可以将 Photoshop 早期版本中的预设迁移到较新版本。使用“迁移预设”命令可以自动迁移画笔、色板、渐变和图案等。 选取“编辑”>“预设”>“迁移预设”。 当系统提示要从 Photoshop 早期版本中导入预设时,请单击“是”。 单击“确定”。 来自专家:迁移预设到 Photoshop CS6来自专家:迁移预设到 Photoshop CS6使用“

  • 我想在我的自定义布局管理器中支持当项目从可见屏幕边界之外移动到可见点时的预测动画。 我在中执行的所有填充操作。 根据在预布局阶段支持预测动画的留档(),我应该设置更改动画的初始条件(例如,在某处出现视图) 问题是,我找不到一种方法来确定预布局中哪些视图将从外部移动,因为我只能在当前附加到RecyclView视图和方法在预布局阶段之后调用。(例如,onItemsRemve在预布局之前被调用) 是因为

  • 我在调整ExtentReports以提供所需的输出方面遇到了一些困难。 我有一个简单的TestNG测试框架,使用TestBase类来完成繁重的任务,以保持测试的简单性。我希望以一种简单的方式实现ExtentReports,使用TestNG ITestResult接口报告通过、失败和未知。 以下是示例测试,1个通过,1个故意失败: null

  • 我是机器学习和OpenCV的新手。我从Cohn-Kanade人脸数据库中为每种情绪(中性和快乐)拍摄了一组10张图像。然后,我从每个图像中提取面部特征,并将它们放入我的训练数据矩阵中,并为各自的情绪分配标签(例如:0表示中性,1表示快乐)。 我使用了gamma=0.1和C=1的RBF内核。经过训练后,我将从智能手机摄像头中提取出的面部特征用于预测。预测总是返回1。 如果我增加中性表达式的训练样本数

  • 我试图了解分支预测单元如何在 CPU 中工作。 我使用了和linux的,但这两个都没有给出准确的结果(就我的情况而言)。 这是我的代码: 我的数组由0和1组成。它有一个大小为的模式。例如,如果我的大小是8,那么它有一个或类似的模式。 试验1: 我试图理解CPU是如何预测这些分支的。因此,我使用了papi并为预测失误的分支预测设置了性能计数器(我知道它也计算间接分支)。 我看到的输出是(序列长度为2

  • 我正在使用$location.path()在我的angular网站中加载新视图。我的页面看起来像: 我会根据需求(索引、主页、登录等)更改ng视图。有时导航看起来很慢(0.1秒时页面内会出现一些小故障),有没有办法让导航变得即时? 此外,我尝试了NG-动画,改善了这种感觉,但并不完全。我想预先加载我的“观点”将是一个解决方案... 编辑: 通过添加以下内容,感觉有所改善: