提交 24dfddfc 编写于 作者: W wizardforcel

2021-03-10 16:52:52

上级 2e53d128
此差异已折叠。
......@@ -98,7 +98,7 @@ movieNormalizedNumRatings.head()
![](img/5efb3fdc-8c1e-4a15-8978-7a3bc3e3a954.png)
基本上,这是衡量每部电影的受欢迎程度的标准,范围是 0 到 1。因此,这里的 0 分意味着没有人观看,这是最受欢迎的电影,而`1`分意味着每个人 观看的电影是最受欢迎的电影,或更具体地说,是大多数人观看的电影。 因此,我们现在可以衡量电影的受欢迎程度,并将其用于距离指标。
基本上,这是衡量每部电影的受欢迎程度的标准,范围是 0 到 1。因此,这里的 0 分意味着没有人观看,这是最受欢迎的电影,而`1`分意味着每个人观看的电影是最受欢迎的电影,或更具体地说,是大多数人观看的电影。 因此,我们现在可以衡量电影的受欢迎程度,并将其用于距离指标。
接下来,让我们提取一些常规信息。 因此,事实证明,存在一个`u.item`文件,该文件不仅包含影片名称,而且还包含每个影片所属的所有流派:
......@@ -280,7 +280,7 @@ avgRating
和往常一样,使用 Scikit-learn 实际上非常容易! 同样,PCA 是降维技术。 这听起来像是科幻小说,所有这些都是关于更高维度的。 但是,只是为了使其更加具体和真实,一种常见的应用是图像压缩。 您可以将一张黑白图片的图像想象成 3 个维度,其中宽度,x 轴和 y 轴的高度分别为高,每个单元格的亮度值范围为 0 至 1,即为黑色或白色,或介于两者之间的某个值。 因此,那将是 3D 数据; 您有 2 个空间维度,然后是亮度和强度维度。
如果仅将其提炼成 2 维,那将是一个压缩图像,并且如果要使用一种尽可能保留该图像方差的技术来进行压缩,则仍然可以重建图像,而无需 理论上的大量损失。 因此,这就是降维,精简为一个实际示例。
如果仅将其提炼成 2 维,那将是一个压缩图像,并且如果要使用一种尽可能保留该图像方差的技术来进行压缩,则仍然可以重建图像,而无需理论上的大量损失。 因此,这就是降维,精简为一个实际示例。
现在,我们将在此处使用使用鸢尾花数据集的另一个示例,而 Scikit-learn 将包含此示例。 它是一个各种鸢尾花测量数据集,以及该数据集中每个鸢尾花的种类分类。 就像我之前说的,它还测量了每个虹膜标本的花瓣和萼片的长度和宽度。 因此,在花瓣的长度和宽度以及萼片的长度和宽度之间,我们的数据集中有 4 维特征数据。
......@@ -403,19 +403,19 @@ pl.show()
这个转换阶段可能会遍历这些 Web 服务器日志的每一行,然后将其转换成一个实际的表,在该表中,我从每个 Web 日志行中提取诸如会话 ID,它们查看的页面,时间, 引用来源以及类似的内容,我可以将其组织成表格结构,然后可以将其加载到数据仓库本身中,作为数据库中的实际表。 因此,随着数据变得越来越大,该转换步骤可能成为一个实际问题。 考虑一下要处理 Google,Amazon 或任何大型网站上的所有 Web 日志并将其转换为数据库可以吸收的内容需要多少处理工作。 这本身就成为可伸缩性的挑战,并且可能在整个数据仓库管道中引入稳定性问题。
这就是 ELT 概念出现的地方,它使所有事情都发生了变化。 它说:“好吧,如果我们不使用庞大的 Oracle 实例该怎么办?相反,如果我们使用其中的一些较新的技术,这些技术可以使我们在 Hadoop 集群上拥有更加分布式的数据库,从而使我们能够利用这些分布式的功能 像 Hive,Spark 或 MapReduce 这样的数据库,并在加载后使用它进行转换”
这就是 ELT 概念出现的地方,它使所有事情都发生了变化。 它说:“好吧,如果我们不使用庞大的 Oracle 实例该怎么办?相反,如果我们使用其中的一些较新的技术,这些技术可以使我们在 Hadoop 集群上拥有更加分布式的数据库,例如 Hive,Spark 或 MapReduce 这样的数据库,从而使我们能够利用这些分布式的功能,并在加载后使用它进行转换”
这里的想法是,我们将像以前一样从一组 Web 服务器日志中提取我们想要的信息。 但是,然后,我们将直接将其加载到我们的数据存储库中,并且将使用存储库本身的功能来实际进行转换。 因此,这里的想法是,与其做一个脱机过程来将我的 Web 日志转换为结构化格式,例如,我只是将它们作为原始文本文件并一次一行地通过它们, ,借助 Hadoop 之类的强大功能,将其实际转换为结构化的格式,然后我就可以在整个数据仓库解决方案中进行查询。
像 Hive 这样的事情使您可以在 Hadoop 群集上托管大型数据库。 诸如 Spark SQL 之类的东西还使您还可以在实际上分布在 Hadoop 集群上的数据仓库上,以类似于 SQL 的数据仓库的方式进行查询。 还存在可以使用 Spark 和 MapReduce 查询的分布式 NoSQL 数据存储。 这个想法是,您不是在数据仓库中使用整体数据库,而是在 Hadoop 或某种集群之上构建的东西,实际上不仅可以扩展数据的处理和查询,而且可以 还可以扩展该数据的转换。
像 Hive 这样的事情使您可以在 Hadoop 群集上托管大型数据库。 诸如 Spark SQL 之类的东西还使您还可以在实际上分布在 Hadoop 集群上的数据仓库上,以类似于 SQL 的数据仓库的方式进行查询。 还存在可以使用 Spark 和 MapReduce 查询的分布式 NoSQL 数据存储。 这个想法是,您不是在数据仓库中使用整体数据库,而是在 Hadoop 或某种集群之上构建的东西,实际上不仅可以扩展数据的处理和查询,而且还可以扩展该数据的转换。
再次,您首先提取原始数据,但是接下来我们将其直接加载到数据仓库系统本身中。 然后,使用可能建立在 Hadoop 上的数据仓库的功能作为第三步进行此转换。 然后,我可以一起查询事物。 因此,这是一个非常大的项目,非常重要的话题。 您知道,数据仓库本身就是一门完整的学科。 我们很快将在本书中进一步讨论 Spark,这是处理此问题的一种方式-特别是有一个称为 Spark SQL 的东西。
这里的总体概念是,如果您从基于 Oracle 或 MySQL 构建的单片数据库迁移到基于 Hadoop 构建的这些较现代的分布式数据库之一,则可以进入转换阶段,并在加载原始数据后实际进行 数据,而不是以前。 最终可能会变得更简单,更具可伸缩性,并利用当今可用的大型计算集群的强大功能。
这里的总体概念是,如果您从基于 Oracle 或 MySQL 构建的单片数据库迁移到基于 Hadoop 构建的这些较现代的分布式数据库之一,则可以进入转换阶段,并在加载原始数据后执行它,和以前不同。 最终可能会变得更简单,更具可伸缩性,并利用当今可用的大型计算集群的强大功能。
这就是 ETL 与 ELT,这是在基于云的计算中遍历许多群集的传统方式,而今天,当我们确实拥有可用于转换大型数据集的大型计算云时,这种方式才有意义。 这就是概念。
ETL 是一种古老的做法,您需要先脱机转换一堆数据,然后再将其导入并将其加载到巨型数据仓库,整体数据库中。 但是,利用当今的技术,基于云的数据库,Hadoop,Hive,Spark 和 MapReduce,您实际上可以更高效地完成此任务,并利用集群的力量在完成转换后真正地执行该转换步骤 将原始数据加载到数据仓库中
ETL 是一种古老的做法,您需要先脱机转换一堆数据,然后再将其导入并将其加载到巨型数据仓库,整体数据库中。 但是,利用当今的技术,基于云的数据库,Hadoop,Hive,Spark 和 MapReduce,您实际上可以更高效地完成此任务,并利用集群的力量在将原始数据加载到数据仓库中之后,真正地执行该转换步骤
这确实在改变着这个领域,了解这一点很重要。 同样,在这个主题上还有很多要学习的东西,因此我鼓励您在这个主题上进行更多的探索。 但是,这是基本概念,现在您知道人们在谈论 ETL 与 ELT 时在谈论什么。
......@@ -431,7 +431,7 @@ ETL 是一种古老的做法,您需要先脱机转换一堆数据,然后再
在探索整个空间的过程中,我可以建立一套吃豆人可能处于的所有可能状态,以及在每个状态中沿给定方向移动所关联的值,这就是强化学习。 在探索整个空间时,它会针对给定状态优化这些奖励值,然后可以使用这些存储的奖励值来选择最佳决策,以在给定当前条件的情况下做出决定。 除《吃豆人》外,还有一个名为《猫与老鼠》的游戏,该游戏是一个常用的示例,稍后我们将进行介绍。
这种技术的好处是,一旦您探究了代理可能处于的所有可能状态集,那么当您运行此代理的不同迭代时,您很快就会获得非常好的性能。 因此,您知道,您可以通过运行强化学习并让其探索可以在不同状态下做出的不同决策的值,然后存储该信息,从而在给定未来状态时快速做出正确的决策,从而基本地做出智能的吃豆人 它在未知条件下看到的情况
这种技术的好处是,一旦您探究了代理可能处于的所有可能状态集,那么当您运行此代理的不同迭代时,您很快就会获得非常好的性能。 因此,您知道,您可以基本地做出智能的吃豆人,通过运行强化学习,并让其探索可以在不同状态下做出的不同决策的值,然后存储该信息,从而给定它在未知条件下看到的未来状态时,快速做出正确的决策
# Q 学习
......@@ -447,7 +447,9 @@ ETL 是一种古老的做法,您需要先脱机转换一堆数据,然后再
现在,您还可以稍作展望,以打造一个更加智能的代理。 所以,我实际上距离这里获得药丸只有两步之遥。 因此,当吃豆人探索这个状态时,如果我想在下一个状态下吃该药的情况,我实际上可以将其计入上一个状态的`Q`值中。 如果您只是某种折扣因素,则根据您的时间间隔,距离的步数,您可以将所有因素综合考虑在内。 因此,这实际上是在系统中构建一点内存的一种方式。 您可以在计算`Q`时使用折扣因子“向前看”多个步骤(此处`s`是先前状态, `s'`是当前状态):
*Q(s,a) += discount * (reward(s,a) + max(Q(s')) - Q(s,a))*
```py
Q(s,a) += discount * (reward(s,a) + max(Q(s')) - Q(s,a))
```
因此,我在服用该药丸时遇到的`Q`值实际上可能会提高我在此过程中遇到的先前`Q`值。 因此,这是使 Q 学习更好的一种方法。
......@@ -491,12 +493,12 @@ ETL 是一种古老的做法,您需要先脱机转换一堆数据,然后再
# 动态编程
因此,甚至可以说是花哨的话:动态编程可以用来描述我们刚刚所做的事情。 哇! 听起来像人工智能,计算机自己编程,《终结者 2》,天网之类的东西。 但是,不,这就是我们所做的。 如果您查看动态编程的定义,则它是一种解决复杂问题的方法,可以将其分解为更简单的子问题的集合,一次解决每个子问题,并使用基于内存的数据理想地存储其解决方案 结构体
因此,甚至可以说是花哨的话:动态编程可以用来描述我们刚刚所做的事情。 哇! 听起来像人工智能,计算机自己编程,《终结者 2》,天网之类的东西。 但是,不,这就是我们所做的。 如果您查看动态编程的定义,则它是一种解决复杂问题的方法,可以将其分解为更简单的子问题的集合,一次解决每个子问题,并使用基于内存的数据结构理想地存储其解决方案
下一次出现相同的子问题时,无需重新计算其解决方案,只需查找先前计算出的解决方案,从而节省了计算时间,但以(希望的)适度的存储空间开销为代价:
* **解决复杂问题的方法**:与创建智能吃豆人相同,最终结果非常复杂。
* **通过将其分解为更简单的子问题的集合**:例如,对于 PacMan 可能处于的给定状态,采取的最佳措施是什么。PacMan 可以有许多不同的状态 陷入困境,但这些州中的每个州都代表着一个更简单的子问题,我只能做出有限的选择,并且有一个正确的答案可以做出最好的举动。
* **通过将其分解为更简单的子问题的集合**:例如,对于 PacMan 可能处于的给定状态,采取的最佳措施是什么。PacMan 可以陷入许多不同的状态,但这些州中的每个州都代表着一个更简单的子问题,我只能做出有限的选择,并且有一个正确的答案可以做出最好的举动。
* **存储其解**:这些解是与每个状态下每个可能动作相关的`Q`值。
* **理想情况下,使用基于内存的数据结构**:嗯,当然,我需要存储这些`Q`值并将它们与状态关联,对吗?
* **下次再次出现相同的子问题**:下次吃豆人处于给定状态时,我具有一组`Q`值。
......
......@@ -69,7 +69,7 @@
现在,您可能会好好考虑一下,如果我对保留的那一个测试数据集过度拟合该怎么办? 对于这些训练数据集中的每个数据集,我仍使用相同的测试数据集。 如果该测试数据集也不能真正代表事物怎么办?
有 K 折交叉验证的变体,也可以将其随机化。 因此,您可以每次都随机选择训练数据集是什么,而只是保持随机地将事物分配给不同的存储桶并测量结果。 但是通常,当人们谈论 K 折交叉验证时,他们谈论的是这种特定技术,即您保留一个存储桶用于测试,其余的存储桶用于训练,然后在测试数据集相对于测试数据集评估时 您为每个模型建立一个模型
有 K 折交叉验证的变体,也可以将其随机化。 因此,您可以每次都随机选择训练数据集是什么,而只是保持随机地将事物分配给不同的存储桶并测量结果。 但是通常,当人们谈论 K 折交叉验证时,他们谈论的是这种特定技术,即您保留一个存储桶用于测试,其余的存储桶用于训练,然后当您为每个桶建立一个模型时,相对于测试数据集评估全部训练数据集
# 使用 Scikit-learn 进行 K 折交叉验证的示例
......@@ -177,9 +177,9 @@ print scores.mean()
让我们谈谈数据科学的一个不便之处,那就是您花费了大部分时间实际上只是在清理和准备数据,而实际上却很少用它来分析和尝试新的算法。 它并不像人们一直认为的那样迷人。 但是,这是一件非常重要的事情要注意。
您可能会在原始数据中找到很多不同的东西。 传入的数据(仅是原始数据)将非常脏,并且将以多种不同方式受到污染。 如果您不加以处理,它将使您的结果产生偏差,最终将最终导致您的业务做出错误的决定。
您可能会在原始数据中找到很多不同的东西。 传入的数据(仅是原始数据)将非常脏,并且将以多种不同方式受到污染。 如果您不加以处理,它将使您的结果产生偏差,最终将最终导致您的公司做出错误的决定。
如果再次出现错误,那就是您提取了很多不良数据并没有考虑到这些错误,没有对这些数据进行清理,您告诉您的业务是根据后来的结果来做某事 完全是错误的,您将会遇到很多麻烦! 所以,要注意!
如果再次出现错误,那就是您提取了很多不良数据并没有考虑到这些错误,没有对这些数据进行清理,您告诉您的公司来根据结果来做某事,后来完全是错误的,您将会遇到很多麻烦! 所以,要注意!
您需要注意许多不同类型的问题和数据:
......@@ -196,7 +196,7 @@ print scores.mean()
因此,确保您拥有足够的数据和高质量的数据通常是最主要的任务。 您会惊讶于现实世界中使用的一些最成功的算法是如此简单。 它们只有通过输入的数据质量和输入的数据量才能成功。 您并不总是需要精美的技术来获得良好的结果。 通常,数据的质量和数量与其他任何事物一样重要。
始终质疑您的结果! 您不想返回并且仅在得到不满意的结果时在输入数据中查找异常。 这会给您的结果带来无意的偏差,让您希望或期望的结果毫无疑问地通过,对吗? 您想一直质疑事物,以确保您一直在寻找这些事物,因为即使您找到自己喜欢的结果,即使结果是错误的,它仍然是错误的,它仍然会通知您 公司方向错误。 以后可能会再次咬你。
始终质疑您的结果! 您不想返回并且仅在得到不满意的结果时在输入数据中查找异常。 这会给您的结果带来无意的偏差,让您希望或期望的结果毫无疑问地通过,对吗? 您想一直质疑事物,以确保您一直在寻找这些事物,因为即使您找到自己喜欢的结果,即使结果是错误的,它仍然是错误的,它仍然会以错误方向通知您的公司。 以后可能会再次咬你。
例如,我有一个名为“无恨新闻”的网站。 这是非营利性组织,所以我不会试图通过告诉您来赚钱。 假设我只想在我拥有的该网站上找到最受欢迎的页面。 这听起来像是一个非常简单的问题,不是吗? 我应该只能够浏览一下我的 Web 日志,并计算出每个页面有多少次匹配,并对它们进行排序,对吗? 它能有多难?! 好吧,事实证明这真的很难! 因此,让我们深入研究该示例,看看为什么会很难,并查看一些必须进行的实际数据清除的示例。
......
......@@ -321,7 +321,7 @@ hiveCtx = HiveContext(sc) rows = hiveCtx.sql("SELECT name, age FROM users")
# 创建 RDD 的更多方法
还有更多创建 RDD 的方法。 您可以从 JDBC 连接创建它们。 基本上,任何支持 JDBC 的数据库都可以与 Spark 对话并从中创建 RDD。 Cassandra,HBase,Elasticsearch 以及 JSON 格式,CSV 格式的文件,序列文件目标文件以及一堆其他压缩文件(如 ORC)都可以用来创建 RDD。 我不想深入了解所有这些细节,您可以阅读一本书,并在需要时查找它们,但要点是,无论数据来自何处,无论从何处创建 RDD,都非常容易 在本地文件系统或分布式数据存储上
还有更多创建 RDD 的方法。 您可以从 JDBC 连接创建它们。 基本上,任何支持 JDBC 的数据库都可以与 Spark 对话并从中创建 RDD。 Cassandra,HBase,Elasticsearch 以及 JSON 格式,CSV 格式的文件,序列文件目标文件以及一堆其他压缩文件(如 ORC)都可以用来创建 RDD。 我不想深入了解所有这些细节,您可以阅读一本书,并在需要时查找它们,但要点是,无论数据来自何处,无论从何处创建 RDD,在本地文件系统或分布式数据存储上,都非常容易
同样,RDD 只是一种加载和维护大量数据并同时跟踪所有数据的方法。 但是,从概念上讲,在脚本中,RDD 只是一个包含大量数据的对象。 您无需考虑规模,因为 Spark 为您做到了。
......
......@@ -126,7 +126,7 @@ p 值基本上是该实验满足原假设的概率,即对照和治疗行为之
当实验结束时,我们将讨论当您宣布实验结束时,您要测量 p 值。 如果它小于您确定的阈值,那么您可以拒绝原假设,并且可以说:“嗯,这种变化很有可能产生真正的积极或消极结果。”
如果结果是肯定的,那么您可以将更改推广到整个网站,而不再是实验,它是您网站的一部分,随着时间的流逝,它有望为您带来越来越多的收益,如果结果是负面结果,您希望在花费更多钱之前摆脱它。
如果结果是肯定的,那么您可以将更改推广到整个网站,而不再是实验,它是您网站的一部分,随着时间的流逝,它有望为您带来越来越多的收益,如果结果是负面结果,您希望在花费更多钱之前摆脱它。
请记住,当实验结果为负数时,运行 A/B 测试会产生实际成本。 因此,您不想将其运行太久,因为您可能会亏钱。
......@@ -153,7 +153,7 @@ stats.ttest_ind(A, B)
```
在此代码示例中,我们的治疗组(`A`)将具有随机分布的购买行为,即他们平均每笔交易花费 25 美元,标准差为 5 万和 1 万个样本,而以前的网站过去 在相同的标准差和样本量的情况下,每笔交易的平均值为 26 美元。 我们基本上是在寻找一个结果为阴性的实验。 确定 T 统计和 p 值所需要做的只是使用`scipy`中的这种方便的`stats.ttest_ind`方法。 您要做的是,将其传递给治疗组和对照组,然后得出 T 统计量,如以下输出所示:
在此代码示例中,我们的治疗组(`A`)将具有随机分布的购买行为,即他们平均每笔交易花费 25 美元,标准差为 5 万和 1 万个样本,而过去在相同的标准差和样本量的情况下,以前的网站每笔交易的平均值为 26 美元。 我们基本上是在寻找一个结果为阴性的实验。 确定 T 统计和 p 值所需要做的只是使用`scipy`中的这种方便的`stats.ttest_ind`方法。 您要做的是,将其传递给治疗组和对照组,然后得出 T 统计量,如以下输出所示:
![](img/fe9d3310-3841-482e-b97a-098ff9084522.jpg)
......@@ -247,7 +247,7 @@ stats.ttest_ind(A, A)
同样,要了解的重要一点是,您正在寻找较大的 T 统计量和较小的 p 值。 P 值很可能就是您要与企业沟通的内容。 记住,p 值越低越好,您希望看到单位数,最好在宣布胜利之前低于 1%。
在本章的其余部分中,我们将更多地讨论 A/B 测试。 SciPy 可以非常轻松地为给定的数据集计算 T 统计量和 p 值,因此您可以非常轻松地比较对照组和治疗组之间的行为,并衡量该效应是真实的还是只是概率 随机变化的结果。 确保您专注于这些指标,并且正在衡量进行这些比较时关心的转化指标。
在本章的其余部分中,我们将更多地讨论 A/B 测试。 SciPy 可以非常轻松地为给定的数据集计算 T 统计量和 p 值,因此您可以非常轻松地比较对照组和治疗组之间的行为,并衡量该效应是真实的还是只是概率随机变化的结果。 确保您专注于这些指标,并且正在衡量进行这些比较时关心的转化指标。
# 确定要进行多长时间的实验
......@@ -261,9 +261,9 @@ stats.ttest_ind(A, A)
可能发生的另一件事是根本没有收敛。 如果您没有看到 p 值随时间的变化趋势,则可能是一个很好的信号,表明您不会很快看到这一趋势。 不管运行多长时间,它都不会对行为产生足够的影响甚至无法衡量。
在这种情况下,您每天想做的是在给定实验的图形上绘制 p 值,T 统计量,以及用来衡量该实验成功与否的任何信息,以及是否看到了某些东西 看起来很有希望,您会看到 p 值随时间开始下降。 因此,获得的数据越多,您的结果应获得的意义就越大。
在这种情况下,您每天想做的是在给定实验的图形上绘制 p 值,T 统计量,以及用来衡量该实验成功与否的任何信息,以及是否某些东西看起来很有希望,您会看到 p 值随时间开始下降。 因此,获得的数据越多,您的结果应获得的意义就越大。
现在,如果您看到一条平坦的线或到处都是一条线,则表明您的 p 值不会随处可见,并且不管实验进行多长时间都无济于事 发生。 您需要事先达成共识,如果您看不到 p 值的任何趋势,那么您愿意为该实验进行的最长时间是什么? 是两个星期吗? 是一个月吗?
现在,如果您看到一条平坦的线或到处都是一条线,则表明您的 p 值不会随处可见,并且不管实验进行多长时间都没有事情发生。 您需要事先达成共识,如果您看不到 p 值的任何趋势,那么您愿意为该实验进行的最长时间是什么? 是两个星期吗? 是一个月吗?
要记住的另一件事是,一次在站点上运行多个实验可以混淆您的结果。
......@@ -275,7 +275,7 @@ stats.ttest_ind(A, A)
我要说明的一个重要问题是,即使您使用 p 值以原则方式测量 A/B 测试的结果,也不是福音。 实际上,有许多影响因素可能会扭曲实验结果,并导致您做出错误的决定。 让我们仔细研究其中的一些,让您知道如何注意它们。 让我们谈谈 A/B 测试的一些陷阱。
说 p 值为 1% 听起来很正式,这意味着给定实验只有 1% 的机会是由于虚假结果或随机变化引起的,但这并不是衡量成功与否的全部 做一个实验。 有许多事情可能会歪曲或混淆您需要注意的结果。 因此,即使您看到一个看起来很令人鼓舞的 p 值,您的实验仍然可能对您不利,并且您需要了解可以实现该目标的事情,以免做出错误的决定。
说 p 值为 1% 听起来很正式,这意味着给定实验只有 1% 的机会是由于虚假结果或随机变化引起的,但做一个实验并不是衡量成功与否的全部。 有许多事情可能会歪曲或混淆您需要注意的结果。 因此,即使您看到一个看起来很令人鼓舞的 p 值,您的实验仍然可能对您不利,并且您需要了解可以实现该目标的事情,以免做出错误的决定。
请记住,关联并不意味着因果关系。
......@@ -291,7 +291,7 @@ stats.ttest_ind(A, A)
例如,也许您的客户习惯于一直浏览网站上的橙色按钮,如果蓝色按钮出现并且引起了他们的注意,只是因为它与众不同。 但是,随着新客户的到来,他们从未见过您的网站,因此他们不会注意到这与众不同,而且随着时间的流逝,即使您的老客户也习惯了新的蓝色按钮。 很有可能,如果您在一年后进行相同的测试,那没有什么区别。 也许他们会反过来。
我可以很容易地看到您测试橙色按钮与蓝色按钮的情况,并且在头两周中蓝色按钮获胜。 人们购买更多商品是因为他们对它更具吸引力,因为它与众不同。 但是一年过去了,我可能会运行另一个网络实验室,将蓝色按钮与橙色按钮放在一起,橙色按钮将再次获胜,这仅仅是因为橙色按钮是不同的,并且它是新的并因此而引起了人们的注意 独自的
我可以很容易地看到您测试橙色按钮与蓝色按钮的情况,并且在头两周中蓝色按钮获胜。 人们购买更多商品是因为他们对它更具吸引力,因为它与众不同。 但是一年过去了,我可能会运行另一个网络实验室,将蓝色按钮与橙色按钮放在一起,橙色按钮将再次获胜,这仅仅是因为橙色按钮是不同的,并且它是新的并因此单独引起了人们的注意
因此,如果您所做的更改有些争议,那么最好稍后再运行该实验,看看您是否可以真正复制其结果。 这确实是我了解新颖性影响的唯一方法。 实际上,当它不再新颖时,或者不再仅仅是因为它与众不同而引起人们关注的变化,才再次对其进行衡量。
......@@ -351,6 +351,6 @@ A/A 测试可以很好地测试 A/B 框架本身,并确保没有固有的偏
如果您想在这一领域进一步发展,我真正鼓励您做的是与您的老板交谈。 如果您在一家可以访问自己的一些有趣数据集的公司工作,请查看是否可以使用它们。 显然,在使用公司拥有的任何数据之前,您首先要与老板交谈,因为围绕它可能会有一些隐私限制。 您想确保自己没有侵犯公司客户的隐私,这可能意味着您只能在工作场所的受控环境中使用或查看这些数据。 因此,在执行此操作时要小心。
如果您获得了每周几天才真正上班的许可,并且知道其中一些数据集并弄清楚了可以做什么,不仅表明您有主动让自己成为一个 更好的员工,您实际上可能会发现一些对您的公司有价值的东西,这可能会让您看起来更好,并且实际上可能导致内部转移,进入与您的职业生涯更直接相关的领域。
如果您获得了每周几天才真正上班的许可,并且知道其中一些数据集并弄清楚了可以做什么,不仅表明您有主动让自己成为一个更好的员工,您实际上可能会发现一些对您的公司有价值的东西,这可能会让您看起来更好,并且实际上可能导致内部转移,进入与您的职业生涯更直接相关的领域。
因此,如果您想从我这里获得一些职业建议,我会得到一个普遍的问题:“嘿,我是一名工程师,我想更多地进入数据科学领域,我该怎么做?” 做到这一点的最佳方法就是做到这一点,实际上,您要做一些辅助项目并表明您可以做到,并从中证明了一些有意义的结果。 告诉老板,看看它带领你。 祝你好运。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册