图片中的暖色或冷色滤色片是否会带来更多点击? —机器学习A / B测试

A/B test on ads is the art of choosing the best advertisement that optimizes your goal (number of clicks, likes, etc). For example, if you change a simple thing like a filter in your pictures you will drive more traffic to your links.

广告的A / B测试是一种选择最佳广告的艺术,该广告可以优化您的目标(点击次数,喜欢的次数等)。 例如,如果您更改图片中的过滤器之类的简单内容,则会为链接带来更多流量。

In this post we will see how to do evaluate by yourself the efficacy of your own A/B test using Python and Bayesian Statistics.

在这篇文章中,我们将看到如何使用Python和贝叶斯统计自己评估自己的A / B测试的效率。

Article TL;DR for the Busy Data Scientist

Article TL; DR for the Busy Data Scientist

  1. I ran two twitter ads. The one with a cold filter outperformed the one with warm filter.

    我投放了两个Twitter广告。 带有冷滤网的滤网的性能优于带暖滤网的滤网的性能。
  2. Skip to section “The Code (starting from the end)” if you just want to copy and past some Python code to try your own A/B Test.

    如果您只想复制并粘贴一些Python代码来尝试自己的A / B测试,请跳至“ 代码(从末尾开始) ”部分。

  3. Skip to the section “Putting all together” if you want to see my final result.

    如果要查看我的最终结果,请跳至“ 全部放在一起 ”部分。

  4. Read it through if you want to learn how to do and why it works A/B Tests using Bayesian statistics.

    如果您想学习使用贝叶斯统计信息的方法以及为什么要使用A / B测试,请通读它。

问题 (The Problem)

Given two ads (A and B), which one has the highest Click-Through-Rate (CTR)? From a statistical point of view, the problem is to learn the unobservable TRUE CTR parameter from the observed data of impressions (ad views) and clicks. Just to avoid confusion, remember that CTR is calculated as the number of clicks divided by the number of impressions:

给定两个广告(A和B),哪个具有最高点击率(CTR)? 从统计的角度来看,问题是要从所观察到的印象(广告视图)和点击数据中了解到不可观察的TRUE CTR参数。 为避免混淆,请记住,点击率的计算方法是点击次数除以展示次数:

Formula for Click through rate (or CTR for short). Number of clicks divided by the number of impressions.
Click-Through-Rate formula.
点击率公式。

From this simple formula you might be thinking:

从这个简单的公式中,您可能会想到:

“If the equation is really just a simple division the only thing I need to do is to get the data from the ad performance , do the simple division and the higher number is the best Ad. DONE!?”

“如果等式实际上只是一个简单的除法运算,那么我唯一需要做的就是从广告效果中获取数据,然后进行简单的除法运算,数值越大越好。 完成!?”

Well, not really.

好吧,不是真的。

Say you have only one impression and one click, that is a CTR of 100%, but you should not be assuming that your TRUE CTR is actually 100% from one single view/impression. It most likely is not 100%, by the way. To put it simply, the observed CTR alone cannot tell us the performance of an ad. We need more, we need more data and we still need some Bayesian statistics. But before let me setup our our ad campaign.

假设您只有一次展示和一次点击,即100%的点击率,但您不应假设您的TRUE CTR实际上是从单个视图/展示获得的100%。 顺便说一句,它很可能不是100%。 简而言之,仅观察到的点击率并不能告诉我们广告的效果。 我们需要更多,我们需要更多数据,我们仍然需要一些贝叶斯统计数据。 但是在让我设置广告系列之前。

设置 (The Setup)

Let us explorer the problem a little bit further. For that matter, I ran two real ads in Twitter with real money (I spent $20 USD in case you are curious). The difference between both ads was only the filter in the images. One image had a cold filter and the other had a warm filter (default filters in my smart phone). The ad was for an Affiliate Amazon link to the book ‘Designing Data Intensive Applications ’(https://amzn.to/3iycLi6).

让我们进一步探讨该问题。 为此,我在Twitter上用真钱投放了两个真实的广告(如果您好奇的话,我花了20美元)。 这两个广告之间的区别只是图片中的过滤器。 一个图像有一个冷滤镜,另一个图像有一个暖滤镜(我的智能手机中的默认滤镜)。 该广告是针对一个亚马逊附属机构的链接,该链接指向《 设计数据密集型应用程序 》( https://amzn.to/3iycLi6 )一书。

The question is ‘Which filter maximizes my the Click-Through-Rate?’, i.e., which image makes the Amazon link most likely to be clicked? Here are the ads side by side:

问题是“哪个过滤器会最大化我的点击率?”,即哪个图像使Amazon链接最有可能被点击? 以下是这些广告的并排:

Image for post
Almost identical ads I ran in Twitter. Both ads are the same but the filter applied to the pictures. The left (ad A) has a cold filter, while the right (ad B) has a warm filter. Which one do you think performed better?
我在Twitter上投放的广告几乎相同。 这两个广告都是相同的,但滤镜已应用于图片。 左侧(广告A)具有冷滤镜,而右侧(广告B)具有热滤镜。 您认为哪个表现更好?

After running both ads for a few hours I got the following impressions and clicks:

将两个广告都投放了几个小时后,我得到了以下印象和点击:

Ad A (cold filter): 190 impressions, 13 clicks, CTR 0.068 (6.8%)

广告A(冷过滤器):190次展示,13次点击,点击率0.068(6.8%)

Ad B(warm filter): 143 impressions, 9 clicks, CTR 0.062 (6.0%)

广告B(热过滤器):143次展示,9次点击,点击率0.062(6.0%)

From the data, we can see that A’s observed CTR is higher than B’s observed CTR (6.8% > 6.0%). The remaining of this post we will answer the following two questions:

从数据中我们可以看到,A的观察到的点击率高于B的观察到的点击率 (6.8%> 6.0%)。 在本文的其余部分,我们将回答以下两个问题:

  1. Can we conclude that A’s real CTR is higher than B’s real CTR?

    我们是否可以得出结论,A的实际点击率高于B的实际点击率?
  2. If we were to accept it is (or it is not), what is the probability that we are right or wrong?

    如果我们接受它是(或不是),那么我们是对是错的概率是多少?

One way to stretch this question to the extreme would be the following hypothetical situation: Assume that ad A had 1 view and 0 clicks while ad B had 1 view and 1 click. Their observed CTR are 0% and 100%, but no one would say that ad B performs better than ad A just from these data points. Let’s see how to estimate our CTRs while our ad campaign is running.

将这个问题扩展到极端的一种方法是,在以下假设情况下进行:假设广告A具有1个视图和0次点击,而广告B具有1个视图和1次点击。 他们观察到的点击率分别为0%和100%,但没有人会说从这些数据点来看,广告B的效果要好于广告A。 让我们看看如何在广告系列投放期间估算点击率。

代码(从头开始) (The Code (starting from the end))

It will be easier to understand where we are going if we start at the end. So, let’s have a look at some code. Do not worry if you do not understand every line yet, the main point now is the plot the code produces, also I will walk you through the code later.

如果我们从头开始,将会更容易理解我们的发展方向。 因此,让我们看一些代码。 如果您还不了解每一行,请不要担心,现在的重点是代码产生的图形,稍后我将引导您完成代码。

Running this code in your notebook, you should get the following plot:

在笔记本中运行此代码,应该得到以下图表:

Image for post
A/B Test from our first Ads. The blue line is our A ad (cold) while the orange is our B ad (warm). The filled region under the plots is what we call ‘Highest Density Interval (HDI).’ It is the area that contains 95% of the distribution of CTR. Also, not that the averages are different than simply clicks divided by impressions. We discuss this later in the post.
我们的第一个广告进行A / B测试。 蓝线是我们的A广告(冷),而橙色是我们的B广告(暖)。 曲线下的填充区域就是所谓的“最高密度间隔(HDI)”。 该区域包含点击率分布的95%。 同样,平均值并非仅是点击次数除以展示次数即可得出的平均值。 我们将在后面的文章中对此进行讨论。

This plot shows the most likely values for each CTR given the observed data. Since the regions with the most likely values (the Highest Density intervals above) we cannot say that one ad is better than the other only, at least not with only this data. For comparison, see the same code if it were ran with the following FAKE data:

此图显示了给定观察到的数据的每个点击率的最可能值。 由于具有最可能值的区域(上述最高密度区间),我们不能说一个广告仅比另一个广告好,至少不能仅凭此数据。 为了进行比较,如果它与以下FAKE数据一起运行,请参见相同的代码:

Image for post
Example data for A/B test. See that the HDIs do not intercept. In this example one could be confident in accepting that ad A (blue line, cold) has a higher CTR than the B ad (orange line, warm).
A / B测试的示例数据。 看到HDI不会拦截。 在此示例中,可以确信广告A(蓝线,冷线)的点击率比B广告(橙线,热线)的点击率高。

We will perform our A/B test in these 3 simple steps. We will:

我们将通过以下三个简单步骤来执行A / B测试。 我们会:

  1. Gather the number of impressions and clicks of both ads;

    收集两个广告的印象数和点击数;
  2. Plot the distribution of the most likely values for A and B’s CTR;

    绘制A和B点阅率最可能值的分布;
  3. Compare their highest density intervals and decide depending on the intervals’ overlap.

    比较它们的最高密度间隔,并根据间隔的重叠进行确定。

If you paid attention to the Python code above (no judgement if you did not), you saw that we used a few keywords, most importantly prior, posterior and beta. In the next section we will jump to the math and explain why the previous Python code works. So buckle up, enter the Bayesian statistics.

如果您注意上面的Python代码(如果没有,则无法判断),您会看到我们使用了一些关键字,最重要的是before,posteriorbeta。 在下一节中,我们将跳至数学并解释为什么以前的Python代码可以工作。 系好安全带,输入贝叶斯统计数据。

A / B测试背后的数学 (The Math behind A/B Test)

先验 (The Prior)

The goal here is to estimate the real CTR for an ad given the observed data. Since seeing the REAL CTR would imply serving an ad to every single user of Twitter, it is monetarily (and often practically) impossible to do that. So we will need to make our 20 bucks worth it. The estimation will come with an uncertainty that we will be able to quantify, that is also important for our decision making when it comes to stop an ad and increase the budget on others.

这里的目标是根据观察到的数据估算广告的实际点击率。 由于看到REAL CTR意味着向Twitter的每个用户投放广告,因此从金钱上(通常实际上)是不可能做到的。 因此,我们需要使我们的20美元值得。 估算将带有我们可以量化的不确定性,这对于我们停止广告并增加其他广告的预算时的决策也很重要。

Let’s call θ the parameter we want to estimate (in this case the CTR of an ad) and p(θ) the probability distribution for θ. In a previous article, I talked about p(θ) being discrete or sometimes uniform, but here we will see that using the beta distribution to describe p(θ) makes sense and it convenient for computation.

我们将θ称为我们要估算的参数(在这种情况下,是广告的点击率),而将p(θ)称为θ的概率分布。 在上一篇文章中 ,我谈到了p(θ)是离散的或有时是均匀的,但是在这里我们将看到使用beta 分布来描述p(θ)是有意义的,并且便于计算。

One way to think about p(θ) is to think as if it is our belief on the possible values of θ. For example, say we are talking about a problem that we have no prior knowledge, and all possible values of θ are equally likely. In this case, note that beta(1,1) describes our knowledge (or lack of) for possible values of θ. By the same token, if we were to use θ to describe our prior belief on the probability of a coin flip to be be heads, the distribution beta(25,25) would be a good candidate, as it is centered around 50% , but we would still allow some room for small biases (HDI spans within 0.4~0.6). See figure below:

思考p(θ)的一种方法是,认为它似乎是我们对θ可能值的信念。 例如,假设我们正在谈论的是一个我们没有先验知识的问题,并且所有可能的θ值都是同等可能。 在这种情况下,请注意beta(1,1)描述了我们对θ可能值的认识(或缺乏)。 出于同样的原因,如果我们使用θ来描述我们对硬币翻转为正面概率的先前信念,则分布beta(25,25)将是一个很好的候选者,因为它的中心在50%左右,但是我们仍然会留出一些小的偏差空间(HDI范围在0.4〜0.6之间)。 参见下图:

Image for post
Beta distribution examples. The left distribution is an example of a problem we have total lack of prior knowledge where all possible θs are equally likely. While the right is an example of a coin toss prior, where our prior knowledge assigns higher probability to 50% but with some bias within 40%~60%.
Beta发行示例。 左分布是我们完全缺乏先验知识的问题的示例,在该问题中所有可能的θs都可能相等。 右边是掷硬币的例子,我们的先验知识将较高的概率分配给50%,但有些偏差在40%〜60%之内。

The parameters a and b can seem a little artificial, but away to describe a particular prior of a problem is via the prior mean m and the number of events n observed in the past. With m and n one can find the parameters a and b as follows:

参数ab看起来有些虚假,但是描述问题的特定先验条件是通过先验均值m和过去观察到的事件数n来描述。 使用mn可以找到参数ab ,如下所示:

Image for post
Formula to find the parameters a and b for a prior beta distribution given the previous mean m and the number of events n. Note that, given a and b we can also calculate the mean for the beta distribution.
给定先前的均值m和事件数n ,找到用于先前的beta分布的参数ab的公式 注意,给定ab,我们还可以计算β分布的平均值。

It is important to note that a beta distribution might not be the best fit for the problem, for that we could use model selection via Bayes Factor, a topic way beyond this article. Historically, the beta distribution is used because it is very easy to compute, specially when we use it with the bayesian rule given some new data. Let’s have a look on that next.

需要注意的是AB 埃塔分布可能不是问题的最佳契合,对于我们可以通过贝叶斯因子,一个主题的方式这篇文章以后使用模式的选择是很重要的。 从历史上看,使用beta分布是因为它非常易于计算,尤其是当我们将贝叶斯规则与给定一些新数据一起使用时。 接下来让我们看一下。

Image for post
a and ab. (Source: b具有不同值的Beta分布。 (来源: Wikipedia)维基百科 )

后部 (The Posterior)

The way we will do our A/B test will be assuming the prior distribution for our parameter θ (the real click-through-rate of the ad) to be beta(1,1), i.e., we will assume total lack of prior knowledge and set any possible value of θ to be equally likely. Then, we will update our p(θ) given our observed data, for that we use bayes rule (For an introduction to the Bayes’ Rule see my previous Article here):

我们进行A / B测试的方式将假设参数θ(广告的实际点击率)的先验分布为beta(1,1) ,即,我们将假设完全没有先验分布知道并将任何可能的θ值设置为同等可能。 然后,我们将给予我们的观测数据来更新我们的P(θ),对于我们使用贝叶斯法则(对于一个介绍贝叶斯法则看我以前的文章在这里 ):

Image for post
here.在这里 。

Our goal will be to calculate the posterior distribution p(θ|D) for our advertisement given the number of impressions and clicks the ad received.

我们的目标是给定印象数和点击数,计算出广告的后验分布p(θ| D)。

First, note that we are assuming that given an ad, the probably of clicking it when it is seen is equal to θ and the probability of not being clicked is equal to 1-θ, that is what we call a Bernoulli distribution.

首先,请注意,我们假设给定一个广告,看到它时点击它的可能性等于θ,未被点击的可能性等于1-θ,这就是我们所说的伯努利分布。

Result: After N impressions and z clicks, if the probability of the data (N, z) is a Bernoulli distribution, and if the prior distribution of θ is a beta(a,b) distribution, then the following holds to be true:

结果:N次展示和z次点击之后如果数据( N,z )的概率是伯努利分布,并且如果θ的先前分布是beta(a,b)分布,则以下条件成立:

Image for post
If the distribution of the data is given by a binomial distribution and the prior distribution is given by a beta distribution, the posterior distribution is a beta distribution. When that happens we say that the binomial and the beta distributions are conjugate, and the update of the prior distribution to the posterior becomes a simple arithmetic calculation.
如果数据的分布由二项式分布给出,而先验分布由beta分布给出,则后验分布是beta分布。 当发生这种情况时,我们说二项分布和β分布是共轭的,并且先验分布到后验分布的更新成为一种简单的算术计算。

For a detailed proof of this result I suggest John Kruschke’s “Doing Bayesian Data Analysis” (https://amzn.to/345ouR2), or ask me in Twitter (@solvingthehuman).

有关此结果的详细证明,我建议约翰·克鲁施克(John Kruschke)的“做贝叶斯数据分析”( https://amzn.to/345ouR2 ),或在Twitter(@solvingthehuman)上问我。

放在一起 (Putting all together)

With the equation from last section we can say that after N impressions and z clicks in an ad, the updated distribution of the ad’s CTR (the θ parameter) is given by:

使用上一节中的公式,我们可以说,在广告中获得N次展示和z次点击后,广告CTR的更新分布(θ参数)由下式给出:

beta(1+z, N-z+1)

beta(1 + z,N-z + 1)

Let’s see how this look like with some real data along with the complete Python code so you can do your own A/B tests:

让我们看看一些真实数据以及完整的Python代码的样子,以便您可以进行自己的A / B测试:

Image for post
Real Time A/B test for cold and warm filters. Each plot are days a part, with the third one being two days from the start of the ad campaign. In the beginning we do not have enough data to make up our minds regarding any specific value of ads A or B real CTR. Moreover, we cannot say if A or B is performing better. By the end of the campaign we have almost 95% chance that the real value of Cold filer ad is performing better than the ad with the warm filter.
实时A / B测试,用于冷和热过滤器。 每幅图都是一部分,第三幅是从广告系列开始算起的两天。 最初,我们没有足够的数据来确定广告A或B实际CTR的任何具体价值。 此外,我们不能说A或B的表现是否更好。 到广告系列结束时,我们几乎有95%的机会认为Cold Filer广告的实际价值要比带有暖过滤器的广告更好。

结论 (Conclusion)

In this article we saw how to use the beta distribution and Python to quickly decide which ad is performing better in an A/B test campaign.

在本文中,我们了解了如何使用Beta发行版和Python快速确定哪个广告在A / B测试广告系列中的效果更好。

Also, we saw that if you are planning to sell data science book on Twitter you might be better off using the cold filter for your pictures. I am very curious to know if this result holds up to other people.

此外,我们看到,如果您打算在Twitter上出售数据科学书籍,那么最好使用冷滤器来处理图片。 我很想知道这个结果是否能胜任其他人。

Let me know of your own A/B tests! Did you have similar results as mine? I am in Twitter @solvingthehuman.

让我知道您自己的A / B测试! 您有和我类似的结果吗? 我在Twitter @solvingthehuman。

更多? (More?)

If you want to read:

如果您想阅读:

  • An introduction about Bayesian Rule — Go here

    关于贝叶斯规则的介绍-转到此处

  • The advantages of Bayesian over other methods — Go here

    围棋^ h -贝叶斯优于其他方法的优点ERE

翻译自: https://medium.com/solving-the-human-problem/do-warm-or-cold-filters-in-your-pictures-drive-more-clicks-a-machine-learning-python-a-b-testing-ccf5bdd89d4c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3d制作中需要注意的问题_浅谈线路板制作时需要注意的问题

PCB电路板是电子设备重要的基础组装部件,在制作PCB电路板时,只有将各个方面都考虑清楚,才能保证电子设备在使用时不会出现问题。今天小编就与大家一起分享线路板制作时需要注意的问题,归纳一下几点:1、考虑制作类型电路…

冷启动、热启动时间性能优化

用户希望应用程序能够快速响应并加载。 一个启动速度慢的应用程序不符合这个期望,可能会令用户失望。 这种糟糕的体验可能会导致用户在应用商店中对您的应用进行糟糕的评价,甚至完全放弃您的应用。 本文档提供的信息可帮助您优化应用的启动时间。 它首先…

python:lambda、filter、map、reduce

lambda 为关键字。filter,map,reduce为内置函数。 lambda:实现python中单行最小函数。 g lambda x: x * 2 #相当于 def g(x):return x*2print(g(3))# 6 注意:这里直接g(3)可以执行,但没有输出的,前面的…

集群

原文地址:http://www.microsoft.com/china/MSDN/library/windev/COMponentdev/CdappCEnter.mspx?mfrtrue 本文假设读者熟悉 Windows 2000、COM、IIS 5.0 摘要 Application Center 2000 简化了从基于 Microsoft .NET 的应用程序到群集的部署,群集是一组…

Myeclipes连接Mysql数据库配置

相信大家在网站上也找到了许多关于myeclipes如何连接mysql数据库的解决方案,虽然每一步都按照他的步骤来,可到最后还是提示连接失败,有的方案可能应个人设备而异,配置环境不同导致。经过个人多方探索终于找到一个简单便捷的配置方…

cnn图像二分类 python_人工智能Keras图像分类器(CNN卷积神经网络的图片识别篇)...

上期文章我们分享了人工智能Keras图像分类器(CNN卷积神经网络的图片识别的训练模型),本期我们使用预训练模型对图片进行识别:Keras CNN卷积神经网络模型训练导入第三方库from keras.preprocessing.image import img_to_arrayfrom keras.models import lo…

图卷积 节点分类_在节点分类任务上训练图卷积网络

图卷积 节点分类This article goes through the implementation of Graph Convolution Networks (GCN) using Spektral API, which is a Python library for graph deep learning based on Tensorflow 2. We are going to perform Semi-Supervised Node Classification using C…

回归分析预测_使用回归分析预测心脏病。

回归分析预测As per the Centers for Disease Control and Prevention report, heart disease is the prime killer of both men and women in the United States and around the globe. There are several data mining techniques that can be leveraged by researchers/ stat…

crc16的c语言函数 计算ccitt_C语言为何如此重要

●●●如今,有很多学生不懂为何要学习编程语言,为何要学习C语言?原因是大学生不能满足于只会用办公软件,而应当有更高的学习要求,对于理工科的学生尤其如此。计算机的本质是“程序的机器”,程序和指令的思想…

aws spark_使用Spark构建AWS数据湖时的一些问题以及如何处理这些问题

aws spark技术提示 (TECHNICAL TIPS) 介绍 (Introduction) At first, it seemed to be quite easy to write down and run a Spark application. If you are experienced with data frame manipulation using pandas, numpy and other packages in Python, and/or the SQL lang…

冲刺第三天 11.27 TUE

任务执行情况 已解决问题 数据库结构已经确定 对联生成model已训练完成 词匹配部分完成 微信前端rush版本完成 总体情况 团队成员今日已完成任务剩余任务困难Dacheng, Weijieazure数据库搭建(完成)multiple communication scripts, call APIs需要进行整合调试Yichon…

DPDK+Pktgen 高速发包测试

参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速。提供运行时管理,端口实时测量。可以控制 UDP, TCP, ARP, ICMP, GRE, MPLS and Queue-in-Queue等包。可以通过TCP进行远程控制。Pktgen官网 安装使用过程 版本…

数据科学家编程能力需要多好_我们不需要这么多的数据科学家

数据科学家编程能力需要多好I have held the title of data scientist in two industries. I’ve interviewed for more than 30 additional data science positions. I’ve been the CTO of a data-centric startup. I’ve done many hours of data science consulting.我曾担…

excel表格行列显示十字定位_WPS表格:Excel表格打印时,如何每页都显示标题行?...

电子表格数据很多的时候,要分很多页打印,如何每页都能显示标题行呢?以下表为例,我们在WPS2019中演示如何每页都显示前两行标题行?1.首先点亮顶部的页面布局选项卡。然后点击打印标题或表头按钮。2.在弹出的页面设置对话…

sql优化技巧_使用这些查询优化技巧成为SQL向导

sql优化技巧成为SQL向导! (Become an SQL Wizard!) It turns out storing data by rows and columns is convenient in a lot of situations, so relational databases have remained a cornerstone of data management in businesses across the globe. Structured…

Day 4:集合——迭代器与List接口

Collection-迭代方法 1、toArray() 返回Object类型数据,接收也需要Object对象! Object[] toArray(); Collection c new ArrayList(); Object[] arr c.toArray(); 2、iterator() Collection的方法,返回实现Iterator接口的对象,…

物种分布模型_减少物种分布建模中的空间自相关

物种分布模型Species distribution models (SDM; for review and definition see, e.g., Peterson et al., 2011) are a dominant paradigm to quantify the relationship between environmental dynamics and several manifestations of species biogeography. These statisti…

深入理解激活函数

为什么需要非线性激活函数? 说起神经网络肯定会降到神经函数,看了很多资料,也许你对激活函数这个名词会感觉很困惑, 它为什么叫激活函数?它有什么作用呢? 看了很多书籍上的讲解说会让神经网络变成很丰富的…

如何一键部署项目、代码自动更新

为什么80%的码农都做不了架构师?>>> 摘要:my-deploy:由nodejs写的一个自动更新工具,理论支持所有语言(php、java、c#)的项目,支持所有git仓库(bitbucket、github等)。github效果如何?如果你的后端项目放在github、bitbucket等git仓库中管理…

Kettle7.1在window启动报错

实验环境: window10 x64 kettle7.1 pdi-ce-7.1.0.0-12.zip 错误现象: a java exception has occurred 问题解决: 运行调试工具 data-integration\SpoonDebug.bat //调试错误的,根据错误明确知道为何启动不了,Y--Y-…