TowardsDataScience 博客中文翻译 2020(五百一十八)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

基于信息搜索的超参数调整

原文:https://towardsdatascience.com/hyperparameter-tuning-with-informed-searching-37ed58d331f8?source=collection_archive---------31-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

威尔·弗朗西斯在 Unsplash 上的照片

咻…已经几个星期了,但是很高兴赶上了!这些帖子的目标是希望找到一些对我来说是新的东西,这样我就可以“向前支付”。你们中的许多人可能听说过 GridSearchCV,甚至可能听说过 RandomSearchCV,但是知情搜索呢?

使用信息搜索技术的优势在于超参数是通过顺序学习来调整的。GridSearch 和 RandomSearch 都很棒,但它们只深入一层。知情搜索从先前的超参数调整中学习,以优化调整过程。有三种方法是我知道的,请随意分享其他方法!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

伊恩·施耐德在 Unsplash 上的照片

粗调至微调

这是微调超参数最明显的方法。只有四个步骤:

  1. 执行随机搜索(或网格搜索)。
  2. 查看结果。
  3. 根据检查结果定义新的参数范围。
  4. 继续,直到获得最佳得分。

现在,这是非常明显的,但最容易实现,无需安装任何软件包。这也是最耗时的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

贝叶斯定理

贝叶斯调谐

是的,贝氏又来了!该方法将采用一系列超参数,并利用贝叶斯信念原则来迭代超参数,以提供最佳结果。hyperpt套装提供您需要的一切!Parzen 估计器的 (tpe.suggest)是函数中的算法。此外,还创建了一个目标函数来迭代参数并测量损失。

下面是一个例子:

from hyperopt import hp, space, fmin, tpe
# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.quniform('max_depth', 2, 10, 2),'learning_rate': hp.uniform('learning_rate', 0.001,0.9)}

  # Set up objective function
def objective(params):
    params = {'max_depth': int(params['max_depth']),'learning_rate': params['learning_rate']} # model can be set - scoring must be 'accuracy'
    gbm_clf = GradientBoostingClassifier(n_estimators=100, **params) 
      best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
    loss = 1 - best_score
    return loss# Run the algorithm - test max evals
best = fmin(fn=objective,space=space, max_evals=20, rstate=np.random.RandomState(42), algo=tpe.suggest)
  print(best)#Sample output:
 0%|          | 0/20 [00:00<?, ?it/s, best loss: ?]
  5%|5         | 1/20 [00:00<00:04,  4.16it/s, best loss: 0.26759418985474637]
 10%|#         | 2/20 [00:00<00:04,  4.32it/s, best loss: 0.2549063726593165] 
 15%|#5        | 3/20 [00:00<00:03,  4.60it/s, best loss: 0.2549063726593165]
 20%|##        | 4/20 [00:00<00:03,  4.82it/s, best loss: 0.2549063726593165]
 25%|##5       | 5/20 [00:01<00:04,  3.64it/s, best loss: 0.2549063726593165]
 30%|###       | 6/20 [00:01<00:03,  3.71it/s, best loss: 0.2549063726593165]
 35%|###5      | 7/20 [00:01<00:03,  4.09it/s, best loss: 0.2549063726593165]
 40%|####      | 8/20 [00:01<00:02,  4.29it/s, best loss: 0.2549063726593165]
 45%|####5     | 9/20 [00:02<00:02,  4.49it/s, best loss: 0.2549063726593165]
 50%|#####     | 10/20 [00:02<00:02,  4.69it/s, best loss: 0.2549063726593165]
 55%|#####5    | 11/20 [00:02<00:01,  4.77it/s, best loss: 0.2549063726593165]
 60%|######    | 12/20 [00:02<00:01,  4.53it/s, best loss: 0.2549063726593165]
 65%|######5   | 13/20 [00:03<00:01,  4.16it/s, best loss: 0.2549063726593165]
 70%|#######   | 14/20 [00:03<00:02,  2.81it/s, best loss: 0.2525688142203555]
 75%|#######5  | 15/20 [00:03<00:01,  3.29it/s, best loss: 0.2525688142203555]
 80%|########  | 16/20 [00:04<00:01,  3.57it/s, best loss: 0.2525688142203555]
 85%|########5 | 17/20 [00:04<00:01,  2.41it/s, best loss: 0.24246856171404285]
 90%|######### | 18/20 [00:05<00:00,  2.41it/s, best loss: 0.24246856171404285]
 95%|#########5| 19/20 [00:05<00:00,  2.46it/s, best loss: 0.24246856171404285]
100%|##########| 20/20 [00:05<00:00,  2.69it/s, best loss: 0.24246856171404285]
100%|##########| 20/20 [00:05<00:00,  3.40it/s, best loss: 0.24246856171404285]
{'learning_rate': 0.11310589268581149, 'max_depth': 6.0}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Johannes Plenio 在 Unsplash 上拍摄的照片

遗传调谐

最后,我们将看看基因调整。这是最有趣的概念,因为它遵循达尔文的进化过程:

  1. 不同种类(不同型号)
  2. 最强的生存下来(最好的得分被选出)
  3. 复制(创建与最佳模型相似的新模型)
  4. 遗传随机性发生在繁殖过程中(增加随机性,这样就不会达到局部最优)
  5. 重复

这个过程可以用 TPOT 包来执行。有了 TPOT,你可以设置所有这些“遗传”参数:

  • 世代—周期数
  • population_size =要保留的模型数量
  • 后代大小=每个中后代的数量
  • 突变率=应用随机性的管道比例
  • crossover_rate =每次迭代的管道比例

TPOT 是建立在几个库之上的,所以一定要查看文档以确保正确安装。(有一个链接附在第一次提到 TPOT 的地方)

这里有一个 TPOT 的例子:

# Assign the values outlined to the inputs
number_generations = 3
population_size = 4
offspring_size = 3
scoring_function = 'accuracy'

# Create the tpot classifier
tpot_clf = TPOTClassifier(generations=number_generations, population_size=population_size,
                            offspring_size=offspring_size, scoring=scoring_function,
                            verbosity=2, random_state=2, cv=2)# Fit the classifier to the training data
tpot_clf.fit(X_train, y_train)

# Score on the test set
print(tpot_clf.score(X_test, y_test))#sample output:
    Generation 1 - Current best internal CV score: 0.7549688742218555
    Generation 2 - Current best internal CV score: 0.7549688742218555

    Best pipeline: DecisionTreeClassifier(input_matrix, criterion=gini, max_depth=7, min_samples_leaf=11, min_samples_split=12)
    0.75

你有它!在寻找最佳超参数的过程中,需要实施三个(基本上是两个)新过程。

这些过程不会凭空出现,我确实通过数据营的课程学到了很多。DataCamp 是一个保持练习、学习新技术、巩固已学知识和发现新程序的好方法。强烈推荐。

保重,下次再见!

使用 Keras 和光线调节进行超参数调节

原文:https://towardsdatascience.com/hyperparameter-tuning-with-keras-and-ray-tune-1353e6586fda?source=collection_archive---------10-----------------------

使用 HyperOpt 的贝叶斯优化和超带调度器为机器学习模型选择最佳超参数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Alexis Baydoun 在 Unsplash 上拍摄的照片

在我之前的文章中,我解释了如何构建一个小巧灵活的图像分类器,以及在卷积神经网络中拥有可变输入维度的优势。然而,在经历了模型构建代码和训练例程之后,人们可以问这样的问题:

  1. 如何选择一个神经网络的层数?
  2. 如何选择各层单元/滤波器的最优数量?
  3. 我的数据集的最佳数据扩充策略是什么?
  4. 什么样的批量和学习率是合适的?

建立或训练神经网络包括找出上述问题的答案。例如,您可能对 CNN 有一种直觉,随着我们越来越深入,每一层中的过滤器数量应该增加,因为神经网络学习提取越来越复杂的特征,这些特征建立在早期层中提取的简单特征的基础上。但是,可能有一个更优的模型(对于您的数据集而言)具有更少的参数,其性能可能优于您根据直觉设计的模型。

在本文中,我将解释这些参数是什么,以及它们如何影响机器学习模型的训练。我将解释机器学习工程师如何选择这些参数,以及我们如何使用一个简单的数学概念来自动化这个过程。我将从我以前的文章中的相同模型架构开始,并对其进行修改,以使大多数训练和架构参数可调。

什么是超参数?

超参数是机器学习工程师在训练模型之前设置的训练参数。在训练过程中,机器学习模型不会学习这些参数。例子包括批量大小、学习速率、层数和相应的单元等。机器学习模型在训练过程中从数据中学习的参数称为模型参数。

为什么超参数很重要?

当训练机器学习模型时,主要目标是获得在验证集上具有最佳性能的最佳性能模型。我们关注验证集,因为它代表了模型的泛化能力(在看不见的数据上的性能)。超参数构成了训练过程的前提。例如,如果学习速率设置得太高,那么模型可能永远不会收敛到最小值,因为它在每次迭代后将采取太大的步骤。另一方面,如果学习率设置得太低,模型将需要很长时间才能达到最小值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

超参数调整前后的机器学习管道

为什么超参数很难选择?

找到正确的学习率包括选择一个值,训练一个模型,评估它,然后再次尝试。每个数据集都是独一无二的,有这么多参数可供选择,初学者很容易感到困惑。经历了多次失败训练尝试的机器学习工程师最终会对超参数如何影响给定的训练过程产生直觉。然而,这种直觉并不能推广到所有的数据集,一个新的用例通常需要一些实验才能确定令人信服的超参数。然而,有可能错过最佳或最优参数。

我们希望选择超参数,以便在训练过程完成后,我们有一个既精确又通用的模型。当处理神经网络时,评估目标函数可能非常昂贵,因为训练需要很长时间,并且手动尝试不同的超参数可能需要几天。这变成了手工完成的困难任务。

超参数调整/优化

超参数调整可被视为一个黑盒优化问题,我们试图在不知道其解析形式的情况下找到函数 f(x)的最小值。它也被称为无导数优化,因为我们不知道它的解析形式,也不能计算导数来最小化 f(x),因此像梯度下降这样的技术不能使用。

一些著名的超参数调整技术包括网格搜索、随机搜索、差分进化和贝叶斯优化。网格搜索和随机搜索的性能略好于手动调整,因为我们建立了一个超参数网格,并对分别从网格中系统或随机选择的参数运行训练和评估周期。

然而,网格和随机搜索相对低效,因为它们不基于先前的结果选择下一组超参数。另一方面,差分进化是一种进化算法,其中最佳执行超参数配置的初始集合(其是随机初始化的个体之一)被选择来产生更多的超参数。新一代的超参数(后代)更有可能表现得更好,因为他们继承了父母的良好特征,并且群体随着时间的推移而改善(一代又一代)。在这个美丽而实用的教程中阅读更多关于这个概念的内容。

尽管差异进化起作用,但它需要很长时间,并且仍然没有采取明智的步骤,或者它不知道我们试图实现/优化什么。贝叶斯优化方法跟踪过去的评估结果,并使用它来创建待优化的实际训练目标函数的概率模型。这个概率模型被称为目标函数的“替代物“”,其形成了超参数到目标函数表现如何的概率分数的映射。要评估的下一组超参数是基于它们在代理上的表现来选择的。这使得贝叶斯优化有效,因为它以知情的方式选择下一组超参数。在这篇详细的文章中阅读更多关于这个概念的内容。这篇文章解释了 Tree Parzen Estimators (TPE)代理模型,它将在我们下面的实现中内部使用。

去拿圣经

一如既往,你可以在这个 GitHub 链接中获得本教程使用的所有代码。我建议读者克隆这个项目,并按照教程一步一步来更好地理解。注意:本文中的代码片段只突出了实际脚本的一部分,完整代码请参考 GitHub 链接。

[## himanshurawlani/hyper_fcn

这个项目使用 HyperOpt 的贝叶斯优化和光线调整来执行简单图像的超参数调整…

github.com](https://github.com/himanshurawlani/hyper_fcn)

什么是雷调?

Ray Tune 是一个 Python 库,通过允许您大规模利用尖端优化算法来加速超参数调整。它建立在射线之上,旨在消除缩放和设置实验执行过程中的摩擦。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源

Ray Tune 与 MLFlow、TensorBoard、weights and biases 等实验管理工具无缝集成。并为 HyperOpt (以下实现) Ax 等众多前沿优化算法和库提供了灵活的接口。

建立一个超级模型

超模型是一种模型,其超参数可以使用优化算法进行优化,以便在某个指标上提供最佳性能(在这种情况下为验证损失)。这些超参数包括层数、每层中的单元数、要使用的层的类型、激活函数的类型等。让我们创建一个简单的超级模型来执行图像分类任务。

在上面的模型构建代码中,我们传递了一个config字典,其中包含过滤器数量、辍学率、是否使用特定的数据扩充层等值。每次运行超参数调整都会创建一个新的配置字典。对应于最佳运行的config将被选为最佳配置,包括数据扩充、模型和训练程序的最佳参数。下面的超参数搜索空间部分解释了一个config的例子。

选择最佳数据扩充

选择数据扩充对模型被训练的应用的性质非常敏感。人脸识别系统可能会遇到不同亮度、方向、部分裁剪等的人脸。然而,用于从系统生成的 PDF 中提取文本的基于 OCR 的文本提取系统肯定会遇到方向和亮度变化非常小的文本。

如果我们有庞大的数据集,可能无法检查每一张图像来决定要使用的数据扩充。我们可以将这个任务作为超参数之一留给我们的优化算法。在 TensorFlow 2 中,使用 Keras 预处理层作为模型代码的一部分来添加数据扩充变得比以往任何时候都容易。这些预处理层仅在训练模式下是活动的,并且在推断或评估期间是禁用的。点击了解更多信息

定义超参数搜索空间

为了定义超参数搜索空间,我们首先需要了解哪些可能的有效配置可以用来创建我们的模型。让我们考虑下面一个有效的config字典:

如果我们考虑batch_size,那么我们可以选择 1 到 100 之间的任意值,甚至更高。然而,最常见的批量大小是 2 的幂,介于 8 和 64 之间。因此,我们可以将搜索空间定义为 1 到 100 之间的任意整数值,或者我们可以通过提供一个最常见值的列表来减轻优化算法的负担,比如[8, 16, 32, 64]。同样,如果考虑学习率(lr),可以选择 0.0001 到 0.1 之间的任意浮点值。我们可以更低或更高,但这通常是不必要的。我们可以指定最常见的值,这些值通常是 10 的幂,就像[0.1, 0.01, 0.001, 0.0001]一样,而不是去寻找 0.0001 到 0.1 的穷尽搜索空间。

在 HyperOpt 中,搜索空间由嵌套的函数表达式组成,包括随机表达式。随机表达式是超参数,优化算法通过用自适应探索策略替换正常的“采样”逻辑来对其进行工作。点击了解更多信息。我们可以定义一个随机表达式,它由一列batch_size值组成,称为hp.choice(‘batch_size’, [8, 16, 32, 64])。同样,对于学习率,我们可以定义一个表达式为hp.choice(‘lr’, [0.0001, 0.001, 0.01, 0.1])。如果您想定义一个由双边区间约束的连续空间,我们可以将表达式修改为hp.uniform(‘lr’, 0.0001, 0.1)。这里可以参考参数表达式的完整列表。我们最终的超参数搜索空间将如下所示:

指定试验调度程序和搜索算法

搜索算法是一种“优化算法”,它通过在每次后续试验中建议更好的超参数来优化训练过程的超参数。 Tune 的搜索算法是围绕开源优化库的包装器,用于高效的超参数选择。每个库都有特定的方式定义搜索空间,就像上面的搜索空间是为 HyperOpt 定义的。要使用这个搜索算法,我们需要使用pip install -U hyperopt单独安装它。

**试验调度程序也是一种优化算法,作为“调度算法”实现,使超参数调整过程更加有效。试验调度程序可以提前终止不良试验、暂停试验、克隆试验,并更改正在运行的试验的超参数,从而加快超参数调整过程。注意:与搜索算法不同,试验调度程序不会为每次运行选择要评估的超参数配置。我们将使用asynccessivehalvingalgorithm(ASHA)调度器,它提供了与 HyperBand (SHA)类似的理论性能,但提供了更好的并行性,并避免了消除期间的掉队问题。我们不需要单独安装 AsyncSuccessiveHalvingAlgorithm 调度程序。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过随机采样 n 个配置开始连续减半。在每次迭代中,它丢弃最差的一半,并将剩余部分的资源加倍,直到达到最大资源。每条线对应一个配置,每个梯级对应连续的一半。(来源)

所有的试验调度程序和搜索算法都接受根据mode最大化或最小化的metric。试验调度程序也接收grace_period,类似于 Keras 中提前停止回调中使用的patience。对于搜索算法,我们可以提供一个初始配置(搜索空间),这通常是通过手动调整找到的最佳配置,或者如果没有,我们可以跳过它。

定义超参数调整的目标

要开始超参数调整,我们需要指定一个目标函数进行优化,并将其传递给tune.run()。训练(更新模型参数)我们的图像分类器的损失函数将是分类交叉熵。训练和验证损失更准确地反映了我们的模型的表现。然而,在过度拟合期间,我们的训练损失将减少,但我们的验证损失将增加。因此,验证损失将向右度量,以监控超参数调整。

训练图像分类器是一个漫长的过程,等待训练完成,然后报告验证损失度量不是一个好主意,因为我们的试验调度程序不知道训练进展如何,也不知道是否需要提前停止它。为了克服这个问题,我们将利用 Keras 回调,在每个时期结束时计算验证损失,因此我们可以使用 **tune.report()**将分数发送给 Tune。下面给出了 Keras 回调的最小代码,请参考 GitHub 上的完整代码。

在 Ray Tune 中,我们可以使用基于函数的 API 或基于类的 API 来指定目标函数,在本教程中,我们将使用基于函数的 API。在超参数调整完成后,我们获得了最佳配置,用于训练我们的最终模型,该模型将保存在磁盘上。我们将把我们的目标函数封装在一个类中,以存储几个目录路径和一个布尔变量,该变量告诉我们给定的运行是否是最终的运行。

可视化结果

如果安装了 TensorBoard,Tune 会在tune.run()期间自动输出 Tensorboard 文件。运行实验后,您可以通过指定结果的输出目录来使用 TensorBoard 可视化您的结果:$ tensorboard --logdir=~/ray_results/my_experiment

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

张量板标量视图

在 TF2,Tune 也自动生成 TensorBoard HParams 输出,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TensorBoard HParams 平行坐标视图

关于超参数调整的更多信息

在许多用例中,我们使用标准架构(如 ResNet50)而不是从头开始构建。这些架构非常庞大,执行超参数调整可能不切实际,或者您可能希望利用预先训练的 ImageNet 权重,因此改变模型架构不是一个选项。在这种情况下,我们可以在模型架构之外寻找超参数,例如数据扩充、批量大小、学习速率、优化器等。

物体检测中的锚框

让我们考虑对象检测作为一个这样的用例,其中我们利用锚框进行边界框预测,这在训练过程中没有被学习到。每个对象检测数据集都有要检测的对象的唯一纵横比,默认锚点配置可能不适合检测数据集中的对象。例如,如果您的对象小于最小锚点的大小,或者您的对象具有较高的纵横比。在这种情况下,修改锚配置可能是合适的。这可以通过将锚参数设置为要调整的超参数来自动完成。

结论

我希望这篇博文让你对机器学习模型训练中涉及的不同超参数有所了解。手动调整这些参数是乏味且不直观的,但在贝叶斯优化的帮助下,我们可以跟踪过去的评估结果,并使用它来创建实际训练目标函数的概率模型。这不仅自动化了调优过程,还产生了一个我们可能无法通过手动调优找到的最佳模型。

将 HyperOpt 搜索算法与 HyperBand 试验调度程序相结合,可以显著减少我们的超参数调谐搜索时间和计算资源。此外,能够找到给定数据集的最佳数据扩充步骤只是锦上添花。在讨论本文中的各种主题时,我已经链接了一些很棒的资源,但我将在下面重新链接它们,以便您不会错过任何内容。继续学习!

参考资料和资源

  1. 机器学习的贝叶斯超参数优化的概念解释
  2. 大规模超参数优化新手指南
  3. BOHB:大规模稳健高效的超参数优化
  4. 使用贝叶斯优化的云机器学习引擎中超参数调整
  5. 贝叶斯优化初级读本
  6. Python 差分进化教程
  7. Python 中超参数调优:2020 年完整指南

我很乐意听到你对这篇文章和 GitHub 项目的反馈和改进。你可以在推特( @raw_himanshu )和 LinkedIn(himanshurawlani)上找到我

使用 Keras 调谐器进行超参数调谐

原文:https://towardsdatascience.com/hyperparameter-tuning-with-keras-tuner-283474fbfbe?source=collection_archive---------6-----------------------

充分利用您的模型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由尹卡·阿迪奥蒂拍摄的照片

伟大的数据科学家不会满足于“还行”,他们会超越去实现非凡。

在这篇文章中,我们将回顾数据科学家用来创建模型的技术,这些模型工作良好并赢得竞争。充分利用我们的模型意味着为我们的学习算法选择最佳的超参数。这项任务被称为超参数优化或超参数调整。这在深度学习中尤其费力,因为神经网络充满了超参数。我假设您已经熟悉回归和均方差(MSE)指标等常见的数据科学概念,并且具有使用 tensorflow 和 keras 构建模型的经验。

为了演示超参数调优方法,我们将使用 keras tuner 库来调优波士顿房价数据集上的回归模型。该数据集包含 13 个属性,分别具有 404 个和 102 个训练和测试样本。我们将使用 tensorflow 作为 keras 后端,因此请确保您的计算机上安装了 tensorflow。我用的是 tensorflow 版本’ 2.1.0 ‘和 kerastuner 版本’ 1.0.1 '。Tensorflow 2.0.x 附带了 keras,因此,如果您拥有 2.0.x 版本,则无需单独安装 keras。您可以使用以下代码检查您拥有的版本:

import tensorflow as tf
import kerastuner as ktprint(tf.__version__)
print(kt.__version__)

加载数据集

波士顿房价回归数据集可以使用 keras 直接下载。这是 keras 附带的数据集列表。若要加载数据集,请运行以下代码。

from tensorflow.keras.datasets import boston_housing(x_train, y_train), (x_test, y_test) = boston_housing.load_data()

请注意,如果这是您第一次在 keras 中使用该数据集,它将从外部源下载该数据集。

这是我将在演示中使用的回归模型。下面的代码显示了模型是如何在没有任何调整的情况下构建的。

from sklearn.preprocessing import StandardScaler
from tensorflow.keras import models, layers# set random seed
from numpy.random import seed
seed(42)
import tensorflow
tensorflow.random.set_seed(42)# preprocessing - normalization
scaler = StandardScaler()
scaler.fit(x_train)
x_train_scaled = scaler.transform(x_train)
x_test_scaled = scaler.transform(x_test)# model building
model = models.Sequential()
model.add(layers.Dense(8, activation='relu', input_shape=(x_train.shape[1],)))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dropout(0.1))
model.add(layers.Dense(1))# compile model using rmsprop
model.compile(optimizer='rmsprop',loss='mse',metrics=['mse'])# model training
history = model.fit(x_train_scaled, y_train, validation_split=0.2, epochs=10)# model evaluation
model.evaluate(x_test_scaled, y_test)

该模型的 MSE 约为 434。我已经将 numpy 和 tensorflow 中的随机种子设置为 42,以获得可重复的结果。尽管这样做了,但每次运行代码时,我还是会得到稍微不同的结果。让我在评论中知道我还错过了什么,让这个可重复。

使用 Keras 调谐器调谐

要开始在 keras tuner 中调优模型,让我们首先定义一个超级模型Hypermodel 是一个 keras tuner 类,它允许您用可搜索空间定义模型并构建它。

创建一个从 kerastuner 继承的类。超模,像这样:

from kerastuner import HyperModelclass RegressionHyperModel(HyperModel):
    def __init__(self, input_shape):
        self.input_shape = input_shape def build(self, hp):
        model = Sequential()
        model.add(
            layers.Dense(
                units=hp.Int('units', 8, 64, 4, default=8),
                activation=hp.Choice(
                    'dense_activation',
                    values=['relu', 'tanh', 'sigmoid'],
                    default='relu'),
                input_shape=input_shape
            )
        )

        model.add(
            layers.Dense(
                units=hp.Int('units', 16, 64, 4, default=16),
                activation=hp.Choice(
                    'dense_activation',
                    values=['relu', 'tanh', 'sigmoid'],
                    default='relu')
            )
        )

        model.add(
            layers.Dropout(
                hp.Float(
                    'dropout',
                    min_value=0.0,
                    max_value=0.1,
                    default=0.005,
                    step=0.01)
            )
        )

        model.add(layers.Dense(1))

        model.compile(
            optimizer='rmsprop',loss='mse',metrics=['mse']
        )

        return model

这与我们之前构建的模型相同,只是对于每个超参数,我们定义了一个搜索空间。你可能已经注意到了惠普公司的 hp.Int。浮动,和 hp。Choice,它们用于定义超参数的搜索空间,该超参数分别接受整数、浮点和类别。超参数方法的完整列表可在这里找到。“hp”是 Keras Tuner 的超参数类的别名。

超参数如密集层中的单元数接受一个整数,因此,hp.Int 用于定义一个整数范围来尝试。类似地,辍学率接受浮点值,因此 hp。使用了 Float。无论是 hp.Int 还是惠普。Float 需要一个名称、最小值和最大值,而步长和默认值是可选的。

下面的 hp.Int 搜索空间被命名为“单位”,其值为 8 到 64 的 4 的倍数,默认值为 8。惠普。Float 的用法与 hp.Int 类似,但接受浮点值。

hp.Int('units', 8, 64, 4, default=8)

惠普。Choice 用于定义分类超参数,如激活函数。下面名为“dense_activation”的搜索空间将在“relu”、“tanh”和“sigmoid”函数之间进行选择,默认值设置为“relu”。

hp.Choice('dense_activation', values=['relu', 'tanh', 'sigmoid'], default='relu')

实例化超级模型

让我们实例化一个超级模型对象。输入形状因数据集和您试图解决的问题而异。

input_shape = (x_train.shape[1],)
hypermodel = RegressionHyperModel(input_shape)

开始调音吧!

随机搜索

顾名思义,这种超参数调优方法从给定的搜索空间中随机尝试超参数的组合。要在 keras tuner 中使用这种方法,让我们使用一个可用的调谐器来定义一个调谐器。这里有一个完整的名单调谐器

tuner_rs = RandomSearch(
            hypermodel,
            objective='mse',
            seed=42,
            max_trials=10,
            executions_per_trial=2)

使用搜索方法运行随机搜索调谐器。

tuner_rs.search(x_train_scaled, y_train, epochs=10, validation_split=0.2, verbose=0)

选择调谐器尝试并评估的最佳超参数组合。

best_model = tuner_rs.get_best_models(num_models=1)[0]
loss, mse = best_model.evaluate(x_test_scaled, y_test)

随机搜索的 MSE 是 53.48,与根本不执行任何调整相比,这是一个非常大的改进。

超波段

Hyperband 基于李等人的算法。al 。通过自适应资源分配和提前停止优化随机搜索方法。Hyperband 首先运行随机超参数配置一次或两次,然后选择表现良好的配置,然后继续调整表现最佳的配置。

tuner_hb = Hyperband(
            hypermodel,
            max_epochs=5,
            objective='mse',
            seed=42,
            executions_per_trial=2
        )tuner_hb.search(x_train_scaled, y_train, epochs=10, validation_split=0.2, verbose=0)best_model = tuner_hb.get_best_models(num_models=1)[0]
best_model.evaluate(x_test_scaled, y_test)

得到的 MSE 是 395.19,与随机搜索相比要差很多,但比完全不调优要好一点。

贝叶斯优化

贝叶斯优化是一种概率模型,将超参数映射到目标函数的概率得分。与随机搜索和超波段模型不同,贝叶斯优化跟踪其过去的评估结果,并使用它来建立概率模型。

tuner_bo = BayesianOptimization(
            hypermodel,
            objective='mse',
            max_trials=10,
            seed=42,
            executions_per_trial=2
        )tuner_bo.search(x_train_scaled, y_train, epochs=10, validation_split=0.2, verbose=0)best_model = tuner_bo.get_best_models(num_models=1)[0]
best_model.evaluate(x_test_scaled, y_test)

使用贝叶斯优化调整的最佳模型 MSE 是 46.47,比我们尝试的前两个调谐器要好。

结论

我们能够证明,实际上,调优帮助我们最大限度地利用我们的模型。这里讨论的只是众多超参数调整方法中的 3 种。当尝试上面的代码时,我们可能会得到稍微不同的结果,出于某种原因,尽管设置了 numpy、tensorflow 和 keras tuner 随机种子,但每次迭代的结果仍然略有不同。笔记本上传在我的 github repo 里。

此外,调谐器也可以调谐!是的,你没看错,调整调谐器。调谐器接受诸如 max_trials 和每次试验的执行次数之类的值,因此也可以进行调谐。尝试更改这些参数,看看是否能获得进一步的改进。

参考

[1] F. Chollet,用 Python 进行深度学习 (2018),曼宁出版公司。

[2] Keras 调谐器文档,【https://keras-team.github.io/keras-tuner/

[3]李,贾米森,德萨沃,罗斯塔米扎德,塔尔沃卡,超波段:一种基于 Bandit 的超参数优化新方法(2018),

使用 Python 进行超参数调优:完整的分步指南

原文:https://towardsdatascience.com/hyperparameter-tuning-with-python-keras-xgboost-guide-7cb3ef480f9c?source=collection_archive---------8-----------------------

为什么以及如何使用示例 Keras / XGBoost

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:土坯股票

我们都喜欢建立机器学习或统计模型。但是,一个经常被忽略的重要步骤是超参数调整

在这篇文章中,你会看到:

  • 为什么要使用这种机器学习技术。
  • 如何使用搭配 Keras (深度学习神经网络) Tensorflow 搭配 Python
    本文是文章用 Python 调优超参数:完整分步指南的配套文章。要查看关于 XGBoost 的示例,请阅读上一篇文章。

如果你想更快更远地提高你的模型的性能,让我们开始吧!

常见问题解答:什么是超参数调整/优化,为什么

超参数到底是什么?

超参数是一个参数,其值在学习过程开始前设置。

相比之下,其他参数的值是通过训练数据得出的。

维基百科

例如,神经网络有许多超参数,包括:

  • 隐藏层数
  • 神经元数量
  • 学习率
  • 激活功能
  • 和优化器设置

我们为什么要关心这些超参数?

因为这些超参数对于机器学习模型的性能、速度和质量至关重要。因此,我们应该优化它们。

超参数优化找到一个超参数元组,该元组产生一个最佳模型,该模型最小化给定测试数据上的预定义损失函数。目标函数采用一组超参数,并返回相关的损失。

维基百科

但是这些超参数看起来都很复杂。将它们结合在一起会导致更高维的问题,这甚至更糟糕。

我们应该如何选择这些超参数的值?

通常,我们根据自己的经验并通过反复试验的过程来选择它们。它是非常手动的,并不能保证我们的模型是最好的。

有什么更好的方法来调优超参数?

我们需要一个系统的方法来优化它们。

有网格搜索、随机搜索等基本技术;还有更复杂的技术,如贝叶斯优化,进化优化。

虽然我们没有涵盖这些方法的细节,但看看维基百科或【YouTube 视频了解详情。

现在让我们一步一步地看看超参数调优。

相关文章: 超参数调优的冠状病毒死亡率是多少

步骤#1:预处理数据

在本帖中,我们使用来自 Kaggle 的俄罗斯住房数据集。这个项目的目标是预测俄罗斯的房价波动。我们不会为它找到最好的模型,而只是将它作为一个例子。

在我们开始构建模型之前,让我们先来看看它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了准备用于建模演示的数据 df ,我们仅通过以下方式对其进行轻微处理:

  • 将目标 log(price_doc) (房价的对数),作为 y ,与其余的数字特征,作为 X
    在本例中,我们将只使用数字特征。
  • 使用数值要素的中值输入缺失值。
  • 将 X 和 y 进一步拆分为训练和测试数据集。
  • 为训练数据集和测试数据集缩放特征。
    如果不进行转换,数据集无法适合神经网络。

现在,我们有了一个新的训练数据集 X_train_scaled ,其中 90%的数据来自原始数据集。

相关文章:Python 中的数据清理:终极指南(2020)
在之前的这篇文章中,我们探索了使用相同数据集的数据清理技术。

步骤#2:定义优化的目标

在开始调优过程之前,我们必须为超参数优化定义一个目标函数。

我们将使用 Tensorflow Keras 对房价建模。这是一个用于 Python 的深度学习神经网络 API。

首先,我们需要建立一个模型 get_keras_model 。这个函数定义了 多层感知器 (MLP),这是最简单的深度学习神经网络。MLP 至少由三层节点组成:输入层、隐藏层和输出层。

然后基于该模型,我们创建目标函数 keras_mlp_cv_score 如下:

  • 关键输入参数化包括将被调整的 MLP 的超参数:
    –数量 _ 隐藏 _ 层数
    –神经元 _ 每层
    –丢弃 _ 速率
    –激活
    –优化器
    –学习 _ 速率
    –批处理 _ 大小
  • MSE (均方误差)用作得分/损失函数,该函数将在超参数优化中最小化。
  • 我们还使用交叉验证来计算给定的一组超参数值的得分(MSE)。

对于任何一组给定的超参数值,该函数基于交叉验证返回得分的平均值和标准差(MSE)。

您可以在下面的 Python 代码中看到详细信息。

根据我们自己的经验,我们还为将要调整的超参数值设置了限制。

选择这些限值没有一致的方法。你需要理解这些超参数并做出决定。

步骤 3:选择包:Ax

在我们之前的文章(什么是使用超参数调整的冠状病毒死亡率)中,我们使用hyperpt包应用了超参数调整。虽然它是一个流行的包,但我们发现它使用起来很笨拙,并且缺乏好的文档。

我们一直在寻找其他包,最终找到了 Ax (自适应实验平台)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Ax 是一个新的平台,有助于优化任何类型的实验,包括机器学习、A/B 测试和模拟。它是由脸书开发的,现在是脸书开源项目的一部分。

我们选择它是因为它:

  • 内置特性,支持将结果保存到 JSON 文件或 MySQL 数据库。
  • 从属参数约束的支持。
    比如我们可以将参数 m 和 n 的界限设置为 1 < m < 10,0 < n < 10,mn > 10。而其他大多数软件包不支持 mn > 10 条件。
  • 良好的可视化功能。
  • 体面的文件。
    虽然不是全部清晰,但比其他包装如远视要好。

Ax 也有三种不同的 API(使用模式)用于超参数调整:

  • 循环 API 使用起来最简单。但是它不允许足够的定制。
  • 服务 API 比循环 API 允许更多的控制,尤其是对试验的控制。这种控制很有价值,因为:
    –您可以将试验安排在不同的时间进行,甚至可以与其他试验同时进行。
    –您还可以在每次试验后保存进度,而不是等到所有试验完成后才看到结果。
  • 开发者 API 允许最多的控制,但需要最多的知识,这并不容易,因为:
    –特性的文档并不都很清楚。
    –网站上的例子没有显示优化后如何获得最佳参数。
    –你经常需要浏览 API 来完成这个过程。

由于 Loop API 的局限性和缺乏明确的开发者 API 示例,我们将使用服务 API

相关文章: 超参数调优的冠状病毒死亡率是多少

步骤#4:优化/调整超参数

最后,我们可以开始优化过程。

在服务 API 中,我们不需要太多关于 Ax 数据结构的知识。所以我们可以按照它的样本代码来设置结构。

我们用之前构建的目标函数和超参数列表创建实验 keras_experiment

运行上面的代码后,您会看到下面的日志记录。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前所述,有不同的方法来搜索超参数的最佳值。根据generation _ strategyAx_client 文档,如果没有显式选择,则根据搜索空间的属性智能选择方法。从注释中可以看出,Ax_client 在本练习中选择了 Sobol (一种统一搜索)。

接下来,让我们运行实验来评估不同的超参数值。

由于这个项目只是为了演示,我们进行了少量的 25 次试验。

每个试验评估超参数值的可能组合,并从 keras_mlp_cv_score 函数中输出分数。Ax_client 跟踪参数和分数的历史,并智能地猜测下一组更好的参数。

随着代码的运行,您还可以看到每次试验的日志记录。

步骤 5:打印/可视化结果

打印结果

要以表格的形式查看结果,您可以使用下面的代码将其打印出来。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了查看超参数的最佳值,我们使用下面的代码。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可视化结果

除了打印数字之外,您还可以可视化结果。

我们可以绘制 keras_cv 分数在迭代过程中的演变。可以看到,经过 2 次迭代/尝试,分数达到了最小值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评估结果

另外,我们可以使用这个模型对测试数据集进行预测。

以下 Python 代码打印出的测试结果的 MSE 为 0.30,与训练数据集中的 MSE 接近。

步骤#6:保存结果—可选

如前所述,Ax 还允许我们将流程保存到 JSON 文件中。

当我们想暂停并在以后继续这个过程时,这很方便。

就是这样。你做到了!如果你有任何问题,请留言。

如果你想看一个 Python 中 XGBoost 的例子,请阅读Hyperparameter Tuning with Python:Complete Step-by-Step Guide

离开之前,别忘了去 报名参加刚刚进入数据通迅的 !或者通过推特脸书与我们联系。
因此,您不会错过我们的任何新数据科学文章。

原载于 2020 年 3 月 13 日 https://www.justintodata.com

* [## 如何在 Python 中使用 NLP:一个实用的分步示例——只进入数据

这是 Python 中超参数调优的实用指南。要提高模型的性能,请学习:-为什么你…

www.justintodata.com](https://www.justintodata.com/use-nlp-in-python-practical-step-by-step-example/) [## 如何提高体育博彩赔率 Python 中的一步一步指南-只是进入数据

体育博彩可能不仅仅是利用你的直觉。查看我用来赚 20,000 美元的数据科学策略…

www.justintodata.com](https://www.justintodata.com/improve-sports-betting-odds-guide-in-python/) [## Python 中的数据清理:终极指南(2020)——只进入数据

我们用 Python 创建了这个新的完整的分步指南。你将学习如何寻找和清理的技巧:丢失…

www.justintodata.com](https://www.justintodata.com/data-cleaning-python-ultimate-guide/)*

用可视化解释决策树的超参数

原文:https://towardsdatascience.com/hyperparameters-of-decision-trees-explained-with-visualizations-1a6ef2f67edf?source=collection_archive---------5-----------------------

超参数在建立稳健模型中的重要性。

决策树是一种广泛使用的监督学习算法,适用于分类和回归任务。决策树是一些著名的集成学习算法的构建模块,如随机森林、GBDT 和 XGBOOST。

决策树建立在反复询问问题以划分数据的基础上。例如,下图显示了一个用作预测客户流失模型的决策树。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

决策树在机器学习领域很流行,因为它们既成功又简单。使它们非常高效的一些特性:

  • 易于理解和解释
  • 可以处理数字和分类数据
  • 需要很少或不需要预处理,如标准化或虚拟编码

不利的一面是,决策树容易过度拟合。它们很容易变得过于复杂,这使得它们无法很好地推广到数据集中的结构。在这种情况下,模型很可能以过度拟合而告终,这是机器学习中的一个严重问题。

为了克服这个问题,我们需要仔细调整决策树的超参数。在本帖中,我们将尝试使用树形可视化来全面理解这些超参数。

我们将使用 scikit-learn 的一个内置数据集。葡萄酒数据集包含三个不同葡萄酒类别的 13 个特征(即列)。数据集中有 178 个样本(即行)。

import numpy as np
import pandas as pdfrom sklearn.datasets import load_wine
X, y = load_wine(return_X_y = True)

让我们从没有任何超参数调整的决策树分类器开始。

from sklearn import treeclf = tree.DecisionTreeClassifier()
clf.fit(X, y)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所有超参数都设置为默认设置。我们可以使用 plot_tree 函数绘制我们的模型。

import matplotlib.pyplot as plt
%matplotlib inlineplt.figure(figsize=(24,14))
tree.plot_tree(clf, filled=True, fontsize=14)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该模型不断分割节点,直到所有节点都是纯的(即包含仅来自一个类别的样本)。让我们先了解一下 a 中的信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

盒子告诉我们。第一行表示特征的名称(即列)。因为我们没有命名列,所以显示了列的索引。样本表示观察值的数量(即行数)表示这些样本根据目标变量的分布。

基尼系数是衡量杂质的一个标准。正如在维基百科上所述,“基尼不纯度是对从集合中随机选择的元素被错误标记的频率的度量,如果它是根据标签在子集中的分布随机标记的话”。基本上就是杂质随着随机性增加。例如,假设我们有一个盒子,里面有十个球。如果所有的球都是同样的颜色,我们就没有随机性,杂质为零。然而,如果我们有 5 个蓝色球和 5 个红色球,杂质是 1。如果你看一下叶节点(树末端的节点),你会发现基尼等于零。

评估分裂质量的另一个函数是,它是不确定性或随机性的度量。一个变量的随机性越大,熵就越大。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

熵 vs 随机性

我们可以使用标准参数选择基尼或杂质。默认值是基尼。

我们通常不希望一棵树只有纯叶节点。它会太具体,可能会过拟合。

当算法执行拆分时,主要目标是尽可能减少杂质。杂质减少得越多,分裂获得的信息量就越大。随着树变得更深,杂质减少的量变得更低。我们可以利用这一点来防止树做进一步的分裂。该任务的超参数是最小杂质减少。默认情况下,它被设置为零。让我们改变它,看看有什么不同。

clf = tree.DecisionTreeClassifier(min_impurity_decrease=0.2)
clf.fit(X, y)
plt.figure(figsize=(18,10))
tree.plot_tree(clf, filled=True, fontsize=14)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在有了一棵更小的树。考虑底部的绿色节点。它包含 65 个样本,其中 61 个属于一个类。没有必要进一步分割该节点,因为我们可以承受 65 个样本中的 4 个错误分类。如果我们继续分割那个节点,模型可能会过拟合。最小杂质分割参数可用于根据杂质值控制树。它设定了基尼系数的门槛。例如,如果 min _ infinity _ split 设置为 0.3,则节点需要具有大于 0.3 的基尼值才能进一步分裂。

另一个控制树深度的超参数是 max_depth 。它不进行任何关于杂质或样品比率的计算。当达到 max_depth 时,模型停止分割。

clf = tree.DecisionTreeClassifier(max_depth=3)
clf.fit(X, y)
plt.figure(figsize=(20,10))
tree.plot_tree(clf, filled=True, fontsize=14)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

与最小杂质减少相比,最大深度灵活性较差。举个例子,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们也许不应该在左边分开。它只能区分 2 个样品,杂质减少不到 0.1。这实际上带给我们另一个超参数,即 min_samples_leaf 。它表示叶节点上所需的最小样本数。在一起使用超参数时,我们需要小心。例如,如果我们在前一个树中将 min_samples_leaf 设置为 3,那么将不会发生分隔 2 个样本的拆分,因为我们不能拥有少于 3 个样本的叶节点。嗯,不太对。让我们看看到底会发生什么。

clf = tree.DecisionTreeClassifier(max_depth=3,min_samples_leaf=3)
clf.fit(X, y)
plt.figure(figsize=(20,10))
tree.plot_tree(clf, filled=True, fontsize=14)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这种情况下,min_samples_leaf 实际上对模型是有害的。这并不妨碍模型进行最后的分割。此外,它还造成了额外的错误分类。因此,以这种方式使用 min_samples_leaf 是不明智的。

我们还可以使用 max_leaf_nodes 参数限制叶节点的数量,该参数以最佳优先的方式增长树,直到达到 max_leaf_nodes。最佳分割是基于杂质减少来决定的。

clf = tree.DecisionTreeClassifier(max_leaf_nodes=5)
clf.fit(X, y)
plt.figure(figsize=(20,10))
tree.plot_tree(clf, filled=True, fontsize=14)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们最终得到一个有 5 个叶节点的树。

决策树的另一个重要超参数是 max_features ,它是寻找最佳分割时要考虑的特征数量。如果未指定,模型将考虑所有特征。我们的数据集中有 13 个要素。如果我们将 max_features 设置为 5,则模型随机选择 5 个特征来决定下一次分割。Max_features 参数也有助于防止模型过度拟合,但仅仅使用 max_features 是不够的。如果我们让模型变得太深,它最终会使用所有的功能。

需要仔细调整超参数,以获得具有高样本外精度的健壮决策树。我们不需要使用所有的方法。根据任务和数据集的不同,几个就足够了。如果同时使用多个超参数,请格外注意,因为其中一个可能会对另一个产生负面影响。

感谢您的阅读。如果您有任何反馈,请告诉我。

超光谱图像分析分类

原文:https://towardsdatascience.com/hyperspectral-image-analysis-classification-c41f69ac447f?source=collection_archive---------10-----------------------

初学者指南

使用 python 对高光谱图像(HSI)进行分类的演练。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

美国地质勘探局Unsplash 上拍摄的照片

本文提供了高光谱图像(HSI)上不同分类算法的详细实现。

目录

  • 高光谱图像(HSI)简介
  • 降维
  • 分类算法
  • 实施 HSI 分类
  • 参考文献

超光谱图像(HSI)介绍

遥感中,高光谱遥感器以其高光谱分辨率被广泛用于监测地球表面。通常,与传统的 RGB 图像相比,HSI 包含三个以上的波段。高光谱图像(HSI)用于解决不同领域的各种问题,如 C rop 分析,G 地质测绘,M 矿物勘探,*国防研究、城市调查、军事监视、*等。

使用以下文章,该文章提供了关于 HSI 上的数据收集数据预处理、探索性数据分析的信息。

[## 超光谱图像分析—入门

使用 Python 进行高光谱图像分析的演练。

towardsdatascience.com](/hyperspectral-image-analysis-getting-started-74758c12f2e9)

有各种开源网站为学习目的提供超光谱数据。以下是两个受欢迎的网站:

[## 高光谱遥感场景

收集者:M . graa,MA Veganzons,B . ayer di 在这里你可以找到一些公开的高光谱信息…

www.ehu.eus](http://www.ehu.eus/ccwintco/index.php/Hyperspectral_Remote_Sensing_Scenes) [## 数据- rslab

(1)在 VV 和 VH 极化下的 SAR 哨兵-1 卫星图像

rslab.ut.ac.ir](https://rslab.ut.ac.ir/data)

在本文中,我们使用印度松树(IP) 高光谱图像数据集。印第安松树(IP) HSI 数据是使用 AVIRIS 传感器在印第安纳州西北部的印第安松树试验场收集的,由 145 X 145 像素、16 类和 200 个波段组成。以下是印度松树(IP)数据集的地面实况详细信息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

印度松树(IP)数据集的地面实况细节-作者提供的图像

读取数据集的代码:

Indian Pines 数据集的地面真实情况的可视化如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

印度松树数据集的地面真实可视化——图片由作者提供

六个随机选择的超过 200 个波段的可视化如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

印度松树条带(IP)数据集的可视化-图片由作者提供

降维

降维用于减少数据的维数,从而为分类器以低计算成本生成综合模型铺平道路。因此,降维在提高高光谱图像像素分类精度方面变得越来越重要。

降维有两种方式。它们是:

  • 特征选择
  • 特征抽出

特征选择是选择数据集特征维度的过程,它为机器学习任务(如分类、聚类等)提供模式。这可以通过使用不同的方法来实现,如相关性分析、单变量分析等

特征提取特征提取是通过选择和/或组合现有特征来创建缩减的特征空间,同时仍然准确和完整地描述数据集而不丢失信息,从而发现新特征的过程。

基于准则函数和收敛过程,降维技术也分为凸和非凸两类。一些流行的降维技术包括 PCA、ICA、LDA、GDA、核 PCA、Isomap、局部线性嵌入(LLE)、Hessian LLE 等。

使用下面的文章“使用 Python 降低超光谱图像的维数”来更好地理解。

[## 利用 Python 实现高光谱图像的降维

高光谱图像的降维技术。

towardsdatascience.com](/dimensionality-reduction-in-hyperspectral-images-using-python-611b40b6accc)

在本文中,我们将使用主成分分析(PCA) 来降低数据的维度。

主成分分析

主成分分析(PCA)是用于降低数据维度的标准算法之一。PCA 是一种非参数算法,其增加了可解释性,同时减少了最小化的信息损失(重建误差)。

使用下面两篇论文来更好地理解 PCA 背后的数学原理。

[## 主成分分析教程

主成分分析(PCA)是现代数据分析的中流砥柱-一个广泛使用的黑箱,但…

arxiv.org](https://arxiv.org/abs/1404.1100) [## 主成分分析:回顾与进展

大型数据集在许多学科中越来越普遍。为了解释这样的数据集,方法是…

royalsocietypublishing.org](https://royalsocietypublishing.org/doi/10.1098/rsta.2015.0202)

基于解释的方差比,组件的数量取为 40。下面的代码解释了—

前八个主成分或八个波段如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

主成分分析后的前八个波段

分类算法

分类指的是预测建模问题,其中为给定的输入数据预测类别标签。分类可分为:

  • 分类预测建模
  • 二元分类
  • 多类分类
  • 多标签分类
  • 不平衡分类

今天,我们正在处理多类分类问题。有不同的分类算法用于高光谱图像(HSI)的分类,例如:

  • k-最近邻
  • 支持向量机
  • 光谱角度制图仪
  • 卷积神经网络
  • 决策树

在本文中,我们将使用支持向量机(SVM) 对高光谱图像(HSI)进行分类。

支持向量机(SVM)

支持向量机是一种监督分类算法,可以最大化数据和超平面之间的间隔。不同的核函数用于将数据投影到更高维度,例如线性、多项式、径向基函数(RBF)等

为了更好的理解,SVM 背后的概念参考下面的讲座:

[## 大间隔分类背后的数学-支持向量机| Coursera

斯坦福大学为“机器学习”课程制作的视频。支持向量机,简称 SVMs,是一种机器…

www.coursera.org](https://www.coursera.org/lecture/machine-learning/about-3eNnh) [## 内核 II -支持向量机| Coursera

斯坦福大学为“机器学习”课程制作的视频。支持向量机,简称 SVMs,是一种机器…

www.coursera.org](https://www.coursera.org/lecture/machine-learning/kernels-ii-hxdcH) [## 优化目标-支持向量机| Coursera

斯坦福大学为“机器学习”课程制作的视频。支持向量机,简称 SVMs,是一种机器…

www.coursera.org](https://www.coursera.org/lecture/machine-learning/optimization-objective-sHfVT)

实施 HSI 分类

以下代码用于实现支持向量机对高光谱图像进行分类。

混淆矩阵是使用代码生成的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

混淆矩阵-作者图片

生成的分类报告由分类准确度、准确度精度、召回率、F1 分数、支持组成,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分类报告—按作者分类的图像

最后,分类图如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

印度松树(IP)数据集的分类地图-按作者分类的图像

我在本文中写的全部代码可以在 GitHub 和 CoLab 中使用下面的笔记本来访问。

[## syamkakarla 98/超光谱 _ 图像 _ 分析 _ 简化

超光谱图像分析-分类

github.com](https://github.com/syamkakarla98/Hyperspectral_Image_Analysis_Simplified/blob/master/Articles/Hyperspectral_Image_Analysis%E2%80%8A_%E2%80%8AClassification.ipynb) [## 超光谱图像分析分类

使用 Python 对高光谱图像进行分类的演练

colab.research.google.com](https://colab.research.google.com/drive/1hugIX9_PJxAvKoXySzQcZ4aW-yYYUqIk?usp=sharing)

参考

[## 评估降维方法对信息类和分类器的影响…

土地覆被分类更喜欢分类器和降维方法的某些组合。*设计 MCS…

www.sciencedirect.com](https://www.sciencedirect.com/science/article/abs/pii/S0273117713007308) [## 奇异值分解和主成分分析

Wall M.E .,Rechtsteiner A .,Rocha L.M. (2003)奇异值分解和主成分分析。在:贝拉尔…

link.springer.com](https://link.springer.com/chapter/10.1007%2F0-306-47815-3_5) [## sk learn . decomposition . PCA-sci kit-learn 0 . 23 . 2 文档

主成分分析。使用数据的奇异值分解进行线性降维…

scikit-learn.org](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html) [## sk learn . SVM . SVC-sci kit-learn 0 . 23 . 2 文档

c-支持向量分类。该实现基于 libsvm。拟合时间至少与…成二次比例

scikit-learn.org](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html)

超光谱图像分析—入门

原文:https://towardsdatascience.com/hyperspectral-image-analysis-getting-started-74758c12f2e9?source=collection_archive---------10-----------------------

初学者指南

使用 Python 进行高光谱图像分析的演练。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

美国地质勘探局在 Unsplash 上拍摄的照片

高光谱图像(HSI)分析是人工智能(AI)研究的前沿领域之一,因为它在从农业到监控的各个领域都有应用。许多研究论文发表在这个领域,这使得它更加有趣!“对于初学者来说,在 HSI 上开始模式识别和机器学习非常麻烦”,因为与计算机视觉中的其他机器学习(ML)技术(如对象检测、人脸识别、GAN、自动编码器等)相比,它对社区的影响有限。

这篇文章提供了帮助初学者开始高光谱图像(HSI)分析的信息,从数据收集到数据可视化和分析,以及使用使用 Python 的交互式数据可视化工具。

让我们开始:

目录

  • 简介
  • 数据收集
  • 数据预处理
  • 探索性数据分析

简介

遥感中,高光谱遥感器以其高光谱分辨率被广泛用于监测地球表面。高光谱图像(HSI) 数据通常包含同一空间区域内的数百个光谱带,这些光谱带为识别各种材料提供了有价值的信息。在 HSI 中,每个像素可以看作一个高维向量,其条目对应于从可见光到红外的光谱反射率。

高光谱数据的获取和收集变得更加容易和经济,使得高光谱图像分析成为许多应用中有前途的技术之一,包括精确农业、环境分析、军事监视、矿物勘探、城市调查等

超光谱图像分类的任务是对使用超光谱传感器捕获的图像中的每个像素的类别标签进行分类。本博客重点介绍数据收集数据预处理探索性数据分析

数据收集

困难的部分来了,HSI 没有流行的数据源,这使得初学者很难开始 HSI 分析。以下是 HSI 的几个数据来源。

数据预处理

高光谱图像(HSI)数据大多以。mat 文件。可以使用不同的编程语言访问,博客使用 python。

提取 HSI 的像素是重要的预处理任务之一。这使得更容易处理数据,也更容易实现机器学习算法,如分类、聚类等

帕维亚大学数据集用于说明目的。在意大利北部帕维亚上空的一次飞行活动中,安明传感器拍摄到的 HSI 场景。光谱波段数为 103 ,HSI大小为610340 像素,地物包含 9 个。图像中的一些像素不包含信息,并且在分析之前必须被丢弃。几何分辨率为 1.3 米。这里是来自帕维亚大学 HSI 的几个样本乐队。*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

帕维亚大学 HSI 的样本波段—图片由作者提供

读取数据集

通过使用科学 Python(SciPy) python 库,我们可以读取数据集。以下代码用于读取数据集。

该函数返回数据和地面实况或类,还显示数据和地面实况的大小,它们是 3D 和 2D 矩阵。

提取像素

像素是高光谱图像(HSI)中的单个元素,它是一个长度等于 HSI 波段数的向量。以下代码用于从 HSI 提取像素,保存到 CSV 文件中,并返回熊猫数据帧。

探索性数据分析

这是很难处理的数据是巨大的,因为帕维亚大学数据集的维数很高。因此,使用主成分分析(PCA)将数据的维度降低到 3D,这是一种流行且广泛使用的维度降低技术。以下代码用于将数据集的维度缩减为三个。

上面的代码生成了一个数据帧,其中列是三个主要组件(PC)和类。让我们看几个交互式可视化来检查数据中的模式。

很难想象数据集中的所有模式,因为它包含近 45k。因此,采样数据是可视化所有数据点或观察值或像素的最佳方式。除计数图外,随机使用每个类别的 200 个样本来描绘这些图。

  • 计数图:可以认为是一个分类变量的直方图,而不是一个定量变量。下图说明了 HSI 类别之间的关系。我们可以看到在帕维亚大学 HSI 中,“沥青、裸土、自阻挡砖块和树木”是最受欢迎的课程。

计数图-按作者排列的图像

  1. 结对图:这是一种非常简单的可视化每个变量之间关系的方法。它提供了数据中每个变量之间的关系矩阵。下图显示了主成分* (PC1、PC2 和 PC3)之间的关系。*

PC-1、PC-2 和 PC-3 之间的配对图—图片由作者提供

2. 3D 散点图:绘制三维轴上的数据点,显示三个变量之间的关系。下图以 3D 散点图的形式展示了主成分(PC1、PC2 和 PC3)之间的关系

PC-1、PC-2 和 PC-3 之间的 3D 散点图—图片由作者提供

3. 3D 线图:与 3D 散点图非常相似,但区别在于每个数据点都用一条线连接。下图以 3D 线图的形式显示了数据的可视化。这里我们可以看到,即使使用线性降维技术(PCA) ,类的投影也相当好。

PC-1、PC-2 和 PC-3 之间的 3D 线图—作者提供的图像

4.面积图:表示连接数据点和线段的一个变量相对于另一个变量的变化。主要组件(PC1、PC2 和 PC3)的可视化如下所示:

PC-1 和 PC-2 之间的面积图—作者提供的图像

PC-2 和 PC-3 之间的面积图—图片由作者提供

PC-2 和 PC-3 之间的面积图—图片由作者提供

这些是几种交互式可视化。

现在,您知道了在哪里可以找到 HSI 数据,如何读取和转换,以及可视化数据或模式的不同方法。

如果您对帖子中显示的代码感兴趣,可以使用下面的链接访问:

* [## 超光谱图像分析—入门

使用 Python 进行高光谱图像分析的演练

colab.research.google.com](https://colab.research.google.com/drive/1YxdtSvvhZCIf5u_d4pD69SKfpqPe0OrZ)

下一篇博客将介绍在 HSI 分类中使用的不同分类算法。

[## 超光谱图像分析分类

使用 python 对高光谱图像(HSI)进行分类的演练。

towardsdatascience.com](/hyperspectral-image-analysis-classification-c41f69ac447f)

来源:

[## Python 图形库

Plotly 的 Python 图形库制作出交互式的、出版物质量的图形。如何制作线图的示例…

plotly.com](https://plotly.com/python/) [## sk learn . decomposition . PCA-sci kit-learn 0 . 22 . 2 文档

主成分分析。使用数据的奇异值分解进行线性降维…

scikit-learn.org](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html)*

真实问题的假设检验

原文:https://towardsdatascience.com/hypothesis-test-for-real-problems-64aafe17c1ad?source=collection_archive---------24-----------------------

数据科学,统计学

假设检验对于评估与数据样本相关的问题的答案非常重要。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:自己的工作

在这篇文章中,你可以探索一种假设,为什么我们需要它,以及如何计算它?

一个统计 假设是关于一个人口参数的一个信念。这种信念可能对,也可能不对。换句话说,假设检验是科学家用来支持或拒绝统计假设的一种恰当的技术。

决定一个统计假设是否正确的最理想的方法是检查整个人口。

因为这通常是不切实际的,我们通常从总体中随机抽取一个样本,并检查其等效物。在样本数据集与统计假设不稳定的情况下,假设被拒绝。

假设的类型

有两种假设,零假设**(Ho)和替代假设**(Ha)必须是完全互斥的事件。****

  • 无效假设通常是假设事件不会发生。
  • 另一种假设是事件将会发生的假设。

为什么我们需要假设检验?

假设一家公司需要在市场上推出一款新自行车。对于这种情况,他们将一起遵循假设检验来决定新产品在市场上的成功。

其中产品在市场上无效的可能性被假定为无效假设,产品盈利的可能性被假定为替代假设。

通过遵循假设检验的过程,他们将预见到成就。

如何计算假设检验?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

克里斯·利维拉尼在 Unsplash 上拍摄的照片

  • 陈述两种理论,目标是只有一种可能是正确的,以至于这两种情况完全不相关。
  • 现在制定一个研究计划,该计划将列出如何评估数据。
  • 现在完成计划并真正研究样本数据集。
  • 最后检查结果,接受或拒绝零假设。

另一个例子

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 Ruthson ZimmermanUnsplash 上拍摄

假设,一个人去求职,他在简历中表示他的写作速度是每分钟 70 字。招聘人员可能需要测试他的情况。万一他认为他的情况是充分的,他会招募他,无论如何,拒绝他。

于是,经过测试,发现他的速度是每分钟 63 个单词。目前,他可以决定是否雇用他。如果他符合所有其他资格标准。这个程序用通俗的语言描述假设检验。

在统计学术语假设中,他的排版速度是每分钟 70 字是一个待检验的假设,即所谓的零假设。显然,交替假设他的写作速度不是每分钟 70 字。

因此,正常合成速度是总体参数,样本合成速度是样本统计量。

接受或拒绝其申请的条件由遴选代表选择。例如,他可能得出结论,6 个单词的错误对他来说是没问题的,所以他会每分钟承认 64 到 76 个单词。

从各方面考虑,每分钟 63 个单词的样本速度将接近拒绝他的情况。此外,选择将是他在制造一个假的索赔。

在任何情况下,如果选择代表将他的接受区域扩展到正/负 7 个单词,即 63 到 77 个单词,他将容忍他的情况。

最后,假设检验是一个检验依赖于样本的总体的过程。这是一个迷人的合理的主题,带有相当的统计学术语。你得多潜水才能熟悉细节。

假设的显著性水平和拒绝区域

第 1 类错误概率通常用α表示,通常设置为 0.05。α的值被认为是显著性水平

拒绝区域是提示拒绝零假设的样本数据集。显著性水平α决定了拒绝区域的大小。

拒绝区域的样本结果被标记为在 α 水平上具有统计显著性。

不同α的影响是,如果α很小,例如 0.01,则第 1 类错误的可能性很小,并且在可以排除零假设之前,需要大量替代假设的样本证据。

然而,当α较大时,例如 0.10,拒绝区域较大,并且更容易排除零假设。

p 值的显著性

随后的方法是避免使用显著性水平,而只是报告样本证据的显著性。这种方法现在更加普遍。

这是通过一个 P 值的方法完成的。p 值是针对零假设的证据能力的度量。

它是得到检验统计量的观察值的可能性,或者如果调查问题的零假设为真,得到对零假设(Ho)具有显著更显著证据的值的可能性。

P 值越不显著,就越有证据支持替代假设。只有当 P 值小于α时,样本证据在α水平上才是显著的。

他们对双尾检验有关联。当利用置信区间进行双尾假设检验时,当且仅当假设值不在参数的置信区间内时,拒绝零假设。

假设检验和置信区间

假设检验和置信区间是从同一块布上剪下来的。95%置信区间拒绝假设的事件是对总体进行 p <0.05 under the relating hypothesis test, and the other way around.

A P-value is letting you know the greatest confidence interval that despite everything prohibits the hypothesis.

As such, if p<0.03 against the null hypothesis, that implies that a 97% confidence interval does exclude the null hypothesis.

假设检验意味着的事件

我们在总体均值未知的情况下进行 T 检验。

总的目的是将样本均值与一些假设的总体均值进行对比,以评估观察到的事实相对于假设是否具有如此大的独特性,以至于我们可以有把握地说假设的总体均值实际上不是真实的总体均值。

人口比例的假设检验

当你有两个独特的群体时, Z 检验有助于你选择两个群体中某些特征的比例是否相等。例如,如果两个国家的男性比例相等。

等总体方差的假设检验

F 检验取决于 f 分布,用于考虑两个公正样本的方差。此外,这还用于方差调查,以确定两个以上样本的显著性。

t 检验、f 检验和 Z 检验

T-testF-test完全是两个独特的东西。T 检验用于评估总体参数,例如总体均值,同样也用于总体均值的假设检验。****

但是,在不知道总体标准差的情况下,必须利用它。万一我们知道总体标准差,我们将利用 Z 检验。

我们同样可以利用 T 统计量来近似总体平均值。t 统计同样用于在样本均值的帮助下发现两个总体均值的差异。

Z 统计量T 统计量用于评估总体参数,如总体均值和总体比例。它同样用于检验人口平均数和人口比例的假设。

与我们管理平均值和比例的 Z 统计或 T 统计相反,卡方或 f 检验用于查看样本内部是否有任何差异。f 检验是两个样本的波动比例。

结论

假设鼓励我们做出一致的决定,变量之间的联系,并提供了额外调查的过程。

假说,在很大程度上,来自对研究行为、自然现象或已证实的理论的推测。一个诚实的假设应该是清晰的,详细的,可靠的数据。

在建立假设之后,接下来的阶段是验证或测试假设。假设检验包括允许同意或不同意已表达的假设的过程。

现在,把你的想法放在TwitterLinkedin,以及Github!!**

同意 还是 不同意 与 Saurav Singla 的观点和例子?想告诉我们你的故事吗?

他乐于接受建设性的反馈——如果您对此分析有后续想法,请在下面的 评论 或联系我们!!

推文@ SauravSingla _ 08Saurav _ Singla,还有明星SauravSingla马上!**

假设检验:解释 A/B 检验

原文:https://towardsdatascience.com/hypothesis-testing-a-b-tests-explained-4d89de6b4ad2?source=collection_archive---------9-----------------------

假设检验的分类、A/B 检验的解释和 A/B 检验案例研究。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者:特里斯特·约瑟夫

统计分析的一个重要目标是发现数据中的模式,然后将这些模式应用于“现实世界”。事实上,机器学习通常被定义为寻找模式并将其应用于大型数据集的过程。有了这种发现和应用模式的新能力,世界上的许多过程和决策都变得非常数据驱动。想一想;当一个人从亚马逊查看或购买一件商品时,他们通常会看到亚马逊推荐的他们可能会喜欢的产品。

现在,亚马逊不是在表演魔术。相反,他们已经建立了一个推荐系统,使用从用户那里收集的关于他们观看什么产品、喜欢什么产品以及购买什么产品的信息。有许多因素可以决定一个人是否“可能喜欢”一种产品并购买它。这些可以包括以前的搜索、当前搜索的频率、用户统计数据甚至一天中的时间。如果购买按钮是一种平静的颜色,如蓝色,人们是否更有可能点击购买按钮?嗯,这可以通过分析数据中的模式找到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者:特里斯特·约瑟夫

问题是,当数据受到随机噪声的影响时,很难确定一个合适的模式。这是因为随机噪声可以偶然产生模式。由于这种困难的存在,分析师必须使用所有适当的工具和模型来从他们的数据中做出推论。确定一个模式是否偶然出现的一种非常常见且严格的方法是进行假设检验。

假设检验是使用统计学来确定给定假设为真的概率。这意味着,可以通过假设一个特定的结果,然后使用统计方法来确认或拒绝该假设来解释数据。假设检验的通常过程包括四个步骤。首先,必须提出假设。零假设指的是被假定为真实的事情,通常的事实是,观察结果纯属偶然。替代假设指的是被检验为无效的东西,通常观察结果显示了一个真实的影响,并结合了一个随机变化的成分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者:特里斯特·约瑟夫

接下来,必须决定测试统计量。这是将用于帮助确定零假设的真值的方法和值。有许多测试统计可以使用,最合适的一个将取决于正在进行的假设检验。一旦找到检验统计量,就可以计算出 p 值。p 值是在假设零假设为真的情况下,获得至少与观察到的统计量同等重要的检验统计量的概率。换句话说,它是相应检验统计右侧的概率。p 值的好处是,通过将这个概率与α直接比较,可以在任何期望的显著性水平α下对其进行测试;这是假设检验的最后一步。

Alpha 指的是对结果有多少“信心”。当 alpha 为 5%时,意味着对结果有 95%的置信度。当比较 p 值和α值时,一旦 p 值小于或等于α值,就排除零假设。一般来说,p 值越低越好。这是因为低 p 值意味着,如果零假设为真,则出现与被测观测一样极端的观测结果的概率较小。本质上,p 值衡量样本统计量与给定的零假设的一致性。因此,如果 p 值足够小,就可以断定样本与零假设不相容,可以拒绝零假设。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者:特里斯特·约瑟夫

现在,回到购买按钮是蓝色还是红色时人们更有可能点击这个问题。我仍然不知道,但像这样的场景在数据驱动的业务中经常大规模发生。这是假设检验的一种形式,用于优化业务的特定特征。这被称为 A/B 测试,指的是一种比较两个版本的东西,以找出哪个表现更好的方法。它包括同时向不同的业务用户群展示同一产品或功能的两个变体,然后通过使用成功和跟踪指标来确定哪个变体更成功。

A/B 测试往往与网站和 app 联系在一起,在大型社交媒体平台上极为常见。这是因为平台的转化率(有多少人看到了某样东西并点击了它)在很大程度上决定了平台的命运。因此,平台用户可以看到的每一条内容都需要优化,以实现其最大潜力。

A/B 测试的过程与前面解释的假设测试的过程相同。它需要分析师进行一些初步的研究,以了解正在发生的事情,并确定需要测试什么特性。此时,分析师还可以确定什么是成功和跟踪指标,因为他们会使用这些统计数据来了解观察结果的趋势。在此之后,假设将被公式化。没有这些假设,测试活动将没有方向。接下来,测试特性的变化将被随机分配给用户。然后收集和分析结果,并部署成功的变体。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者:特里斯特·约瑟夫

最后,让我们检查一个假设的 A/B 测试。考虑一个大型社交媒体平台,其中既有分享生活内容的个人用户,也有分享重要信息(如公司更新或世界新闻)的公司。可以看出,用户对公司内容的参与度很低,这是一个问题,因为该平台希望确保其用户群尽可能跟上世界各地发生的事情。从逻辑上讲,我们的目标是制定一个计划来提高用户对公司内容的参与度。

可以合理地假设,参与度可能较低,因为公司内容隐藏在个人内容中,用户不会立即意识到他们正在浏览两种不同类型的内容。因此,如果将公司内容从个人内容中分离出来,然后放在自己的“新闻页面”上,参与度可能会提高。这样,用户将确切地知道他们正在观看的内容类型,他们可能会花更多的时间来了解他们周围的世界;从而提高参与度。因此,零假设可能是重新设计的平均参与度和原始设计的平均参与度之间的差异不等于零。另一个假设是,均值之间的差异明显大于零。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片作者:特里斯特·约瑟夫

这个测试的成功标准是访问这个“新闻页面”的用户数量(来自测试样本)。原因是这种重新设计只有在用户访问和消费该页面上的内容时才能成功。跟踪指标可以是每个用户的观看时间。这是因为需要确定用户到达页面后是否还在与内容互动,或者他们是否已经登陆页面(出于偶然或类似原因)并立即离开。

如果发现重新设计的参与度明显更高,而且这不是偶然的,那么应该对整个平台实施重新设计。应该注意的是,该示例是 A/B 测试过程的简化版本,但是仍然可以应用这些概念。

欢迎来到假设检验的奇妙世界!

参考文献:

ab 测试/#如何执行 ab 测试

machinelearningmastery.com/statistical-hypothesis-tests/

【mathworld.wolfram.com/HypothesisTesting.html

ncbi.nlm.nih.gov/pmc/articles/PMC5991789/

statistics byjim . com/假设检验/解释-p 值/

其他有用的素材:

Amazon . com/Introducing-Statistics-Graham-J-G-Upton/DP/0199148015

optimize ly . com/optimization-glossary/AB-testing/#:~:text = AB % 20 testing % 20 is % 20 essentially % 20 an,for % 20a % 20 given % 20 conversion % 20 goal。

researchgate.net/post/how_to_interpret_P_values

towards data science . com/statistical-tests-when-to-use-which-704557554740

neilpatel.com/blog/ab-testing-introduction/

假设检验、特征和计算

原文:https://towardsdatascience.com/hypothesis-testing-characteristics-and-calculation-ba3bdf516ea5?source=collection_archive---------35-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由 Albert S 拍摄的照片

什么是假设检验,它的重要特征以及如何进行假设检验

假设检验是一种统计方法,用于检验关于总体的公认主张的有效性。这种被普遍接受的说法被称为无效假设。基于 p 值,我们拒绝或未能拒绝零假设。

要记住的关键特征

  1. p 值越小,应该拒绝零假设的证据就越强。
  2. 当样本量足够大时,检验统计量服从正态分布。当样本中至少有 10 个肯定答案和 10 个否定答案时,样本量就可以称为足够大。请参见下面的例子以获得更清楚的解释。

用一个例子理解假设检验

下面是研究问题:

去年,52%的父母认为电子产品和社交媒体是他们青少年睡眠不足的原因。“现在有更多的父母认为他们的孩子睡眠不足是由电子产品和社交媒体造成的吗?”

这个问题摘自 Coursera 的“使用 Python 进行推断统计分析”课程。在这个问题中,我们被要求测试,是否有大量的父母认为社交媒体是他们青少年睡眠不足的原因。以下是执行该测试的逐步过程:

第一步:

建立了零假设。在任何假设检验中,我们都需要在收集任何数据之前建立假设。研究人员提出了两个假设。第一个是零假设,即研究者想要检验和拒绝的信念或前提。在上面的例子中,零假设是 0.52。因为 52%的父母认为电子产品和社交媒体导致了他们青少年的睡眠不足。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二步:

定义替代假设。再看研究题。我们需要弄清楚今天是否有更多的父母认为电子产品和社交媒体是睡眠不足的原因。这意味着,我们必须找出今天 p 是否大于 0.52。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在进行 p-检验后,如果我们有足够的证据拒绝零假设,我们将接受替代假设。

第三步:

选择显著性水平。大多数时候研究人员选择 0.05。这意味着置信度为 95%。显著性水平小于或等于 5%的 p 值意味着结果不是随机的概率大于或等于 95%。所以,你的结果是有意义的,有足够的证据来拒绝零假设。对于这个例子,我们将使用显著性水平 0.05。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第四步:

收集数据。在明确假设和显著性水平后,我们应该收集数据。对于这个例子,莫特儿童医院收集了数据,发现了这个:

随机抽样调查了 1018 名有一个十几岁孩子的父母。56%的人说,他们认为电子产品和社交媒体是他们青少年睡眠不足的原因。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第五步:

为假设检验检查标准假设 。有两个假设:

  1. 我们需要一个简单的随机样本。
  2. 我们需要足够大的样本量来保证样本比例的分布是正态的。

如何知道样本是否足够大?n* p 需要至少为 10,n*(1-p)也需要至少为 10。这里 p 是 0.52。因为 0.52 是我们的零假设。n 是人口数量。在这种情况下是 1018。

n*p = 1018 * 0.52 = 529

n *(1-p)= 1018 *(1–0.52)= 489

样本是随机的。因此,检查假设已经完成。现在我们可以进行 p 测试了。

第六步:

计算 p 值。计算检验统计量 Z 的公式为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我用符号代替文字:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

标准误差(SE)的公式为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插入值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

标准误差为 0.0157。检验统计量 Z 为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检验统计量 Z 是 2.555。这意味着观察样本比例(0.56 或 56%)比零假设(0.520 或 52%)高 2.555 个零标准误差。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在上图中,散列区域是 p 值。使用 Z 检验统计,我们可以发现的 p 值为 0.0053 。您可以使用 Python 等编程语言或 z-table 找到这个 p 值。

第七步:

得出结论。由于 p 值(0.0053)小于显著性水平(0.05),我们有足够的证据拒绝零假设。所以,我们的另一个假设是正确的,今天超过 52%的父母认为电子产品和社交媒体是他们青少年睡眠不足的原因。

这个例子是对人口比例进行 p 检验。我希望解释清楚了。以下是一些更有效的假设检验示例,并附有详细解释:

[## 如何在 Python 中执行假设检验:比例和比例差异

学习在 python 中对一个人口比例和两个人口的差异进行假设检验…

towardsdatascience.com](/how-to-perform-hypothesis-testing-in-python-proportion-and-the-difference-in-proportions-ea7d23dcd038)

本文解释了总体均值的假设检验以及两个总体均值的差异:

[## Python 中的假设检验:一个均值和两个均值的差异

学习在 python 中对一个均值和两个均值的差异进行假设检验。

towardsdatascience.com](/hypothesis-testing-in-python-one-mean-and-the-difference-in-two-means-87cb60b02a51)

这里还有一些阅读材料:

如何为有意义的数据分析提出好的研究问题

置信区间、计算和特征

如何计算均值的置信区间和均值的差

假设检验:数据科学

原文:https://towardsdatascience.com/hypothesis-testing-data-science-1b620240802c?source=collection_archive---------19-----------------------

利用实验数据进行统计决策的一种统计方法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由皮克斯拜的 Gerd Altmann 提供

使用推断统计学,我们学会了如何分析样本数据,并对总体均值和其他总体数据做出推断。然而,我们无法证实我们对人口数据得出的结论。这就是为什么假设检验的概念出现了。

关于推断统计中心极限定理可以在我之前的文章中了解更多。

假设

使用推断性、描述性和探索性分析,我们对人口样本进行了一些研究。我们从样本中得出了一些见解,并对整个人口做出了断言。这些只是主张;它们并不完全正确。这种类型的主张或假设被称为假设。

假设检验

有一些方法或技巧来检查假设,如果假设是正确的,那么我们将它应用于整个人口。这个过程被称为**假设检验。**最终目标是是否有足够的证据证明假设是正确的。正如我们在推论统计学和中心极限定理(CLT)中已经看到的,我们将使用样本数据并在假设检验中证实我们关于总体的假设。

在假设检验中,我们提出两个假设:

  • 零假设(H₀) :现状
  • 另类假设(H₁) :挑战现状

零假设(H₀)

零假设是关于一个群体的普遍看法。它声明情况或索赔没有变化或差异。 H₀ 表示零假设**。**

替代假设(H₁)

替代假设是反对零假设的主张。H₁表示另一种假设。

例如,在刑事审判中,陪审团必须决定被告是无辜的还是有罪的。这里的无效假设是,被告是无辜的,就像指控之前一样。另一种假设是被告有罪,检察官会试图证明这一点。

假设检验的结果

在假设检验中,如果有足够的证据支持替代假设,我们拒绝零假设。如果替代假设没有足够的证据,我们就不能拒绝零假设。这就是我们索赔的方式。在任何情况下,我们都不应该说我们“接受”了零假设。要么我们拒绝,要么我们不能拒绝零假设,就是这样。

举例:

如果一家公司有 30000 名员工,声称员工每天到达办公室平均需要 35 分钟。

这里,
空 Hypothesis(H₀) :员工平均时间= 35 分钟
候补 Hypothesis(H₁) :员工平均时间≠ 35 分钟

制定无效和替代假设

有一个共同的规则来制定索赔声明的无效和替代假设。

  • 零假设总是有以下符号: =
  • 交替假设总是有以下迹象:≠或<或>

例 1

一家公司在一份声明中声称,其 2022 年 8 月的总估值至少为 200 亿美元。

上述主张的假设是:

  • Null Hypothesis(H₀): 总估值≥200 亿美元
  • 候补 Hypothesis(H₁): 总估值<200 亿美元

例 2

另一家公司声称其 2020 年 8 月的总估值超过 200 亿美元。

上述主张的假设是:

  • Null Hypothesis(H₀): 总估值≤200 亿美元
  • 候补 Hypothesis(H₁): 总估值>200 亿美元

正如我们从上面两个例子中所观察到的,我们不能从索赔陈述本身决定现状或制定无效假设。零假设从不包含≠或< or >符号。

在制定无效假设和替代假设之后,下一个最关键的步骤是做出决定拒绝或不拒绝无效假设。

决定

我们举个例子来理解如何决定拒绝还是不拒绝零假设。

**索赔:**员工到达办公室的平均时间是 70 分钟。我们从公司里随机挑选了一些人,计算出平均时间为 50 分钟。

  • 空 Hypothesis(H₀): μ = 70
  • 样本均值: x̅ = 50

现在,我们根据分布图做出决定,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

  • 如果样本 mean(x̅位于临界区域内,我们拒绝零 hypothesis(H₀。
  • 如果样本 mean(x̅位于临界区域之外,我们无法拒绝零 hypothesis(H₀。

无效假设和替代假设的公式决定了检验的类型和临界区在正态分布中的位置。

基于备选假设中的**“符号”,有三种类型的测试:**

  • ≠在 H₁ →双尾检验→分布两侧的拒绝/临界区域
  • < in H₁ → Lower-tailed test → Rejection/Critical region on the left side of the distribution
  • h₁→上尾检验→分布右侧的拒绝区域

示例:

  1. 如果平均通勤时间至少为 30 分钟,那么 H₀ ≥ 30,H₁ < 30, that means the test is a Lower Tailed test since the critical region will be on the left side of the distribution.
  2. If the average commute time is at most 30 minutes, then H₀≤ 30 and H₁> 30,这意味着测试是一个上尾测试,因为临界区域将在分布的右侧。
  3. 如果平均通勤时间是 30 分钟,那么 H₀=是 30 分钟,H₁≠30 是 30 分钟,这意味着测试是一个双尾测试,因为临界区域将在分布的两侧。

为了找到临界区域的临界值,我们使用临界值方法或 p 值方法。

临界值法

使用临界值方法进行决策的步骤如下:

  1. 制定假设,确定 H₀H₁ 并确认我们要做的测试类型。
  2. 根据给定的α值(显著性水平)计算 z 临界值(Zc)的值。
  3. 根据试验类型从 Zc 计算临界值(UCV 和 LCV)。
  4. 该决定基于临界值的样本 mean(x̅)。

使用示例查找临界值

**声称:**假设天气预报声称一个国家的平均降雨量为 350 毫米,标准差(σ)为 90。现在,我们以全国 36 个城市为样本,计算出样本平均 mean(x̅为 370.16。我们不得不拒绝或未能拒绝 5%重要性的索赔。

现在,利用这些信息,我们需要计算临界值。

1。制定假设

  • 零假设(H₀): μ = 350
  • 替代假设(h₁)350

由于 H₁包含≠符号,因此该检验将是一个双尾检验,其临界区域位于正态分布的两侧。

2。查找 Zc 值

假设α = 0.05,由于这是一个双尾检验,临界区域位于分布的两侧,因此两侧的显著性水平都是 0.025。这意味着右侧临界区域的面积为 0.025。这意味着直到 UCV 的面积(直到该点的累积概率)将是 1–0.025 = 0.975。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按作者分类的图像—计算临界值

因此,我们需要使用 Z 表找到值为 0.975 的 Z 得分。Z 分数将是 1.96

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源— Z 表 : Z 值为 0.975 时的得分

Zc = 1.96

3。计算临界值

计算临界值的公式为:
UCV =μ+(Zc *σx)
LCV =μ-(Zc *σx)

σx = σ/√n = 90/√36 = 90/6 = 15

UCV = 350+(1.96 * 15)= 379.4
LCV = 350-(1.96 * 15)= 320.6

现在,让我们将μ、x̅、UCV 和 LCV 的所有值绘制在分布图中,并做出决定。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按作者分类的图像—绘制分布图中的所有点

正如我们所看到的,样本 Mean(x̅位于临界区域之外。

4。做决定

由于样本均值位于临界区域之外,我们无法拒绝零假设。

这就是我们如何使用临界值方法来判断假设是否正确。接下来,我们将看到另一个叫做**的方法 p 值法。**p 值法很重要,在行业中使用更频繁。

p 值法

简单来说,p 值定义为零假设不被拒绝的概率。这不是正式的定义;是为了更好的理解。

以下是我们使用 p 值法确定零假设时需要遵循的步骤:

  1. 制定假设,确定 H₀H₁ 并确认我们要做的测试类型。
  2. 计算样本平均值的 Z 值。
  3. 使用 z 表计算给定 z 得分的 p 值。
  4. 根据给定值σ(显著性)的 p 值做出决定

使用 z 得分计算 p 值。

情况 1: 如果样本均值在分布均值的右边,Z 值= +3.02,那么从 Z 表中,我们可以找到值= 0.9987

现在,

对于单尾检验→p = 1–0.9987 = 0.0013
对于双尾检验→p = 2(1–0.9987)= 0.0026

**情况二:**如果样本均值在分布均值的左侧,Z 值= -3.02,那么从 Z 表中,我们可以找到值= 0.0013

现在,

对于单尾检验→ p = 0.0013
对于双尾检验→ p =2*0.0013= 0.0026

使用示例查找 p 值

让我们以临界值法所用的同一个天气预报为例。我们有μ = 350,x̅ =370.16,σ=90,α = 5%

σx = σ/√n = 90/√36 = 15

1。制定假设

  • 零假设(H₀): μ = 350
  • 替代假设(h₁)350

由于 H₁包含≠符号,因此该检验将是一个双尾检验,其临界区域位于正态分布的两侧。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按作者分类的图像-分布图中的样本平均值

2。计算样本平均值的 Z 得分值

z =(x̅-μ)/σx =(370.16–350)/15 = 1.34

使用 Z 表,我们将找到 Z 值的累积概率

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源— Z 表:Z = 1.34 时的概率

P(Z=1.34) = 0.9099

3。计算 p 的值

使用前面提到的两种情况,因为样本均值位于分布均值的右侧。

由于样本均值位于分布均值的右侧,并且检验是双尾检验,

p = 2(1–0.9099)= 0.1802

4。做出决定

由于 p 值(0.1802)大于α值(0.05),我们无法拒绝零假设。

错误

在假设检验过程中,我们会犯两种错误:

  1. 第一类误差
  2. 第二类误差

第一类错误

当零假设正确时,第一类错误发生,但我们拒绝它,即当它为真时拒绝 H₀。
1 类错误的概率用 alpha(α)表示,通常为 0.05 或 0.01,即只有 5%或 1%的几率。第 1 类误差也称为假设检验的显著性水平。

第二类错误

当零假设为假时,第二类错误发生,但我们未能拒绝它,即,当它为假时,未能拒绝 H₀。实际上,这是我们可能犯的最严重的错误。第二类错误的概率用β表示。

结论

正如我们所看到的,假设是我们对一个或多个总体参数的主张或假设。有两种假设,零假设(H₀)和交替假设(H₁).基于这些假设,我们设计了三个检验:双尾检验、下尾检验和上尾检验。最后,借助临界值法和 p 值法,我们决定拒绝或不拒绝零假设。

还有许多其他的方法来做决策,如 t 分布法、双样本均值检验、双样本比例检验、A/B 检验等。一旦我们理解了假设是如何工作的,我们就可以探索更多的方法和技术。

感谢您阅读快乐编码!!!

在这里查看我以前关于 Python 的文章

参考

假设检验去神秘化

原文:https://towardsdatascience.com/hypothesis-testing-demystified-e434a665e055?source=collection_archive---------32-----------------------

如何将数学翻译成简单的英语

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Pixabay 上的免费照片提供

假设检验可能是统计研究中最有价值的阶段。这是你得出结论的地方,在这里你可以找到你一直在寻找答案的问题的答案。这些问题应该是简单的是/否问题。假设检验是统计研究的一个阶段,在这个阶段,你正在将数学翻译成英语

假设检验很可能是你的老板希望你做的,如果你是一名统计学家的话。如果你去找他,只是说:“1 = 135,2 = 140”之类的话,那么他/她可能会说:“好吧。但是…这些数字对我的业务意味着什么?好吃吗?很糟糕吗?”。告诉他这样的话会好得多:“我发现统计证据表明,你的新营销策略比以前的策略给我们带来了更多的利润”。

在假设检验的这一点上,是时候把所有那些从你的数据集中获得的讨厌的数字转化成关于你感兴趣的问题的容易理解的陈述了。

与反证法的比较

假设检验与数理逻辑中最简单的证明方法之一有一些相似之处:矛盾证明。假设检验可以被认为是矛盾证明的概率对等物。

让我们先回忆一下这个方法。反证法是如何工作的?

假设我们想证明一个陈述,称之为 A。当我们用矛盾证明时,我们首先假设 A 的对立面(表示为~A 或非 A)为真,然后我们试图得出一个矛盾(一个总是假的陈述)。如果我们得出一个矛盾,那么这意味着我们的假设~A 为真,应该为假,因此 A 应该为真。

假设检验的思想类似于用矛盾证明的思想,但这一次~A 被称为“零假设”并由 H0 表示,而 A 被称为“替代假设”并由 H1 表示。达到一个矛盾(即得到一个不可能为真的结果)现在是达到一个可以为真的低概率的结果。这个概率应该有多低?一个常用的值是 0.05;这个阈值被称为显著性水平,用α表示。所以,如果给定零假设,你的观测数据的概率≤ α,那么你认为这个概率太低,H0 不可能是真的;所以,你将拒绝 H0,因此接受 H1。在假设检验的情况下,而不是证明 H1 (即以 100%的置信度;数理逻辑证明就是这样),你 1-α确信 H1 为真

请注意,我们只能接受 H1,不能接受 H0。仅仅因为我们有时不能拒绝 H0,这并不意味着我们接受它。正如用矛盾证明的情况一样,仅仅因为我们假设~A 为真,我们可能不知道如何得出矛盾,这并不一定意味着~A 为真。

基于 H0 是真实的最初假设而得出 H0 是真实的结论是自相矛盾的,因此我们只能拒绝 H0。

统计公式

为了进行假设检验,我们首先需要做一些假设:我们假设我们的观测值 X1,X2,…,Xn 是独立同分布的(独立同分布),其概率分布为*;其中θ是一个固定但未知的参数(也可以是更多标量参数的向量)属于θ(大写 theta 所有可能参数的集合为* 概率分布族)。

在假设检验的背景下,我们想对参数θ进行陈述。为此,我们取θ的两个不相交子集:θ0 和θ1,然后考虑以下两个假设:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按照惯例,H0 应该被拒绝,而 H1 是我们想要接受的。

例如,考虑以下场景:

你想研究大学毕业生在申请大学之前是否最终得到了他们想要的工作,或者他们是否倾向于改变主意?为此,你去那里收集一些随机选择的 5 年前毕业的人的数据,对于他们每个人,如果他/她在大学前找到了他们想要的工作,你就写下 1,否则写下 0。然后,您将该数据视为 i.i.d .伯努利(p ),并想要测试 p >与否。所以,我们有这些假设:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么,我们如何决定是否拒绝零假设呢?我们使用一个随机变量来做这个决定。这个 r.v .(随机变量)是我们的数据的函数,只输出 0(不拒绝)或 1(拒绝)。对于固定参数θ,该 r.v .具有伯努利分布。我们用来做决定的这个简历叫做 测试 ,用ψ表示。

测试通常有以下形式之一:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

或者:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中:ψ是观测数据 X 1,…,Xn 的函数,记法 1{。} 是一个指示器随机变量,当大括号内的表达式为真时取值 1,否则取值 0。Tn 是一个叫做检验统计量的随机变量,c 是一个常数。

第一种形式被称为单侧测试,因为只有当 Tn 在常数 c 的右侧时,测试才为 1。第二种形式被称为双侧测试,因为当 Tn 在 c 的两侧时,测试可以为 1;Tn > c 或 Tn < -c 将导致测试为 1。

测试误差

正如您在上面看到的,我们的测试依赖于我们观察到的数据,这些数据是随机的,我们将其建模为 r.v.s X1,…,Xn。所以,我们测试的结果是,嗯…,随机的。我们不能保证当我们应该拒绝 H0 时它总是给我们 1,或者当我们不应该拒绝 H0 时它总是给我们 0。无论我们选择什么样的测试,它都会给我们带来一些错误。

假设检验中可能出现两种错误:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

I 型错误发生在我们拒绝 H0 的时候,但实际上是真的。第二类错误是当我们没有拒绝 H0 的时候,其实是假的。

第一类和第二类错误的概率都取决于真参数θ,因此它们是θ的函数。

I 类误差的概率,用αψ表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是当真θ属于θ0 时,我们的测试指示 1 的概率。与θ0 不同的θ可以给出不同的 I 型误差概率。

第二类误差的概率,用βψ表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是当真θ属于θ1 时,我们的测试指示为 0 的概率。θ与θ1 的每一个不同,都会给我们不同的第二类错误概率。

显著性水平和 p 值

我们希望我们的测试有小概率的错误。因此,我们希望选择检验统计量 Tn 和常数 c,使这两种错误的概率最小。但是同时最小化两种类型的误差是一个困难的问题。在真参数θ处于θ0 和θ1 之间的边界的最坏情况下,这两类误差的概率是互补的;当一个小的时候,另一个大,我们没有办法把两个都变小。

我们所做的是区分第一类错误的优先级。我们对第一类错误的概率设定了一个上限,这样我们也可以得到一个合理的第二类错误。

为什么我们优先考虑第一类错误?第一类错误是当 H0 为真时,我们拒绝它。在假设检验中,拒绝 H0 是导致“发现”的事情,证明我们最初的猜测(H1)。一个大的 I 型错误意味着我们证明了许多错误的东西。我们不希望这样。我们倾向于不那么频繁地总结 H1,但是当我们这样做的时候,要非常自信地认为我们的结论实际上是正确的。

我们确定的 I 型误差的上限被称为测试的显著性水平,用α表示,因此:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

测试ψ拒绝 H0 的最小水平α称为测试ψ的 p 值

这可能一开始听起来有点混乱。α和 p 值有什么区别?α是一个你选择的数字,你提前确定它。你可以在收集任何数据或者做任何实验之前选择α。p 值是根据观察数据计算出来的,这是您可以为α确定的最小数值,因此,在根据观察数据计算测试后,您仍然可以剔除 H0。p 值越小,你越有信心拒绝 H0。

双样本测试

基于我们之前展示的测试公式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可能会倾向于认为,我们到目前为止所讨论的内容仅适用于我们想要将单个样本的参数与常数进行比较的情况,并且 Tn 应该是该参数的某种估计量。

如果我们不想测试某个样本的参数如何与常数进行比较,而是测试它如何与另一个样本的参数进行比较,该怎么办?我们需要想出另一个公式来测试吗?不。我们可以使用相同的测试公式,并保持我们到目前为止讨论的所有内容有效。我们唯一应该做的是给 Tn 加上一个特殊的形式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 Un 和 Vn 是基于不同的样本计算的。通过使用这个 Tn,我们可以测试 Un 是否大于 Vn。如果您只对 Un 和 Vn 之间的绝对差异感兴趣,只需将它们放在绝对值中,并使用双边测试。

利用中心极限定理进行假设检验

到目前为止,我们只是笼统地讨论了假设检验,没有描述具体的检验方法。在我们展示的测试公式中,Tn 可以是任何随机变量。任何基于我们的数据并能以最多α个误差概率拒绝 H0 的怪异和非直觉的随机变量都将是检验统计的良好候选。

然而,一种常用的方法是使用中心极限定理(CLT)来做假设检验。如果我们使用独立同分布随机变量(我们的数据)的平均值作为我们想要测试的参数的估计量,那么 CLT 暗示,当样本大小为 n → ∞时,这个平均值将具有正态分布。然后我们将这个量标准化(减去平均值并除以标准偏差),并将其视为我们的测试统计量 Tn。以这种方式计算的 Tn 将具有标准正态分布。这是一个众所周知的概率分布,我们可以用它来确定我们的测试需要的常数 c,以满足我们选择的水平α。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中:

  • 是 Xi 的期望值;这通常是在零假设中假设的
  • σ是 Xi 的标准差;这通常是基于样本的估计值,当 n 趋于无穷大时,它应该非常接近真实的标准差。
  • 上面带“d”的箭头表示分布收敛
  • N(0,1)表示标准正态分布

下面是单面情况下的图像:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

常数 c 是拒绝区域(蓝色)和非拒绝区域之间的阈值。如果 Tn > c (Tn 落在拒绝区域中),我们拒绝 H0,否则我们拒绝失败。c 是基于选择的α值计算的;经过计算,拒绝区域的面积为α。我们可以通过表格或计算器/软件包找到 c。

在这种情况下,p 值是我们得到的 Tn 值右边的区域面积。我们还可以测试 Tn < -c, in which case things would be similar, but the rejection region would be to the left of -c.

Below is illustrated a two-sided test:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

In the case of a 2-sided test, things would be similar, but α is now split between the 2 sub-regions: Tn < -c and Tn > c。这两个区域的面积都是α/2。

如果您有足够大的样本量(比如说,几百个),那么您的测试统计量 Tn 将非常接近标准正态分布,并且样本方差将非常接近真实方差。因此,这种方法是进行假设检验的最简单、最好的方法之一。

“学生”t 检验

用标准正态近似 Tn 的缺点是,它对于小样本量来说是不准确的。

在小样本的情况下,误差主要有两个来源:

  • X̅n 分布的形状可能不够接近正态分布
  • Xi 的估计方差σ hat 可能不够接近 Xi 的真实方差σ

那么,如果样本量相对较小,我们能做些什么呢?

我们可以用来克服估计方差问题的一种方法是学生的 t 检验。学生的 t-检验是一种 Tn 遵循学生的 t-分布的检验(学生这个名字来自于 1908 年威廉·希利·戈塞以笔名“学生”首次发表的事实)。

t 分布类似于标准的正态分布,但它有一个称为自由度(df) 的参数,它只是样本大小减一(df = n-1)。当 df 很大时(几百个数量级),t 分布非常接近标准的正态分布。随着 df 变小,钟形曲线开始变平,让更多的概率出现在它的尾部。因此,当我们有一个小样本时,我们需要一个更大的 Tn 值来拒绝 H0,以便考虑方差估计可能产生的误差。

理论上,对于具有 t 分布的 Tn,随机变量 X1,…,Xn 需要正态分布。但是,在实践中,如果 n > 30(CLT 的经验法则)或者如果 X1,…,Xn 接近正态分布,则 t 分布应该足够好地模拟检验统计量 Tn。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中:

  • σ这是贝塞尔校正样本方差。我们除以 n-1,以便获得一个无偏估计量。如果我们按照直觉,只除以 n,估计值将会有偏差。

T(n-1)是具有 n-1 个自由度的 t 分布。

一个例子

让我们回到上面提到的一个例子:“我们想研究大学毕业生在申请大学之前是否最终得到了他们想要的工作,或者他们是否倾向于改变主意?”

我们将我们的数据建模为参数为 p 的 n i.i.d .伯努利随机变量。如果此人拥有他/她在大学之前想要的工作,则这些变量中的每一个都将具有值 1,否则为 0。参数 p 代表得到 1 的概率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们想得出结论,大多数人会改变主意。根据我们假设的模型,p < ½. So, we will state our hypotheses as follows:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

For this hypothesis test, we want to use a significance level of α = 0.05.

I do not have any real data for this, so I will just come up with some numbers as an example. Let us say the sample size is 81, sample mean is 0.4 and sample variance is 0.24. For this sample size, we want to use a Student’s t-test.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Now let us assume H0 to be true. This means that p ≥ ½. But we need only one value for p to use in computing Tn. We will choose the value of p from the interval [1/2, 1] that can lead to the biggest error: p = ½. We want to be cautious, that is why we assume the worst value of p for our test. In this way, if we reject, we can be really confident of our result.

Now, let us compute the test statistic:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

To see if this test statistic falls in the rejection region we will use a t-distribution table (like the one 在这里):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们在表格的表头(在显示“单尾”的那一行,因为我们在做单侧测试)寻找我们选择的α,在我们的例子中是 0.05。然后我们用我们的自由度(80)寻找行。我们在表格中先前找到的列和行的交叉点处找到的值是我们的常数 c 的值,它是拒绝和非拒绝区域之间的阈值;在我们的例子中,这个值是 1.664。但是这些表是考虑到右边的拒绝区域而制作的。在我们的问题中,拒绝区域在左侧。因为 t 分布关于 0 是对称的,这并不重要,我们只取表中的负值。所以,c = -1.664 是我们的分隔符。如果 Tn < -1.664 we reject H0, otherwise we fail to reject.

Our test statistic was Tn ≈ -1.84 < -1.664, therefore we reject the null hypothesis and accept the alternative hypothesis H1. So, we conclude that p < ½. In English, this would be:“我们有统计证据表明,大多数人最终都有了不同于他们大学前最初想法的其他工作”

在我们的例子中,p 值是 t ≤ -1.84 处 t 分布曲线下的面积。为了计算这个数量,你可以使用在线计算器,比如这里的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的 p 值是 0.0347,这是我们可以拒绝 H0 的最小α。

我希望这些信息对你有用,感谢你的阅读!

这篇文章也贴在我自己的网站这里。随便看看吧!

尽可能简单地解释假设检验

原文:https://towardsdatascience.com/hypothesis-testing-explained-as-simply-as-possible-6e0a256293cf?source=collection_archive---------8-----------------------

数据科学家最重要的概念之一

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:Pixabay 的 PIRO4D

目录

  1. 简介
  2. 术语
  3. 拒绝还是不拒绝?
  4. 显著性检验的意义是什么?
  5. 假设检验的步骤

介绍

如果您听说过术语零假设p 值、α,但并不真正知道它们的含义或它们之间的关系,那么您来对地方了!如果你从未听说过这些术语,我强烈建议你通读这篇文章,因为这是一个需要理解的重要话题。

我先举一个简单的例子:

想象你和你的朋友玩一个游戏。如果硬币正面朝上,你赢 5 美元,如果硬币反面朝上,他赢 5 美元。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者创建的图像

假设前两次抛硬币都是正面朝上,意味着你的朋友赢了 10 美元。你应该担心他用的是作弊的硬币吗?嗯,硬币连续两次正面朝上的概率是 25%(见上图),这不是不可能的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者创建的图像

如果硬币连续六次落在反面会怎样?发生这种情况的概率约为 1.56%(见上文),这是极不可能的。在这一点上,假设硬币被操纵是公平的。通常,人们会设置一个阈值,通常是 5%,来确定一个事件是否是偶然发生的(如果你以前学过这个,这就是所谓的 alpha!)

术语

为了理解假设检验,你必须理解一些术语:

  • 零假设:样本观察值纯粹是随机产生的假设。无效假设倾向于说明没有变化。
  • **备选假设:**样本观测值受某种非随机原因影响的假设。
  • **P 值:**假设零假设正确,获得某个检验的观测结果的概率;较小的 p 值意味着有更强的证据支持替代假设。
  • α:显著性水平;当零假设为真时拒绝零假设的概率—也称为1 类错误。

我将再次使用硬币的例子,以便您能更好地理解这些术语:

  • 在我们的例子中,零假设是硬币是一个公平的硬币,观察结果纯粹是偶然的。
  • 另一种假设是,硬币是而不是公平的,因此,观察结果不是偶然发生的。
  • 连续 2 次翻转尾巴场景中的 p 值为 25%,连续 6 次为 1.56%。
  • 显著性的α水平将为 5%。

拒绝还是不拒绝?

确定是否拒绝空值的主要规则很简单,PGADRN

如果P-值大于 A lpha,则 D o not R 弹出 N ull。

在连续翻转两次尾部的情况下,我们不会拒绝空值,因为 25% > 5%。然而,在连续翻转 6 次尾部的情况下,我们会拒绝 1.56%以来的零假设< 5%.

What is the point of Significance Testing?

So now that you understand the use of hypothesis testing through the coin toss example, know the relevant terminology, and know the main rule to determine whether to reject the null or not, let’s dive into significance testing.

What is the point of significance testing? It’s used to determine how likely or unlikely a hypothesis is for a given sample of data. The last part of the statement, ‘for a given sample of data’ is key because more often than not, you won’t be able to get an infinite amount of data or data that represents the entire population.

Steps for Hypothesis Testing

Here are the steps to performing a hypothesis test:

  1. State your null and alternative hypotheses. 重申一下,零假设通常表明一切都是正常的——没有任何变化。
  2. 设置你的重要性等级,阿尔法值。这通常设置为 5%,但也可以根据情况和犯 1 型和/或 2 型错误的严重程度设置为其他水平。
  3. 收集样本数据并计算样本统计数据。
  4. 计算给定样本统计的 p 值。一旦得到样本统计数据,就可以通过不同的方法确定 p 值。最常用的方法是正态分布的 T 得分和 Z 得分。在这里 了解更多关于 T 分和 Z 分的
  5. 拒绝或不拒绝零假设。

感谢阅读!

如果你喜欢我的工作,想支持我…

  1. 支持我的最好方式就是在媒体这里关注我。
  2. 成为第一批在TwitterT2 上关注我的人之一。我会在这里发布很多更新和有趣的东西!
  3. 此外,成为第一批订阅我的新 YouTube 频道 这里
  4. LinkedIn 上关注我这里
  5. 在我的邮箱列表 这里报名。
  6. 看看我的网站,terenceshin.com

假设检验分三步进行

原文:https://towardsdatascience.com/hypothesis-testing-in-3-steps-c23789e92a09?source=collection_archive---------32-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来自 Pixabay

p 值,零假设,真实世界的例子等等

统计有助于分析大多数数据集合。假设检验也是如此,即使没有科学理论存在,它也能证明结论是正确的。

在这篇文章中,我们将了解假设检验如何帮助我们分析数据、涉及的各种术语以及检验过程。此外,考虑一个现实世界的场景来执行假设检验。

文章的流程如下,

  1. 假设检验和各种术语
  2. 假设检验过程
  3. 真实世界场景

让我们开始吧!

假设检验:

假设检验是一种通过矛盾的**证明。**假设我们要证明一个陈述,比如说,X 为真,我们从假设 X 不为真开始。我们试图证明这一点。

这个“X 不为真”被称为零假设(Ho) 。而“X 是真的”被称为**(H1 的)。X 称为检验统计量(T)。用于理解接受或拒绝检验统计的区域的界定值称为临界值(显著性水平)**

与想要证明的理论相矛盾的假设叫做零假设。与想要证明的理论相关的假设(通常是复合的)是另一种假设。

p-值概率值是检验统计量实际观察结果的概率,假设零假设是正确的。

小概率值意味着在零假设下观察值不太可能。这反过来意味着我们需要拒绝零假设。

假设检验过程:

从更广的角度来看,假设检验是通过这三个步骤实现的,

  1. 状态零假设和替代假设
  2. 决定测试统计和临界值
  3. 计算 p 值。如果 p 值小于临界值,拒绝零假设(意味着接受替代假设)。否则,接受零假设。

考虑到这一点,让我们详细了解每个步骤是如何执行的。

第一步:

  • 在任何测试环境中,清楚地理解实验是第一步也是最重要的一步。
  • 第一步是陈述相关的无效备选假设。这一点很重要,因为错误的假设将会使整个过程变得混乱。

第二步:

  • 决定哪种测试是合适的,并说明相关的测试统计量 T。
  • 从假设中推导出零假设下检验统计量的分布。
  • 选择一个临界值( α ),一个概率阈值,低于该阈值的无效假设将被拒绝。常见的数值是 5%和 1%。

第三步:

  • 计算 p 值
  • 决定拒绝无效假设(支持替代方案)或不拒绝它。

现实世界问题的假设检验过程:

考虑两个数据集,包括两个国家的人口高度,比如 C2 的 C1。问题陈述是为了理解这两个数据集(或分布)是否具有相同的均值(均值是所有数据点的平均值)。该信息可以进一步用于各种原因,如衣服或任何家具的销售。

第一步:

问题陈述是为了理解两个数据集均值之间的差异。所以零假设和替代假设如下,

  • 零假设:这两个国家的平均值没有差异
  • **替代假设:**两个国家的均值有差异

第二步:

这里的测试统计非常简单。需要大量的领域知识和研究来设置最佳临界值。让我们假设,0.05 (5%)左右的临界值是可以接受的。

  • **检验统计:**两个国家均值的差异。
  • 临界值: 0.05(或 5%)

第三步:

  • 为了计算 p 值,我们需要两个国家全部人口的身高。但是,要获得全部数据,我们需要大量的时间、金钱和精力,这通常是不可行的。
  • 因此,我们从每个数据集形成样本,并计算这些样本的平均值。比方说,我们计算了来自 C1 的 n 个样本的平均值,比如 a1,a2,a3,a4…an。来自 C2 的 n 个样本的平均值是 b1,b2,b3,b4…bn。
  • 现在,从这些来自每个国家的 n 样本平均值中,我们计算出均值差异的检验统计量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

计算测试统计

  • 在数学上, P 值是假设零假设为真的检验统计的概率。因此,P 值计算如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

计算 p 值

  • 从实验的观察来看,

—如果 p 值小于或等于 0.05(临界值),则拒绝零假设。因此,得出的结论是,两国人口的平均身高存在差异。

—如果 p 值大于 0.05(临界值),则接受零假设。 因此,得出的结论是两国人口的身高均值没有差异。

谢谢你的阅读。以后我会写更多初学者友好的帖子。请在媒体上关注我,以便了解他们。我欢迎反馈,可以通过 Twitter ramya_vidiyala 和 LinkedIn RamyaVidiyala 联系。快乐学习!

假设检验:直觉

原文:https://towardsdatascience.com/hypothesis-testing-intuition-701852364717?source=collection_archive---------44-----------------------

直观地展开假设检验

通俗地说,假设检验是一种从统计学上验证我们对样本所来自的人群的假设是否正确的技术。我们如何做到这一点?我们使用样本统计的抽样分布知识(z、t 或其他)来检验我们的假设是否正确。

为了更好地理解,让我们先来看看什么是抽样分布。抽样分布是从总体中抽取样本计算出的统计值的分布。例如,样本均值的抽样分布是从总体中抽取的样本均值的分布。它遵循正态分布,均值=总体均值,标准差=总体标准差* sqrt(样本大小)/总体标准差。同样,让我们看看什么是零假设和备择假设:零假设是无差异的陈述,它通常是等式陈述,而备择假设是零假设的补充,它通常是不等于,小于或大于陈述。

假设检验背后的想法是什么?我们在假设检验中所说的是,考虑到所选样本来自我们假设的总体,那么,来自我们样本的统计值应该位于抽样分布的某些边界内。这种抽样分布对我们来说是已知的,并且是利用我们假设样本所属的总体的某些已知事实计算出来的。决策界限是基于由进行测试的人决定的显著性水平而建立的。在双尾检验的情况下,10%的显著性水平意味着我们将在曲线的两侧找到点,每个点在曲线下分离出 5%的区域。位于这两个点内的曲线区域是接受区域,位于这两个点外的区域是拒绝区域。下图显示了当抽样分布为正态时,双尾检验中 10%显著性水平的可接受区域。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

我们在尾部的两侧有一个 5%的区域,这是拒绝区域。只有当样本统计量位于这些尾值之间,或者换句话说,当零假设为真时,获得样本值的概率小于显著性水平,零假设才会被拒绝。也就是说,我们没有足够的信心说样本属于我们假设的总体。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者图片

下面是一个直观的例子。萨姆最喜欢的颜色是红色吗?我们的无效假设是最喜欢的颜色是红色。另一个假设是最喜欢的颜色不是红色。假设,在我的经验中,喜欢红色的人一般有超过 2/5 的东西是红色的,也就是说,如果我们发现超过 2/5 的东西是红色的,我会接受萨姆喜欢红色的零假设,否则我们会拒绝。这是决策边界。现在,为了判断他是否喜欢红色,我们随机挑选了 5 样东西(样本)并检查它们是否是红色的。假设我们发现 5 样东西中有 2 样是红色的,那么我们有足够的证据说他喜欢红色吗?不,我们没有。所以,我们拒绝零假设,说我们没有足够的证据支持萨姆喜欢红色,或者我们可能想说也许萨姆不喜欢红色。但是,如果 3/5 的东西是红色的,那么我们就有一些他喜欢红色的证据,所以我们接受零假设,声称山姆喜欢红色。

假设检验——了解根源

原文:https://towardsdatascience.com/hypothesis-testing-learning-the-roots-93a150e07f2?source=collection_archive---------33-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

莎伦·麦卡琴在 Unsplash 上的照片

本文将尝试:

  • 涵盖假设检验的基础知识。
  • 解释它对中心极限定理的依赖

你应该已经知道的:

如果你是统计学或商业研究、数据分析或商业分析的学生,你可能听说过很多关于这个术语“假设检验”。有可能你已经在应用它了,但对周围发生的事情还没有一个清晰的认识。你困惑于零假设是如何定义的,什么是零假设,它是如何以及何时被拒绝的,或者它的拒绝意味着什么,等等。如果你有以上任何一个疑问,并且直到现在还不能消除它们,那么你就来对地方了。这篇文章将试图消除围绕假设检验的疑云。

在谈任何技术问题之前,让我们先从一个简单的问题开始,以引起人们的好奇心。有人给了你一个装有成千上万颗糖果的大糖果罐,有人声称平均每颗糖果重 10 克。你必须证实这一说法。一种方法是称一下罐子里的所有东西,数一下里面有多少颗糖果,然后算出平均值。但是这种方法对你来说似乎有点不可行和不切实际,因为数成千上万的糖果会花费你几天的时间。你现在想出了另一个主意。你从里面拿出 100 颗糖果,称它们的重量,计算它们的平均值。一百颗糖果的平均重量却只有 8 克。现在摆在你面前的问题是,是接受还是拒绝他的要求。但是在你做出任何结论之前,请记住,他说的是整个糖果罐,而你刚刚证实了只有 100 颗糖果的说法。

要回答这些问题,有一种叫做假设检验的统计技术可以帮你。这个想法是这样的:

让我们假设罐子实际上装满了平均重量为 10 克的糖果,为了便于理解,让我们进一步假设您从罐子中取出了 1000 个这样的样品,每个样品有 100 颗糖果,正如您在第一个地方取出的一样,您得到的结果如下表所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上表显示,在 1000 个样品中,80 个样品的平均重量为 7 克,120 个样品的平均重量为 8 克,300 个样品的平均重量为 9 克,依此类推。我们只是根据共同的平均重量将样品分组。

现在,假设您的特定样本的平均重量为 8 克,您可以说,从随机选择的数千个样本中,只有 120 个样本是可能的。换句话说,你的样本的概率是 120/1000,即 12%。现在,如果 12%对你来说是一个很大的数字,可以说这个罐子的平均重量是 10 克。请注意,这是因为最初假设这个罐子实际上和那个人声称的一样,我们得到的平均重量分布表实际上来自这个罐子。

到目前为止,你可能已经对我们的发展方向有了一点了解。上述假设为这个话题扫清了一点阴霾,但仍有许多问题需要回答,如:

  • 为什么只有 1000 个样本,从罐子里可能有无限个大小为 100 的随机样本。
  • 罐子平均重量为 10 克的假设和样品表是如何连接的?

我将尝试连接这些点,但在此之前,是时候了解中心极限定理。为了清楚地理解这篇文章,你应该知道这个定理,但是让我们也稍微讨论一下这个定理。

中心极限定理(CLT)

中心极限定理描述了总体的抽样分布,其正式定义如下:

I 如果你有一个均值为 μ 且标准差为 σ 的总体,并且你从该总体中抽取足够大的随机样本,那么样本均值的分布将近似为正态分布。不管源总体是否正常,这都是真实的。

此外,该特定抽样分布的平均值将等于总体的平均值,抽样分布的方差将等于总体的方差除以样本大小。这进一步表明,样本量越大,这种抽样分布就越趋向于常态。

我将试着把上面的陈述放到当前的场景中,使其易于理解。例如,从糖果罐中,如果你开始随机抽样大小为 100。每次你抽取一个样品,计算它的平均重量,然后把糖果放回去,再拿出一个样品,重复这个过程。您将获得所有可能的平均权重值,当根据常见的平均权重将它们分组时,您将获得类似于上图所示的表格。不过会有一点变化,你得到的数字不一定是整数,也可以是小数,比如 8.3 克。将所有的十进制数字分组是不可行的,因此平均重量的频率将根据班级间隔来确定。

例如,上表可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个频率表告诉我们,有 80 个样品的平均重量在 7 克到 8 克之间,120 个样品的平均重量在 8 克到 9 克之间,以此类推。平均体重等级将有发生的频率或次数。为了绘制分布图,频率值将被转换成相对频率或概率值。如果你把所有的相对频率加在一起,你会得到值 1。

如果将类间隔设置得非常小,并进行无限次采样,则中心极限定理表明平均权重类与概率值的关系如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上剧情亮点:

  • 剧情性质很正常。
  • 该地块的平均值为 10 克。
  • 该图的方差将是总体方差/100(样本量=100)。

重复采样后得到的这种分布图称为采样分布

所以现在,CLT 给了我们工具来检查糖果罐中所有可能的无限随机样本,而不仅仅是 1000 个。

回到测试

现在让我们回忆一下最初的问题,我们从 100 颗糖果中抽取一个样本,得到平均重量为 8 克。由于原始索赔的平均重量超过 8 克,我们将计算从总平均重量为 10 克的罐子中抽取随机样本时,获得平均重量为 8 克或更少的概率。如果概率足够高,我们可以得出结论,假设是正确的,或者换句话说,平均重量为 10 克的说法不能无效。如果概率值太小,这意味着从平均体重为 10 克的人群中获得该样本的机会太低&因为我们仍然获得了该样本,所以关于人群平均体重为 10 克的说法是值得怀疑的。到目前为止,通过抽样分布验证样本的概念必须是清楚的。我们现在将进行数学的东西和假设公式。

假设检验

回想之前的假设。糖果罐中糖果的平均重量是 10 克,根据 CLT,罐子的抽样分布将是正态的,其峰值在 10 克,如下所示(我知道我一直在重复这一点:p)。如您所知,对于正态概率分布,如果我们必须计算两点之间的概率,它由这两点之间的曲线下面积给出,如下图所示(概率在 8 和 10 之间):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们想要解析地计算概率值,我们必须使用高斯方程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

应用于当前上下文,我们需要找到平均重量小于或等于 8 克的概率,这将由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们检查一下上述方程中的各种参数

𝜇 =抽样分布的平均值

=人口的平均值

= 10 克

𝜎 =抽样分布的标准偏差

=总体的标准偏差/√n

=总体的标准偏差/√100

将正常变为标准正常

你可能知道,我们可以通过设置 x-均值/标准差= Z,将任何正态分布积分转换为标准正态积分

(z 将是标准正规方程中的新变量)

你可以在这里阅读更多关于正态分布和标准正态分布

标准正态分布是均值为 0,标准差为 1 的分布。

在上面的例子中,𝜇等于人口平均值,标准差等于𝜎/√n,所以我们有:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上述数量被称为 Z 统计量(Zee 统计量),并与假设检验直接相关。

从平均值和标准差计算 Z-statistic 的优点是,我们可以轻松地使用已经公式化的 Z 表来计算概率值。比如这里可用的。

此外,在大多数情况下,如目前的情况,我们不知道总体的标准偏差,在这种情况下,我们计算样本的标准偏差,并将其视为总体标准偏差。

假设检验的步骤

  • 假设关于人口数据的声明是真实的(零假设)。
  • 取一个样本,计算平均值和标准偏差。
  • 使用以下公式计算 Z-统计量
  • 使用 Z 统计从 Z 表中计算概率值(称为 p 值)
  • 基于 p 值拒绝或不拒绝零假设

关于 p 值

你可能会问这样一个问题,什么是概率值,低于这个值我们拒绝零假设。答案是:这取决于具体情况,完全取决于检验假设的人。被认为是阈值的概率值称为显著性水平。在大多数情况下,通常认为显著性水平为 5%。

结案

回到糖果罐。我们目前所知的是

样本平均值= 8 克

群体平均值= 10 克

总体标准偏差(让我们假设它的某个值,在实际场景中,你可以从你得到的样本中计算出来)= 2 克

样本量(n) = 100

显著性水平= 5%(让我们定在 5%)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面的 Z 统计现在可用于计算 p 值(概率),以确定我们的样本有多重要。这里我们将使用可用的 Z 轴工作台。如果您查找 Z 表,您会发现 p 值非常低(远低于我们的显著性水平)。因此,我们可以安全地拒绝糖果罐平均重量为 10 克的无效假设。

延伸阅读

如果你觉得上面的概念很有趣,你可以进一步阅读下面的主题来了解更多关于这个统计学领域的知识。

感谢你阅读这篇文章

过得愉快😊

这篇文章也发表在这里

分享

假设检验和 p 值

原文:https://towardsdatascience.com/hypothesis-testing-p-value-13b55f4b32d9?source=collection_archive---------11-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:【luminousmen.comT2【clipartart.com】T4

最近,我在工作中采用了一种新的方法。我做了一些实验,分析了结果,并用一些统计计算证明,新的方法比现有的方法更好…

是的。!我做了假设测试!!!

我相信保持事情简单,这是理解假设检验的简化方法…

假设检验…

作为人类,我们总是对几乎所有的事情都有疑问。它可以是关于买一栋房子,一辆汽车或者仅仅是吃一个冰淇淋。我们总是认为,巧克力冰淇淋是否比香草好,或者一辆跑车是否比一辆简单的小货车好。同样,企业和研究人员也有一些问题,如新方法是否更好,新产品是否会比现有产品产生更多的收入等等…

为了能够回答这样的问题,我们需要将它们转化为所谓的假设。然后我们需要通过实验、调查和过程来收集数据。在执行一些统计测试之后,最终,我们可以回答所提出的问题。

假设检验是一种统计方法,仅在样本数据的帮助下,用于对整个群体进行决策。为了做出这个决定,我们想出了一个叫做 p 值的值…

假设检验帮助企业和研究人员做出更好的基于数据的决策。

让我们一步一步来…

在这整篇文章中,让我们考虑一个例子,它使事情变得容易理解。

有一家 ABC 公司,想知道欢迎网页的新设计是否会导致更多的网站订阅。因此,让我们考虑下面的符号。

N_new =收到新设计的欢迎网页后,网站的平均订阅用户数

N_old =收到旧设计的欢迎网页后,网站的平均订阅用户数

假设检验用于了解总体参数,如均值和标准差。

第一步:将问题转化为假设

假设是一个论点,作为研究的基础…

要回答的问题转化为 2 个竞争非重叠假设。我们必须做出以下两种类型的假设。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:luminousmen.com

  • 【h₀】零假设

甚至在我们收集任何数据之前,这就是我们认为正确的论点

在这个论证中,我们要检验的两组被认为是相等的或者它们之间没有差别。例如,巧克力冰淇淋和香草冰淇淋一样美味,或者一种新方法给出的结果和现有方法一样差或一样。

因此,该参数通常包含数学运算符,如=、≤或≥。

在我们的例子中,H₀ : N_newN_old

  • 【h₁】替代假设

这就是我们想要证明为真的论点。例如,巧克力冰淇淋比香草冰淇淋味道更好,或者新方法产生的结果比现有方法更好。

因此,该参数通常包含数学运算符,如≦< or >。

在我们的例子中,H₁ : N_new > N_old

第二步:确定显著性水平

显著性水平是当原假设实际为真时,拒绝原假设的概率 。它用α表示。这是在进行实验之前确定的。

在许多统计分析中,我们观察到这样的东西——“具有 95%置信区间的*”。这个陈述实际上告诉了我们显著性水平,*

Confidence Interval = 1 — Significance Level

所以,这里“95%置信区间”告诉我们显著性水平是 0.05。这意味着在被比较的组中有 5%的概率存在差异,而实际上没有差异,即 5%是拒绝零假设的概率。

在我们的例子中,有 5%的概率是N_new > N_old,而实际上N_newN_old

因此,显著性水平用于确定是否应该拒绝或保留零假设。为了拒绝零假设,观察到的数据效应必须是显著的。而当观察到的效应显著时,仅仅意味着我们有信心它是真实的,不是偶然获得的。

通常,医学领域的显著性水平为 1%,研究和商业领域的显著性水平为 5%。

第三步:计算 p 值

p 值是观察零假设结果的概率 。显著性水平是目标值,如果我们想保留零假设,就应该达到这个目标值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:luminousmen.com

因此,只要 p 值小于显著性水平,我们就必须拒绝零假设。较低的 p 值意味着,总体或整个数据具有反对零假设的有力证据。

p 值是根据样本数据计算的。它评估样本数据支持零假设的程度。因此,较高的 p 值表明采样数据确实支持零假设。换句话说,在抽样数据中没有足够的证据来拒绝零假设。

然而,研究人员总是寻找低于显著性水平的 p 值。p — value ≤ Significance Level,意味着采样数据提供了足够的证据来拒绝零假设。换句话说,我们想要证明为真的另一种假设赢得了这场战斗。数据中观察到的效应在统计学上是显著的。

在推断统计学中,p 值有助于确定观察到的效应相对于零假设的显著性。它给研究者支持或拒绝零假设的信心。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:索尔·麦克劳德

从图形上看,具有统计显著性的观测效应的 p 值位于上述概率分布中的阴影区域。“极不可能观察值的区域表示不支持零假设的观察结果。换句话说,当零假设H₀为真时,p 值是获得有利于替代假设H₁的观察统计的概率。

关于 p 值实际计算的更多说明可在这里找到。

第四步:做决定

既然我们已经掌握了拼图的所有部分,现在是做决定的时候了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

布鲁诺·沃尔夫在 Unsplash 上拍摄的照片

为了确定保留哪个假设,将 p 值与显著性水平进行比较。

If p - value **≤** significance level, we reject the null hypothesisIf p - value **>** significance level, we fail to reject the null hypothesis

拒绝零假设意味着我们接受另一个假设。

当我们观察采样数据时,我们可能会在决定保留或拒绝零假设时出错。这些错误的决定被转化为叫做的错误。我们不会在这里详细讨论这些错误,但这是两种错误的概述。

  • I 型错误:

当拒绝零假设的决策出错时,就会出现这种错误。在这个错误中,当零假设H₀为真时,选择替代假设H₁。这也叫假阳性

第一类误差通常用αα表示,即显著性水平。alpha α是我们愿意犯的第一类错误的百分比阈值。

  • 第二类错误:

当保留原假设的决策出错时,就会出现这种错误。在这个错误中,当替代假设H₁为真时,选择了零假设H₀。这个错误也被称为假阴性

然而,这些错误总是存在于统计测试中,在解释结果时必须牢记在心。

感谢阅读!!

我希望,我用更简单的术语介绍了假设检验。如果你喜欢我的文章,给这篇文章一些掌声会让我有动力写更多。你可以在脸书、LinkedIn 和其他社交专业网络平台上自由分享这些信息,这样有需要的人就可以得到帮助。

我随时欢迎你的建议和问题。你可以在 LinkedInTwitterGitHub 上和我联系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值