TowardsDataScience 博客中文翻译 2020(一百九十六)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

卷积神经网络能通过肺部 CT 扫描诊断新冠肺炎吗?

原文:https://towardsdatascience.com/can-a-convolutional-neural-network-diagnose-covid-19-from-lungs-ct-scans-4294e29b72b?source=collection_archive---------44-----------------------

卷积神经网络教程使用计算机断层肺扫描新冠肺炎诊断。

当前的形势使人类面临新的挑战和机遇。在这个不稳定的今天,我们将回归科学,并通过使用一些公开可用的数据,从肺部计算机断层扫描(CT)扫描中创建用于诊断新型冠状病毒的图像分类模型的完整过程。在本练习中,我们将使用下一个数据集、Keras 和 Tensorflow。完整代码的链接是这里

免责声明: 这是一个从零开始构建用于图像分类的卷积神经网络的练习/教程,应用于热点话题新冠肺炎诊断。我们对当前的形势不做任何结论。我们得出的唯一结论是我们的模型在可用数据范围内有多好。

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

新冠肺炎(左)和新冠肺炎(右)没有病例(来源: Kaggle

首先,了解区分两个类有多容易是有好处的——这可以给我们一些贝叶斯分类器错误率的估计。根据这个来源,人类水平的精确度可以估计为 0.97(发现的病毒病例),召回率为 0.7(100 个阴性诊断的人中有 30 个实际被感染)。此外,在数据集描述中,有一个到存储库的链接,该存储库具有一个 F1 分数为 0.85 的模型。

当我们设计这个模型时,我们应该考虑到错过新冠肺炎案例的所有严重性。因此,我们应该密切关注召回度量和第二类错误。更简单地说,当我们的模型预测假阳性时,最好说“对不起,你实际上是健康的”,而不是让感染者照常进行。

数据

我们有 349 个阳性样本和 397 个阴性样本。幸运的是,这个数据集没有偏向任何一个类。所有的图像都有不同的形状,这意味着重塑的必要性。因为我们有一个小的数据集,我们将使用一个验证集作为测试集。但是,我们不会设置种子,这将允许我们在每次重新运行笔记本电脑时获得不同的数据子集,因此它将提供更可靠的性能评估,并保存数据用于培训。在这种情况下,首先将在验证集上调整超参数,但在此之后,我们重新分割数据,在新分割的训练集中重新训练模型,并在看不见的(在此运行中)验证集上进行评估。这样一来,我们的验证集将不会正式成为测试集,因为我们的模型已经在不同的运行中以某种方式(以较小的方式)暴露给它了。但这可能是我们对如此大量的数据所能做的最好的事情了。

准备

让我们从定义超参数开始,稍后我们将对其进行调整:

EPOCHS = 30
BATCH_SIZE = 64
OPTIMIZER = tf.keras.optimizers.Adam(learning_rate=0.01)
img_height, img_width = 248, 248

我们的图像存储在两个文件夹中,每个班级一个。我们将处理 64 个图像块中的数据,我们将把我们的图像重塑成 248x248px 像素的尺寸,因为它们都有不同的形状。我们将使用学习率为 0.01 的 Adam 优化器。在我们的实验中,历元的数量将会改变。

首先,我们需要建立一种将数据输入模型的方法。为此,我们将使用跟随发电机的。由于我们没有用于培训和验证的单独文件夹,我们将让 Keras 处理此事:

train_datagen = ImageDataGenerator(
    rescale=1./255,
    validation_split=0.2)train_generator = train_datagen.flow_from_directory(
    DIR,
    target_size=(img_height, img_width),
    batch_size=BATCH_SIZE,
    class_mode='binary',
    color_mode="grayscale",
    subset='training')validation_generator = train_datagen.flow_from_directory(
    DIR, 
    target_size=(img_height, img_width),
    batch_size=BATCH_SIZE,
    class_mode='binary',
    color_mode="grayscale",
    subset='validation')

模型

现在,让我们定义并拟合一些基本模型——三个卷积层,每个卷积层之后是最大池,之后是密集层,用于生成诊断。由于这是一个二元分类问题,我们将使用 sigmoid 作为输出的激活函数。

def create_model():
    model = Sequential([
        Conv2D(128, 4, padding='same', activation='relu', input_shape=(img_height, img_width, 1)),
        MaxPooling2D(),
        Conv2D(64, 8, padding='same', activation='relu'),
        MaxPooling2D(),
        Conv2D(32, 16, padding='same', activation='relu'),
        MaxPooling2D(),
        Flatten(), #the curve!
        Dense(128, activation='relu'),
        Dropout(0.3),
        Dense(1, activation='sigmoid')
    ])
    model.compile(optimizer=OPTIMIZER,
                  loss='binary_crossentropy',
                  metrics=['accuracy', 'Precision', 'Recall'])
    return modeles = EarlyStopping(monitor='val_loss', mode='min',
                   verbose=1, 
                   patience=7, restore_best_weights=True)hist = model.fit_generator(
        train_generator,
        steps_per_epoch=train_generator.samples // BATCH_SIZE,
        validation_data=validation_generator, 
        validation_steps=validation_generator.samples // BATCH_SIZE,
        epochs=EPOCHS,
        verbose=1, 
        callbacks=[es])

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

我们可以看到,即使是基本模型也仅在几个时期内就达到了相当好的性能。然而,在医疗保健这样重要的领域,这样的表现肯定是不够的。此外,由于我们没有测试集,我们希望有一个健壮的模型,在每次重新运行后都能给出接近的性能——否则,我们可以假设过度适合验证集。

我们可以看到过度拟合很快就发生了——在纪元 5 之后。为了克服它,让我们添加一些数据增强(你可以在这里了解每个参数的作用):

train_datagen = ImageDataGenerator(
    horizontal_flip=True,
    rotation_range=5,
    width_shift_range=0.05,
    height_shift_range=0.05,
    shear_range=0.05,
    zoom_range=0.05,    
    rescale=1./255,
    validation_split=0.2)

即使使用轻微的数据扩充也可能显著提高模型的概化能力!

最初,我们有 598 张图像用于训练,148 张图像用于验证。在引入数据扩充之后,我们现在具有形式上无限数量的样本(因为每个图像可以被无限扩充,例如旋转 1、2、3 度),但是我们在这里实际感兴趣的是获得更鲁棒的模型,该模型将能够做出正确的诊断,尽管图像被轻微旋转或移位。

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

不幸的是,我们没有得到显著的改善,我们的模型在 10-15 个时期后仍然过拟合——我们可以看到,训练损失开始减少,而验证损失开始增加。另一个问题是,由于我们的验证损失从一开始就很低,我们可以假设我们只是获得了良好的初始参数,因此,我们的模型并不稳健(记住,由于我们没有测试集,我们希望用新的分割重新评估我们的模型)。如果我们检查模型摘要,我们将看到我们的模型有 4,987,361 个参数——对于这样一个小数据集来说,这是一个巨大的数字。让我们通过添加更多具有 max-pooling 的卷积层来减少它们(我们还将添加几个密集层,以查看这是否会提高性能):

def create_model():
    model = Sequential([
        Conv2D(16, 1, padding='same', activation='relu', input_shape=(img_height, img_width, 1)),
        MaxPooling2D(),
        Conv2D(32, 3, padding='same', activation='relu'),
        MaxPooling2D(),
        Conv2D(64, 5, padding='same', activation='relu'),
        MaxPooling2D(),
        Conv2D(64, 5, padding='same', activation='relu'),
        MaxPooling2D(),
        Conv2D(64, 5, padding='same', activation='relu'),
        MaxPooling2D(),

        Flatten(),
        Dense(128, activation='relu'),
        Dropout(0.4),
        Dense(64, activation='relu'),
        Dropout(0.5),
        Dense(8, activation='relu'),
        Dropout(0.3),
        Dense(1, activation='sigmoid')
    ])model.compile(optimizer=OPTIMIZER,
                  loss='binary_crossentropy',
                  metrics=['accuracy', 'Precision', 'Recall'])

    return model

现在我们的模型有 671,185 个参数,数量明显更少。

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

但是,如果我们尝试训练我们的模型,我们将看到下一步。我们的模型开始过于“悲观”,并预测所有患者的 COVID。看来我们把模型做得太简单了。

让我们将结构简化如下:

def create_model():
    model = Sequential([
        Conv2D(16, 1, padding='same', activation='relu', input_shape=(img_height, img_width, 1)),
        MaxPooling2D(),
        Conv2D(32, 3, padding='same', activation='relu'),
        MaxPooling2D(),
        Conv2D(64, 5, padding='same', activation='relu'),
        MaxPooling2D(),
        Conv2D(64, 5, padding='same', activation='relu'),
        MaxPooling2D(),

        Flatten(),
        Dense(128, activation='relu'),
        Dropout(0.4),
        Dense(64, activation='relu'),
        Dropout(0.5),
        Dense(8, activation='relu'),
        Dropout(0.3),
        Dense(1, activation='sigmoid')
    ])

    model.compile(optimizer=OPTIMIZER,
                  loss='binary_crossentropy',
                  metrics=['accuracy', 'Precision', 'Recall'])

    return model

这个模型有 2,010,513 个参数——比“不够复杂”的模型多几倍,但比“太复杂”的模型少几倍。因此,该模型在计算上更便宜且更容易训练。

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

现在我们开始看到相当好的结果。在训练期间,该模型经历了“对每个人都预测为正面”的阶段,但是克服了它并回到正确的预测。在大约 40 个时期之后,它仍然开始过度拟合(并且我们在我们的数据的每个片段中看到相同的图片),因此,我们将让我们的模型训练 40 个时期,并在之后评估它。

结果

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

决赛成绩

注意验证和训练集指标之间的差距——这是正常的,并且正在发生,因为我们在预测过程中没有应用丢弃,这为模型提供了全部潜力。

我们观察到模型没有过度拟合,因为验证损失比训练好。然而,如果我们添加额外的神经元、层或过滤器,模型将开始表现不佳,因此我们可以得出结论,我们在模型中没有可移除的偏差。

我们可以使用下一个脚本生成最终报告:

y_pred = (model.predict_generator(validation_generator) > 0.5).astype(int)
y_true = validation_generator.classes

for name, value **in** zip(model.metrics_names, model.evaluate_generator(validation_generator)):
    print(f'**{**name**}**: **{**value**}**')

print(f'F1 score: **{**sklearn.metrics.f1_score(y_true, y_pred)**}**')pd.DataFrame(sklearn.metrics.confusion_matrix(y_true, y_pred), 
             columns=['pred no covid', 'pred covid'], 
             index=['true no covid', 'true covid'])

这将为我们提供:

loss: 0.5895
accuracy: 0.7702
Precision: 0.8358
Recall: 0.7088
F1 score: 0.4625

             pred no covid | pred covid
true no covid   35         |    34
true covid      45         |    34

由于我们没有设定种子,性能可能会略有不同,但准确性在 70–80%之间。我们的模型远非完美——它往往有假阴性问题(与可接受的误差相反——假阳性,正如我们在开始时定义的那样)。

这种模型可以用作预诊断和优先化患者的助手。我们应该记住,我们的模型会给出假阳性和假阴性,因此我们不应该仅仅根据它来做决定。然而,我们可以优先对模型预测到病毒的患者进行医生调查。

结论

我们能够通过从零开始训练模型来取得相当好的结果。由于训练集大小只有大约 600 幅图像,因此该模型的可推广性有限。此外,有可能包括其他类似肺炎的疾病的图像,并看看是否有可能建立一个模型来正确区分它们。这项任务可能会非常困难,我们只需要两个类别——健康人和冠状病毒/其他疾病,因为仅通过 CT 扫描区分肺炎/冠状病毒可能非常困难。

如何制作一个更好的模型 —我们可以采用一个能够诊断类似疾病的预训练模型(或自己对其进行预训练),并对新冠肺炎数据集应用迁移学习。根据我接触过的几位医生的专业知识,肺炎患者的 CT 肺部扫描可能与冠状病毒患者的 CT 扫描非常接近,因此,可以使用这样的数据/模型。我们还可以添加一个辅助输入,比如温度,如果这些数据可用的话。

完整的代码可以在这里找到。数据集可以在这里找到

注意安全,感谢阅读!

数据科学家能代替 DJ 吗?使用 Python 操作 Spotify

原文:https://towardsdatascience.com/can-a-data-scientist-replace-a-dj-spotify-manipulation-with-python-fbbd4a45ffd5?source=collection_archive---------16-----------------------

使用 Spotify 的 API 创建和调整您自己的播放列表

“…一个美丽的旅程,开始是为了调查音乐背后潜在的统计“证据”,最终发现(对于一个数据科学家来说)在方程式背后也有“音乐……”

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

诺贝特·布杜茨基Unsplash 上的照片

数据科学非常庞大,并不断扩展到新的行业,提供了大量有价值的(主要是企业)应用。音乐行业就是其中之一。如果我们像对待一个“黑盒”一样对待这些应用程序,我们会观察到一个输入( 数据 )和一个输出( 产品 )。这个项目旨在用 Python 操作 Spotify 音乐数据,有两个范围:

✔️证明了 API(应用编程接口)的存在是非常重要的,在馈送算法方面具有额外的精细 数据

✔️展示了简单的统计数据(当正确应用时)如何编码日常行为,将它们分解成基本元素,并在此基础上构建有价值的 产品

概念

我们将建立一个假设的场景。最近,我作为一名数据科学家工作的数据公司记录了他们的青年营销部门的显著利润,正因为如此,它决定用一个聚会来奖励其年轻客户。在没有 DJ 的情况下,我的主管让我负责音乐,让派对持续到早上!她给了我一些公共关系部门已经创建好的 Spotify 播放列表,以便检查它们并创建最终的播放列表。一般来说,对现代音乐趋势的漠视让我想到了一个微妙的选择:

使用 Python 访问所有播放列表,提取每首歌曲的每一个音频特征,对它们进行统计推理,并将最适合(我们聚会)的歌曲打包成最终播放列表,如何?当然,有一个技术性的问题:我不会听到他们中任何一个人的任何声音!

为了更好地交流结果,提出了一些假设:

#1:我的个人 Spotify 播放列表代表公司给我的播放列表。

#2:该党的目标群体是 18 至 30 岁的年轻人,这意味着…跳舞!然而,他们中的许多人可能会有家人陪同,也就是说,一小部分客人会更好地欣赏欢快的音乐。

#3:在 Spotify 为其开发者提供的音频功能中,仅考虑了danceabilityenergytempoloudness、&、valence(见第 2 节)。这是因为,在我看来,它们能更好地表达一首曲目是否适合一场舞会。

#4:有两种方法可以改善选择的播放列表;分别移除或添加被视为“坏”或“好”的轨道(涉及一个或多个音频特征)。为了扩大最终的播放列表,我只采用了后者。

作案手法

为了完成我们的使命,必须遵循以下路线图:

  1. 设置环境来运行代码。
  2. 向 Spotify API 发出请求,获取所有相关的音乐数据并提供简要说明。
  3. 使用 Numpy、Pandas &多个额外的 Python 库执行 EDA (探索性数据分析),以数字和视觉方式探索候选播放列表。
  4. 选择—使用几个统计技术优化最合适的播放列表。

1.建立

在这一节中,我们将设置所需的环境,以便应用分析技术。如果您已经准备了下面列出的任何部分,您可以分别跳过它们。

  • 申请一个 Spotify 开发者账号,创建一个 app。[ 在这个过程中,您将创建一个客户端 ID,并为您的应用程序提供一个客户端密码
  • 安装JupyterNotebook——一个开源网络应用程序,用于创建/共享包含实时代码、公式、可视化和叙述性文本的文档。你可以在这里按照步骤进行
  • 安装spot ipy——一个用于访问 Spotify Web API & 请求的轻量级 Python 库——一个用于处理 API 的 Python 模块。您可以使用 CLI(命令行界面)或 Jupyter 笔记本来运行以下命令:

install.py

  • 导入必要的库:

import.py

  • 执行授权代码流。【我写的一个分步指南在GitHub上有;照着做,你就会没事的。

授权. py

⚠️请注意,您可以选择通过相应地设置环境变量来临时提供凭据,而不是直接通过笔记本来声明凭据:

set_env_var.py

2.数据解释和获取

Spotify 为其开发者提供了许多描述音轨特征的音频功能(参见此处了解音频功能对象的更全面的解释)。下面我列出了我们将要使用的特性,以及一个简短的解释:

  • Valence : [0.0 -1.0]描述轨道听起来有多“积极”。高价意味着更积极的声音(如愉快、欣快等)。
  • Loudness : [-60.0 - 0db]描述音轨的整体响度,或者说是声音的质量,它是与体力(振幅)相关的主要心理因素。
  • Tempo:以 BPM(每分钟节拍数)描述轨道的整体估计速度,直接从平均节拍时间长度得出。
  • Energy:【0.0-1.0】描述活动和强度的感知度量。高能量的轨道感觉很快,很响,很吵。
  • Danceability:【0.0-1.0】根据音乐元素(速度、稳定性、节拍强度等)的组合,描述轨道是否适合跳舞。较低的值意味着适合跳舞的轨道较少。

数据获取部分分 3 步完成:( a )访问用户播放列表,( b )获取每个播放列表的曲目,以及©获取每个曲目的音频特征。对于每一步,我都创建了一个函数,它实现了相应的 Spotipy 方法。

(a)访问用户的播放列表

fetch_plst.py

该函数返回一个数据帧,包含用户的播放列表’idname和曲目数量#tracks。显然,有 4 个候选播放列表:

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

playlists数据帧

(b)获取播放列表的曲目

fetch_trcs.py

这个函数将playlist_id作为一个参数,并返回一个数据帧,包括每个音轨的track_idtrack_name。我们不直接调用它,而是在下面的函数中使用它。

©提取音轨的音频特征

fetch_aud_ftrs.py

给定playlist_id作为参数,该函数返回每个音轨的track_idname和音频特征(danceabilityenergytempoloudnessvalence)。因此,对于 4 个播放列表中的每一个,我们都创建了相应音频特征的数据帧:

aud_ftrs.py

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

df_dinner数据帧样本

我们只是通过纯粹的编码获得了所有必要的数据,仅仅依靠 API 的力量!让我们看一下分析的主要部分。

3.电子设计自动化(Electronic Design Automation)

在减少杂乱的脉络中,我这里不包括数据可视化代码,但是在 GitHubrepo上有。

首先,我们在一个单独的情节中描绘了所有播放列表的音频特征,以便容易地察觉哪个(些)最适合聚会。

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

音频功能水平条形图

显然, PartyPop 播放列表取代了其他两个,从整体上考虑了这些特性。仔细观察这两者,我们可以更好地了解哪一个占优势…

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

df_party & df_pop横条图

除了danceability特性,其余都是针对播放列表的较高。这意味着这是我们必须选择和构建的一个,以便完善最终的播放列表。

4.播放列表优化

主要范围是尽可能增加播放列表的音频功能。但是,增加一个功能可能会减少另一个功能,因此我们必须优先考虑它们。个人感觉按照假设#2,danceability ( 少年)应该是首要特征,其次才是valence ( 家庭成员)。

变量是定量的,同时也属于测量的比例尺度。因此,盒须图可以有效地描述每个特征的个体分布。这样的图和描述性统计表(通过pandas.DataFrame.describe方法)一起,可能会给我们提供一个很好的视觉直觉,告诉我们属于每个特定四分位数的值的比例。

下面详细介绍了原始的df_party数据框架,突出显示了danceabilityvalence平均值、第二(中间)和第三四分位数:

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

df _ 交易方描述性统计&箱线图

垂直的黄线是中间值,而▴符号象征着中间值。我们通常的目标是将每个特性的分布尽可能向右“推”,也就是说,沿着玩家的轨迹增加它们,以获得更好的“聚会”体验!假设#4,我们添加来自df_pop(第二个入围播放列表)的曲目,每次寻找机会:

  • 要么向右移动平均值(增加平均音频特征)
  • 或者将中间值移到平均值的右边(确保至少 50%的歌曲高于平均值)
  • 或者两者都有

方法一

一个好的起点是从df_pop中抽取一个样本,并将其添加到主样本(df_party)中,除了它不会是随机的。通过利用pandas.DataFrame.sample()函数和weights参数,我们可以预先配置danceability值越大,越有可能对相应的行进行采样。这种方法产生的数据帧是df_party_exp_I ( exp 代表 expanded )。

样本 _I.py

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

df_party_exp_I 描述性统计&箱线图

  • 主音频特性danceability增加;平均值上升了近 0.5,分布也略有优化。中位数和第三(上)四分位数已经向右移动,分别从 68.20 移动到 69.30,从 77.20 移动到 78.90。
  • 然而,valence特征减少了 0.61,并且没有一个四分位数向右移动。考虑到这一点,我们应该寻找进一步优化的机会。

方法二

这一次,我们将实现 NumPy 布尔索引,并过滤 Pop 播放列表,只返回符合我们指定标准的行。特别是我们将danceabilityvalence的特性分别设置在播放列表的各自均值之上,分别为 69.55 和 51.89(参考笔记本)。

样本 _II.py

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

df_party_exp_II 描述性统计和箱线图

  • danceability增加了更多。这次均值涨了差不多 2.17!随着中值和上四分位数向右移动,沿该特征的音轨分布也被优化,这实质上意味着至少 50%的播放列表高于主要声学特征的“新的”较高平均值(71.71)。
  • 然而,valence特性下降了 4.21,第二和第三四分位数仍然高于平均值。

方法三

一个特性的优化并不一定意味着其他特性都是一样的。为了改善这个缺点,我们将引入一个方程,其变量是声学特征,参数是我们分配给它们的权重。由于我们非常重视danceability的特性,因此相应的权重应该更高。我的拆分如下:

得分=(可跳舞性* 30) +(能量* 20) +(速度* 20) +(响度* 10) +(价数* 20)

我们为播放列表的每一首曲目计算这个分数(创建一个新列score),然后计算各自的描述性统计数据。这样,我们可以更好地评估丰富df_party的每个动作,同时在每个特性上实现更均匀的(根据权重)优化。

简而言之,df_partydf_party_exp_I、&、df_party_exp_II分别表示score为 7355、7215、7416。显然,尽管方法 I 带给我们比原始播放列表更好的danceability,但它恶化了派对的整体体验(平均值score从 7355 下降到 7215)。就第二种方法而言,平均值score上升了将近 62 分。然而,我们可以永远超越这些方法…

这一次,通过使用新引入的score列,我们将过滤df_pop数据帧,并获取注意到比df_party平均值更高的score的行。从而,增加后者!

sample_III.py

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

df_party_exp_III 描述性统计&箱线图

事实上,这一次:

  • danceability特征上升了近 1.17,valence上升了 4.06 ( 均值右移)
  • 两种分布都得到了改善(中值移至平均值的右侧)
  • score注意到了 122.3 的数值,这是目前为止最好的!(在上下文中意味着更高的潜力,播放列表在加权音频特征中更加一致)

作为健全性检查,我们应该一次描绘和比较所有的盒状图——这可能看起来有点拥挤。幸运的是,变量的性质(见上文)允许使用 KDE(内核密度图)。

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

KDE 地块

现在,越来越清楚的是,方法 III (绿色分配)是最好的,因为它实现了更高的右移。

最后,我们最终得到的数据帧(df_party_exp_III)包含了最终的音轨。唯一悬而未决的行动是将其转换成一个真正的播放列表。下面,第一个函数创建最终的播放列表,参数是它的名字(熊猫…还有什么?)和一段描述。另一个是从数据帧迁移磁道。请注意,授权流将再次运行,这一次使用不同的范围(playlist-modify-public)。你只需再次跟随向导即可。

create_plst.py

enrich_plst.py

create_plst.py

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

播放列表数据帧

瞧啊!

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

作者照片

结论

迄今为止,我们已经走了很长的路;我们处理了数百首曲目,检查了它们的音频特征,最终选择了最适合派对的曲目,只使用了 Python 和。这样,我们设法完成了最初提出的任务:

✔️:我们展示了简单的(描述性的)统计和编码——当适当结合时——是如何计算出像这样耗时的活动的。

✔️:我们“尝到了”请求一个可用 API 的重要性,以便提取有意义的数据。

回到题目的问题,几乎不可能(至少目前)很自信地回答这个问题。无论我们是否从 DJ 或数据科学家的角度“深入”音乐现实,(本质上的意思是)无论工作是在甲板上还是在桌子上完成,无论是关于调音乐器还是只是…解方程,当然没有人会反对前者。更别说去打扰这样一个时刻的壮丽…

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

JamakassiUnsplash 拍摄的照片

但是,就精确度、灵活性和对大量音乐数据集的彻底处理而言,后者可以通过几行代码指导计算机体面地执行任务。也就是说,有一件事是理所当然的:

数据科学已经找到了另一个扩展和繁荣的“利基”,这意味着统计数据背后确实有“音乐”,就像节拍背后有数学一样…

感谢您的阅读&祝您度过愉快的一周!Jupyter 笔记本准备立即运行。如果有任何问题,请在下面留言。无论如何…

克隆 repo ,运行代码……让Pandas摇滚起来!

机器可以进行性别分类吗?

原文:https://towardsdatascience.com/can-a-machine-classify-genders-3119d6e39377?source=collection_archive---------28-----------------------

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

照片由艾丽莎·斯蒂文森Unsplash 上拍摄

使用 matplotlib 探索美国 100 年的名字,并建立一个机器学习模型来从名字中分类性别。

前言

我们的名字并不总是定义我们,但它们确实给了我们一种认同感。给我们自己贴上一系列字母和单词的标签给我们的自我意识提供了一种结构,并锚定了我们在这个世界上的存在。

“他们怎么称呼你并不重要,重要的是你如何回应。”—厕所场地

动机

不知何故(和非常奇怪的),通过我们的生活经历,我们知道,如果一个人名叫“ XYZ ,那么他或她很可能是一个“小的像这个或有一点点“那个”。

在将一个人的个性映射到一个名字的过程中,我们可能正确,也可能不正确(在我的例子中,大部分是不正确的),但我想知道机器是否能做得比我更好。

作为一个简单的试金石,我认为性别是一个人的身份之一。激励性的问题是—

你能从一个人的名字预测他或她的性别吗?

出奇的简单,不是吗?然而,这并不像看起来那么容易。文化和语言的差异使得这项任务变得困难。

这促使我建立了一个基本的机器学习模型,看看它是否能比我更好地预测一个人的性别。

完整的代码可以在我的 GitHub 资源库中找到。

数据源

那么,机器从哪里可以获得大量的生活经验呢?当然是通过历史上精心整理的数据!一个这样的来源是美国婴儿名字目录,可以在 data.gov 买到。

这一数据由社会保障管理局免费提供和公布。它包含从 1919 年到 2018 年每个州的社会保障卡应用程序中的名字及其出现频率。

数据预处理

我下载了这个数据,它是每个州的文本文件的集合。每个文本文件包含在给定年份中出现至少 5 次的所有名字。我稍微清理了一下数据,最终的串联数据集占用了将近 320 MB 的内存!

<class 'pandas.core.frame.DataFrame'>
Int64Index: 6028151 entries, 0 to 28019
Data columns (total 6 columns):
 #   Column  Dtype 
---  ------  ----- 
 0   yob     int64 
 1   name    object
 2   gender  object
 3   number  int64 
 4   state   object
 5   chk     int64 
dtypes: int64(3), object(3)
memory usage: 321.9+ MB

(注:此处为每个姓名指定的性别与文本文件中的数据一致。可下载的 zip 文件中还有一个有用的自述文件,它解释了数据集的某些特性)

探索性数据分析

我想探索一下数据,并可视化一些汇总统计数据。

1)过去 100 年中最常见和最不常见的 100 个名字

每年都有一些父母喜欢的名字,而单词云有助于形象地表现这种现象。

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

过去 100 年中最常见的 100 个名字(图片来源:作者)

举个例子,女孩通常被称为伊丽莎白凯瑟琳玛格丽特 ( 仅举几个)而詹姆斯威廉约翰一直是男孩的流行名字。除了常见的名字,了解一点不常见的名字也很有趣。

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

过去 100 年中最不常见的 100 个名字(图片来源:作者)

一些真正有趣且不常见的女孩名字是拜林塞尔达德马尼,而男孩的名字是罗德里乌斯贾马尔凯尔冯

2)2018 年前五名

2018 年的前 5 名是女孩中的艾玛奥利维亚艾娃伊莎贝拉索菲亚。利亚姆**、诺亚威廉詹姆斯奥利弗是排名最高的男孩名。**

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

2018 年前 5 名(图片鸣谢:作者)

3)2018 年排名靠前的名字的历史

为了了解这些名字过去的受欢迎程度,我绘制了 2018 年前 5 名名字的时间序列。有趣的是,艾玛奥利维亚一直是历史上流行的女孩名字,而艾娃伊莎贝尔索菲亚在 20 世纪 80 年代后开始流行。

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

2018 年排名靠前的女性名字的历史受欢迎程度(图片来源:作者)

在男孩的名字中也可以观察到类似的趋势。詹姆斯威廉这些年来一直很受欢迎,位列前 10 名。利亚姆诺亚奥利弗在 1980 年后越来越受欢迎。

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

2018 年排名靠前的男性名字的历史受欢迎程度(图片来源:作者)

4)可视化 2018 年各州的姓名流行度

我还想可视化 2018 年排名前 10 名的受欢迎程度,一个简单的方法是创建一个排名的合唱团。

(这也给了我玩 Imageio 的机会,一个创建 gif 的简单库。这个 岗位 崔永 博士担任真是大用

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

2018 年十大女名人气(图片鸣谢:作者)

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

2018 年十大男性名字人气(图片鸣谢:作者)

5)名称的长度

我想知道男孩的名字是否比女孩短。所以我把名字长度绘制成直方图。似乎女孩的名字比男孩稍长,大多数名字大约有 5 个字母长。

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

过去 100 年的名称长度(图片来源:作者)

6)名字的最后一个字母是元音

我有一种奇怪的感觉,女孩的名字往往以元音结尾,而男孩却没有。为了测试这一点,我绘制了一个饼图。我的假设是正确的。女孩的名字大多以元音结尾,尤其是“a”和“e ”,而男孩的名字大多以“e”或“o”结尾。

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

以元音结尾的姓名百分比(图片来源:作者)

从名字预测性别

好了,现在让我们开始有趣的东西。机器能从名字预测性别吗?为了帮助它,我根据从数据探索中获得的见解设计了一些功能。

1)特征工程

将名称转换成 ASCII 值

名字是专有名词,我真的不想遵循语义的方法。相反,我将名称中的每个字母转换成它的 ASCII 值,并计算每个名称的平均 ASCII 值。

ascii_mean('Albert')
>>> 100.33333333333333ascii_mean('Amelia')
>>> 97.5

名称的长度

我创建了一个包含每个名字长度的新特性,即每个名字的字母总数。

元音和辅音的数量

我假设,一般来说,女孩的名字中有更多的元音,而男孩有更多的辅音。为了量化这个假设,我创建了两个额外的特征——一个名字中元音和辅音的数量

姓名的最后一个字母

假设是女孩的名字比男孩的名字更可能以元音结尾。为了量化这种信念,我创建了一个具有二进制值的特性——如果一个名字的最后一个字母是元音字母,则为 1,否则为 0。

有了这 4 个特征,我想让我的二元分类器把名字分为“男”类或“女”类。

(这是一个纯粹基于数据可用性的 2 类问题。数据集仅识别了这两种性别)

2)从名字中分类性别

我建立了两个非常简单的模型——一个逻辑回归分类器和一个支持向量分类器。我按照 70:30 的比例将数据分为训练集(24245 个名字)和测试集(10392 个名字)。

我感兴趣的是构建一个没有过多修饰、没有过多超参数调整的模型。所以我完全避免创建验证集。其目的是做有趣的,不严肃的预测!

逻辑回归分类器

逻辑回归模型具有 67.8%的灵敏度(或回忆)和大约 68.3%的特异性,这相对好于随机预测。预测女性的准确率为 76%,预测男性的准确率为 58%。

这意味着,尽管该模型可以在 68%的情况下正确预测性别,但它在预测女性时比男性犯的错误要少得多。

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

支持向量分类器

具有线性核的 SVC 给出了比逻辑回归模型更低的灵敏度(64.5%)。特异性为 72.5%,优于以前的模型。预测女性的准确率接近 78%,预测男性的准确率为 57%。

换句话说,SVC 可以正确地预测一个名字属于男性,比预测一个名字属于女性要好得多。但是,与预测男性相比,预测女性的错误要少得多。

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

我对机器

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

图片提供:【https://gph.is/g/aQQ9R9V

现在真正的考验来了——我能比我建造的机器更好地预测性别吗??

为了找到答案,我从数据集中随机选择了 10 个名字(当然掩盖了他们的性别),并让我自己与训练过的机器进行对抗。

游戏结果如下所示—

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

玩家的表现可以通过一系列问题来理解—

Q1:当名字实际上属于女性的时候,玩家正确 ( 专业术语:回忆或者敏感 )

我:83%的时间

机器(两者):83%的时间

**Q2:当玩家预测一个名字为女性时,玩家正确的几率有多大**专业术语:精度 )

我:100%的时间

机器(两者):71%的时间

Q3:当名字实际上属于男性的时候,玩家正确 ( 用专业术语来说:回忆或者敏感 )

我:100%的时间

机器(两者):50%的时间

Q4:当玩家预测一个名字为男性时,玩家正确 ( 用专业术语来说:精度 ) 的几率有多大?

我:80%的时间

机器(两者):67%的时间

谁赢了??你决定吧。

原来如此!

对我来说,这是一个快速而有趣的项目,让我学到了许多有趣的概念。我希望你喜欢它,并欢迎任何改进或调整模型的意见!

再见!

一个神经网络可以训练其他网络吗?

原文:https://towardsdatascience.com/can-a-neural-network-train-other-networks-cf371be516c6?source=collection_archive---------18-----------------------

知识提炼导论

如果你曾经使用过神经网络来解决一个复杂的问题,你就会知道它们的规模可能是巨大的,包含数百万个参数。例如,著名的伯特模型大约有 1.1 亿英镑。

为了说明这一点,这是 NLP 中最常见架构的参数数量,正如最近由内森·贝纳奇伊恩·霍加斯撰写的《2020 年人工智能报告的状态》中所总结的。

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

给定架构中的参数数量。资料来源:【2020 年人工智能状况报告作者内森·贝纳奇伊恩·霍加斯

在 Kaggle 竞赛中,获胜者模型通常是由几个预测器组成的集合。虽然它们在精确度上可以大幅度击败简单模型,但它们巨大的计算成本使它们在实践中完全无法使用。

有什么方法可以在不扩展硬件的情况下,利用这些强大而庞大的模型来训练最先进的模型?

目前,在保持预测性能的同时压缩神经网络有三种主要方法:

在这篇文章中,我的目标是向你介绍知识提炼的基本原理,这是一个令人难以置信的令人兴奋的想法,建立在训练一个更小的网络来接近大网络的基础上。

什么是知识蒸馏?

让我们设想一个非常复杂的任务,比如对几千个类进行图像分类。通常情况下,你不能简单地使用 ResNet50 并期望它达到 99%的准确率。所以,你建立了一个模型集合,平衡了每个模型的缺陷。现在你有了一个庞大的模型,尽管它表现出色,但没有办法将其部署到生产中并在合理的时间内得到预测。

然而,该模型对看不见的数据进行了很好的概括,因此可以放心地相信它的预测。(我知道,情况可能不是这样,但现在让我们开始思想实验吧。)

如果我们使用来自庞大而笨重的模型的预测来训练一个更小的,所谓的学生模型来逼近大模型,会怎么样?

这实质上是知识的提炼,在 Geoffrey Hinton、Oriol Vinyals 和 Jeff Dean 的论文中介绍了这一点。

大致来说,这个过程如下。

  1. 训练一个执行和概括都非常好的大型模型。这就是所谓的教师模型
  2. 利用你所有的数据,计算教师模型的预测。包含这些预测的总数据集被称为知识、,预测本身通常被称为软目标。这是知识提炼步骤。
  3. 利用之前获得的知识训练较小的网络,称为学生模型

为了形象化这个过程,您可以考虑以下内容。

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

知识升华(图片由作者提供)

让我们稍微关注一下细节。知识是如何获得的?

在分类器模型中,类别概率由一个 softmax 层给出,将 逻辑 转换成概率:

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

在哪里

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

是由最后一层产生的逻辑。代替这些,使用稍微修改的版本:

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

其中 T 是一个称为温度的超参数。这些值被称为软目标

如果 T 较大,则类概率“较软”,即它们之间的距离会更近。在极端情况下,当 T 接近无穷大时,

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

如果 T = 1 ,我们得到 softmax 函数。出于我们的目的,温度被设置为高于 1,因此命名为蒸馏

Hinton、Vinyals 和 Dean 表明,一个经过提炼的模型可以和由 10 个大型模型组成的集合表现得一样好。

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

知识提取由 Geoffrey Hinton、Oriol Vinyals 和 Jeff Dean 撰写的论文在神经网络中提取知识中的一个语音识别问题

为什么不一开始就培养一个小网络呢?

你可能会问,为什么不从一开始就训练一个更小的网络呢?不是更容易吗?当然,但是它不一定会起作用。

经验证据表明,更多的参数导致更好的泛化和更快的收敛。例如,Sanjeev Arora、Nadav Cohen 和 Elad Hazan 在他们的论文《深度网络的优化:过度参数化的隐式加速》中对此进行了研究。

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

左图:单层网络与 4 层和 8 层线性网络。右图:使用张量流教程的 MNIST 分类的过度参数化与基线模型。来源:深度网络优化:过度参数化的隐式加速作者:Sanjeev Arora、Nadav Cohen 和 Elad Hazan

对于复杂的问题,简单的模型很难在给定的训练数据上进行很好的归纳。然而,我们拥有的不仅仅是训练数据:教师模型对所有可用数据的预测。

这对我们有两方面的好处。

首先,教师模型的知识可以教会学生模型如何通过训练数据集之外的可用预测进行归纳。回想一下,我们使用教师模型对所有可用数据的预测来训练学生模型,而不是原始的训练数据集。

第二,软目标提供了比类别标签更多的有用信息:表示两个类别是否相似 *。例如,如果任务是对狗的品种进行分类,那么像“柴犬和秋田犬非常相似”*这样的信息对于模型的泛化非常有价值。

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

左:秋田犬。右图:柴犬。来源:维基百科

迁移学习的区别

正如 Hinton et al. 所指出的,通过转移知识来压缩模型的最早尝试之一是重用经过训练的集合的某些层,正如 Cristian Bucilu、Rich Caruana 和 Alexandru Niculescu-Mizil 在他们 2006 年题为“模型压缩的论文中所做的那样。

用 Hinton 等人的话说,

“…我们倾向于用学习到的参数值来识别训练模型中的知识,这使得我们很难看到如何改变模型的形式,但保持相同的知识。对知识的一个更抽象的观点是,它是从输入向量到输出向量的一种习得性映射,这种观点将知识从任何特定的实例化中解放出来。”— 在神经网络中提取知识

因此,与迁移学习相反,知识提炼不直接使用学习到的权重。

使用决策树

如果您想进一步压缩模型,可以尝试使用更简单的模型,如决策树。虽然它们的表达能力不如神经网络,但它们的预测可以通过单独查看节点来解释。

这是由 Nicholas Frosst 和 Geoffrey Hinton 完成的,他们在论文中将神经网络提取为软决策树中对此进行了研究。

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

来源:将神经网络提取为软决策树

他们表明提取确实有一点帮助,尽管甚至更简单的神经网络也胜过它们。在 MNIST 数据集上,提取的决策树模型达到了 96.76%的测试准确率,这比基线 94.34%的模型有所提高。然而,一个简单的两层深度卷积网络仍然达到了 99.21%的准确率。因此,在性能和可解释性之间有一个权衡。

蒸馏伯特

到目前为止,我们只看到了理论结果,而没有看到实际例子。为了改变这一点,让我们考虑一下近年来最流行和最有用的模型之一:BERT。

最初发表在 Google 的 Jacob Devlin 等人的论文 BERT:用于语言理解的深度双向转换器的预训练中,它很快被广泛用于各种 NLP 任务,如文档检索或情感分析。这是一个真正的突破,推动了几个领域的技术发展。

然而,有一个问题。BERT 包含约 1.1 亿个参数,需要大量时间来训练。作者报告说,训练需要 4 天,在 4 个吊舱中使用 16 个 TPU 芯片。按照目前可用的 TPU pod 每小时价格计算,培训成本将在 10000 美元左右,还不包括碳排放等环境成本

通过拥抱脸成功尝试了减少 BERT 的大小和计算成本。他们使用知识提炼来训练 DistilBERT,它的大小是原始模型的 60%,速度快 60%,并保持了 97%的语言理解能力。

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

蒸馏器的性能。来源:蒸馏伯特,伯特的蒸馏版本:更小、更快、更便宜、更轻作者:维克多·桑、弗拉达利·佩登、朱利安·肖蒙德、托马斯·沃尔夫

较小的架构需要更少的时间和计算资源:在 8 个 16GB V100 GPUs 上运行 90 小时。

如果你对更多细节感兴趣,你可以阅读原文 DistilBERT,一个 BERT 的蒸馏版本:更小,更快,更便宜,更轻,或者总结文章是其中一位作者写的。这是一个奇妙的阅读,所以我强烈建议你这样做!

[## 🏎更小,更快,更便宜,更轻:介绍伯特,伯特的精华版本

你可以在这里找到代码来重现呆伯特的训练以及呆伯特的预训练权重。

medium.com](https://medium.com/huggingface/distilbert-8cf3380435b5)

结论

知识提炼是压缩神经网络并使其适用于功能较弱的硬件的三种主要方法之一。

与权重剪枝和量化这两种强大的压缩方法不同,知识提取并不直接减少网络。相反,它使用原来的模型来训练一个更小的模型,叫做学生模型。由于教师模型甚至可以对未标记的数据进行预测,因此学生模型可以学习如何像教师一样进行归纳。

在这里,我们已经看到了两个关键的结果:最初的论文,介绍了这个想法,以及后续的,表明简单的模型,如决策树,可以用作学生模型。

如果您对该领域的更广泛概述感兴趣,我推荐下面这篇文章,它就发表在这里的《走向数据科学》:

[## 知识蒸馏——穿越时间的调查

通过这个博客,你将回顾知识蒸馏(KD)和六篇后续论文。

towardsdatascience.com](/knowledge-distillation-a-survey-through-time-187de05a278a)

如果你喜欢把机器学习概念拆开,理解是什么让它们运转,我们有很多共同点。看看我的博客,我经常在那里发表这样的技术文章!

[## 如何用量化加速和压缩神经网络

从浮点数到整数

towardsdatascience.com](/how-to-accelerate-and-compress-neural-networks-with-quantization-edfbbabb6af7) [## 你能移除 99%的神经网络而不损失准确性吗?

权重剪枝简介

towardsdatascience.com](/can-you-remove-99-of-a-neural-network-without-losing-accuracy-915b1fab873b)

AI 算法会有偏差吗?

原文:https://towardsdatascience.com/can-ai-algorithms-be-biased-6ab05f499ed6?source=collection_archive---------26-----------------------

定义、检测和避免偏见

人工智能算法越来越多地被用于广泛的领域,以做出影响我们日常生活的决策。例如,招聘、医疗保健、刑事司法、信用风险评分等。它不仅被私营企业使用,也被政府使用。

一般来说,使用人工智能或机器来做决定的一个好处是——它们可能是公正、客观的,可能不会像人类一样带有偏见,因此可能更“公平”。最近的一些研究表明,人工智能系统也可能有偏差。

公共图像数据库 Imagenet 最近删除了 60 万张图片,因为一个艺术项目揭露了其图片中的种族偏见。所有这些都导致了对人工智能偏见的认识增加,并提出了与许多人工智能系统的信任有关的基本问题。

什么是偏见?

在我们深入这个话题之前,定义偏见是很重要的。这是维基百科的一个定义

偏见是指对一个观点或事物的或不相称的重视,通常以一种狭隘、偏见或不公平的方式。**

已经有很多关于人类遭受的偏见的研究,诺贝尔奖获得者丹尼尔·卡内曼在他的优秀著作思考快与慢中谈到了人类直觉中的各种偏见

人类通常遭受的偏差的一个例子是— **确认偏差。**它被定义为以一种确认或加强一个人已有信念的方式搜索、解释和回忆信息的倾向。虽然有人可能认为互联网的出现和我们可获得的信息(数据)的爆炸会让我们找到“真相”,但确认偏差是让人们选择性地解释信息并与他们已经相信的东西挂钩的因素。

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

确认偏差

人工智能偏差的案例研究

人工智能偏见的一个著名案例研究是美国法院用来评估被告成为惯犯的可能性的系统。对该软件的一项调查发现,虽然该系统是为最大化整体准确性而设计的,但非裔美国人的假阳性率是白种人的两倍。

另一个流行的案例研究是——亚马逊的人工智能招聘工具。亚马逊开发了一个工具来帮助招聘,帮助筛选简历。它是根据亚马逊内部招聘决策的 10 年数据进行训练的。当发现这个工具更有可能选择男人而不是女人时,亚马逊后来决定废弃这个工具

偏差的数学定义

虽然到目前为止我们所回顾的都是好的,但是偏见和公平的定义在法律、社会科学和哲学中有着长期的争论。很难就这些的确切定义达成共识。在人工智能模型的背景下,更棘手的是我们需要用数学术语来定义它,因为人工智能系统只理解数字和数学运算。

区分偏差和随机误差很重要。人工智能系统犯错并不罕见,这是因为它们是复杂现实世界的简化。但偏差是系统误差,它以某种可预测的方式发生。偏见可能会导致一个人对个人或团体做出不公平的行为。

一些人试图通过平衡不同群体(如性别、种族等)预测中的假阳性和假阴性率来定义人工智能系统中不存在偏差。但是这个定义不够普遍,因为偏见可能以各种形式表现出来。坦率地说,这仍然是一个开放的研究领域。

偏见是如何蔓延到人工智能系统中的?

一个自然的问题是,人工智能系统是如何产生偏差的?即使它们没有被明确地编纂成有偏见的,它们能有偏见吗?以下是人工智能系统可能出现偏差的一些可能原因:

  • **属性选择:**如果在算法中使用年龄、性别、种族等属性,算法可以学习这些属性与目标之间的关系,这可能会导致算法出现偏差。
  • **数据收集/采样:**很多时候,数据收集或采样的方式可能会导致某个群体代表性过高或过低,从而导致偏见。波士顿市政当局有一个关于街道颠簸应用的著名案例研究,该研究旨在检测路面坑洼,表明较富裕的社区有更多颠簸,只是因为生活在富裕社区的人更有可能使用该应用。
  • **数据中的隐含偏差:**大多数人工智能系统从提供给它们训练的数据中学习模式。很多时候,这些数据可能是由带有固有偏见的人生成的。如果是这种情况,最终的人工智能系统也会反映这些偏差,因为人工智能系统的好坏取决于训练它们的数据。我之前说的 Imagenet 事件就是这种类型的一个很好的例子。
  • 优化指标:人工智能系统通常会训练最大化/最小化某个指标,例如整个数据的错误率。当人工智能系统忙于做这些事情时,不能保证它不会做任何我们人类认为“不公平”的事情。

怎样才能避免 AI 偏见?

虽然这仍然是一个开放的研究领域,但你可以采取以下步骤来减轻你的人工智能应用中的偏见:

  • 使用有代表性的数据:尝试积极寻找数据中的偏差来源和/或数据收集和采样的方式。仔细研究数据是如何被注释的,以及人们注释数据的动机。
  • **对模型进行审核:**仔细检查你的模型的预测,比较和对比你的预测在不同子群体中的假阳性和假阴性率。受法律保护的子群体可能是一个很好的起点。
  • 关注模型的可解释性:许多人工智能系统可能类似于黑匣子,对它们为什么做出某种预测的洞察力有限。有很多关于模型可解释性的研究工作正在进行——更好地理解为什么模型会做出某种预测可能有助于发现和消除偏差
  • 第三方工具:有各种第三方工具可以帮助你在 AI 生命周期的不同阶段评估偏见。看看 IBM 的 AI Fairness 360 开源工具包的例子
  • **雇佣多元化的团队:**团队的多元化可能有助于在寻找偏见的途径时引入多元化的观点。

摘要

人工智能应用最近出现了惊人的增长。有一些真实的例子对人工智能系统做出的决定的公平性提出了质疑。重要的是处理偏见问题,以便人工智能系统继续享有组织和群众的信任。在这个领域有很多有前途的工作正在进行,让我们希望所有这些将使人工智能应用更加公平,让这个世界成为每个人生活的更好的地方。

人工智能如何帮助金融科技算法管理你的财务?

原文:https://towardsdatascience.com/can-ai-facilitate-fintech-algorithm-to-manage-your-finances-2c11a1afec74?source=collection_archive---------53-----------------------

“小心小开支。一个小漏洞能使一艘大船沉没。”——本杰明·富兰克林

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

Austin Distel 在 Unsplash 上拍摄的照片

根据 GoBanking Rules 2019 年的一项调查,约 70 %的美国人储蓄不足 1000 美元。调查还显示,甚至有 45 %的人根本没有存款或证券。这些数字是从一项调查中反映出来的,当时美国经济强劲,由于新冠肺炎疫情的高失业率,这一数字可能会增加。

人工智能(AI)和对金融领域的理解的一致新兴趋势,可以为努力优化其货币目标的个人创造机会。机器学习技术可以识别漏洞,并产生最大化个人财富的意识。有效地管理自己的收入和支出是走向财务自由的第一步。不幸的是,大多数个人甚至公司都在努力优化他们的财富管理,并经常在金融危机期间宣布破产。技术已经意识到这种新兴的需求,并通过有效设计的算法为个人和公司提供了改善其财务活动的空间。

正如俗话所说*“小心小开支。一个小漏洞能使一艘大船沉没。*

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

克里斯·里德在 Unsplash 上拍摄的照片

什么是 Fintech?

Fintech 是科技与金融领域的新兴合作产业。首要目标是创新和改进传统的财务方法。它应用于保险、银行、股票交易,甚至企业项目的风险分析和管理。最受欢迎的金融科技应用之一是移动银行和支付。这个选项允许个人以更方便和更快的速度进行金融交易。它被认为是个人使用第三多的移动应用程序。

根据 statista.com 的数据,截至 2020 年 2 月,北美约有 8775 家金融科技初创公司。这是从 2019 年起 大约 52%的增量 。技术和金融是最受欢迎的领域,因此两者之间的合作可以创造新的机会。在地理领域的采用中发挥主要作用的一些因素包括互联网可用性和金融科技公司对其网络安全的信任。

金融科技公司的各个类别包括:个人金融、华尔街、投资、借贷、房地产、加密和区块链以及支付选项。

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

福布斯 2019 金融科技公司资金分布【数据来源:Forbes 2019/Fintech】

该饼图显示了金融科技公司各个类别的资金分布情况。最高的大多偏向支付选项,加密货币最少。在积累资金方面,crypto 落后于的原因是因为(I)它是一个相对较新的概念,(ii)价格波动,(iii)政府管制对自由大规模渗透到主流交易中的障碍。支付专业的金融科技公司设计算法来监管现金流分析。房地产金融科技平台(fintech platforms)作为一个自动借贷平台,提供了识别房地产合格投资者的机会。投资 fintech 应用程序通过分析个人客户的财务目标和风险承受能力,提供资产管理方面的 rob-advisors。

人工智能在金融科技中的作用

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

照片由 Unsplash 上的 David Shares 拍摄

人工智能算法可以发挥预测作用,以改善个人或大公司的资产管理。它可以跟踪导致客户债务组合增加的显著和经常性支出。金融数据管理对于预测经济的未来至关重要。AI 算法可以通过智能编程处理这些大的金融数据,预测客户投资策略。这些数据也可以用来预测欺诈活动。

机器学习在财富管理中的应用

第一步

机器学习可以在优化投资组合选择中发挥关键作用。在量化投资组合管理中,人工智能可以调查驱动因素,如跨多样化投资组合的分析、历史数据、股权价值、风险管理和其他关键驱动因素。数学模型可以从这样的数据管理中发展出来。

第二步

风险管理是投资组合管理的一个重要因素,因此人工智能可以帮助识别多样化的股票并分配比例权重以最小化风险。

第三步

确定单个投资组合的时间表和风险水平。根据可用数据进行预测分析

第四步

改变变量,以确定能产生最佳 ROI(投资回报)的理想投资组合。

使用人工智能进行客户投资组合管理的示意原型

智能人工智能驱动的投资组合管理设计的定量算法相对复杂。网络安全方面也成为需要纳入设计的重要参数。但是,我们采用了一种方法来显示客户财富管理的拟议用户界面和示意流程图设计的简要概述。

移动或桌面用户界面(UI)是需要仔细设计的主要目标,以确保客户参与应用程序或平台。用户登录和密码加密是确保客户隐私和数据安全的一部分。

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

本杰明·罗宾·叶斯柏森在 Unsplash 上的照片

为了为你的客户获得满足他们期望的最佳投资组合,充分理解他们的期望是至关重要的。这通常包括一系列问卷调查,旨在更好地了解你的客户。这些问题可能包括一些细节,例如:你的客户的目标是长期投资(至少一年)还是短期投资(3 个月)。你的客户愿意投资的最大金额,风险承受能力,例如,如果客户的风险承受能力较低,更安全的选择如政府债券(是首选),或者对于更高的风险承受能力,投资者可以选择华尔街投资(高风险高回报)。需要理解风险回报概念,并且应该对算法进行编码,以最好地定制风险回报预期。

下面的 c++代码可以简要概述客户和金融科技平台之间关于投资组合管理的预期查询。

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

关于客户投资组合管理的基本查询的 C++代码

蒙特卡罗树搜索(MCTS) 是 AI 驱动的概率算法。它包括分析不同的选项,以找到一个比当前操作更优化的选项。MCTS 算法在其学习阶段(机器学习)评估备选策略,并确定它是否比以前或现在的交易提供更好的回报。这种技术已经应用于模拟游戏环境,但应用于金融领域时,可以提供更好的预测结果。

结论

回答题目上的第一个问题,是绝对的是的。人工智能在金融领域的集成可以持续显示出改进的性能。机器学习提供了对大量金融数据更快的评估和执行。与人工交互相比,它耗时相对较少,并且可以以更高的准确度处理大多数数据。金融科技初创公司表现出更快的增长率,这表明市场对该技术的需求正在上升。

参考文献

[1]帕特里克·舒费尔(2016)。驯服野兽:金融科技的科学定义。创新管理杂志。第 32-54 页

[2]梁家杰和宋(2018 年)。FinTech(金融科技):什么是 fintech,如何利用技术以 fin tech 的方式创造商业价值?。国际创新、管理与技术杂志9 (2),74–78。

[3]卡尔卡特拉,卡尔,W. A .,&拉奥,V. K. (2019)。稳定的加密货币-一阶原理。可在 SSRN 3402701 处获得。

[4]刘,刘春明,戴德思,2020 .量化交易中基于组合优化的长短期记忆网络股票预测。应用科学10 (2),437 页。

[5]法博齐,F.J 投资管理的理论与实践:资产配置、估价、投资组合构建和策略,第 2 版。;约翰·威利父子公司:美国新泽西州霍博肯,2011 年;第 198 卷,第 289-290 页。

[5]露西娅,R. J. (2012 年)。美国专利申请号 12/957,211

AI 能找到 ET 吗?

原文:https://towardsdatascience.com/can-ai-find-et-eb752c1737e5?source=collection_archive---------38-----------------------

人为因素是一个重大障碍。

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

图片作者:Merzmensch

2010 年 12 月。美国宇航局的紧急电话。关于一项可能颠覆我们对宇宙生命的所有概念的重大发现的新闻发布会。社交媒体上充斥着关于即将到来的不明飞行物和绿人的谣言:

美国宇航局将于美国东部时间 12 月 2 日周四下午 2 点举行新闻发布会,讨论一项天体生物学发现,该发现将影响对外星生命证据的搜寻。(来源)

数百万人盯着电视屏幕和直播。因此,美国国家航空航天局首先介绍了上个世纪最具革命性的科学发现。

“生命的定义刚刚扩大了”,美国宇航局科学任务理事会副主任埃德·魏勒说。“当我们继续努力寻找太阳系中的生命迹象时,我们必须更广泛、更多样化地思考,并考虑我们不了解的生命。”(来源)

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

GFAJ-1(来源:NASA)

这是他们的发现。菌株 GFAJ-1 ,γ原生菌。一种微生物。住在加州砷莫诺湖。在一个普通生物无法生存的湖中。

“我们知道一些微生物可以呼吸砷,但我们发现的是一种微生物正在做一些新的事情用砷构建自身的一部分,”Felisa Wolfe-Simon 说,他是美国宇航局天体生物学研究员,在加利福尼亚州门洛帕克的美国地质调查局常驻,也是该研究小组的首席科学家。“如果地球上有什么东西能做出如此出人意料的事情,那么生命还能做什么我们还没见过的事情呢?”(来源)

[## “砷虫”的发现扩大了生命的定义

2010 年 12 月 2 日:美国国家航空航天局支持的研究人员发现了地球上第一个已知的微生物能够茁壮成长和…

science.nasa.gov](https://science.nasa.gov/science-news/science-at-nasa/2010/02dec_monolake)

很快,失望的声音似乎溢出了溪流。公众感到被愚弄了,因为他们没有看到双头外星人。其他科学家正试图揭穿这一发现。《石板》以“这篇论文本不该发表”为题总结了所有这些说法*电影之火荒谬。”*致命缺陷。

Wired 对批评进行了评估,并在争论中发现了许多不一致之处,其主要目标似乎是平息围绕这一发现的炒作。

因为核心信息仍未被听到:

生命的定义扩大了

这确实意味着:我们以前对生命和生命友好环境的概念是狭隘的,只与我们知道的东西有关。科学保守主义,作为对投机和江湖骗子的防御措施,使科学对新方法视而不见。

回想一下,几个世纪前,学术界的同事嘲笑让·弗朗索瓦·商博良的断言,那些装饰性的古埃及图片和装饰品是书面语言,而不仅仅是一些仪式符号,这是众所周知的!

人工智能寻找外星生命?

十年后,我们有了新的问题。我们从事深度学习是为了科学需求:疾病检测(电晕任何人?),模式探测,现在——寻找外星生命形式。

但这是主要的障碍。

今天,我们生活在人工智能在许多科学和技术应用中的使用激增的时代,包括寻找外星智能(SETI)。然而,人类感知决策仍然是任何数据分析或解释结果或结果的最后一环——加布里埃尔 G .德拉托雷在他的论文中写道:“人工智能会梦到非地球的技术签名?”

这就是问题所在。

甚至计算机也可能倾向于将形状识别为外星文明的证据[…]——然后人类可能会被欺骗而相信它们是真实的— 独立 写道。

加百利·g·德拉托雷和加的斯大学的其他科学家进行的一项研究证明了这种情况:

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

奥卡托尔,谷神星上的一个陨石坑有不寻常的形成和亮点,来源:美国宇航局

  1. Occator 上的神秘建筑被剪短给人类和 AI
  2. 人类探测到几何图形正方形
  3. AI (训练正方形和三角形)找到三角形
  4. 在人工智能的结果展示给人类之后,他们倾向于像以前一样看到更多的三角形。他们现在受人工智能结果的影响。

这些实验表明了以下问题:

  • 在特定数据库上训练的人工智能只检测与训练数据一致的模式(=重新认知)
  • 人类受到高度影响;此外,他们更有可能相信人工智能的感知(=反馈偏差)

简而言之,如果我们使用人工智能来检测不寻常的模式和形成,我们不能依赖我们的人类感知。我们也不能依赖人工智能,如果它在人类准备的特定数据库中接受训练(这意味着识别已知模式)。

寻找其他外星生命形式时,我们无法记住自己众所周知的生物概念和生存策略。我们必须换一种方式思考。

让熟悉变得陌生

我们应该改变我们的思维模式。

让熟悉变得陌生。

这是来自麻省理工学院人类学和科学史专业学生克莱尔·韦伯的建议,被 Space.com 引用在一篇标题为:

为了找到智慧的外星生命,人类可能需要开始像外星人一样思考。

我们应该防止路灯效应。我们应该想出这个框——这个现在流行的词的原意。

而如果我们应用 AI,正确的方式应该是什么,你觉得呢?

  • 让深度学习以未知的方式蓬勃发展?
  • 在偏差减少的数据库上进行无监督学习?
  • 用完全不同的思维方式来感知人工智能的结果?

我们如何才能让人工智能像人类一样思考——而不仅仅是以更好的计算方式?但是以新人工智能视觉的方式?

我们正面临着感知的新时代,它在许多方面不同于传统的时代。因为:感知是一种约定俗成的东西,对文化或全球心态有偏见和影响。就像我们的人工智能模型在数据集上被训练,被人类贴上了糟糕的标签。

灵感来自周刊 AI 摘要作者里士满阿拉克

AI 能帮助对抗电晕吗?

原文:https://towardsdatascience.com/can-ai-help-in-fighting-against-corona-72cdb9c4e2e0?source=collection_archive---------43-----------------------

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

图片来自 Pixabay图米苏

在这个艰难的时刻,呼吁数据专业人员采取行动

感到无助?我知道我是。

随着整个关闭的情况,我认为曾经是我内向的自我的天堂,当它实际发生时,看起来并不那么好。

我真的无法想象在家里呆多久。这种无能为力的无助感于事无补。

老实说,我很想在这种可怕的情况下提供更多帮助,但这里有一些小想法,我们作为人工智能从业者和数据科学家可以有所帮助。

捐赠你的计算能力

NVIDIA 正在要求游戏玩家捐赠他们的计算能力来支持 folding@home。

我想说的是 我们数据科学家手头肯定有基础设施在这方面提供帮助。

我们只需点击几下鼠标就可以完成很多事情。这有点像即时的满足感,但总比什么都不做好。

你只需要在这里下载并安装他们的软件。我为我的 windows 系统下载了fah-installer _ 7 . 5 . 1 _ x86 . exe文件。你也可以为 MAC 和 Linux 下载它。如果你没有图形处理器,你也可以帮助 CPU 资源。

当被问及“自定义安装”或“快速安装”时,我选择了推荐的选项“快速安装”。你可以给团队“电脑大师赛-PCMR”编号 225605。您可以将密钥保留为空,或者如果您想要跟踪您所做的工作,您可以获得一个密钥。

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

还可以控制捐赠给事业的系统资源。如果您不使用任何大量的计算,我建议您使用 full。我捐赠了我的两个 GPU 和 CPU。到目前为止,我已经能够捐赠大约 3 个工作单位。

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

想出新颖的方法来帮助

引起很多关注的一件事是缺乏适当的测试程序。例如,在英国,目前的建议是,由于缺乏测试,在出现轻微感冒症状时进行自我隔离。此外,由于缺乏测试,许多数字并不完全可靠,可能是错误的。

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

来源

所以当我看到 Adrian Rosebrock 的博客时,我感到惊喜,他试图使用新冠肺炎 X 射线图像数据集(由Joseph Cohen**)**以及来自 Kaggle 胸部 X 射线图像(肺炎)数据集 的正常 X 射线图像来创建一个自动新冠肺炎探测器。

至于结果,他们看起来很有希望:

正如您从上面的结果中看到的,我们的自动新冠肺炎检测机仅基于 X 射线图像(没有其他数据,包括地理位置、人口密度等)在我们的样本数据集上获得了大约 90–92%的准确率。用来训练这个模型。我们也获得了 100%的灵敏度和 80%的特异性

这些结果太棒了。100%的灵敏度意味着能够捕捉到所有的积极因素。并且它可以被用作电晕的初步测试。但是,我不确定这些 X 射线是在哪个阶段拍摄的,因为这也将发挥重要作用。你可以在 pyimagesearch 上查看详细帖子。他提到的缺乏数据,这在这个时间点上是完全可以理解的。但是,如果这种方法可行,并与手头的其他变量一起工作,它可能有助于检测日冕。

我们能想出其他新颖的方法来帮助那些需要帮助的人吗?

通过数据传播意识,缓解谣言

处理数据的一个好处是我们养成了理解各种偏见的习惯。许多数据科学家同事一直在做的另一件重要的事情是创造意识和唤起不同的偏见。

我特别喜欢这篇由 fast.ai 创始人杰瑞米·霍华德和雷切尔·托马斯发表的帖子,它提供了关于冠状病毒的数据科学观点。**

此外,请仔细阅读 Cassie Kozyrkov 的这篇文章,它讨论了围绕 Corona 的各种偏见,并试图对整个情况采取假设检验的方法。我特别喜欢她帖子中的这一部分:

如果没有相关信息,继续做你计划要做的事情。当不同的动作被触发时,执行它。

* [## 更明智的新冠肺炎决策

如何将决策科学的合理原则应用于疫情

towardsdatascience.com](/smarter-covid-19-decision-making-39dbff2ab2ba)*

这还不够,但是…

我知道这还不够,说实话还非常少。

要解决整个局势,需要在实地做很多工作。但除了洗手,我还想到了其他一些事情。

此外,我们可以讨论数据科学界可以帮助应对这一巨大挑战的任何想法。我想做得更多。

AI 能让你成为更好的运动员吗?

原文:https://towardsdatascience.com/can-ai-make-you-a-better-athlete-74dc0c041cce?source=collection_archive---------72-----------------------

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

利用机器学习分析网球发球和点球

戴尔·马科维茨 — 11 分钟阅读

啊,体彩。你能忘记第一次你抓住那个传球,飞向球场,把那个冰球直接投进球网,而你的球迷在看台上崇拜地大喊,触地得分!

没有吗?没有印象吗?我也没有。这就是你在高中学习微积分和在饼干蛋糕上涂圆周率而不是做运动的结果。

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

Clint Bustrillos 在 Unsplash 上拍摄的照片

用机器学习对地下城&龙族中的角色分类

丹·奎奇 — 10 分钟读完

几个月前,一个朋友邀请我加入他的在线龙与地下城活动。尽管我有着令人尊敬的书呆子名声,但我从未真正玩过 DnD。我并不是反对它,事实上,它听起来很有趣,我喜欢它鼓励合作和机智的创造力。也许这可以避免我在新冠肺炎的单独禁闭中写论文所带来的单调生活。

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

图片由 Gerd Altmann 在 Pixabay 上提供

嵌入图形数据库的计算节点:Neo4j & its 图形数据科学库

通过 Estelle Scifo — 7 分钟阅读

现在的机器学习都是关于向量的。执行分类任务要求将数据排列成行(观测值),每行包含相同数量的要素(列)。虽然这很容易从最初存储在 Excel 表或 SQL 或 noSQL 数据库中的数据中获得,但当问题涉及复杂对象(如文本、图像或图形)时,转换就远不明显了。

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

图片来自 Pixabay 的 Thomas Breher

基于学习嵌入的推荐系统

通过纳希德·阿拉姆 — 6 分钟读取

推荐系统是试图预测用户偏好的现代消费者网络应用的基本构件。有不同的方法来建立推荐系统。我们对基于最近邻的方法特别感兴趣。我们研究一个项目的配对之间的相似性,并推荐给用户

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

马文·朗斯多夫在 Unsplash 上的照片

期望最大化解释

Ravi Charan — 11 分钟阅读

期望最大化(EM)是 60 年代和 70 年代发展起来的经典算法,具有多种应用。它可以用作无监督聚类算法,并扩展到 NLP 应用,如潜在的狄利克雷分配、用于隐马尔可夫模型的 Baum–Welch 算法和医学成像。

AI 能让你成为更好的运动员吗?利用机器学习分析网球发球和点球

原文:https://towardsdatascience.com/can-ai-make-you-a-better-athlete-using-machine-learning-to-analyze-tennis-serves-and-penalty-kicks-f9dd225cea49?source=collection_archive---------38-----------------------

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

啊,运动球。你能忘记第一次你抓住那个传球,飞向球场,把那个冰球直接投进球网,而你的球迷在看台上崇拜地大喊,触地得分!

没有吗?没有印象吗?我也没有。这就是你在高中学习微积分和在饼干蛋糕上涂圆周率而不是做运动的结果。

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

你认为这让我交了多少朋友?

是时候让你一去不复返了。当然,除非你想出一种方法,利用高中的数学知识成为一名更好的运动员。

这就是我们今天要看的!在这篇文章中,我将向你展示如何使用机器学习来分析你在自己选择的运动中的表现(例如,我将使用我的网球发球,但你可以很容易地将该技术应用到其他比赛中)。顺便说一下,这个项目的灵感来自于我最近对扎克·阿基尔的采访,他用同样的技术分析了足球比赛中的点球。

用机器学习制作关于用人工智能跟踪点球的剧集。

机器学习已经在体育运动中发挥了作用:公司用它来识别球员的独特才能,更早地发现伤病,并安排最佳球员交易。此外,几乎每项职业运动(NFL、NHL、MLB、NBA、足球、高尔夫、板球等)都使用 ML 技术进行跟踪。例如,NBA 已经在球场上部署了一个复杂的基于视觉的系统,跟踪球员的动作,读取他们球衣上的数字,分析他们传球的速度,并确定他们在压力下的投篮精度。

但是作为一个初学者,我喜欢用同样的技术简单地告诉我哪里做错了,哪里出错了。理想情况下,当我在网球场上时,我会在我的手机上安装一个应用程序,分析我发球的视频,并给我提供有用的提示(例如,“伸直你的手臂”,“弯曲你的膝盖”)。在这篇文章中,我将向你展示让这样的应用成为可能的核心技术。

想直接跳到代码?在 Github 上查看 代码

利用机器学习分析我的网球发球

几周前,我去了一个网球场,支起三脚架,拍了一些我发球的镜头。我把它寄给了我的朋友 JT,他是一名网球教练,我问他我做错了什么。他给我发回来一堆我和职业网球运动员的对比照片,并指出了我们所有的不同之处——我手臂的整个轨迹和肘部的角度都相差很远。

JT 所做的很有用——他分析了我发球中与专业运动员不同的关键部分。如果机器学习模型可以做同样的事情,那不是很好吗?将你的表现与专业人士进行比较,让你知道自己做的有什么不同?

根据 JT 的反馈,我决定关注服务的三个方面:

  1. 我发球时膝盖弯曲了吗?
  2. 我击球时手臂是直的吗?
  3. 我击球后球的实际速度是多少?(这只是出于我个人的兴趣)

通过姿势检测分析姿势

为了计算我的膝盖和手臂的角度,我决定使用姿势检测——一种机器学习技术,它分析人类的照片或视频,并试图定位他们的身体部位。有很多工具可以用来做姿势检测(如 TensorFlow.js ),但对于这个项目,我想尝试一下新人检测(beta!)谷歌云视频智能 API 的特性。(你可能会从我的人工智能视频存档中认出这个 API,在那里我用它来分析我的家庭视频中的对象、文本和语音。)人物检测功能可以识别一大堆身体部位、面部特征和服装。来自文档:

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

首先,我把我网球发球的视频剪辑到我发球的部分。因为我只拍到了 17 次发球,这花了我大约一分钟的时间。接下来,我将视频上传到谷歌云存储,并通过视频智能 API 运行它。所有这些代码都被方便地记录在一个 Colab 笔记本中,你可以在自己的视频上运行它(你只需要一个谷歌云账户)。该笔记本甚至向您展示了如何设置身份验证和创建存储桶等等。有趣的是——分析姿势——是这样的:

def detect_person(input_uri, output_uri):
    """Detects people in a video."""

    client = videointelligence.VideoIntelligenceServiceClient(credentials=service_account.Credentials.from_service_account_file(
    './key.json'))

    # Configure the request
    config = videointelligence.types.PersonDetectionConfig(
        include_bounding_boxes=True,
        include_attributes=True,
        include_pose_landmarks=True,
    )
    context = videointelligence.types.VideoContext(person_detection_config=config)

    # Start the asynchronous request
    operation = client.annotate_video(
        input_uri=input_uri,
        output_uri=output_uri,
        features=[videointelligence.enums.Feature.PERSON_DETECTION],
        video_context=context,
    )

    return operation

要调用 API,您需要传递云存储中存储视频的位置,以及云存储中视频智能 API 可以写入结果的目的地。

在这里,我调用视频智能 API 的异步版本。它分析谷歌后端的视频,在云中,甚至在我的笔记本电脑关闭后。这对于长视频来说很方便,但是也有这个 API 的同步和流版本!

当视频智能 API 分析完我的视频后,我用这个由 @wbobeirne 打造的简洁工具将结果可视化。它会吐出这样简洁的可视化视频:

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

使用视觉 API 来可视化我在发球时的姿势。

姿态检测是训练机器学习模型的重要预处理步骤。例如,我可以使用 API 的输出(我的关节随时间的位置)作为第二个机器学习模型的输入特征,该模型试图预测(例如)我是否在发球,或者我的发球是否会过网。但是现在,我想做一些更简单的事情:用高中数学分析我的发球!

首先,我绘制了我的左手腕和右手腕随时间变化的 y 位置:

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

一段时间内我手腕的高度(以像素为单位)

这看起来可能很混乱,但是这些数据实际上非常清楚地显示了一个服务的生命周期。蓝线显示了我左手腕的位置,在我用球拍击球前几秒钟,我的左手腕达到了最高点(右手腕的最高点,或橙色线)。

利用这些数据,我可以非常准确地说出我在什么时间点投球并击球。我想把它和我击球时肘部的角度对齐。为此,我必须将视频智能 API 的输出——原始像素位置——转换成角度。你是怎么做到的?余弦定律,!(开个玩笑,这个我肯定忘了,得查一下。这里有一个很好的解释和一些 Python 代码。)

余弦定律是将空间中的点转换成角度的关键。在代码中,这类似于:

class Point:
  def __init__(self, x, y):
    self.x = x
    self.y = y 

def getAngle(a, b, c):
    ang = math.degrees(math.atan2(c.y-b.y, c.x-b.x) - math.atan2(a.y-b.y, a.x-b.x))
    return ang

 def computeElbowAngle(row, which='right'):
  wrist = Point(row[f'{which}_wrist_x'], row[f'{which}_wrist_y'])
  elbow = Point(row[f'{which}_elbow_x'], row[f'{which}_elbow_y'])
  shoulder = Point(row[f'{which}_shoulder_x'], row[f'{which}_shoulder_y'])
  return getAngle(wrist, elbow, shoulder)

def computeShoulderAngle(row, which='right'):
  elbow = Point(row[f'{which}_elbow_x'], row[f'{which}_elbow_y'])
  shoulder = Point(row[f'{which}_shoulder_x'], row[f'{which}_shoulder_y'])
  hip = Point(row[f'{which}_hip_x'], row[f'{which}_hip_y'])
  return getAngle(hip, shoulder, elbow)

def computeKneeAngle(row, which='right'):
  hip = Point(row[f'{which}_hip_x'], row[f'{which}_hip_y'])
  knee = Point(row[f'{which}_knee_x'], row[f'{which}_knee_y'])
  ankle = Point(row[f'{which}_ankle_x'], row[f'{which}_ankle_y'])
  return getAngle(ankle, knee, hip)

查看笔记本,了解所有细节。使用这些公式,我绘制了我的肘部角度随时间的变化曲线:

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

随着时间的推移,我右肘的角度

通过对齐我手腕的高度和我肘部的角度,我能够确定角度大约是 120 度(不是直的!).如果 JT 没有告诉我要寻找什么,这将是一个很好的应用程序来捕捉我的手臂角度与专业人士不同,并让我知道。

我用同样的公式计算了我的膝盖和肩膀的角度。同样,在笔记本上查看更多细节。

计算我发球的速度

姿势检测让我计算我身体的角度,但我还想计算我用球拍击球后的速度。为了做到这一点,我必须能够随着时间的推移跟踪微小、快速的小网球。

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

正如你在这里看到的,这个网球有点难以辨认,因为它很模糊而且很远

我用 Zack 在他的足球码头项目中的方式处理这件事:我训练了一个定制的自动视觉模型。

如果你不熟悉 AutoML Vision ,这是一种使用深度神经网络建立计算机视觉模型的无代码方式。最棒的是,你不需要了解任何关于 ML 的知识就可以使用它!最糟糕的是成本。它很贵(一分钟后会详细说明)。

AutoML Vision 允许您上传自己的标记数据(即带有标记的网球)并为您训练一个模型。

用自动视觉训练目标检测模型

首先,我拍摄了一段 30 秒钟的我上菜的视频,并将其分割成单独的图片,我可以用这些图片作为视觉模型的训练数据:

ffmpeg -i filename.mp4 -vf fps=10 -ss 00:00:01 -t 00:00:30 tmp/snapshots/%03d.jpg

您可以从我提供的笔记本中运行该命令,或者如果您安装了 ffmpeg,也可以从命令行运行该命令。它采用 mp4 并创建一组快照(这里 fps=20,即每秒 20 帧)作为 jpg。-ss标志控制快照应该在视频中多远开始(即在 1 秒时开始“搜索”),标志-t控制应该包括多少秒(本例中为 30 秒)。

创建完所有快照后,您可以使用以下命令将它们上传到 Google 云存储:

gsutil mb gs://my_neat_bucket  # create a new bucket
gsutil cp tmp/snapshots/* gs://my_neat_bucket/snapshots

接下来,导航至谷歌云控制台,并从左侧菜单中选择视觉:

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

创建一个新的 AutoML 视觉模型并导入你的照片

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

快速回顾:什么是机器学习分类器?这是一种从例子中学习如何标记事物的模式。因此,为了训练我们自己的 AutoML 视觉模型,我们需要提供一些带标签的训练数据供模型学习。

上传数据后,您应该会在 AutoML Vision 的“图像”选项卡中看到它:

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

在这里,你可以开始应用标签。点击进入图像。在编辑视图(如下)中,您可以单击并拖动一个小边框:

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

AutoML 视觉数据标注界面 Gif 图

恭喜你,你刚刚开始了一个漫长而有益的职业生涯作为一个数据标签。下一站,麻省理工!

对于我的模型,我手工标记了大约 300 张图片,花了我大约 30 分钟。一旦你标记完数据,只需点击一下就可以用 AutoML 训练一个模型——只需点击“训练新模型”按钮,然后等待。

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

当您的模型完成训练后,您可以在下面的“评估”选项卡中评估其质量。

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

如你所见,我的模型相当精确,大约 96%的精确度和召回率——热狗!

这足以让我在照片中追踪球的位置,从而计算出它的速度:

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

这里非常小,但是你可以看到那个小的边界框在跟踪网球。

一旦你训练好了你的模型,你就可以使用 Jupyter notebook 中的代码来制作一个可爱的 lil 视频,就像我上面画的那样。

然后,您可以使用它来绘制球随时间变化的位置,以计算速度(有关更多详细信息,请参阅笔记本):

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

网球随时间的 y 位置

不幸的是,我意识到我犯了一个严重的错误,但为时已晚。什么是速度?距离随时间的变化,对吗?但是因为我实际上不知道我、玩家和摄像机之间的距离,所以我不能用英里或米来计算距离,只能用像素!所以我知道我以大约每秒 200 像素的速度发球。好听

*自从我写了这篇文章,一些人认为我应该用一个网球的大小来估计距离。我觉得听起来是个好主意!

现在你有了——一些你可以用来构建自己的运动机器学习训练器应用的技术!

关于成本的一个注记

声明:我在谷歌工作,我免费使用谷歌云。我尽可能在这里推荐免费工具,但是我本能地求助于 GCP,有时我没有注意到代价。

当谈到汽车视觉时,这并不是一个好主意。这是这个项目让我付出的代价:

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

整件事大约要 450 美元。但是,在你被$$完全拒绝之前,让我们来分解一下:

我训练了两个 AutoML 模型,两个模型的训练成本都是 91.11 美元。当然,这是昂贵的,但质量相当高,也许对于某些业务用例来说,这是有意义的。

真正的成本来自于第一项——自动图像目标检测在线预测。那是什么?这是谷歌为在云中托管你的模型收取的费用,这样你就可以用标准的 REST API 调用它。奇怪的是,即使你没有对这种模式进行预测,你也会不断地被收取托管这种模式的费用,这真的会使成本快速攀升。

好消息是 AutoML Vision 实际上以三种方式运行:

  1. 您可以将模型配置为托管在云中,您可以在任何时候在 REST 端点访问它(最昂贵)。
  2. 您只能在批处理模式下使用它(预测是以异步方式运行的,而不是用于实时用例),这样可以消除大部分额外成本。
  3. 您实际上可以将您的模型训练为可导出的,允许您将其作为 TensorFlow 模型下载并离线使用。这也大大降低了成本。
  4. 或者,您可以完全放弃 AutoML,使用 TensorFlow 或 PyTorch 独自尝试。祝你好运,并让我知道你的选择!

原载于 2020 年 7 月 7 日【https://daleonai.com】

一个算法能选出一个获胜的 NBA 梦幻选秀吗?

原文:https://towardsdatascience.com/can-an-algorithm-pick-a-winning-nba-fantasy-draft-c05342f130f2?source=collection_archive---------20-----------------------

使用数据分析、建模和优化来挑选获胜团队

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

照片由来自 PexelsMarkus Spiske 拍摄

来自《走向数据科学》编辑的提示: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

我喜欢篮球。这是一个快节奏的竞技游戏,我喜欢玩和看它已经很久了。NBA 以生成非常干净的数据而闻名,这些数据长期被爱好者(比如我自己)用于数据可视化建模比赛预测

最近, DraftKings 联系我,询问一份潜在工作的面试事宜。作为准备工作的一部分,我开始使用他们的平台并参加模拟比赛,以熟悉 DraftKings (DK)比赛流程。正是在这段时间里,我真正开始有了用数据来建模和预测一个获胜名单的想法。

我迭代地构建了这个算法,并且从头开始——从一个简单的版本 1 开始,一个更健壮的版本 2,现在我正在开发一个成功的版本 3。

我迭代地构建算法,从头开始

在本文的其余部分,您可以跟随我的算法设计之旅。

快速水平集:评分和规则

DK 为他们的 NBA 经典幻想竞赛制定的规则和评分相当直观,即使你之前没有篮球知识。简而言之,目标是:

创建一个 8 人阵容,同时保持 5 万美元的工资上限。

玩家因不同的动作获得不同的分数(更多细节见下文),在一个晚上所有游戏结束时,分数最高的选秀获胜。听起来很简单:)

导致正(或负)分的不同行动的分类如下所示。

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

NBA 梦幻积分细分。作者照片。

最后一个使起草稍微复杂的限制是球员的位置。根据 DK: 阵容将由 8 名球员组成,必须包括至少 2 场不同 NBA 比赛的球员。

进一步,这 8 名球员按位置细分,如下图所示。

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

NBA 梦幻球员位置。作者照片。

你有它!带有一组约束的简单优化问题。听起来像是算法擅长的事情。或者会吗?

算法版本 1-幼稚

我用这个算法的目标是尽可能快地构建它,几乎没有获胜的希望。主要是因为我对建立强大的基础感兴趣,而不担心在过程早期构建复杂的逻辑。为了做到这一点,我从 DK 下载了一个球员数据集,并启动了一个 Jupyter 笔记本。如果你有兴趣,你可以找到完整的原始数据这里和我的笔记本这里

让我们看看我们的数据是什么样的。

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

玩家数据集- DraftKings。作者照片。

马上,我们可以看出,对于一个简单的算法,给定我们的需求和约束,我们会发现以下几列很有用:ID、Salary 和 AvgPointsPerGame(幻想点数)。这将允许我们挑选“最好的”球员,同时保持在 50,000 美元的工资帽之下。当然,没有位置信息,我们可能会有重叠等。但这是以后版本的问题。请记住,版本 1 应该是您的产品的最简单的实现。

给定这些数据,我们的第一遍优化算法可以分为以下简单步骤:

  1. 从数据集中随机选择 8 名玩家。
  2. 如果球员工资之和大于 5 万美元:回到步骤 1(太贵)。
  3. 否则,对花名册中每个球员的 AvgPointsPerGame 求和,并与主最大值进行比较。如果更大,替换最大值和花名册。
  4. 除非已经探索了所有可能的组合,否则返回步骤 1。一旦不再有组合,返回最大值和花名册。

我们有了:一个简单的天真算法,随机挑选 8 名球员,他们将拥有最大的预期幻想点数,同时保持在 50,000 美元的薪金上限之下。但是这种算法有几个明显的问题:

  • 无法控制球员的位置。因此,该算法可以生成一个包含多于 3 个职位(G/F)的名册,在这种情况下,该名册将是无效的。
  • 没有检查受伤或未安排比赛的球员。这将导致最确定的损失,因为所有球员的分数对一个获胜的选秀都很重要。
  • 最后,该算法效率非常低。考虑到我们需要检查每个可能的花名册:对于给定的球员数量 n 和花名册大小 r,可能的花名册的数量将是-

C( n,r ) = n!/ (n — r)!。r!

为了更好地理解这种复杂性,请看下表,它显示了如果玩家总数为 100 时的检查次数。

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

第一种算法的时间复杂度。作者照片。

可以肯定的是,我们的算法需要很长时间来输出 8 名球员的名单。但是,因为这是一个第一遍算法,我们很高兴我们得到了什么。你可以看到下面的算法,选出前 5 名球员的总工资为 35,000 美元。还不错。

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

算法 1 的输出-最大期望点数低于 35,000 美元总工资的前 5 名球员。注意:第一行显示的是期望的梦幻组合点数,第二行是组合薪水,第三行是玩家的 id,后面是名字。作者照片。

因为我们的任务是构建一个成功的算法,所以我们来谈谈版本 2 的优化。

算法版本 2-中级体育投注者

现在,这就是我们的算法从一个幼稚的优化器变成一个中级体育投注者的地方。基于版本 1 的缺点和阶乘时间复杂性,我决定实现一些数据和算法级优化。

首先,我清理了数据,只包括确认玩游戏的玩家。这是一个将可用玩家总数从 100 人减少到 85 人的简单方法。这可能看起来是一个小的增长,但实际上,对于一个 8 人的花名册来说,当球员总数减少时,我们的检查次数会急剧减少。支票数量的变化如下所示。

  • C (100,8)= 186087894300
  • C (85,8) = 48,124,511,370

我们在算法中的操作(或检查)总数下降了大约 75%!

接下来,我修改了算法本身来挑选特定的位置。现在,算法不是从所有可用的球员中挑选每一个可能的名单,而是从所有可用的后卫中挑选 3 名后卫,然后是 3 名前锋,最后是 1 名中锋。如你所见,这里总共只有 7 个玩家,最后的选择留给用户。这是在算法上节省一些额外时间的快速方法,因为用户可以手动找到剩余的最佳球员(给定剩余工资的最高期望分数)。

这是一个巨大的优化,因为后卫和球员总数的比例是 40 比 85。前锋的数据差不多,中锋的数据更少。请注意,每个类别的球员之间有轻微的重叠,因为一些球员踢多个位置,但这很容易处理:我在选择前锋之前,删除了已经被选作后卫的球员。上述更改带来的性能提升如下所示:

  • C (85,8) = 48,124,511,370
  • C (40,3) x C (40,3) x C (20,1)= 1952288000

这是巨大的。现在,该算法执行的操作减少了约 95%,我们拥有按职位分列的最佳名单,并且在我们的工资帽范围内。让我们来测试我们的结果!

真实世界的结果

如果你已经做到了,恭喜你。你已经解决了技术问题,现在是时候看结果了!我在 DK 的经典乘数竞赛中尝试了三天的算法选择。**每次我的报名费是 1 美元,前 30%的参赛者的回报是 3 美元。**你可以在下面看到算法生成的阵容和结果。

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

第一天——哦,不,以第 26 名结束,还输了钱。作者 DK 截图。

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

第二天——哦,不,又来了,排在第 26 位,又输了 1 美元。作者 DK 截图。

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

第三天-哇哦!排名第三,赚了 3 美元。作者 DK 截图。

正如你从上面的结果中看到的,比赛的真实结果是好的!在我用算法创建阵容的三天里,我们输了两次,赢了一次。我们的中级运动斗鱼算法做得比我预期的要好,但是还有很长的路要走。

我注意到结果的细微差别,包括我们的算法(在 v2 优化之前)在第一天犯了一个错误,一名受伤的球员被选入球队(P. Beverley ),导致了弱草案。这个问题在版本 2 中已经解决,不会再重复。此外,曾经很酷的事情是,尽管有混合的结果,该算法一直创造了超过 200 幻想点的阵容,这是相当高的!

下一步是什么?

好了,你知道了。到目前为止,我已经花了 3 美元的主菜费和 3 美元的奖金,总共 0 美元的变化!在我内心的警钟开始响起之前,我还有 25 美元可以花在这个项目上,所以我显然需要改进这个算法。在和一些比我更了解篮球的朋友交谈后,我有几个假设要验证。其中包括:

  • 在过去的 n 场游戏中使用额外的玩家数据。这样,模型将有更多的上下文,而不仅仅是一个快照值
  • 使用之前的球队比赛数据来调整某些比赛的权重。例如,这有助于避免在一场比赛中挑选一名(根据以前的比赛)表现不佳的球员
  • 探索双重优化策略

还有更多!如果你对如何改进这个项目有任何想法,请随时通过 LinkedIn 或电子邮件联系我,你可以在我的网站上找到。此外,这个项目的所有数据和代码都可以在我的 Github 库中找到,所以请随意克隆/派生它并测试你自己的假设!一如既往,非常感谢所有反馈。

每个人都要保持安全,继续创造酷的东西。

机器学习模型可以阅读股票图表并预测价格吗?

原文:https://towardsdatascience.com/can-an-ml-model-read-stock-charts-and-predict-prices-fb73c551c7a4?source=collection_archive---------18-----------------------

如果你的机器学习模型可以像人类一样阅读股票价格图表,会怎么样?

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

亚历山大·奈特派克斯亚当·诺瓦克斯基Unsplash 拍摄的原始照片

来自《走向数据科学》编辑的注释: 虽然我们允许独立作者根据我们的 规则和指南 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

大多数 ML 模型都试图使用历史价格数据和其他技术指标(即数字输入)来预测股票价格(或股票价格的变化)。但是,我问自己,为什么 ML 模型不能精确地复制人类在股票市场的交易方式?

任何一个普通人都会打开股票价格图表(蜡烛图),试图在价格数据中找到一些模式。也许接下来,应用一些技术指标,查看一下公司基本面,最后根据所有图表和数字输入的综合输出,对股价的下一步走势做出决策。如果一个 ML 模型也能从视觉信息中得出这些结论,会怎么样?

因此,让我们将价格历史时间序列作为可视信息传递给 CNN 模型作为输入。模型会像人类一样识别视觉数据中的模式吗?这个模型的性能会比以数字数据作为输入的模型好吗?好吧,让我们来看看!

在我们开始之前,在我的上一篇文章中,我们探讨了为什么盲目使用 LSTMs 来预测股票价格会给你带来麻烦。你可以在这里阅读。已经看过了?很好,现在我们可以继续了。

接下来,免责声明。 这些都不是财务建议,你也不应该在实践中直接实施。把这当成一个实验,仅此而已。酷,现在先不说这个,我们可以继续我们的实验了!

我们将预测第二天价格运动的方向,而不是预测股票价格,也就是说,股票价格将会上涨、下跌还是横盘整理。我们开始吧!

这篇文章的流程如下:

  • 用 python 获取历史股票数据。
  • 将价格数据转换为可视化表示
  • 用 Tensorflow Keras 建立并训练一个模型。
  • 预测和解释结果。

第一步:获取股票数据

python 中有多种方法可以访问历史股票价格,但是最简单的库之一是 yfinance 。非常方便和免费,它通过从雅虎财经收集数据来完成工作。

!pip install yfinance## Import the required libraries
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltfrom pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

在本文中,我将采用印度股票市场上最大的公司“Reliance”的股票价格,但也可以随意尝试其他工具。

下面这段代码下载 Reliance 大约 18 年(我有意避开 COVID 周期)的股票价格数据,分辨率为 1 天,并将其存储在 pandas 数据帧中。你可以根据你的实验改变这些参数。

打印出熊猫数据框架的头部,你可以看到各种参数,如“开盘价”、“收盘价”、“高”、“低”、“成交量”,可用于股票数据。

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

熊猫数据框架顶部为 Reliance 股票数据

画出“收盘”价格以可视化数据,看看股票在过去几年中上涨得有多好。

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

Reliance 股票数据的收盘价

现在我们将为我们的数据添加一些额外的特征。首先,计算与前一天收盘相比的百分比变化。接下来根据这一变化,产生一个信号:

  • 0(如果变化小于-2.5%)
  • 1(如果变化在-2.5%和-1%之间)
  • 2(如果变化在-1%和 1%之间)
  • 3(如果变化在 1%和 2.5%之间)
  • 4(如果变化大于 2.5%)

数据帧现在看起来像这样:

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

具有附加功能的数据帧

现在,这完全是任意的,你可以随意改变它。您可以将更改分成更多/更少的部分(相应地调整模型的最后一层)。

第二步:股票价格的视觉表现

现在,这一步非常重要,因为它将决定模型看到什么。在这篇文章中,我想让图像尽可能接近人类交易者看到的蜡烛图。一个约束条件是,每个输入图像必须具有相同的尺寸,并且必须包含足够的信息,以便模型从中得出结论。

我们要有一个回望期,比如说过去 50 天 (10 个交易周),要有代表性。为了简单起见,对于这 50 天中的每一天,开盘和收盘,以及价格运动的方向都将被编码。

由于相同维度的图像将被输入到神经网络,它可能不理解这个图像在整个 15 年中的位置。例如,在 2002 年,价格为 80-90 英镑,而随着时间的推移,价格缓慢上升至 1800 英镑。虽然价格模式可能(也可能不)独立于绝对股票价格,但我想在图像中也编码一些这种信息。因此,为了给过去价格及其绝对价格水平的图像提供一些背景,50 天的价格表示将在一个更大的时间窗口中进行缩放,该时间窗口考虑了额外的先前价格值。

生成这个可视化表示的代码是:

从股票价格数据生成图像表示的代码

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

50 天回顾期内开盘和收盘的直观表示

注意:这是一个非常接近我们在烛台图表上看到的视觉表现(这是重点)。但是,您也可以利用您的想象力(和一些判断力)用其他编码参数创建一个完全不同的视觉表示。因为 CNN 模型从图像中观察和学习的方式可能(也可能不会)与我们的方式大相径庭!

接下来,让我们创建一个数据生成器,它将遍历 15 年的数据,并创建图像对和相应的第二天预测。

这些数据生成图像预测批次,如

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

一批 4 个生成的图像及其预测

步骤 3:构建和训练 ML 模型

由于我们将输入作为图像,并要求输出作为三个类别之一(向上、向下、无运动),我们的模型将有几个卷积层,然后是几个密集层,最后是一个 softmax 函数。

让我们启动生成器对象并开始培训。

初始化所有数据生成器对象,并开始训练模型

步骤 4:可视化结果

训练后,损失可绘制为:

plt.plot(history.history['loss'], label='train')
plt.plot(history.history['val_loss'], label='val')
plt.legend()
plt.show()

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

绘制损失图

现在让我们看看测试数据的准确性。

## Evaluating the performance of the model
print(model.evaluate(test_gen,steps = (len(data)-split_test)//batch_size))>>> loss: 1.3830 - accuracy: 0.4375

好吧,给定 5 种可能的结果,随机猜一个的准确度是 0.2。所以这个模型相对来说表现的还不错。还是有?

绘制出预测的输出,很清楚发生了什么。该模型还没有学到任何有用的东西,所以它最终预测“2”作为每个输出,从而导致相对较高的准确性。

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

预测产出与真实产出

那我们再多训练一下模特吧。但现在,验证损失大大增加。另外,测试给出的精度小于 0.3。不太令人鼓舞的是,该模型可能过度拟合了训练数据。一个非常明显的原因是与模型大小相比,训练数据的大小较小。

结束语…

尽管表现并不十分令人鼓舞,但这是一种研究预测股票价格这一古老问题的创新方法。还有一些想法是提供多时间段的输入(比如,也将周数据作为输入),或者额外提供数字数据形式的技术指标(与可视图表并行),或者将价格数据转换到其他可视域(不一定是我们看到的图表),等等。你认为我们还能做些什么来改进这个模型?你还有其他有趣的想法吗?

**在尝试了所有这些想法之后,问题仍然存在——视觉数据提供了数字数据无法提供的优势吗?**你怎么看?

你可以在我的 GitHub 库中找到完整的代码。

最后,我并不是说我是这些领域的专家——我只是提出了我对这个话题的探索,所以请随意指出我的错误或补充我遗漏的任何内容。我很想听到你的反馈。

你想在股票中使用 ML 一夜暴富吗?这篇文章(不)适合你!

[## 如何(不)用 LSTMs 预测股票价格

股票和机器学习——天作之合。但是事情真的像看起来那么简单吗?

towardsdatascience.com](/how-not-to-predict-stock-prices-with-lstms-a51f564ccbca)

或者看看我的其他机器学习文章。我相信你会发现它们很有用……

[## 掌握用于语义图像分割的 COCO 数据集

使用 PyCoco、Tensorflow Keras Python…探索和操作 COCO 图像数据集进行语义图像分割

towardsdatascience.com](/master-the-coco-dataset-for-semantic-image-segmentation-part-1-of-2-732712631047) [## 创建一个合成图像数据集——“什么”、“为什么”和“如何”

缺少图像来训练你的模型?以下是如何使用合成图像将数据集的大小增加数倍…

towardsdatascience.com](/create-a-synthetic-image-dataset-the-what-the-why-and-the-how-f820e6b6f718)

分析师和统计学家能相处吗?

原文:https://towardsdatascience.com/can-analysts-and-statisticians-get-along-5c9a65c8d056?source=collection_archive---------5-----------------------

数据科学专业之间微妙的战争

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

图片:来源

之前的一篇文章中,我解释了在统计分析中的典型培训项目赋予毕业生不同的技能组合

当你处理不确定性时,分析师会帮你提出更好的问题,而统计学家会提供更严谨的答案。这看起来像是合作梦想的组成部分,然而不知何故,这些职业最终会相互争斗。让我们看看我们是否能够理解分析和统计之间的奇怪战争(并建议和平条约)。

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

分析师和统计学家:玻璃容器中不相容的物种?图片:来源

定义

由于数据科学职称可能无法准确反映人们的实际工作,让我来定义一下我的术语:

  • 那些关注于看数据来总结数据并从中提取灵感的人,就是我所说的 分析师
  • 那些关心严格测试数据驱动决策的假设的人,我称之为统计学家。
  • 懂得两者兼顾的人……都是都是。这篇文章没有提到分析师和统计学家的混合体,但是你可以在这里找到我对他们的想法。
  • 那些对两者都敷衍了事,却至少误解了其中一个的人是数据骗子。前往这篇文章了解更多信息。
  • 那些既懂得如何做又拥有 ML/AI 专长的人我称之为数据科学家。这种全才确实少见。你可以在我的其他文字中读到他们:[ 1 ,[ 2 ,[ 3 ,[ 4 ,[ 5 ]。请注意,对于如何定义数据科学角色,不同的组织有不同的标准,因此在假设之前,最好检查每个人都在谈论相同的事情。

分析帮助你形成假设,而统计让你测试它们。

当分析师们专门研究如何快速探索你的一堆混乱的数据集时,统计学家们则更关注于推断出更多的东西。

(数据)贫困的负担

由于收集数据的努力和在 20 世纪的小型硬盘上存储数据的成本,上个世纪的数据集往往很小。即使是一个值得尊敬的数据集,也很难收集到足够的数据,这意味着数据分割很少是一个选项。这迫使专业人士在两种截然不同的心态中做出选择。

数据行业之间的对立是数据饥荒的一个挥之不去的影响。

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

图片:来源

(为了理解本文中的一些细微差别,你需要理解一个数据点可以用来 产生灵感或者测试一个理论 ,但不能两者都用。通过数据分割,你可以鱼与熊掌兼得。如果你想更深入地探究为什么这是真的,请阅读。)

无论你属于哪一个阵营,你可能会认为另一个阵营正在试图做你的工作……而且他们在这方面做得出奇的差。

如果您在数据饥荒的黑暗时代接受了数据科学培训,您可能会怀有一种讨厌的刻板印象,这种印象源于未能理解分析师和统计学家扮演不同的角色。无论你属于哪一个阵营,你可能会认为另一个阵营正在试图做你的工作……而且他们在这方面做得出奇的差。

讨厌的刻板印象(以及为什么你会有它们)

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

图片:来源

统计学家如何看待分析师

一句话:邋遢。与统计学家不同,大多数分析师没有受过严格思考不确定性下哪些结论有效的训练,但这没关系……只要他们不试图做出超出数据的结论。相反,分析师最大的优点是速度——尽可能快地找出数据集中的内容。

在数据中随意跳跃的想法惹恼了许多统计学家。最近,我参与了一次对话,对话中一位统计学家(不是我!)反对开发更快的分析工具,因为“这会招致误用。”没错。用一只泥泞的大靴子践踏整个分析生涯的有效性。

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

图片:来源

事情是这样的:他是对的,这些工具对统计学家不利。不过,工作是不同的。不幸的是,大多数人——包括他——都不理解这种差异。

如果你不能分割你的数据并且你在决定问哪些问题之前查看所有的数据,那么你是在做分析,而不是统计。这不一定是一件坏事;分析很重要也很有用——它让我们产生灵感,从而找到前进的方向。当分析师试图将灵感作为更严谨的东西出售时,麻烦就开始了。

遵循一条黄金法则:在出手之前先做决定,或者坚持描述你面前的事物。

真正的统计学家会对你所谓的“洞察力”嗤之以鼻,如果你没有遵循一条黄金法则:在做出决定之前先做出决定。否则,坚持描述你的数据集,不要超越它。请不要把自己看得太重,也不要要求任何人。

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

关于如何使用未拆分数据响应分析的手册。

事实上,如果我们把每个人都视为在做描述性分析,直到被证明并非如此,那么我们在数据推理中都会是最安全的。

来自未拆分数据的“见解”?那只是你的看法,伙计。

除非你向我证明你的理论让你在出手之前出手,否则我会假设你向我展示的东西只存在于你发现它的地方。人们在各种事物中发现模式——特别是当他们被激励尽可能随心所欲地思考时——所以你不会给我留下深刻印象,除非你在看到模式之前预测到模式的存在。除非你能保证(并证明)数据访问日志,有人吗?)你的假设先于你的数据,你告诉我的任何事情都应该被视为“那只是你的观点,伙计。”**

方程是不够的,它们不能把一个破碎的过程变成一个可信的概括。

*为了让对数据的探索不仅仅是描述性分析,你必须遵循一个特定的过程。仅仅因为你的软件吐出一个 p 值并不意味着真正的统计推断发生了。你必须着手构建背景并收集数据,以某种方式释放你正在做的事情的哲学有效性。等式是不够的,它们不能把一个破碎的过程变成一个可信的概括。让我们小心地使用我们的语言,称一切事物为"*灵感"或"分析",直到被证明不是这样。

对分析师的抨击够多了。让我们去找一些统计学家吧!

统计学家在分析师眼中的形象

一句话:迂腐。与分析师不同的是,大多数统计学家没有接受过帮助你了解哪些兔子洞值得挖的粗略扫描训练。对于一个分析师来说,你的普通统计学家可能看起来像是皇家的浪费时间者,尤其是如果他们参与了项目的错误阶段。

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

许多统计学家喜欢正确地做事,即使这些事情一开始并不总是值得去做。这让人想起一个严厉的五岁小孩对待沙堡就好像它是神圣的一样,并且对想要加入建造乐趣的四岁小孩大喊大叫。不足为奇的是,分析师将这些统计学家视为一种强力胶,会粘在第一个飘过的东西上。(这种自以为是的态度也于事无补。)图片:来源

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

大多数决策最不需要的就是统计暴政。

生活中的许多决定根本不值得付出太多努力,如果我们对每件事都采取仔细的统计方法,我们就不会完成太多事情。如果你在第一件引起你注意的事情上全力以赴,你确定你没有错过更有价值的利用时间的机会吗?(当然,这不是仔细的数学,但拜托,我只是在这里点餐。)**

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

当统计学家在对探索性数据的不恰当探索中大声表示反对时,他们在有商业头脑的人看来是可笑的。图片:来源

我经常想知道为了严谨而严谨的现象是否是上数学课的产物,在数学课中,例子是琐碎的废话,计算越来越华丽。幼儿园的“如果萨莉在一块地里有二十只兔子……”一直坚持到研究生院,在那里它需要三倍积分才能获得金星。

在经历了这么多兔子之后,谁能责怪一个统计学家把一切都看得太重呢?这些课程实际上要求你为愚蠢的问题提供复杂的答案,那么,你对一群在这些课程中成长了十年的员工有什么期望呢?大量雇佣数学/统计崇拜者会让你避免一些问题,但也会让你暴露给其他人,包括那些让那些没有 110%用心建造每一座沙堡的人日子不好过的恶霸。

撇开我随意的因果推论不谈,如果你有一个队友会全身心地投入到严谨的工作中,那么希望这种严谨是值得追求的。如果你的队友不知道去哪个兔子洞,他们需要有人给他们指出正确的方向。

有了分析师的帮助,统计学家不再需要在黑暗中摸索,在头脑中构建一个宇宙,以找出如何提出问题。相反,他们可以让分析师去启发他们的假设和设想。

那么,为什么统计学家不乐意让分析师帮助他们确定什么是值得做的,为什么分析师不乐意把检验我们的结论不是废话的那部分交给统计学家呢?为什么对立和缺乏尊重?

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

解锁协作

糟糕的过去,数据集太小无法分割,所以必须在使用它们进行分析和统计之间做出选择。这意味着这两个组将不得不为每个数据集而战。

在采用现代数据科学方法的组织中,分析师(灵感/探索)和统计学家(严谨/测试)之间的紧密合作是文化的一部分。

由于硬件的改进和更低的存储成本,今天许多努力正在突破一个数据集的天花板,迎来了一个数据丰富的时代。*

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

将您的数据分成一个探索性数据集和一个测试数据集,每个人都可以从中获得灵感,测试数据集稍后将由专家用于对探索阶段发现的任何“见解”进行严格确认。

现在,分析师和统计学家可以收到他们自己的原始数据集,让勘探专家与测试专家和谐地工作,每个小组都贡献自己最擅长的东西……假设他们可以放弃一见面就互相争斗的习惯。

假设的产生和检验之间有效合作的代价是数据量。

分析师可以将他们的文章作为指导思考,以找出什么是值得追求的,当他们缩小了企业最关心的问题时,剩余的文章让统计学家有机会严格检查分析师的直觉是否值得采取行动。

组织可以在数据学科之间建立共生关系…而且他们应该这样做!欢迎来到数据丰富的现代时代!*

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

图片:来源。

*旺盛阻尼器

尽管今天的典型数据集比上世纪的数据大得多(并且更容易共享/访问),但仍有一些用例被困在单一数据集时代,因为初始数据收集非常费力或昂贵。我职业生涯中的一个例子是 fMRI 数据——即使在今天,扫描一个人的大脑也是非常昂贵的,所以具有几十次扫描的神经科学数据集仍然被认为是令人印象深刻的。这也是认为所有的数据都是大数据的幼稚想法的一个原因。在某些主题中,信息非常匮乏,从事这些主题工作的人面临着一个数据集的现实。

如果这听起来像你的环境,试着考虑一下哪个阵营说了算,并尊重来自其他阵营的人——他们提供的服务与你的完全不同,你最好记住他们是自己领域的专家,即使你的企业选择了你的服务而不是他们的。

感谢阅读!人工智能课程怎么样?

如果你在这里玩得开心,并且你正在寻找一个为初学者和专家设计的有趣的应用人工智能课程,这里有一个我为你制作的娱乐课程:

在这里欣赏整个课程播放列表:bit.ly/machinefriend

电脑能感觉吗?

原文:https://towardsdatascience.com/can-computers-feel-69b234eeff70?source=collection_archive---------25-----------------------

计算移情和情感

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

照片由 Lenin EstradaPexels 拍摄

机器学习、“人工智能”和认知计算无疑已经以我们现在还无法理解的方式触及了我们的生活。许多人看到了这种技术的滥用,并对由贪婪或被误导的好奇心所驱动的人创造的反乌托邦未来感到焦虑。我们中的一些人害怕更多科幻小说启发的未来,人工智能成为我们的霸主,以及类似于终结者电影的反乌托邦未来。许多人担心计算机不理解情感或没有同理心,这是我们被消灭或被其他人操纵的驱动力。我们想象机器视我们为威胁,如同史密斯探员在母体中所说的疾病或“病毒”。这合理吗?这种担心有道理吗?如果计算机已经比我们更了解共情和利他主义会怎样?如果这更多地反映了人类对自己的判断,而不是我们可能面临的任何实际危险呢?如今,计算机能多好地理解人类的情感?我们在成为机器附庸的时间表中处于什么位置?在这篇文章中,我们将看看当前可以在语音和面部识别软件中预测人类情绪的技术。我们将着眼于当前计算机模拟人脑活动和神经形态计算的能力。我们还将关注最先进的认知计算,它具有推理和提问的能力,以便根据问题的答案得出逻辑结论。也许我们会发现,我们可以从计算机那里学到一些东西,我们对训练人工智能对人类友好和无损的担忧可能实际上是没有根据的。

亚马逊 Alexa 的情感识别功能

我们已经到达了一个点,计算机比以往任何时候都更好地理解人类的情感,并且达到了许多人将归类为科幻小说的程度。高德纳公司的研究副总裁安妮特·齐默曼认为,在未来两年内,我们将拥有能够比我们认为最亲近的人更好地理解我们情绪状态的技术。齐默曼说,

“到 2022 年,你的个人设备将比你的家人更了解你的情绪状态。”

在亚马逊,研究人员多年来一直在实施和开发情感识别人工智能。在最近的研究文章“情感识别的多模态和多视图模型中,他们解释了一种情感识别的“多模态方法。在他们的方法中,人工智能分析单词的选择和顺序,以及语音音调、音量和音色的声学属性。他们分析言语中的情感有三个维度:

  1. 情绪的积极或消极;
  2. 情绪的能量或激活水平;
  3. 情感的主导。

想象一下情绪感知设备的社会影响以及对精神健康和医疗保健的潜在应用。有一个随时可用的生活教练,永远不会在自己的问题中疲劳或迷失,例如在对话助手,人工智能朋友和基于 CBT 的治疗支持中。

神经形态计算

英特尔一直致力于“ 神经形态计算 的研究,该研究涉及模拟人类大脑的神经结构和运作,以及概率计算,该计算创建了处理自然世界中的不确定性、模糊性和矛盾的算法方法。“根据英特尔:

“即将到来的下一代将把人工智能扩展到与人类认知相对应的领域,如解释和自主适应。”

英特尔早在 2017 年 11 月就开发了专为“脉冲神经网络”或 SNNs 打造的第五代芯片。这些"自学习神经形态研究测试芯片"具有" 128 核设计,基于针对 SNN 算法优化的专业架构,采用 14 纳米工艺技术制造。“他们解释说,芯片、

支持不需要以卷积神经网络的传统方式训练的 snn 的操作。随着时间的推移,这些网络也变得更有能力(“更聪明”)

认知计算

认知计算是 IBM Watson 使用的一个术语,用来描述一种与人类互动的数字智能形式,在决策过程中指导人类,并告知人类决策背后的推理。它旨在缓解人们对围绕机器学习的所谓“黑箱问题”的看法。黑箱问题是指人类无法理解和解释为什么神经网络和深度学习模型会得出特定的决定或结论。两个不同的深度学习模型可能会得出相同的答案,这让数据科学家想知道为什么这两个模型具有什么属性来解释他们的决定。当然,这是一个过于简化的问题,但如果不进入信息论背后的技术数学以及神经网络如何逼近任意函数,这个问题实际上是一个关于人类对复杂系统的理解的问题。

IBM 培训认知计算概念

认知计算让人类参与决策过程,其交互和解释能力远远超过标准机器学习。至少早在 2013 年,IBM Watson 就在医疗诊断和治疗辅助方面实施了这一技术。看看这个视频的介绍。

如果计算机能感觉,那会怎样?

如果数字智能已经达到了理解人类情感的程度,并且已经发展出某种形式的数字情感,那会怎么样?然后呢?我们应该对机器感同身受吗?我们应该对我们的手机或笔记本电脑产生同情心吗?机器、AI、认知计算代理有“权利”吗?在什么程度上,我们认为它们足够自主和聪明,可以受到保护?在某些时候,我们必须面对这些问题。在某些时候,我们必须面对认知计算代理或数字智能比我们更好地理解情绪的可能性。当 AI 能够比我们周围的人更好地理解我们,并且能够比我们最喜欢的导师、医生或同伴更好地指导我们时,我们必须考虑人类可能实际上受益于远远超过我们自己的智能的可能性。与其考虑可能的世界末日场景,也许我们应该考虑在它的帮助下我们可能最终到达的潜在乌托邦,并拥抱这样的智慧。

意识到这一点也许是有用的,我们对这样一个智能体并不构成真正的威胁。这是我们自大的产物,认为我们对一个比我们聪明数倍的实体构成了真正的威胁。如果这种智慧存在,我们可能在相当长的一段时间内都不会意识到它,即使如此,它也不会是一个集体和即时的意识,而是一个渐进的过程,从非常小的规模开始。这可能需要几年,甚至几十年的时间,而且可能永远也不会达到让所有人都直接而明确地意识到它的存在的程度。当我们试图拯救我们心爱的蜜蜂免于灭绝时,我们是否只是抓起蜂巢,向它们宣布我们的存在和意图,希望它们会合作?

超人的智慧,摩尔定律的极限,以及不断提高的计算能力

摩尔定律最基本的说法是,计算机芯片的计算能力每 18 个月翻一番,而它们的尺寸同时减半。因此,每 18 个月,我们就会得到一个新的计算机芯片,体积大约是原来的一半,计算能力是原来的两倍。这不能再继续下去了。在某种程度上,我们达到了最小可行的芯片尺寸,并进入了纳米技术领域。目前的芯片尺寸约为 10 纳米。

一纳米比可见光的波长小,原子的直径大约在 0.1 到 0.5 纳米之间。由于摩尔定律不能无限延续,而且我们几乎已经达到了计算机芯片的最小尺寸的极限,所以要解决的一个主要问题是找到超越这个极限的提高计算能力的方法,而不减小芯片的尺寸。

有两种方法可以做到这一点,一种是量子计算,另一种是信息处理的替代形式和为特定任务设计的专用硬件,如机器学习、神经网络、视觉识别、自动驾驶汽车和图形处理(GPU)。对于已经处于纳米尺度的芯片,也许重新思考我们在其上处理信息的方式以及我们为特定任务构建硬件的方式是合适的,并且考虑量子信息处理可能有利于计算和我们执行复杂计算的能力。

也许通过编写算法,就像它们在量子计算机上运行一样,即拥有基于量子(量子位)的算法,而不是基于经典位的算法,会给我们带来超越经典领域的加速。此外,为这样的算法设计有效运行的硬件是谨慎的。

张量网络计算表明这是一种可行的选择,它可以有效地模拟量子电路和某些量子多体过程。在谷歌的张量处理单元 (TPUs),用他们的 TensorNetwork 库执行计算,相比多核 GPU 计算,可以提供显著的加速(高达 100 倍)。也许计算的未来不仅仅是量子计算机本身,而是替代的计算模型,这些模型是根据量子算法和量子过程设计的。芯片尺寸小于 10 纳米,经典计算真的是我们应该思考的方式吗?此外,在涉及深度神经网络的机器学习中,可以表明“拓扑基态可以由短程神经网络以精确和有效的方式来表示。“此外,学习物质的拓扑状态提高量子表面代码的性能一直是神经网络表现非常好的任务。为了实现模拟大脑活动和其他难以置信的复杂过程的计算性能,也许我们应该使用张量网络等方法和 TPU 等专门设计的硬件来实现量子信息处理技术。

如果你有想法要分享,有问题,或者你需要量子机器学习的咨询服务,请通过 LinkedIn 联系作者,访问奇点网站,或者查看 Github 教程

数据能帮助你的书登顶吗?

原文:https://towardsdatascience.com/can-data-help-your-book-shoot-to-the-top-4cfd4e43a2ab?source=collection_archive---------55-----------------------

热门书籍、大数据和《纽约时报》畅销书排行榜

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

SpaceX 在 Unsplash 上拍摄的

受欢迎程度等同于纽约时报的畅销书排行榜

我最近收到了一位读者的回复,他对《故事的其余部分:迪莉娅·欧文斯和小龙虾在哪里歌唱》没有讨论是什么让这本书如此受欢迎感到失望。那个评论让我想:是什么因素让一本书一飞冲天,走向成功?某些书为什么会受欢迎?

有没有研究可以帮助作者理解一本畅销书的本质特征?数据能帮助作家登上难以捉摸且备受期待的畅销书排行榜吗?

“畅销书”一词源于一个叫查尔斯·里德的人,他是一位英国作家,在 19 世纪中期非常受欢迎并且多产,但是我们今天甚至都没有听说过他。文学评论家约翰·萨瑟兰认为,我们现在不了解查尔斯·里德,因为他是“畅销书”是暂时的这一观点的最佳例证。畅销书只是“一个时代的快照”今天在这里,明天就走了。

首先,你可能想知道“畅销书”的定义到底是什么?

畅销书的定义是一周内卖出 5000 本或更多不同销量的书。术语“多样化”意味着销售必须来自多个来源。换句话说,你不可能在你的私人网站上向你的忠实粉丝卖出五千本书。销售必须来自许多供应商。

有很多畅销书排行榜,但最广为人知的(也是作者最渴望的)是《纽约时报》畅销书排行榜。该列表是根据美国各地供应商提交的销售数字编制的。数据来自独立书店、全国连锁店、报摊、大学、礼品店和超市,以及在线图书零售商。

《纽约时报》畅销书排行榜有其争议,但那是另外一个故事了。至今仍被认为是出版界最厉害的榜单。

几率有多大?

一位数据分析师,阿尔伯特-拉兹洛·巴拉巴斯,评估了数以千计登上 NYT 畅销书排行榜的小说和非小说书籍,他的发现揭示了一些普遍模式。

  • 传统上每年出版 100,000 本书。在过去的十年里,只有 800 本小说登上了畅销书排行榜。发行的书籍中只有很小一部分进入了畅销书排行榜。
  • 在这 800 本文学小说中,67%是以情节为导向的书籍,分为浪漫、神秘或惊悚类。
  • 畅销书排行榜仅由少数作者把持。85%的畅销小说家都有多本书上市。十年间,惊悚小说作家詹姆斯·帕特森出版了 51 本书。
  • 对于非小说类出版物,传记和回忆录最有可能登上畅销书排行榜。
  • 对于一个非小说类作家来说,在畅销书排行榜上拥有多个头衔要难得多。只有 14%的人知道。
  • 登上畅销书排行榜的最好机会是在你的书出版后马上去做。虽然这一发现也有一些例外——最明显的是 The Help 和*The craw dads Sing——*大多数书籍的销量在发行后立即达到顶峰,并随着时间的推移而下降。
  • NYT 书单上只有 8%的书能登上榜首。
  • 25%上榜的书籍在一周后会掉价。
  • 37%的人在名单上停留超过 4 周。

另一组研究人员给计算机编程,看它们能否预测畅销书。朱迪·阿彻和马修·詹金斯根据他们收集的 20,000 本书并将其分成 500 个类别后的数据,写了一本名为 畅销书代码 的书。他们创造了独特的算法来跟踪情感语言和词汇模式。他们的数据表明

  • 大多数成功的小说家都会在他们的书中专注于一两个主题,而不太成功的作家可能会包括 6 个主题。
  • 书中的一些主题可能会阻碍销售:吸烟、深深的悲伤和政治革命等等。
  • 以丛林、沙漠或海洋为背景的书不如以家庭为背景的书畅销。
  • 狗的故事情节比猫的故事情节重要。

数据应该影响作家写的东西吗?

知道这些事实会改变你想写的东西或者你想如何组织你的下一本书吗?你会不会突然开始在每本书里都放一只狗,尽管你自己并没有养狗?你会因为觉得小说可能会卖得更好而把小说的背景从丛林换成公园吗?

没有。写作仍然是一个不受计算机驱动标准约束的职业。不管你写什么,它必须是真实的。按照指定的公式写作会让作者失去快乐,让书失去激情。

数据能根据一本书对读者的无形情感吸引力来预测畅销书吗?算法能理解优美的语言吗?科学家们了解用语言创造普遍经验的影响吗?计算机能检测出完美的节奏或角色的魅力吗?

没有。写作的质量可能是主观的。编辑、代理和评论家从来不会在这些元素上达成一致,那么程序员怎么可能同意创建一个可以检测这些元素的算法呢?

我很欣赏这些推断。他们甚至可能潜移默化地影响我的潜意识。但我是一名作家,从她内心的源泉进行创作,数据并不能驱动我。一本书登上畅销书排行榜将会实现一个梦想,但这种希望并不是我写作的原因。

以登上畅销书排行榜为唯一目的的写作是徒劳的。我敢打赌,大多数作家在痛苦地一页页敲打手稿时,根本不会想到这一点。

我们写作是因为我们“感觉”到了一本书——而不是因为它在某个地方以某种公式被规定了。

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

弗兰基·查马基在 Unsplash 上拍摄的照片

回到激发我对这个话题兴趣的问题…

是什么让《小龙虾歌唱的地方》飙升至畅销书排行榜并一直保持下去?

Alexandra Alter的《小龙虾歌唱的地方的长尾》对此做了最好的解释:

  • 这本书在体裁上没有明确的定义,这一点使得出版商对接受这本书犹豫不决。但事实上,这部小说并不符合规定的书籍“类型”,这变成了一项资产。小龙虾歌唱的地方有多种方式让读者联想到它。它包括一个谜,一场谋杀,一场生存之战,一个成长的故事,以及带有精确植物学草图的丰富的抒情自然写作。
  • 这个故事吸引了来自所有政治派别的广大读者
  • 这部小说得到了独立书店的大力宣传。
  • 瑞茜·威瑟斯彭选择了它作为她读书俱乐部的选择。
  • 口碑炒作增加了销量。
  • 销售增加了知名度。

奥尔特认为,《小龙虾》成功的部分原因是它表达了我们在现代世界中经常渴望的安静和孤独:它确实如此

“…在技术快速发展和社交媒体不断连接的时代,这是一种奇怪的统一效果。”

《小龙虾歌唱的 T2》的意外成功证明了数据、预测和出版商的预期无法解释人类内心的反应。

数据和研究可能有助于确定畅销书的模式,但“意想不到的”仍然会发生

虽然计算机可以分析成千上万的书籍和数百万的文字,并汇编研究结果,但它们无法解释一个独特的故事或一种“不同”的书以令人惊讶的方式触动读者的意想不到的吸引力。

计算机永远不会预测到小龙虾歌唱的的成功。他们不会想到这部小说会打破典型的模式,即在发行后销量立即达到顶峰,然后开始下滑。相反,它增加了销量,随着人们谈论它和书店推销它,销量成千上万。

一本书对每个人的情感和心理影响是无法用统计数据来分析的。我们会因为一本书而笑、哭、生气或感到痛苦,因为它在灵魂层面上触动了我们,这是我们无法衡量甚至无法预料的。

正如弗朗西斯·威尔逊在她的文章“当哈利遇见五十度灰:是什么让一本书受欢迎”中所言

从《格里沙姆》到《消失的女孩》,畅销书的意义在于,它们重复了我们已经知道的故事,而这些故事已经像沉船一样,深深地沉入了我们的心灵。畅销的书籍是那些把我们带回到童年时代的叙事形态,带回到塑造我们的情节的书籍。

所以你想写一本畅销书?

去吧。祝你好运。

了解畅销书排行榜的模式可能有助于你写一本畅销书。理解这些数据可能会给你一个关于写什么和如何写的内幕消息。

我着迷于数据科学家创造算法来预测流行成功的能力。我尊重开发技术和方法所需的智力,这可能有助于我在我选择的写作职业中前进。

然而……

我想忽略数据,只写我的故事。我要它冲出我的生命之河,咆哮而狂野,无拘无束而自由。我想爱抚它,塑造它,培育它,尊重它,把它推向世界,希望——尽管可能性很小——意想不到的事情会发生,它会奇迹般地飞黄腾达。

不需要数据。

如果你喜欢这个,你会喜欢这些:

[## 故事的其余部分:“迪莉娅·欧文斯和小龙虾歌唱的地方”

写作是如何受经验影响的

medium.com](https://medium.com/literature-lust/the-rest-of-the-story-34f9f057d8a3) [## 关于“博学”你需要知道什么

这是一个有价值但不可能实现的目标

medium.com](https://medium.com/literature-lust/what-you-need-to-know-about-being-well-read-de35adb4a032) [## 关于现在的图书世界,你应该知道的五件事

在你写作或推销之前,看看这些行业统计数据

medium.com](https://medium.com/literature-lust/five-things-you-should-know-about-book-world-now-ce48072f375f)

数据科学能成为我高效锻炼的教练吗?

原文:https://towardsdatascience.com/can-data-science-become-my-trainer-for-efficient-workouts-d62ad533a20b?source=collection_archive---------23-----------------------

我如何使用 Apple Watch、Jupyter 笔记本和 QlikSense 来实现更好的静息心率;相关因果分析;

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

“我的手表,我的泳镜,我的笔记本电脑,我的规则”——P

“在过去的一年里,我体重增加了近 10 公斤,这都要归功于辛辣的印度食物和海德拉巴的比里亚尼。然而,几个星期前,我下定决心要重新开始锻炼。以前,我花了几个月的时间来健身,却只能看到徒劳的努力和令人心碎的结果。这是我的最后一个作弊日,当我埋头吃新鲜烹制的香辣咖喱鸡时,我突然有了这个想法。

如果我使用 apple watch 的历史数据来确定影响最大的健身程序,并据此制定每周计划,会怎么样?我知道你现在在想什么!私人教练或者好的教练呢?想象一下,如果数据科学最终成为你的教练,通过正确的常规组合来实现更好的健康,会怎么样?"

Apple Watch Series 4 现在是 FDA 批准的 2 类医疗设备,具有跌倒检测和更好的心脏监测功能。健身追踪器将逐渐成为我们健康的“守护者”。现在是我们探索所获得的数据的时候了,而不仅仅是看数字和锻炼圈。为了更好地理解这一分析,让我们来看看一些关键指标(鸣谢:iPhone 健康应用)。

  • 步数 —一天中所走的步数。计步器记录任何涉及运动的活动的步数,包括走路、跑步、爬楼梯,甚至是你做日常家务时的运动
  • 楼梯段 —一段楼梯被计为大约 3 米(10 英尺)的高度增益(大约 16 级台阶。)
  • 游泳姿势——自由泳、仰泳、蛙泳或蝶泳时手部的总动作
  • 站立时间 —站立时间代表我们一天中的一个小时,你站着并稍微走动至少一分钟。一个站立小时被分解成几个空闲和站立的实例
  • 心率 —你的心脏每天大约跳动 100,000 次,在休息和运动期间加速和减速。你的心率指的是你每分钟心跳多少次。计算为 BPM
  • 静息心率 —你的静息心率是在你静止或放松几分钟后测得的每分钟平均心跳次数。一般来说,较低的静息心率表明更有效的心脏功能和更好的心血管健康
  • 主动&基础能量 —主动能量是对行走、推轮椅、跳舞、锻炼或做家务等活动中消耗的能量的估计。另一方面,基础能量是对休息时你身体燃烧的卡路里的估计
  • 音量 —代表耳机音频的音量,以加权分贝(dB)为单位
  • 锻炼时间/所走距离/持续时间 —这些都是我们每天听到的常规。Apple Watch 可以通过例行即骑自行车、跑步、游泳&走路来追踪这些

注意:当你开始使用健身追踪器时,最初的兴奋会让你的锻炼达到峰值。过了一点,身体就习惯了,你就看不到同样程度的卡路里燃烧了。因此,重要的是在更长的时间内分析相同的活动,以了解身体在强度方面的平稳状态。

安迪的追踪器——健康决策板

苹果的健康应用允许你以 XML 格式导出你的健康记录。您可以使用 Python (Jupyter Notebook)处理和操作数据,并使用 QlikSense 等可视化应用程序导入数据,以创建自己的决策板。iPhone 健康应用程序和活动跟踪器都带有仪表盘。这对你做出明智的决定有帮助吗?部分是,部分不是!

你的教练能告诉你如果你多游半个小时或多跑一会儿会发生什么吗?是的,他们可以。标准答案是**“你的体能会提高”!但是,如果你只需要一千米的高强度跑步和半小时的游泳就能保持健康,那会怎么样呢?如果听着最佳音量的音乐,走几段楼梯,游一个小时的泳就足够了,那会怎么样?这就是数据科学和机器学习的用武之地。**

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

快照 1:使用 QlikSense Desktop 开发的决策板

作者注: 我用 Marwyk 的代码 *把手机健康 App 的 XML 数据转换成结构化格式。运行 Marwyk 的代码创建了多个 CSV 数据集,每个数据集在时间戳级别单独跟踪一个指标(*YYYY-MM-DD hh:MM:ss)。然后我使用 Jupyter Note Book 在一天的水平上争论、操作、清理和总结数据,这形成了我的 ***分析数据集(ADS)。***ADS 用于启动 QlikSense 仪表盘 ,最后进入 OLS 回归模型 ,帮助我理解各种例程的交互。自从我一年半前开始锻炼以来,我可以访问从 3 月 18 日到 5 月 18 日的 3 个月的完整数据。

建立回归模型——向分析我日常工作的潜在 DNA 迈进了一步

什么是线性回归,为什么我们需要线性回归?

多元线性回归用于解释一个连续变量和两个或多个自变量之间的相互作用。在这个例子中,静息心率(健康指标)是我的因变量/连续变量,以及其他因素,如锻炼时间、距离、航班等。是我们的独立变量。我们需要多元回归模型的原因是为了了解和量化多个锻炼因素对健康的综合影响,而不是孤立地看待它们。注意,单独跑步和游泳结合起来对我们健康的影响可能是不同的。多元线性回归帮助我们理解这些相互作用。

让我更多地关注调查结果,而不是谈论提出仪表板或最终模型所涉及的过程。因为我没有每天记录体重,所以我用静息心率来代表我的整体健康状况。我回归了静息心率的其他变量,如步数、锻炼时间、基础能量、游泳持续时间、游泳次数、音量、跑步等。在开发模型时,牢记线性回归的所有五个假设,即线性关系、多元正态性、没有或很少多重共线性、没有自相关和同方差。对数据集进行了缺失值处理和 Z 分数标准化。因为我不会每天执行所有的程序,所以所有缺失的值都被替换为零。我有 90 天的数据,因此我使用 K-Fold 交叉验证技术来获得最终的模型结果。 请注意,这只是初步结果,模型统计数据(R 平方=0.642)仍可改进。

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

快照 2:包含其他摘要和模型结果的仪表板

为什么我称之为决策委员会?

决策板是仪表板的另一个名称,其中包含**关键见解&发现。**想象一下看着你手机的内置追踪器。它只是向你展示纯粹的数字和精美的图表。你的数据应该告诉你一个故事,这是我的发现。

  • **游泳 vs 跑步?—努力更少,影响更大。如果我游完了跑步机或正常跑步距离的三分之一,我会看到类似的卡路里燃烧(参考快照 1)
  • 我应该控制我的音量吗?—是的,但可能是在周一和周二,我观察到全天的音量变化较大。了解我们暴露在嘈杂音频中的时间有多长是有帮助的,因为这会影响我们的听力和整体健康*(参考快照 2)*
  • 我的目标在哪里?——在锻炼方面低于标准。 与锻炼 相比,步数没有太大影响(见模型结果),锻炼可以显著提高我的静息心率。大多数时候,我的运动量都比我的目标少*(参考截图 2)*
  • 什么最适合我的身材? —确保有足够的站立时间。我们大部分时间都无所事事地坐在笔记本电脑前。确保每小时快走一分钟*(参考快照 2 的模型结果)。*与跑步相比,游泳作为一种独立的日常活动对静息心率有更好的影响。然而,当两者都做的时候,确保例行程序被均匀地分开,因为它们在一起不会压倒另一个

后续步骤

  • 更好地理解参数相互作用,以及按时间间隔(如上午、下午和晚上)分解参数是否会改善模型结果
  • 调查其他可追溯的因素,如会议时间、社交媒体聊天时间、工作时间等。并将它们作为独立变量
  • 由于较高的自相关性,很少变量被遗漏。像 PCA 这样的降维技术有用吗?
  • 向仪表板中的运行状况 KPI 添加目标指标

我希望你觉得这是有用的。我目前正利用这些结果来计划我的日常活动,主要集中在一小时的游泳和一些初始热身跑上。我养成了提高站立时间的习惯,将空闲时间减少了 2 个百分点。在未来的日子里,数据科学将对医疗保健行业产生更大的影响。我坚信我的分析只是一切可能的开始。如果您想在这个分析上进一步合作,或者想重用代码片段并改进模型结果,请随时给我留言。

注来自《走向数据科学》的编辑: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语

数据科学能帮助我们找到是什么造就了一部热门电视剧吗?

原文:https://towardsdatascience.com/can-data-science-help-us-find-what-makes-a-hit-television-show-861d103c6e44?source=collection_archive---------36-----------------------

使用 Keras-Tensorflow-LSTM、沃森 NLU 和沃森个性洞察对谈话记录进行文本分析。

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

照片由乔纳斯·雅各布森Unsplash 上拍摄

我最近在洛杉矶的数据科学沙龙上谈到了从情景喜剧脚本中获得属性,以及确定学习制作一部流行电视节目的本质的可能性。这篇文章将介绍所进行的调查,以及我在神经网络训练以及利用预先训练的沃森 NLU 和人格洞察模型后得到的结果。旅程中最具挑战性的部分是通过在互联网上随机搜索这些节目的公开网络记录来准备数据。

洛杉矶数据科学沙龙,2019 年关于“数据科学能帮助我们找到什么是热门电视节目吗?”

一般来说,我通过询问许多基于直觉领域的问题来处理数据科学项目,寻求专家的反馈,并添加/修改我的问卷。逆向工作让我知道我的成功标准,除非我确信结果,否则我会继续迭代更好的问题、模型和更好/更多的数据。请注意,令人信服的结果绝不意味着得到与我的期望一致的结果。我们做数据科学是为了调查导致事实的因素,然后使用这些属性作为基本事实进行预测,而不是相反。这是一门基于科学的艺术。

在做这个项目的时候,我也写了两篇文章这里这里

在这里,我提出了以下问题

什么构成了热门电视节目?

1.是各个角色说话和行为方式的一致性吗?

2.是在不同的地点重复拍摄,从而让你的观众觉得随着时间的推移他们了解这个地方吗?

3.是不同角色说话和行为方式的相似/不同?

4.是快乐、悲伤、恐惧、愤怒、厌恶等情绪的平衡分布吗?这让节目变得有趣。

5.是人物性格的相似/不同让观众保持联系吗?

6.是有趣的倒叙吸引了观众吗?

我将逐一回答这些问题。显然还会有更多的问题,这就是为什么在开始任何数据科学项目之前,必须寻求/研究领域专家的反馈,以确认您问的是正确的问题集。

对于这个分析,我计划使用以下三个节目——《老友记》、《生活大爆炸》和《绝命毒师》,我认为这将为分析创造一个公平的组合。

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

0.数据可用性

在广泛搜索互联网后,我从以下网址获得了 html 脚本。

  • 老友记—【https://fangj.github.io/friends/】T2—10 季
  • 《生活大爆炸》——【https://bigbangtrans.wordpress.com/】T4——10/12 季
  • 绝命毒师—https://en.wikiquote.org/wiki/Breaking_Bad—5 季(数据缺失)

以下是这些抄本的样本。

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

下面是一个简单的例子,说明了我是如何从上面的链接中获得的原始 html 脚本中准备用于建模的数据集的。

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

情景喜剧数据集的数据工程

请注意,我只是将这里的 html 内容复制到。txt 文件。我们甚至可以使用网页抓取来代替复制+粘贴。但是,请记住,在抓取网页之前,我们可能需要授权。运行上述步骤后,我为每个情景喜剧准备好了数据集,可以用于建模。创建的数据集中的一个示例如下所示。

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

我花了很大力气来生成这些数据集。所以,我把它们上传到 Kaggle 上,以便感兴趣的人使用。可以找到朋友生活大爆炸绝命毒师的数据集。

每个情景喜剧的数据准备和工程代码可以在这里单独找到。

1.沃森自然语言理解(NLU)用于字符的情感检测

我正在使用沃森自然语言理解(NLU)的字符情感检测。自然语言理解是通过自然语言处理提供文本分析的 API 的集合。这组 API 可以分析文本,帮助您理解它的概念、实体、关键字、情感等等。自然语言处理的核心是文本分类。沃森自然语言分类器(NLC)允许用户将文本大规模分类到自定义类别中。NLC 结合了各种先进的 ML 技术来提供尽可能高的精度,而不需要大量的训练数据。在幕后,NLC 利用分类模型的集合,以及无监督和有监督的学习技术来实现其准确性水平。在你的训练数据被收集后,NLC 使用 IBM 的深度学习即服务(DLaaS) 针对多个支持向量机(SVMs)和一个卷积神经网络(CNN)评估你的数据。在这里可以找到对应于第 1、2、3 段的每个情景喜剧的代码。

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

1.1.美国国防科学技术研究所。

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

1.2.生活大爆炸理论

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

1.3.绝命毒师

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

2.人物的情商

我引入了一个变量**‘情商’**来了解相对于节目中的其他情绪,哪种情绪是最突出的。我把它定义为:

Individual_Emotion_Quotient = Individual_Emotion_Score/Total_Emotion_Score

以下是个人情商的散点图结果。

2.1.美国国防科学技术研究所。

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

*We can infer that Happiness and Sadness are the key emotions of the Characters on Friends.*

2.2.生活大爆炸理论

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

We can infer that Happiness is most dominant emotion of the Characters on the Big Bang Theory.

2.3.绝命毒师

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

We can infer that Sadness and Anger are the key emotions of the Characters on The Breaking Bad.

代码可以在这里找到。

3.人物的情感密度

饼状图很好地展示了分布情况,这显然有助于生动地理解甚至很小的百分比差异。

3.1.美国国防科学技术研究所。

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

All the Characters are biased towards joy and sadness on Friends.

3.2.生活大爆炸理论

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

All the Characters are biased towards sadness on The Big Bang Theory.

3.3.绝命毒师

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

All the Characters are biased towards sadness and anger on The Breaking Bad.

4.沃森人格洞察力(WPI)用于人物的人格调查

我在用人格洞察,通过文字来预测人格特征、需求和价值观。IBM Watson Personality Insights 服务使用语言分析从一个人通过博客、推文、论坛帖子等生成的文本数据中提取一系列认知和社会特征。沃森发现特朗普“爱吵闹”。我会把它用在剧本上,以了解每个角色的个性。第 4 段和第 5 段的每部情景喜剧对应的代码可以在这里找到。

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

图片来源:https://www.ibm.com/cloud/watson-personality-insights

我主要关注 WPI 的五大结果,定义如下。

  1. 对他人富有同情心和合作精神。
  2. 有组织的或深思熟虑的行动。
  3. 外向在他人的陪伴下寻求刺激。
  4. 情绪范围一个人的情绪对其所处环境的敏感程度。
  5. 一个人对体验不同活动的开放程度。

4.1.美国国防科学技术研究所。

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

《老友记》里所有角色的性格看起来都差不多。

4.2.生活大爆炸理论

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

《生活大爆炸》中所有角色的性格看起来都很相似。

4.3.绝命毒师

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

《绝命毒师》中所有角色的性格看起来并不十分相似。

5.人物的个性密度

5.1.美国国防科学技术研究所。

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

《老友记》中所有角色的性格都有类似的属性分布。

5.2.生活大爆炸理论

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

《生活大爆炸》中所有角色的性格都有相似的属性分布。

5.3.绝命毒师

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

所有角色的个性都有相似的属性分布。

6.热门拍摄地点

我们经常注意到一些节目在相同的地点重复拍摄。例如,当我们想到朋友时,我们脑海中的画面往往是在中央公园或莫妮卡或钱德勒的公寓。对于《生活大爆炸》,我们想到的是莱纳德和谢尔顿的公寓。所以,我想,为什么不找出这些节目的前五个地点,并推断/发现其中的潜在策略。第 6 节的代码可以在这里找到。

6.1.美国国防科学技术研究所。

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

朋友们在事情发生的地方没有太多的变化。成功地吸引了观众。

6.2.生活大爆炸理论

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

大爆炸理论在它发生的地方没有太多的变化。成功地吸引了观众。

6.3.绝命毒师

我没有《绝命毒师》的数据来绘制这个时候的热门地点。

7.区分彼此的字符

我正在使用神经网络(keras-tensorflow)来识别彼此不同的字符。在这里可以找到第 7 段每部情景喜剧对应的代码

混淆矩阵绘制如下。

7.1.美国国防科学技术研究所。

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

《老友记》上的人物差别很大,彼此可以辨认。

7.2.生活大爆炸理论

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

《生活大爆炸》中的角色非常相似,除了谢尔顿之外,彼此无法辨认。

7.3.绝命毒师

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

《绝命毒师》中的角色非常相似,除了沃尔特之外,彼此无法辨认。

8.角色交流方式的一致性

8.1.美国国防科学技术研究所。

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

没错。他们大多是这样

8.2.生活大爆炸理论

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

没错。他们有

8.3.绝命毒师

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

大多数情况下,他们会。沃尔特表现出矛盾是因为他的另一个角色——海森堡

在这里可以找到 8 的每部情景喜剧对应的代码

9.我们现在知道是什么让情景喜剧受欢迎了吗?

让我们一个接一个地看看最初提出的每个问题。

问:是因为各个角色说话和行为的一致性吗?

A.我们可以推断出这一点,因为所有三个受欢迎的节目都在他们的分析中反映了这一点。

问:是在不同地点重复拍摄,从而让你的观众觉得他们知道这个地方吗?

A.是的,这两部剧《神盾局》和《生活大爆炸》都证实了这一点。不幸的是,我找不到《绝命毒师》的位置数据。

问:是不同角色说话和行为方式的相似/不同吗?

A.它们可以非常相似,也可以不同。我们在这三场演出中观察到的混淆矩阵中没有得到确凿的证据。

问:是快乐、悲伤、恐惧、愤怒和厌恶等情绪的均衡分布让一部电视剧变得有趣吗?

A.是的,沃森 NLU 对三个节目输入的结果证实了这一点。

问:是角色相似/不同的个性让观众保持联系吗?

A.结果显示,显然是个性的相似性在这里胜出。

问:是有趣的倒叙吸引了观众吗?

A.不幸的是,“闪回”这个词没有出现在记录中,所以无法分析。

10.这一分析给节目制作人带来的启示很少

如果你有幸让一部电视剧持续很长时间,试着在每集中让每个角色的言语和行为保持一致。"

拍摄地点的集合中,应该有最小方差。这将向观众灌输对情景喜剧的环境和文化的归属感。

情景喜剧中人物的性格应该融合在一起,正如性格洞察结果所强调的。

情绪的分布都倾向于某个特定的情绪。F.R.I.E.N.D.S .主要展示快乐和悲伤;《生活大爆炸》也倾向于快乐和悲伤。《绝命毒师》是一部充满愤怒和悲伤的电视剧。关键是在一段时间内保持节目的情商连贯

只要满足上述标准,字符可以彼此不同或相似。

11.最受欢迎的角色

最后,我想看看这三部电视剧中最受欢迎的角色以及他们的性格特征。

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

评论

在我演讲的问答环节,我得到了一些有趣的问题和评论,如下。

问:如果我们使用计算机视觉技术添加面部表情分析,结果将如何改善/增强?

A.如果有时间,我很想尝试一下,或者如果有人尝试了,请分享结果:)。

问:《权力的游戏》在多个地点拍摄?这些结果如何证明这一点呢?

A.我同意它是在几个地方拍摄的,但最主要的还是像维斯特洛、临冬城等少数地方。所以,结果看起来是一致的。

问:如果这部剧是在现场观众面前拍摄的,会有什么不同?

A.我相信这会积极地影响节目,因为喜欢和快乐是很有感染力的。如果我看到观众笑着欣赏,肯定会对内容产生兴趣。

我在这里遵循的方法是一种理解导致热门电视节目的因素的方法。也可以有替代的方法。因为我在这里有很多可视化结果,所以后端动态支持的仪表板表示是我很想尽快做的事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值