原文:TowardsDataScience Blog
协议:CC BY-NC-SA 4.0
原文:https://towardsdatascience.com/my-2-year-journey-on-kaggle-how-i-became-a-competition-master-ef0f0955c35d?source=collection_archive———35———————–

在 Kaggle 上打印我的个人资料页面的屏幕。
上个月我写了关于我从开始学习 Python 到成为 Kaggle 竞赛大师的旅程。在那个故事中,我非常简要地描述了我在卡格尔的旅程。在这个故事中,我将更详细地描述对我的旅程影响最大的 3 场比赛。然后我会写几个关于如何应对任何竞争的话题。
- TGS 盐鉴定挑战
- 座头鲸识别
- Freesound 音频标记 2019
- 如何应对任何竞争
地球表面以下的盐沉积出现在地球的几个区域。地震成像使专家能够识别这种盐体。这是一项非常耗时的任务,并且会导致主观结果。在这场比赛中,kagglers 被要求建立一个分割算法,以自动和准确地识别地震图像中的盐体。

部分比赛数据的可视化由 Vicens Gaitan 在 Kaggle 上 。
这是我参加的第一次比赛,我已经有了如何训练模型和做一些实验来提高分数的基本想法——这主要归功于 fastai 课程杰瑞米·霍华德的程序员实用深度学习。
我从一个公共内核开始。在 3 个月的比赛中,我不断尝试越来越多的想法,其中大部分是在 Kaggle 讨论中发现的。那时候,除了尝试尽可能多的想法,我真的没有任何明确的策略。更重要的是,其他竞争对手声称对他们的模型有帮助的想法。
最终,我获得了一枚铜牌(前 10%),在 3229 名中名列第 186 名,距离银牌(前 5%)不远。我真的为我的成就感到高兴!但最重要的是,通过参加这个比赛和尝试很多想法,我提高了作为深度学习实践者的技能。
真的没有课程或书籍能让你成为实用深度学习的专家。就像学习演奏一种乐器。你可以学习关于乐器的所有知识,但是如果你想精通它,你将需要许多许多小时的练习。
科学家们使用照片监控系统来监控鲸鱼数量,以努力保存和保护这些海洋中的巨大生物。鲸鱼尾巴的形状和标记就像指纹,可以唯一地识别每个个体。在过去的几十年里,这项耗时的鉴定工作一直由科学家手工完成。在这场比赛中,卡格勒夫妇被要求建立一种算法,根据尾巴的照片来识别鲸鱼个体。

Kaggle 上的座头鲸识别中同一条鲸鱼的两幅图像示例。
对我来说,这次比赛可能是最有趣的案例研究。当我参加比赛时,我想这只是又一场图像分类比赛。没什么好担心的,对吧?不对。我很快意识到**使用基本的图像分类技术会导致非常差的性能。**问题在于,对于一些鲸鱼来说,数据集上只有很少的样本。有时候只有一个!数据集中还有许多鲸鱼以前没有被识别出来,应该被标记为新的鲸鱼。我甚至不知道如何开始解决这样的问题。
在比赛的第一个月,我花时间阅读科学文章关于少拍学习、人物再识别等等。有很多新的概念需要学习,比如按集训练。这就是为什么我花了一段时间才理解概念到可以用代码实现它们并开始在竞争中取得进展的程度。
即使理解了基本概念和术语,这也不是在公园散步,更像是攀登珠穆朗玛峰。我用一些标注跟踪了我的进度,这些标注在下图中。

我在驼背鲸识别卡格尔比赛中的进步。图片由作者提供。
如你所见,我花了大约两周的时间才接近最佳公共内核的分数。这意味着我一直在工作并尝试新想法,但我在排行榜上的排名几乎没有变化,因为许多 kagglers 通常会提交最佳公开解决方案。我自己有时也这样做,但这次比赛不是这样。
在我的解决方案中影响较大的一篇文章是“为三重缺失的人重新鉴定辩护”。我觉得写得很好,很有说服力。以至于我决定继续前进,实现这个想法。随着训练的进行,这个想法和从最困难的例子中取样的想法对我的结果产生了很大的影响。随着我实施新的想法并调试我的代码**,我能够在排行榜上逐渐上升**,最终以 0.92988 的最终分数排在 2129 的第 57 位。离最高分 0.97309 还差得很远,但是,尽管如此,直到比赛的最后两周,我都没想到能达到 0.9。
总的来说,这是迄今为止我学到最多东西的比赛。事实证明,在了解基础知识之后, **3 个月的工作足以接近任何新的深度学习项目。**即使这需要学习全新的概念。
能够在嘈杂的环境中自动准确地识别声音是一项艰巨的挑战。在这场比赛中,kagglers 被要求开发一种算法,将一个或多个标签归属于一组 80 个类别的音频数据。

图片由笔者此前在媒体上分享。
这场比赛对我来说很不一样。我习惯于在我的音乐项目中使用频谱图,因此我一开始就有很好的动机。我能够在一开始就登上排行榜的榜首。 **这给了我更多动力继续工作并改进我的模型。**事实上,这一策略非常成功,我得以在两个月的比赛中保持接近榜首的位置,并最终获得 880 分的第六名。当然,这不是一项容易的任务,竞争非常激烈,这在 Kaggle 很常见。在这次比赛中,我真切地感受到了接近巅峰的焦虑,每天都在为保持那个位置而奋斗 2 个月。比赛结束后,我好好休息了一下!
比赛结束后,我写了一个中等的故事来描述我的解决方案。你可以在下面的链接中找到它。
[## 多标签音频分类—2019 年 Freesound 音频标签第六名解决方案…
音频标记是用一个或多个标签或标记来标记音频片段的任务。在这篇文章中,我描述了我的…
medium.com](https://medium.com/@mnpinto/multi-label-audio-classification-7th-place-public-lb-solution-for-freesound-audio-tagging-2019-a7ccc0e0a02f)
现在让我们继续这个故事最重要的部分吧!
- **仔细阅读比赛和数据说明。**有时,在创建良好的验证集时,您应该考虑有关训练和测试数据分割的重要细节。
- 创建一个新的内核并探索数据,查看几个样本,以获得关于数据的良好直觉,以及您将来可能面临的问题。
- 通常需要对数据进行预处理。在该步骤中,当改变数据时,务必小心。有时候有些信息隐藏在你意想不到的地方。
- 花点时间考虑验证集,确保训练集和验证集之间没有信息泄露。稍后,随着您在排行榜中的进步,将验证结果与排行榜中的结果进行比较。如果它们相关性很好,这是一个好的迹象,表明你有一个好的验证集。
- 首先训练一个基线模型。使用验证结果来做决定,并且避免过分依赖公开排行榜分数——否则,当最终分数公布时,你可能会有一个不愉快的惊喜。
- 一旦你有了基线和稳定的验证集,你就可以开始改进了。如果您资源有限,请尝试从较小的图像(以防图像竞赛)或训练数据的子样本开始。这将节省你的时间,让你做更多的实验——增加你找到对你正在处理的特定问题最有效的技巧的机会。
- 总是阅读讨论以确保你不会错过其他竞争者分享的任何重要观点。
- 如果你被卡住了**,搜索最新的科学论文寻找新的想法**。最终,小小的改进很容易成为银牌或成功解决方案的区别。
- **总是看模型预测。**很容易只看验证和排行榜分数而忽略理解。相反,找到模型性能较差的样本。看数据。试着理解为什么这个模型在这样的任务中失败了。如果你找到了原因,你就成功解决了问题。
- 如果一个模型是好的,那么两个更好。**集合几个模型是大多数 Kaggle 比赛中必不可少的一步。**集合可以包含交叉验证折叠和/或几个模型。在核心竞赛中,时间限制不允许集合中有无限数量的模型。尽管如此,请确保优化您的推理代码,以使用尽可能多的模型。即使单个模特和组合在公共排行榜上的分数相似,通常组合在最终分数上的表现会更好。
如果你将所有这些想法与在几个比赛中工作的经验结合起来,你将准备好成功地面对任何深度学习问题。大多数时候这并不容易。这需要时间和努力。但是它会让你获得好的结果和伟大的学习之旅。
如果你正在努力获得一枚个人金牌(比赛大师排名的要求),尝试以下方法:选择一个更符合你个人兴趣的比赛,最好是研究比赛,并为此努力。通常,研究竞赛提出的问题需要新的想法和创造性思维。如果你理解了题目,你把工作时间放进去,你更有可能得到高分。在有数千人参加的更传统的比赛中,有时得分最高的队伍之间的差异几乎是残余的。位居前列可能需要一些运气。此外,要意识到你的约束。如果你有 GPU 的限制,选择一个小数据集的竞争,以确保你不处于劣势。
我希望你喜欢这个故事,并希望它能在你的旅行中帮助和激励你!我正打算写一系列关于使用 Pytorch 开始深度学习的故事,请考虑在这个链接 订阅我的 邮件列表,以防你不想错过任何未来的更新!
[## 我的 3 年历程:从零 Python 到深度学习竞赛高手
自从 2017 年开始学习 Python 以来,我一直遵循的道路是成为一名独自参加 Kaggle 比赛的大师…
towardsdatascience.com](/my-3-year-journey-from-zero-python-to-deep-learning-competition-master-6605c188eec7) [## 不归路:在过去的 6 个月里使用 nbdev 改变了我在 Jupyter 中编码的方式…
有了 nbdev,Jupyter 笔记本现在是一个有文化的编程环境。有了 nbdev,我的生产力提高了。我的…
towardsdatascience.com](/the-point-of-no-return-using-nbdev-for-the-past-6-months-changed-the-way-i-code-in-jupyter-2c5b0e6d2c4a) [## 最后的倒计时:部署我的深度学习项目
在过去的两周里,我使用 Google can 平台和 Django 将我的深度学习项目转移到生产中,以构建…
towardsdatascience.com](/the-final-countdown-deploying-my-deep-learning-project-29bf970e320b)
感谢阅读!祝您愉快!
原文:https://towardsdatascience.com/my-3-year-journey-from-zero-python-to-deep-learning-competition-master-6605c188eec7?source=collection_archive———13———————–

在 Unsplash 上由 Mantas Hesthaven 拍摄的照片。
- 为什么要开始?
- 学习 Python
- 学习实用深度学习
- 在卡格尔比赛
- 前进的道路
近年来,人们对深度学习和人工智能(AI)的兴趣呈指数级增长。这不仅是一个有望取得巨大进展的令人兴奋的话题,也是一个引起重大关注的话题。
好的一面是:
- 人工智能应用将允许自动化过程,否则将需要许多小时的重复劳动,否则在大规模上根本不可能。
- 人工智能将使汽车自动驾驶,并通过减少交通事故来拯救数百万人的生命。
- 人工智能将协助医生准确评估病人的病情。
- 艾将与艺术家一起创造新的艺术形式。
- 人工智能将帮助科学家在科学上取得新的进步。
这些只是让这个话题如此激动人心的应用的几个例子。然而,我们也需要意识到这些问题:
- 自动化会导致越来越多的人类工人失业。
- 使用人脸识别人工智能的大规模监控可能是对自由和民主的一大威胁。
- 人工智能可用于生成假新闻,包括视频和音频,有助于传播错误信息。
- 人工智能模型中的偏见会导致对少数群体的极化和歧视增加。
这些都是需要考虑的威胁的例子。对于其中一些问题,如人工智能模型中的偏见,生产和训练这些模型的数据科学家有评估和打击这种偏见的道德责任。
记住这些重要的考虑事项,让我们进入下一个主题——学习 Python。
2017 年初,我意识到如果我想进入深度学习,我需要先学习 Python。那时候我在大学里用 Matlab 做研究,那是我申请博士学位的前一年。我过渡到 Python 的策略是在我开始的每个新项目中使用 Python。
开始的时候,有点沮丧。我花了很多时间尝试用 Python 做一些我知道如何在 Matlab 中轻松完成的事情。但是几个月后,我开始用 Python 工作得更快,并意识到它的所有潜力。2017 年底,我已经不用 Matlab 了。
当人们问我如何开始使用 Python 时,我给出了同样适用于我的建议——在你开始的每个新项目中使用它。但是,如果你没有任何编程背景,找一些介绍用 Python 编程的在线课程大概会很有帮助。一如既往,熟能生巧。
一个非常重要的额外提示是看看其他人的代码或者征求对你的代码的反馈。通常,有几种方法可以对同一个流程进行编码,其中一种可能更简洁。使代码简洁明了将有助于你随着时间的推移提高生产力。
我尝试了几门在线深度学习课程,比如 YouTube 上的 Nando de Freitas 课程和神经网络以及吴恩达的深度学习课程。这些都非常有趣,是一次很好的经历,但真正让我向前迈进了一大步的课程是 fast.ai 深度学习 for Coders 。这对我改变了游戏规则。自上而下的教学方法非常有助于快速入门并立即加入 Kaggle 竞赛。最重要的是,fastai library 提供了开箱即用的工具来解决几种类型的深度学习问题。您不会因为开箱即用的解决方案而赢得任何竞争,但它会让您起步。之后,将最新的想法整合到 fastai 设置中通常并不困难,特别是在 fastai 版本 2 中。
如果我今天开始学习深度学习,我会从 fastai 课程开始。然后,随着你对这些概念的深入理解,你可以搜索其他学习材料,这些材料可以给你更多的技术见解。它们很有帮助,但是你首先需要动力。尤其是如果你像我一样是自学的话,拥有开始做实验的实用知识是一个巨大的动力。稍后,当你深入了解这些概念时,你也会发现这些信息更有用,更容易理解,因为你已经有了实用的知识。
在 Kaggle 比赛对我来说是最好的学习方式。竞争精神以及与其他人讨论和分享想法是快速学习和提高的好方法。这并不容易。我记得当我第一次开始做 Kaggle 的时候,我真的不知道我在做什么。当我能够在比赛中获得我的第一枚铜牌(排行榜前 10%)时,感觉就像一个里程碑。这是在 2018 年底。2019 年初,我向前迈了一步,经过两个月的努力,在另一场比赛中获得了银牌(前 5%)。后来在 2019 年年中,我终于获得了一枚金牌(第 6 名),并成为了一名 Kaggle 竞赛大师。
学习之旅并不轻松而且一帆风顺。在比赛中工作可能会令人沮丧,因为你经常花很长时间尝试新想法,但努力之后却没有任何效果。坚持是关键。如果你每天坚持不懈地尝试,你会发现什么样的技巧在特定的比赛中最有效。即使最终结果并不理想,最重要的还是学习。尝试新想法并评估结果的过程作为一种学习机制总是很好的,这将使你成为一名熟练的深度学习实践者。我喜欢认为在 Kaggle 中,真正的赢家是学得最多的人。
成为 Kaggle 竞赛大师后,我开始加入竞赛团队。与其他人讨论这些想法是很有收获的,团队成员可以学到很多东西。我也开始将深度学习应用到我的大学研究以及个人项目中。我发现致力于一个你想解决的问题是一种非常有趣的经历,而且通常这是你学到最多东西的方式。
从这个话题中得到的启示是,如果你是 Kaggle 的新手,向别人学习,不要担心你的分数。通常有一些不错的入门笔记本,它们可以成为很好的学习资源。但是,您应该尝试理解代码中发生了什么,以便可以改进它或将其应用于其他问题。
很难预测未来。谁会想到 2020 年我们会面对一个疫情?尽管如此,我相信随着技术的不断进步和新思想的不断涌现,深度学习将继续在社会中发挥越来越大的作用。对我来说,我想我会继续把更多的注意力放在个人项目上,如果我发现这些项目令人兴奋的话,最终会参加一些比赛。
从事个人项目是一条有趣的道路。你不仅会从事自己热爱的工作,还会创造出对他人有价值的独特东西。这可能会给你带来新的机会。
展望未来,我还会经常写作。我发现分享我正在研究的想法是跟踪我的进展和帮助其他人的项目的好方法。如果你从未尝试过写一个中型故事,那就试试吧!
我希望我的旅程可以激励你去追求一条相似的道路,如果那是你正在寻找的!**深度学习是非常令人兴奋的,即使你不想成为深度学习的实践者,拥有一些关于它的知识现在非常重要,将来会更加重要。**这样,当你阅读人脸检测和人工智能或任何其他有关人工智能的新闻时,你将能够更好地理解幕后发生的事情。这会让你对这件事有一个更明智的看法和意见。这很重要。无论是现在还是在可预见的未来,这都是一项极其重要的技能。
我正在用 PyTorch 开始一个关于深度学习的系列!请随时关注我的 Twitter ,不要错过任何更新!
[## 我在 Kaggle 上的两年旅程:我如何成为竞赛大师
描述我的旅程和策略,我遵循成为一个竞赛大师与个人金牌
towardsdatascience.com](/my-2-year-journey-on-kaggle-how-i-became-a-competition-master-ef0f0955c35d)
感谢阅读!祝您愉快!
原文:https://towardsdatascience.com/my-absolute-go-to-for-sentiment-analysis-textblob-3ac3a11d524?source=collection_archive———4———————–

来源

情感分析可以帮助我们解读大众的情绪和情感,并收集关于环境的深刻信息。情感分析是根据研究的需要分析数据并对其进行分类的过程。
这些情绪可以用来更好地理解各种事件及其造成的影响。L. Bing [1]强调,在研究文献中可以看到许多不同的名称,例如“情感分析、意见挖掘、意见提取、情感挖掘、主观性分析、情感分析、情感分析、评论挖掘”,然而它们都具有相似的目的,并且属于情感分析或意见挖掘的主题。通过分析这些情绪,我们可以发现人们喜欢什么,他们想要什么,他们主要关心什么。
TextBlob 是一个用于自然语言处理(NLP)的 python 库。TextBlob 积极使用自然语言工具包(NLTK)来完成其任务。NLTK 是一个库,它提供了对大量词汇资源的简单访问,并允许用户进行分类、归类和许多其他任务。TextBlob 是一个简单的库,支持对文本数据的复杂分析和操作。
对于基于词汇的方法,一种情感是由其语义取向和句子中每个词的强度来定义的。这需要一个预定义的字典来对消极和积极的词进行分类。一般来说,一条短信会用一包单词来表示。在给所有的单词分配了单独的分数之后,最终的情感是通过一些汇集操作来计算的,比如取所有情感的平均值。
TextBlob 返回句子的极性和主观性。极性介于[-1,1]之间,-1 表示消极情绪,1 表示积极情绪。否定词颠倒极性。TextBlob 具有语义标签,有助于进行细粒度分析。比如——表情符号、感叹号、表情符号等。主观性介于[0,1]之间。主观性量化了文本中包含的个人观点和事实信息的数量。更高的主观性意味着文本包含个人观点而非事实信息。TextBlob 还有一个参数—强度。TextBlob 通过查看“强度”来计算主观性。强度决定了一个单词是否修饰下一个单词。对于英语来说,副词用作修饰语(“很好”)。
例如:我们计算了“我一点也不喜欢这个例子,它太无聊了”的极性和主观性。对于这个特殊的例子,极性= -1,主观性是 1,这是公平的。
然而,对于句子“这是一个有用的例子,但我更喜欢另一个”。它为主观性和极性都返回了 0.0,这不是我们期望的最好的答案。
如果您的句子不包含任何在 NLTK 训练集中具有极性的单词,或者因为 TextBlob 对每个样本中的所有单词使用加权平均情感得分,则如果库恰好返回 0.0,则可以预期。在我们的例子中,这很容易分散单词之间极性差异很大的句子的影响:“有用的”和“但是”。
大多数情况下,对于简单的情况,TextBlob 工作得很好。
使用 TextBlob 应用情感分析的步骤–
1.导入 textblob
from textblob import TextBlob
2.定义一个计算主观性、极性的函数,并根据您想要设置的阈值给它一个分数。
使用 TextBlob 和分析数据的代码片段
我碰到的另一篇有用的文章是:https://Neptune . ai/blog/情操分析-python-text blob-vs-Vader-vs-flair
参考文献—
- https://www . cs . UIC . edu/~ liub/FBS/sentiment analysis-and-opinion mining . pdf
- https://github.com/sloria/TextBlob/blob/dev/textblob/
原文:https://towardsdatascience.com/my-amazon-data-engineer-internship-interview-experience-817419e9caf4?source=collection_archive———41———————–

美国宇航局在 Unsplash 拍摄的照片
信任是好的,但是让我们使用区块链
- 什么是智能合同?
- 智能合同是如何工作的?
- V 星系统的特殊智能合约。
- 哈希时间锁契约
- 不可替代合同
- 支付渠道合同
- 各种智能合同之间的比较
智能合同是一种自动执行的合同,买卖双方之间的协议条款直接写入代码行。该准则和其中包含的协议存在于一个分布式、分散的区块链网络中。代码控制执行,事务是可跟踪和不可逆的。
智能合同允许在不同的匿名方之间执行可信的交易和协议,而不需要中央权威机构、法律系统或外部执行机制。
智能合约最早是由美国计算机科学家尼克·萨伯在 1994 年提出的,他在 1998 年发明了一种叫做“比特黄金”的虚拟货币,比比特币的发明整整早了 10 年。事实上,经常有传言说萨博是真正的中本聪,比特币的匿名发明者,对此他予以否认。

绍博
Szabo 将智能合同定义为执行合同条款的计算机化交易协议。他希望将电子交易方法的功能,如 POS(销售点)扩展到数字领域。
在他的论文中,Szabo 还建议执行一项合成资产合同,如衍生品和债券。Szabo 写道:“这些新的证券是通过多种方式将证券(如债券)和衍生品(期权和期货)结合起来形成的。由于对这些复杂的期限结构进行了计算机化分析,非常复杂的支付期限结构现在可以纳入标准化合约,并以低交易成本进行交易。”
对于这篇特别的文章,我们将研究 V Systems 推出的智能合约,以了解智能合约中的各种新进展。

V 系统
它是一个开源的区块链平台项目,最近在其版本 2.0 升级中实现了支付通道智能合约。该项目由首席建筑师 Sunny King 领导,他也是 POS(股份证明)的开发者。)
哈希时间锁定合同(HTLCs)是 P2P 金融未来的基础构件。它们使我们能够建立原子互换和闪电网络——替代现有货币和金融体系的局限性。
资产锁定是区块链系统中的一项有用功能。锁定合同是一种工具,用于在用户定义的时间段内锁定资金,然后才能取回资金。

Alice 将她的 VSYS 硬币或代币存放到链条上的锁契约中。使用“锁定”功能,她提交一个解锁时间戳。一旦设置了时间戳,她只能在解锁时间戳之后提取她的 VSYS 硬币或代币。在解锁时间戳之前,只能从令牌协定中调用存款触发器。在解锁时间戳之前,锁合同只接受押金。
这个想法就像一个池过程,你可以随时增加池的大小和延长锁的时间。如果你愿意,它也可以被再次使用。

非同质化通证
不可替换的令牌包含记录在其智能合约中的识别信息。正是这些信息使得每个令牌都不同,因此它们不能被另一个令牌直接替换。它们不能互换,因为没有两个是一样的。相比之下,钞票可以简单地交换,如果它们是相同的价值,对持有者来说没有区别。
不可替换的代币是不可分割的,就像你不能把音乐会门票的一部分送给别人一样。演唱会门票的一部分本身没有任何价值,也不可兑换。
不可替代契约最显著的特征是不可替代令牌的最大值和单位总是 1。它只代表一个独特的不可分的东西。
当不可替换的令牌契约被初始化时,它的常数被设置为零,因为它还没有被发布,因此还不存在。当一个不可替换的令牌被发行后,它就开始存在,并且它的供应量永久固定为 1。这确保了您在契约中所做的每个操作的稳定性和安全性,也确保了令牌是可证明唯一的。
不可替换的令牌具有独特的属性,它们通常与特定资产相关联。它们可用于证明游戏皮肤等数字物品的所有权,直至实物资产的所有权。
其他代币是可替换的,就像硬币或纸币一样。可替换令牌是相同的,它们在交换时具有相同的属性和值。
不可替换的令牌用于创建可验证的唯一数字项目,并证明其所有权。不可替换的令牌允许在多个游戏或应用程序之间无缝地使用独特的资产。
例如,一把独特的剑可以用在十五个不同的游戏中。
比赛
如果游戏玩家在游戏中拥有独特的物品,游戏外所有权和可转让性的明确证明将增加他们物品的价值。游戏的创建者可以在公共区块链上使用不可替换的令牌来代表用户在游戏中拥有的物品,以增加物品在其生态系统中的价值。在公共区块链上证明不可替换代币的所有权是很容易的,这给了玩家额外的所有权保障。这样,不同游戏之间的物品交换也是可能的。
艺术和收藏品
独特物品的所有权和出处可以使用不可替换的令牌来证明。在一双独特的设计师鞋的情况下,制造商可以将仅绑定到那双鞋的不可替换令牌的所有权转让给买方。如果这些鞋子被买家出售,他们可以将代币的所有权转让给新的所有者。这增加了独特的鞋的价值,证明他们不是假冒的。
优惠券
一家公司可能希望分发优惠券,允许用户在唯一的条件下相互转让。不可替换的代币允许该公司发行任意数量的独特优惠券。
零开发工作: V System 的不可替代令牌是唯一的、不可分割的令牌,可以通过零软件开发工作来创建。

- 主要地,不可替换的代币在游戏和加密收藏品中实现。对于游戏来说,不可替代的代币可以用来代表游戏中的物品,如皮肤,这可能允许它们被移植到新游戏或与其他玩家交易。
- 然而,它们的潜力要大得多,可能应用于版权和知识产权、票务以及视频游戏的销售和交易。
- 不可替代的令牌增加了创造安全令牌的潜力,这是数字和现实世界资产的令牌化。像房产这样的实物资产可以被标记为部分或共享所有权。如果这些安全令牌是不可替换的,那么资产所有权是完全可追踪和清晰的,即使只有代表部分所有权的令牌被出售。
- 不可替换令牌的进一步应用可以是资格认证、软件许可、担保,甚至是出生和死亡证明。不可替代令牌的智能合约不可改变地证明了接收者或所有者的身份,并且可以存储在数字钱包中,以便于访问和表示。有一天,我们的数字钱包可以包含我们拥有的每一个证书、许可证和资产的证明。
区块链创新发誓要鼓励安全、最小努力的通用支付处理服务(和不同的交易),使用编码的分布式记录,对交易进行可信的实时确认,而不需要中间人,例如银行和清算所。
区块链支付面临的挑战
- **举例:**比特币网络每秒处理 7 笔交易,以太坊每秒 15 笔交易,与 VISA 网络达到的每秒 1700 笔交易相比相形见绌。因此,可扩展性仍然是将加密货币用于零售和其他大规模应用的主要障碍。可伸缩性挑战的根源是底层共识协议的低效率:每个事务都必须经过完全共识才能得到确认,这可能需要几分钟到几小时。
解
在众多提高加密货币可扩展性的解决方案中,一个领先的方案依赖于支付渠道。支付通道是一种加密货币交易,它在区块链上保存货币,以便在预定的持续时间内与预先指定的用户进行交换。
- 示例: Alice 可以与 Bob 建立一个支付通道,在该通道中,她每月持有 10 个代币。现在,Alice 可以从托管帐户发送 Bob(只有 Bob)签名的交易,Bob 可以以安全的方式私下验证它们,而无需区块链的中介。如果 Bob 或 Alice 想要在任何时候关闭支付通道,他们可以向区块链广播最近签署的交易消息,以完成资金转移。
- 支付渠道的多功能性源于支付渠道网络(PCN ),其中不共享直接支付渠道的用户可以通过中介进行交易,只收取象征性的费用。
下面提到的几个重要变量存储在 V System 的合同中,这些变量定义了支付渠道功能的行为。
- 累计付款是发送方已经向接收方支付的累计金额。
- 到期时间戳是接收方不能再收款的时间戳,发送方可以将剩余资金卸载回自己。
- 累计负载是发送方加载到信道的累计量。
为了确保安全,这三个变量只能增加⬆️
- 由于累积的负载不能减少,接收者可以确信在信道中至少有一定量的资金,而不必经常检查合同的状态值。在渠道关闭之前,汇款人不可能从渠道中提取资金。
- 由于累计付款不可能减少,收款人可以提取他们已经收集的任何资金,而不必等待通道结束。
- V System 的实施允许发送者通过更新到期时间戳和将额外资金加载到通道中,即使在现有支付通道到期后也可以重新使用它们。
要了解 V 系统的更多信息,请访问此处的。

来源:[4]

来源:[4]
支付渠道网络是双向支付渠道的集合。如果 Alice 想要向 Bob 发送三个代币,她首先找到一个到 Bob 的路径,该路径可以支持三个支付代币。路径上的中间节点(Charlie)将把支付中继到它们的目的地。因此,发生了两个事务:Alice 到 Charlie,以及 Charlie 到 Bob。为了激励 Charlie 参与,他收到了一笔路费。为了防止他窃取资金,加密哈希锁确保所有中间交易只有在交易接收者知道 Alice 生成的私钥后才有效。一旦 Alice 准备好付款,她就在带外将密钥交给 Bob 他可以广播它(如果他决定关闭频道)或者把它传给查理。查理受到激励,将密钥向上游传递给爱丽丝,这样他也可以得到报酬。请注意,Charlie 与 Alice 和 Bob 的支付渠道是独立的:Charlie 不通过区块链就不能在他们之间转移资金。


参考文献:
- 美国运通
- 轴行区块链论文
- 支付方式下的高吞吐量
- 频道 走向 _ 比特币 _ 支付 _ 网络
- 五.系统文件
我们是可被黑客攻击的动物,区块链可以增加我们被黑客攻击的安全性。如果人工智能可以黑你,区块链可能会充当你的防火墙。
谢谢,希望你今天学到了新东西!
在 LinkedIn和 YouTube 上关注我。
[## 马尼克索尼-马尼克索尼- YouTube | LinkedIn
查看 Manik Soni 在全球最大的职业社区 LinkedIn 上的个人资料。Manik 有 8 个工作列在他们的…
www.linkedin.com](https://www.linkedin.com/in/maniksoni)
我的其他几篇文章:
[## 消失&爆炸梯度问题:事实背后的数学
你好星尘!今天我们将看到消失&爆炸梯度问题背后的数学原因,但首先让我们…
binarykeys.in](https://binarykeys.in/2020/07/vanishing-exploding-gradient-problem-math/) [## LSTM 细胞:用代码从零开始理解架构
LSTMs 是一种特殊的 rnn,具有处理长期依赖关系的能力。他们还提供解决方案…
binarykeys.in](https://binarykeys.in/2020/07/lstm-cell-architecture-scratch-code/)
原文:https://towardsdatascience.com/my-approach-to-learning-new-data-science-concepts-850e6ad3d736?source=collection_archive———30———————–

我在办公桌前学习新东西。出于法律原因:我拥有这张照片的权利。
学习数据科学有时很有挑战性。当你进展甚微或毫无进展时,很有可能会陷入学习的无底洞,感到被打败。这就是为什么有意识地学习新概念是有好处的。
在我的教育和职业生涯中,我不得不应对需要快速掌握新技能或学习新概念的情况。这帮助我想出了一个我至今仍在使用的系统。最近,我一直在学习一个叫做 BERT 的预训练 NLP 模型。感谢这次经历,我能够观察自己,看到我学习的道路。
这是我学习新概念、新想法、新解决方案的方法。
学习一个新概念最大的问题之一就是很多时候你不知道自己不知道什么。反过来,它让学习任务变得不可能和令人畏惧。我发现完全投身于这个问题会让任务看起来更容易。有点像暴露疗法。
我做的第一件事是评估形势。我遗漏了多少信息?
为了解决这个问题,我找到了一些资源和内容,这些资源和内容讲述了我正在努力学习的具体事情。这些可以是 YouTube 上的文章、视频、讲座…任何东西都可以。
我会对他们进行第一遍检查,看看哪些部分我不理解,他们讲了哪些我不知道的技巧。我只是记下所有对我没有意义的东西。此时,我的目标还不是学习概念。我只是想了解一下这个新概念的情况。我做的笔记将包括或指出我学习这个概念的先决条件。
这是至关重要的一步,因为即使有很好的“初学者”和“傻瓜”类的内容,对他们来说,假设一些关于这个主题的基本知识也并不罕见。有了先决条件清单,你就能更好地控制局面。
这一步让你自觉或不知所措是非常自然的。看着看似无穷无尽的你还不知道的东西,会让学习任务看起来很庞大。但这不应该阻止你!它几乎总是比看上去的要好。很可能你列表中的许多概念是高度相关的。这意味着,当你试图学习概念 A 时,你也将学习和理解概念 B、C 和 d。当我学习新东西时,这种情况总是发生在我身上。
学习数据科学概念有很多选择。有很多人在网上创造关于一切数据科学的优质内容。首先决定,什么类型的内容有助于你更好地学习?有可能存在以下几种选择:
- 关于这个主题的已发表的论文
- 关于这个话题的博客文章
- 关于这个主题的大学讲座的录像
- YouTube 上有人解释这个话题的视频
当然不用只选一个。对我来说,当我从 YouTube 视频中获得高层次的理解,然后观看更深入的讲座时,效果最好。如果我觉得我需要更深入的知识,我会阅读关于这个主题的论文。这就引出了我的下一个观点
你应该有一个学习这个新事物的理由。这个具体的原因会帮助你调整你的学习努力。它会帮助你弄清楚该走多深,在哪里停下来。
我知道,当你刚刚开始学习数据科学时,可能很难找到一个可靠的理由。一种选择是想出一个你可以用这些技能的项目。也许是你作品集的一个项目?或者只是打算在某个项目中使用它们,你可以在途中想出这个项目。
如果这些对你不起作用,你可能需要使用你的意识技能来确保你不会在学习概念中不必要的部分时迷失。
所以你可能会:
- 想把这些新知识应用到一个项目中。然后你可能需要知道新算法的基本工作原理(假设它是一个算法)以及如何在实践中实现它。你不需要能够证明与这个概念相关的方程。你只需要使用它,并相信计算的人是正确的。
- 运用这一概念撰写学术论文。然后,你会希望充分了解一个新模型/算法或概念的缺陷和不足。报告研究结果需要你对一个概念的整体运作有更深的理解。
- 想要使用或维护其他人的代码,或者与一个更资深的人一起工作,他将完成大部分工作。那么,也许首先,你只需要在一个高层次上了解代码是如何工作的,以及它背后的一般逻辑,而不需要太多关于它背后的理论。
你自己决定,你想去多深?如果你不阻止自己,你几乎总是可以更深入。确保你有一个非常明确的停止点。不要迷失在学术论文、博客帖子和你在途中学到的有趣闪亮的东西中,它们会分散你对实际目标的注意力。
当然,有时有些与概念相关的东西只是很有趣,你想了解更多。我处理这种情况的基本方法是,当有类似的事情发生时,我会把它记在我的笔记应用程序上。当我有时间的时候,我总是能回去调查它。
在你理解了这个理论之后,你还需要知道如何实现它,因为这是你最终想要做的。不缺少操作视频、博客帖子或教程文档。你只需要找到他们。为了找到它们,我的建议是无耻地谷歌一下。
当你刚开始时,很容易认为每个人都有一个固有的知识,知道如何使用每一个关于最新技术的新库。但事实并非如此。许多人在第一次开始使用一个新工具/框架/库时都会经历一个初学者阶段。这就是为什么网上有这么多教程和操作指南的原因。
我通过谷歌搜索“如何为 NER 任务实现 BERT”开始了这部分的学习。这让我意识到有一个 GitHub 资源库,由一家名为 Hugging Face 的公司提供,里面有很多教程和文档,非常有用。他们甚至有我可以立即开始使用的指南笔记本。因此,我的下一步是自己尝试代码,破坏东西并努力修复它们。
我的观点是,用你能想到的最好的查询开始寻找你想要的。它会把你带到某个地方,你挖掘得越深,你学到的就越多。你所做的每件事都将帮助你更好地学习实现。即使是令人沮丧的长达一小时的如何安装这个新库的搜索也会帮助您了解一些您不知道的关于这个库的新东西。
请记住,实现与学习理论是完全不同的技能。尽管你知道算法在理论上是如何工作的,但你可能会觉得你是从零开始。根据不同的库,它可能会让人感到难以理解。但是不要让它阻止你。学习实现的最好方法就是尝试。
当学习一个新概念时,更喜欢使用免费资源是正常的,但是一个结构良好的课程可以使你的学习发生最大的变化。就我的目的而言,我意识到我需要复习一下 rnn 是如何工作的,以及一般来说,序列到序列模型。我偶然发现了吴恩达在这方面的短期课程,我很高兴。它为我节省了很多试错和挫折的时间。
特别是如果你是一名忙碌的专业人士,正试图从当前的职业跳到数据科学,那么通过参加结构良好的课程来节省时间是非常值得的。
我发现初学者最大的问题之一是他们很难弄清楚他们所学的东西是如何组合在一起的。你可以在一篇博客文章中学习 ML 模型,在另一个 YouTube 视频中学习数据清理,但是将这些知识结合在一起并学习它们如何相互影响是完全不同的技能。
如果你也在纠结这个,我有一些好消息!我的新课程将是一个自始至终完全指导的数据科学项目构建器。我们将从零开始,从建立数据科学环境、构建项目和收集数据,直到模型培训、调整和准备好项目组合。请继续关注更新和特别发布折扣。
同时,保持轻松愉快的学习。感到失落和不知所措是很正常的。但是即使是最难学的东西也不是不可能的。如果你遵循这些步骤,你将能控制你的学习,并开始有效地取得进步。
👉对数据科学领域以及如何开始学习感到困惑? 免费参加数据科学入门迷你课程 !
原文:https://towardsdatascience.com/my-biggest-career-mistake-in-data-science-b95ad9fd0ff7?source=collection_archive———1———————–

图片来源:维基共享。错误时有发生。在林肯纪念堂,一位艺术家不小心在应该是 f 的地方刻了一个 E。
在我的职业生涯中,不久前有人在工作中问了我一个问题。这个问题让我意识到我犯了一个巨大的错误。这个错误损害了我已经做了五年多的工作的声誉。
从广义上讲,这是我在攻读博士学位时就开始的工作,并在随后的两家雇主那里延续了下来。以下是对这种互动的基本真实的描述和对经验教训的解释。
你认为我们什么时候能够开始使用机器学习、人工智能和预测建模?

版权所有 2020 亚当·罗斯·尼尔森 —保留所有权利。一位数据科学家在上班的第一天会见了公司首席执行官。首席执行官请求帮助预测哪些用户将进行购买。数据科学家马上开始工作。
当我的同事问我“你认为我们什么时候能够开始使用机器学习、人工智能和预测建模”时,我已经做了几个月了
我惊呆了。多年来,我们一直在使用机器学习、人工智能和预测建模。我不明白这个问题。
抛开我的困惑,我优雅地指出了我们在近两年前实施的一个著名项目。
我说,“你记得我们去年秋天做的那个项目吗?我们公司一半的人都在会议室呆到深夜?”
同事说:“当然!”这位同事补充道:“那真是太有趣了,我的团队现在还把它当作美好的回忆来谈论。我知道我们做出了巨大的改变。”
我说,“我也喜欢那个项目……事实证明,我们使用了预测模型来确定我们将邀请哪些客户参与那个项目。我们一直在使用预测模型。我们每天都在用!”
问题是,我的同事,也许是大多数,不知道我们正在(并且已经有很长一段时间)成功地实现机器学习、人工智能和预测建模,这些都是数据科学工作的核心方面。真实的故事,这个问题是我的错。

版权所有 2020 亚当·罗斯·纳尔逊 —保留所有权利。半自传体的故事。在这个故事中,一位首席执行官要求新的数据科学家预测哪些用户将进行购买。在用逻辑回归集成执行了那个任务之后,CEO 问道:“你试过机器学习吗?”
这幅漫画中的数据科学家和我在数据科学职业生涯的早期,低估和错误描述了这项工作。逻辑回归是一种有监督的机器学习技术。使用集成(多个实施相关模型)也是预测分析中常用的技术。
我认为我避免使用“机器学习”、“人工智能”和“预测建模”等当代、术语、包罗万象、几乎毫无意义的术语是在帮自己和他人的忙。
我用我知道的更具体、更精确的术语和短语来代替包罗万象的流行语。这幅漫画中的数据科学家也犯了类似的错误。
无意中,由于没有明确地将逻辑回归的集合描述为受监督的机器学习算法,很少有人意识到这项工作是数据科学的应用。
从这次经历中,我学到了,并且仍在学习,许多重要的经验。以下是其中的几个。
- **清晰地向他人表达你的努力。**向他人清楚表达你的努力意味着花时间以尽可能多的交流方式交流你到底在做什么以及为什么。如果你幸运的话,老板或导师会帮助你,但是不要等待许可。动手吧!*为了避免这种错误,找到并使用尽可能多的沟通方式(如面对面、一对一、小组、Slack、电子邮件、状态报告等)。).*补充提示:找到你知道会被听到的交流方式。如果不确定,寻求帮助来确定贵公司最有效的模式。
- 言语很重要。在你发现他们的地方遇见他们。就我而言,我没能在同事们所在的地方见到他们,因为当他们期望听到“预测分析”时,我用“监督机器学习逻辑回归集成技术”击中了他们。我错误地认为这将是对我自己和其他人的一种恩惠,将作品去神秘化。我错了,我把工作搞复杂了。为了避免这种错误,在你开始谈论作品之前,先听听你的听众会认识的术语和短语的线索。使用你的听众会认识的术语和短语。带着关心和同情介绍新的术语和短语。
- 历史会重演。回顾我在成为数据科学家之前的工作(通常是作为一名教育工作者或大学管理人员),我发现我之前低估或错误描述了我的工作。这是任何行业的专业人士都会犯的错误——无论是技术性的还是其他的。为了避免这种错误,要从过去吸取教训,否则你将被迫重新经历。
[## 加入我的介绍链接媒体-亚当罗斯纳尔逊
作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…
adamrossnelson.medium.com](https://adamrossnelson.medium.com/membership)
本文描述了我在数据科学职业生涯中犯的最大错误之一。有一次,一位同事问我“你认为我们什么时候能够开始使用机器学习、人工智能和预测建模”,我意识到自己犯了这个错误
那时,我们已经在那家公司使用机器学习、人工智能和预测建模很长时间了。
让我的同事认为数据科学仍然是一种渴望是错误的。我尽量避免使用术语、无所不包、几乎毫无意义的流行词汇,从而变得更加透明。但这一策略似乎适得其反。
在解释了这是如何发生的故事之后,本文还提供了一个可以从经验中吸取的教训列表。
原文:https://towardsdatascience.com/my-boss-and-i-spent-two-weeks-obsessively-building-a-covid-19-data-hub-f5898daadb18?source=collection_archive———48———————–

图片来源:gratisography.com
编者按: 走向数据科学 是一份以数据科学和机器学习研究为主的中型刊物。我们不是健康专家或流行病学家,本文的观点不应被解释为专业建议。想了解更多关于疫情冠状病毒的信息,可以点击 这里 。
这一切都始于我试图回答一个本该简单的问题。
我住在旧金山湾区,这里是新冠肺炎疫情最严重的地区之一,也是这种病毒的早期震中之一。但我不住在圣克拉拉县,那是海湾地区早期曾有过一次巨浪的地方。我住在北边一点,在海湾对面的奥克兰。
因此,尽管圣克拉拉的新病例层出不穷,但我想知道奥克兰和阿拉米达县(奥克兰所在的县)是如何受到影响的。
像其他人一样,我的经历让我想知道在我的城市这种情况有多糟糕。我站在乔氏店里的一条队伍中,这条队伍从收银台绕过商店。我困惑地发现卫生纸成了新的抢手货。就像我的公司一样,我听说越来越多的朋友在家工作。但这仅仅是人们采取预防措施,还是表明情况变得有多糟糕?我需要数据。
我的第一站是每个人都去的地方,约翰霍普金斯仪表板。
这个仪表板在早期确实有地区/县级别的数据,但是在某个时候删除了它。这个仪表板设计得很好,但没有我想要的数据粒度来了解我的本地社区正在发生什么。无法进一步挖掘数据。我还想探索更多的数据可视化,而不仅仅是案例的数量。
我还尝试了纽约时报、世界卫生组织和 ESRI(ArcGIS 的开发者)制作的仪表盘。它们都没有真正给我我想要的数据的特异性。
幸运的是,就在这个时候,我的同事杰伊(Jay)突然给我发了一条短信(好吧,从技术上讲,他是我的老板,但我不擅长处理层级关系,所以我倾向于把每个人都当成合作者)。
“嘿,伙计,你有没有发现什么好的冠状病毒数据来源?”
原来他一直在做同样的搜索。他还对缺乏容易获得的新型冠状病毒数据感到沮丧。
对杰伊和我来说,这篇文章开启了我们两周的构建和重建自己的仪表盘的工作,我们可以在仪表盘上找到任何可信的新冠肺炎信息。我们最初为自己构建它是为了帮助我们理解正在发生的事情,但随着事情的发展,我们不断添加越来越多的仪表板,最终决定我们应该公开分享它。
但是决定公开发布它带来了另一个挑战。我们一直在为自己建造这些。我们没有集中导航或干净的组织。见鬼,我们的大部分图表都缺少标题和轴标签——这会让我的研究生院顾问们畏缩不前。

我的研究生院顾问如果他们看到了早期的数据可视化仪表板(来源:knowyourmeme.com)
但是我们加倍努力,几个不眠之夜后,我们做出了一些值得骄傲的东西。
你可以在这里查看最终结果:新冠肺炎数据中心

图片由作者提供。看仪表盘这里。
最终,我们发布了 10 个国家的仪表板,一个按邮政编码搜索的页面,这样人们就可以看到他们所在的地区,一个旧金山湾区的仪表板(我最喜欢的),以及 10 个美国州的仪表板。
我们最近还增加了一个显示美国测试数据的仪表板,开放了 API,任何人都可以提取我们的数据,以及几个基于搜索的分析页面。

美国的测试地图。见测试仪表板这里(图片由作者提供)
我完全承认它仍然有一些部分需要一点设计和润色。但我很高兴能建立一些东西,希望能帮助人们在这场危机中获得可操作的信息。
我们也很乐意接受关于下一步要做什么的建议或请求。下图是一个新的仪表板,可以方便地比较不同国家的新冠肺炎增长曲线。我们建立它是为了回应人们希望能够监测哪些国家成功地使曲线变平的评论。如果有足够的需求,我们可能会为美国各州建立一个类似的。

这个仪表板的目标是让人们相对容易地看到哪些国家正在拉平曲线(图片由作者提供)
我们也在继续扩建。从我开始写这篇文章到今天,我们发布了一个新的动画形象,展示了新冠肺炎病例在各州的进展情况(见下文)。
作者视频。点击这里查看完整的/当前的新冠肺炎动画时间轴。
当前最大的挑战是数据访问不断变化。约翰·霍普金斯大学的数据集令人惊叹,我们非常感谢他们。也就是说,在过去的几周里,访问它的能力和方法已经发生了几次变化,这要求我们重新设计我们的数据中心。我们的理想是有一个清晰一致的 API 来提取数据。但希望我们的 API 也能为其他人所用。

当数据源改变它们的 API、数据格式或访问方式时,感觉如何。(来源:gratisography.com)
另一个巨大的挑战是获得与冠状病毒爆发相关的更丰富的数据集,以便我们可以创建更具可操作性的可视化和仪表板。在我们的列表中,一些最重要的是医院床位利用率、城市级数据以及与失业救济相关的预测。
我至少见过一个县获得市级数据的案例,但由于这些数据的来源,它可能在一段时间内对其他所有人都不可用。
Contra Costa County 通过从 CalREDIE 手动抓取数据并将其手动放入他们的系统,完成了城市级数据的采集和发布。
对于那些不知道的人,CalREDIE 代表加州可报告疾病信息交换。这是一个由加州公共卫生部门主办的电子疾病报告和监测网站。
你看,有些疾病和情况是州法律强制要求医疗服务提供者和实验室报告的。当医疗服务提供者和实验室报告这些情况时,他们会进入 CalREDIE。新冠肺炎病例就是这样一种情况,所以理论上,加州所有的新冠肺炎病例都将进入加州医院。
问题是:目前,出于完全正当的隐私原因,CalREDIE 中的数据只能由当地卫生部门和加州公共卫生部门访问。没有用于数据匿名版本的 API。这就是为什么康特拉科斯塔县不得不手动收集数据,将其匿名,并将其放入他们的新冠肺炎门户网站。
一些新闻媒体已经建立了非常惊人的数据可视化。《旧金山纪事报》是一个页面,即使我们的数据中心已经启动,我仍然会定期访问。但是并不是所有的新闻媒体都有这种能力,即使他们的读者会从疫情数据中受益。如果你为一个需要可视化的组织工作,请联系我。您可以免费将我们的任何可视化添加到您的网站上。
我们的数据中心中的任何可视化都可以用 iframe 或一些 javascript 嵌入到另一个网站中,我很乐意帮助你设置。
原文:https://towardsdatascience.com/my-capstone-project-exploring-toronto-and-searching-for-the-best-place-to-establish-an-indian-af140e77250b?source=collection_archive———24———————–

在 Unsplash 上由 mwangi gatheca 拍摄的照片
尊敬的读者们,你们好,这是我第一次写博客,并把它发布出来让大众仔细阅读。我写这篇博客是作为我的 IBM 数据科学顶点课程的一部分。我的任务是提出一个假设的问题,并提出一个面向数据科学的解决方案,以发掘有意义的见解和结论性的结果。顾名思义,这里的任务是探索美丽的多伦多市,遍历其邻近地区,并最终提出几个有商业潜力的建议,以开设一家新的印度餐厅。
在制定问题陈述时,我考虑到了个人在现实世界中可能面临的困境。因此,我想出了一个问题陈述,旨在为多伦多市的一家印度餐馆找到最佳地点。
这将为两种不同的受众群体服务。首先,这将有助于那些打算在酒店行业(如餐馆)开展新业务的人找到一个印度餐馆最少的地方。其次,这可以帮助游客根据他们的个人喜好选择地点(行政区)。例如,一个有很多餐馆的行政区或一个有很多游客可能感兴趣的公园的行政区。
以下项目所需的数据集来自三个不同的数据源。下面列出了三个数据源,
- 一个维基百科页面获取多伦多市的行政区和社区。
- 答。csv 文件来获取对应于每个邮政编码的纬度和经度。
- foursquare api 获取附近不同的公共场所。
维基百科页面包含了多伦多的邮政编码表,以及多伦多市的行政区和社区。的。csv 文件为我们提供了多伦多地区每个邮政编码的经度和纬度坐标。该数据是有益的,因为这些坐标随后与 four square api 一起使用,以给出每个街区中受欢迎的场所的列表。
这些数据是全面的,并产生了与多伦多市相关的有价值的见解,最终帮助我们挖掘出结论性的结果和观察。在项目开始时,数据源被认为是不干净的,需要密集的预处理,以便将其转换为能够处理机器学习算法和在其上实现的可视化操作的工作集。
表格形式的数据在进入项目的预处理阶段之前看起来是这样的。

不干净的数据集(图片作者
一旦使用数据预处理工具处理了从数据源获取的数据,它看起来就像下面给出的表格。

干净的数据集(图片作者
我执行的第一步是从维基百科页面抓取数据,包括所有的行政区和社区以及它们的邮政编码。我将它转换为数据框,因为在使用可视化技术进行分析时,它们是最好的数据结构。数据框仍由许多可视为缺失值的值组成,因为邮政编码未分配给任何区或邻域。当我们进入项目的后期阶段时,缺失的值会导致结果的差异。因此,我删除了所有缺少值的行。
第二步包括从. csv 文件导入数据。的。csv 文件由每个邮政编码的经度和纬度坐标组成。这个。csv 文件被导入到数据框中,以便于后期分析。随后,我合并了由区和邻域信息组成的数据框和由坐标值组成的数据框。合并是在邮政编码列上实现的,该列后来从最终的表中删除,因为它对进一步的分析没有任何用处。
数据分析阶段包括两个重要的任务,为了得到问题陈述的答案,必须完成这两个任务。我们问题陈述的两个方面包括。
- 行政区分析。
- 根据所选地点附近印度餐馆的数量,寻找在多伦多市建立印度餐馆的最佳可能邻近地区,即(选择竞争最小的邻近地区)。
首先,我从区分析开始。为了获得特定行政区不同场馆所需的数据,我使用了 foursquare api。当客户端 id、客户端机密和 Foursquare api 的版本被传递时,foursquare api 被链接到我的代码。这意味着我与 foursquare api 建立了连接,我可以调用 foursquare api 来获取任何所需的场地信息,包括多伦多市的任何一个区。因为该项目是基于逐区分析的。我将最终的、干净的数据框分割成单独的数据集,其中每个表只包含一个区的数据。这是通过保留与我们感兴趣的行政区相关联的行来实现的。完成上述步骤后,我编写了一个函数,该函数将调用 four square api 并访问数据,如场馆名称、场馆类别、场馆纬度、场馆经度等,然后将这些数据与我们在上一步中提取的区表相结合。我还删除了区列,因为它对我们的分析没有必要,最后我根据它在数据集中出现的次数对场馆类别进行了分组。分组场馆类别的样本数据集如下所示。

包含场馆数量的数据集(图片由作者提供)
经过彻底的数据分析阶段后,我提出的数据框架被绘制到一个条形图上,以便于可视化和可读性。下图描绘了斯卡伯勒的条形图。

斯卡伯勒场馆数量条形图(图片由作者提供)
作为我顶点工程的下一步。我开始对整个多伦多市进行分析,目的是找到最适合开设印度餐馆的街区和行政区。解决此问题陈述所遵循的流程与行政区分析所遵循的流程相似。我们再次使用用于区分析的相同函数来调用 foursquare api。但是,我们没有传递根据各个区分开的数据帧,而是传递包含多伦多市所有区和社区信息的数据帧。这给了我们一个大的数据框架,其中包含了多伦多市几乎所有场馆的信息以及这些场馆的类别。然后,我们提取包含印度餐馆信息的行,并丢弃数据框中的其余条目,因为它们对我们没有用。我们现在手头的数据集是一个简洁的数据集,包含了对我们的项目很重要的信息。然后,我们创建一个新的数据框,其中包含每个行政区的印度餐馆数量。下图描述了数据框。

每个区的印度餐馆数量(图片作者
这些数据被绘制在一个条形图上,以便于理解,同时也能吸引阅读本文的读者的注意力。

一张柱状图展示了每个区的印度餐馆数量
此外,我还计划在多伦多地图上标出印度餐馆的位置。地图上将在餐馆的位置有一个标记,这表示附近有一家印度餐馆。此外,当一个人点击标记时,会弹出一个标签,描述附近印度餐馆的数量。这将通过查看地图为观众提供关于印度餐馆的位置的很好的想法,同时它将描述特定社区中印度餐馆的数量。打算开一家印度餐馆的人会避开有大量印度餐馆的地方,而会寻找竞争最小的地方。这可以通过查看地图和仔细研究印度餐馆的位置来实现。下面是描绘多伦多市印度餐馆位置的地图。

描绘多伦多市印度餐馆位置的多伦多地图(图片由作者提供)
下面的表格为读者提供了在某个特定行政区可以找到的不同场馆类别的简要信息。该信息是从 four square api 返回的数据中检索的。

多伦多市行政区的整体分析(作者图片)
如果任何读者对详细的区分析感兴趣,或者对检查为每个区创建的各种条形图感兴趣,或者如果他们对检查为了描绘多伦多市的印度餐馆的位置而创建的地图感兴趣,他们可以通过我的 Github repo。
在本项目过程中,考虑了一些假设和考虑因素,以帮助成功完成本项目。在浏览我的所有实现步骤时,下面给出的实例被考虑在内,并且在浏览过程步骤时应该牢记在心。
- 在区域分析阶段,foursquare api 调用期间传递的半径被认为是 500 米。
- 在项目的第二阶段,包括寻找建立印度餐馆的最佳地点,foursquare api 调用期间传递的半径被认为是 700 米。这种改变是必要的,因为采取较小的半径会导致错过一些街区。
- foursquare api 返回的结果可能每天都有变化,因此 foursquare api 返回的场地数量可能会略有变化。
- 在确定开设印度餐馆的最佳地点时,只考虑了一个因素,即防止在已经有相当多印度餐馆的社区开设印度餐馆(即寻找竞争最小的地点)。
- 两个区,密西沙加和皇后公园从我们的分析中被排除,因为在上述区搜索场地没有返回大量的结果。
在这个顶点项目的过程中,我能够应用我在 IBM 数据科学课程中学到的不同的数据科学技术和工具。这帮助我从多伦多数据集的数据分析中挖掘出有意义的见解。下面列出了我在数据分析阶段发现的一些方面。
- 咖啡店是一个几乎在所有行政区都有很高出现率的场所。
- 如果你是一名游客,密西沙加和皇后公园有很少的场地可以去或选择。
- 公园是下一个在不同行政区中出现最多的场所。
- 多伦多市中心有最多、最多样的场所供游客选择。
- 东多伦多和中多伦多是印度餐馆数量最多的两个区。
- 印度集市、索恩克利夫公园和海滩西区是印度餐馆最多的街区。
- 北约克、皇后公园和密西沙加是开设一家新印度餐厅的理想地点,我们的理念是新业务在那里面临的竞争最小。
原文:https://towardsdatascience.com/my-career-transition-from-a-data-analyst-to-data-scientist-12f79931d2fc?source=collection_archive———37———————–

6 个月前,我辞去了数据分析师的工作,去 Metis 数据科学训练营加速学习。3 个月的课程让我以结构化的方式学习,提高我的技术能力,并获得更多关于当今最新技术的专业经验。我实施了五个端到端 DS 项目,这些项目解决了业务挑战并提高了业务价值。其中一个包括一个端到端推荐系统,基于个人的 CLV 和产品评级,提供更有针对性的建议,改善用户体验,确保用户保留。
带着对数据科学高涨的热情,我踏上了作为 DS 的下一个职业旅程。然而,在新冠肺炎疫情寻找下一个机会充满了挑战和挫折。疫情的一个必然结果是不确定的商业环境,招聘冻结,裁员。然而,在这个不确定和困难的时期找工作给了我各种各样的教训。
当我进入最后一轮招聘程序时,有一阵阵的兴奋和渴望,也有令人沮丧的拒绝。我没有对结果过于沮丧,而是不断提醒自己专注于过程,每天学习新的东西并应用它。毫无疑问,这并不容易实现,因为我注重结果的个性与缓慢而稳定的方法背道而驰。
当我因学习过程中的失败或疲惫而沮丧时,我会提醒自己采取另一种观点。例如,当被更有经验或更强领域知识的申请人取代时,我将这种挫折视为磨练自己技能、获得更多行业知识、为自己的正确工作做准备的机会,只是现在还看不到。
经过 70 多份申请、30 次面试、无数次带回家的作业和现场编码会议,我很荣幸也很感激成为戴尔客户体验团队的数据科学家,很高兴能与才华横溢的 DS 社区一起改善用户体验并确保留住人才。
我也非常感谢我的朋友们坚定不移的支持,以及导师们在此期间宝贵的指导和鼓励。在这个充满挑战和不确定的商业环境中,你的支持和建议帮助我坚持了下来。非常感谢我的朋友们,他们在我找工作的过程中友好地同意推荐我,我真的很感激你们的帮助。
这个数据科学/人工智能行业每天都在快速发展,需要获取大量的新知识。为此,我试图通过参加深度学习课程,成为 AWS 认证,在我的兼职项目中应用最先进的自然语言处理(NLP)技术,如 BERT,来磨练我的技术能力,例如从用户的信息中识别用户的意图,以及从句子中提取最能描述其情感的关键短语。目前,我正在参加 Shopee 在亚洲最大的在线比赛( Shopee 代码联盟),在比赛中,我应用了最新的计算机视觉技术将 Shopee 的产品图像分类到相应的类别,并应用无监督机器翻译将繁体中文产品标题翻译成英文,而没有使用并行数据。
我渴望发展我的技能组合,以释放数据的力量,让其他人能够做出基于数据的决策并将这些见解传达给他们,并努力成为一名全栈数据科学家,在其中为人们构建自动化和可扩展的应用程序!
有兴趣跟随我的旅程吗?请随时在 LinkedIn 上联系我,交流想法或进行非正式聊天。你也可以在这里查看我为其他数据科学项目撰写的文章:)保重,注意安全!
原文:https://towardsdatascience.com/my-comments-on-eus-leaked-white-paper-on-ai-99750eb1d80b?source=collection_archive———28———————–

人工智能白皮书的“结构-欧洲方法”概述了欧盟人工智能的监管层,并提出了未来监管的几种选择。它在欧盟层面和更大范围内为人工智能制定了现有的政策框架;概述了为什么需要在整个欧洲推广人工智能;提议通过边缘计算更好地访问数据;并深入挖掘未来欧洲人工智能综合立法框架的关键要素;以治理的五个选项结束。
在通读了这篇论文的全部内容,并在日常工作中花了大量时间思考人工智能法规和道德的含义之后,我的评论集中在一些有趣的(令人困扰的?)部分,不深入每一节。我将重点讨论第 5 和第 6 部分,这是本白皮书的核心部分,因为其余大部分都是背景材料。在第 5B 节(欧盟人工智能立法框架)中,该文件讨论了当前立法框架的弱点:
- 基本权利范围的限制:《基本权利宪章》不适用于仅涉及私营部门的情况,并且排除了除获得就业、社会保护、教育、公共服务(住房)以外的权利。人工智能系统的含义远不止这些基本原理。
- 产品范围的限制:迄今为止,欧盟产品安全立法仅适用于将产品投放市场,不适用于基于人工智能的服务。随着新一波公司吹捧“人工智能即服务”,这将成为一个问题。
- 供应链中不同经济运营商之间责任划分的不确定性:根据目前的欧盟立法,人工智能软件现有产品(如自动驾驶汽车)不在覆盖范围内,只有产品才在覆盖范围内,即如果宝马的自动驾驶汽车使用中国的算法,这些汽车出现故障,只有宝马而不是算法开发商需要承担责任。
- 改变产品的性质:例如,如果你的身体机能发生变化,欧盟立法没有考虑动态调整电流的起搏器。它是为那些一旦投放市场就不会发生重大变化(软件升级或不断学习)的产品而设计的。
- 新风险的出现:目前的立法没有充分涵盖网络安全风险、因连接丢失而导致的故障、产品使用过程中的机器学习等。
- 与执行相关的困难:目前的法律没有涵盖提供自动决策的“黑箱”系统,在这种系统中因果关系难以证明,因此责任归属也很困难。
第 5E 节(可能的义务类型)概述了未来监管人工智能系统的可能的事前和事后要求。我的评论只集中在两个看起来有点问题和/或不完整的事前要求上。
作为维护开发人员(我在这里假设是指创建人工智能系统的组织,而不仅仅是编码人员)的问责制和透明度要求的一部分,提出的要求是“披露人工智能系统的设计参数、用于训练的数据集的元数据、进行的审计等。”——虽然这是一个很好的建议,但欧盟需要认真思考它将如何保护知识产权。公司围绕算法保密开展业务,就像制药公司围绕药物配方保密开展业务一样。也就是说,类似的知识产权原则可以应用于人工智能算法,就像应用于药物制造一样。
他们的另一个事前要求是对人工监督的要求,或者人工智能系统对自动决策的可能审查。虽然我原则上同意这一点,但人工智能系统将在我们生活中越来越复杂的领域(例如,人口健康)中实施,没有一个人,甚至一群人,可能能够提供无偏见的监督,除非他们知道人工智能系统为什么会做出这样的决定。然而,由于黑盒算法,知道这一点也不总是可能的,尽管有越来越多的工具使黑盒更容易解释。
欧盟提议的 5 个可能的监管选项都很弱:
- 自愿贴标签——这给人一种负责任行为的错觉,同时让可能的肇事者逍遥法外,或者制造一个打地鼠问题;
- 公共管理和面部识别的部门要求-首先,这不仅仅是面部识别(任何类型的生物识别、步态或运动分析、指纹或视网膜扫描、行为模式识别,所有这些都会带来类似的问题),其次-这仅涵盖公共部门-我更关心的是私营部门对人工智能系统的使用。最后,它建议在欧盟制定规则的 3-5 年内禁止面部识别等技术——这肯定是一个笑话:世界将在 3-5 年内进步光年(以人工智能为单位),此后,欧盟参与者不仅将在这些类型的技术上远远落后于世界,他们还将完全错过通过更快/现在参与开放和富有成效的讨论来改善监管的机会;
- 针对高风险应用的基于风险的强制性要求——这是最接近潜在解决方案的要求,但是,这为高风险行业和高风险要求留下了相当大的回旋余地(在这里可能会出现偏差)。也就是说,这似乎是 5 个选项中最明智的方法;
- 选项 4(安全和责任)和选项 5(治理)适用于上述所有三个选项,但不在此列表中——编写白皮书的团队在到达这一点时一定已经筋疲力尽了!
文件的结论是“委员会认为”将备选方案 3 与备选方案 4 和 5 结合起来是最好的。那太好了;然而,重要的是在每个现有的监管机构内建立一个部门,以雇用一批人工智能专家,他们能够判断人工智能系统的设计、开发和部署是否符合道德,如果不符合道德,他们可以明智地提供建议或执行决定。
从历史上看,欧盟在保护人权、尊严和尊重等基本原则的开创性法规方面一直非常进步。这通常需要激进的思想领导、大量的资源和对现状的改变。我认为现在是再次进行这种改革的时候了。监管人工智能系统并为其建立正确的治理需要的不是渐进式而是破坏性创新,我宁愿这种创新来自欧盟,而不是谷歌。
原文:https://towardsdatascience.com/my-computer-reads-the-wheel-of-time-faab61d18e9f?source=collection_archive———18———————–

塞德里克·范登堡在 Unsplash 上拍摄的照片
很久很久以前,在一个现在被称为 90 年代的时代,一场关于后《指环王》时代最佳史诗奇幻片头衔的大战正在进行。在一个角落里站着乔治·r·r·马丁(George R. R. Martin),他的黑暗阴森系列电影《冰与火之歌》(A Song of Ice and Fire),也就是现在更为人熟知的《权力的游戏》(Game of Thrones)。另一个挑战者是罗伯特·乔丹,他有自己的系列片《时间之轮》。今天,这个宏大的故事不为许多人所知,但当根据这些书改编的电视剧明年上映时,这种情况可能会改变。在写这篇文章的时候,电影正在拍摄中。
随着越来越多的关于拍摄这部新的奇幻剧的公告出来,我对这些书的热爱也被重新点燃了。因此,当我选择我的下一个项目作为 Metis 数据科学训练营的一部分时,我决定让我的计算机作为自然语言处理(NLP)项目来“阅读”这个系列。
《时间之轮》是一个庞大的故事,跨越 15 本书,共 704 章,多达 440 万字。它以大量的角色和地点为特色,并从 147 个独特的角色的角度讲述,一些角色比另一些角色对故事更重要。故事从一个小村庄开始,以一群人物为中心,从那里开始变得越来越庞大和复杂。它包含了一个丰富详细的世界,充满了文化、魔法和政治。正如在史诗般的幻想中常见的那样,中心主题是光明与黑暗、善与恶之间的古老战争,随着时间的车轮旋转,这场战争一次又一次地进行。
《时间之轮》是一个庞大的故事,跨越 15 本书,共 704 章,多达 440 万字。
不幸的是,罗伯特·乔丹在完成他一生的工作之前就去世了,但他留下了大量的笔记,甚至完成了未来章节的部分内容。他的妻子兼编辑哈丽雅特选择布兰登·桑德森利用现有的材料完成这本书,最终的书于 2013 年 1 月出版。
在开始实际分析之前,我必须确保能够访问 Python 中的全文。我购买了捆绑系列的电子书版本(ISBN 9780765376862 ),并使用 EBooklib 库来访问 XML 格式的书籍,我使用 BeautifulSoup 解析了这些书籍。令人惊讶的是,这是我的项目中最具挑战性的一步,因为这本电子书是多本书的集合。有几本书的格式与其他书不同,所以我不得不设置例外和规则,以自己的方式解析和提取它们。
这是一个无人监督的学习项目,所以我主要关注主题建模,看看计算机是否能够理解这一大堆文本。我尝试了多种技术来查看不同建模方法可以得出的结果。您可以在我的 Github 这里找到我的完整代码和结果,包括每个被丢弃选项的注释,但是对于本文,可以说我最终的模型使用了 TF-IDF 矢量器和非负矩阵分解。我有一种感觉,我需要使用二元语法来捕捉书中许多虚构的名字和地点,但这被证明是不必要的,并且根本没有提高我的主题建模的质量。
当我尝试上面提到的不同模型时,突破时刻是从标准计数矢量器切换到 TF-IDF。当我尝试的时候,话题开始与我的书本知识相吻合。
我的主题建模的结果比我开始项目时所希望的要清晰。最终的模型非常清晰地区分了 14 本书中的角色弧线。我把最终的主题数量限制在 15 个,除了一个以外,所有的主题都有一个中心人物的名字(或阿朵的人物)作为最重要的特征。增加主题的数量仍然会产生合理的新主题,但情节和人物的重要性会降低。一个不围绕角色的主题围绕着最后一场战斗,这是如此的不同和关键,以至于它有自己的主题是有意义的。
最终的模型非常清晰地区分了 14 本书中的角色弧线
这些角色弧线定义得如此清晰,使得在整本书和整个系列中追踪它们成为可能。我创建了一个热图可视化,显示了 15 个主题以及它们在书中出现的位置。x 轴是章节号,y 轴是主题,红线是不同的书,颜色的强度标志着一章与主题的紧密程度。

贯穿整个《时间之轮》系列的主题热图
对于那些不熟悉这些书的人,我将用一个例子来说明这个结果有多准确。这个系列的一个非常重要的角色是莫伊瑞恩,她在两个主题中出现,与她最强的两个盟友,斯万和兰一起出现。事实上,她是如此重要,以至于在《时间之轮》的中途,她有了自己的前传来探索她的背景故事。这本书是上面热图中的第一本书,你可以看出视觉完全集中在这本书的两个主题上。
类似上面例子的结果很多。我一直在为这个最终模型寻找有趣的应用。我从书迷网站上收集了书籍摘要,并将它们与单本书的热图进行了比较,比如下图中《冬天的心》一书的热图。结果匹配得非常好,就像 Mat 和 Tuon 的角色弧线有重叠的章节。剧透:这两个人在这本书中相遇后最终结婚了。

然后我拿了 Goodreads 上系列评分最低的那本书(第十本书:暮光之城的十字路口)分别对它的主题建模。结果显示了这本书过于政治化的情节,以及粉丝们所熟知的厄运情节。一个特别的情节被拖得太长,而且有一些奇怪的角色行为。我可以举更多的例子,但是你应该明白。
我进行的最后一项测试是为了真正检验这个模型,看看它与人类对书籍的解读相比如何。出版商的网站上有一个名为时间之轮重读的长期系列。它以作者和超级粉丝 Leigh Butler 对每一章的深入总结以及附加的解释和分析为特色。我从网站上搜集了每一章的摘要,在我的模型中运行,发现 86%的章节都有主题匹配。许多无与伦比的也是千钧一发,然而…
除了模型表现之外,与重读的比较显示了一些局限性。随着模型在整个系列上被训练,主题是非常高的水平。一些被重读的摘要所强调的真正关键的时刻没有被计算机提取出来,因为它们可能没有占用该章的许多单词。计算机也没有办法在一个角色弧线内模拟节奏、剧情分辨率或支线剧情,就像前面提到的《毁灭战士》的情节主线。
作为一个热情的读者,我很高兴知道自己仍然有很好的理由去读这些书。作为一名数据科学家,我很高兴我的模型产生了如此有趣的结果。我喜欢用我所获得的数据科学技能,以一种不同的方式钻研我最喜欢的系列丛书之一。我强烈建议任何想在自己最喜欢的书上尝试同样的实验的人,看看我的代码,从中获得一些乐趣。
原文:https://towardsdatascience.com/my-data-science-internship-experience-66a053a44890?source=collection_archive———22———————–

在 Unsplash 上由 averie woodard 拍摄的照片
当我第一次开始我的数据科学实习时,我并不知道我会让自己陷入什么样的境地。
在那之前,我只从事过个人项目,我对工作环境、我必须处理的数据以及我必须使用的工具一点都不熟悉。有人告诉我,这个职位需要很强的 Python 和 SQL 技能,于是我花了几周时间温习我的编程和查询技能。我甚至参加了 Udacity 的免费课程(SQL for Data Analytics)来复习语法和某些重要的概念。
在本文中,我将分解我三个月数据科学实习的经历,并告诉你我在这一过程中学到的一切。
头几天,我开始熟悉工作环境、公司文化和我的团队成员。
我了解了我们将要使用的工具——AWS、Pyspark、Excel 和 Tableau。
就我个人而言,我在实习之前从未正确使用过这些工具。我的大部分数据科学和分析项目都围绕着 Python、熊猫和 Jupyter 笔记本。
然而,技术方面的学习曲线并不陡峭。 AWS 用于收集、存储和准备数据。
我以前从未使用过 Pyspark,但是它的语法似乎和 Pandas 库非常相似。Pyspark 也有类似于 Pyspark SQL 的外部库,允许您使用 SQL 查询来操作数据帧。
最后, Excel 用于进一步的数据操作和可视化, Tableau 用于数据可视化。

Jukan Tateisi 在 Unsplash 上拍摄的照片
我是这个团队的新成员,当我的大多数同事在家工作时,我加入了这个团队。这让我开始使用 AWS 有点困难,我在安装方面很吃力。
事实上,我花了大约三天的时间在我的笔记本电脑上安装好所有的程序,并让所有的东西都能工作。
如果我直接向正确的人寻求帮助,而不是花几个小时自己想办法让一切正常运转,这本来是可以避免的。
在我实习的头几天,我学到了最重要的一课——遇到困难时寻求帮助。

由马克·弗莱彻·布朗在 Unsplash 上拍摄
我在实习期间学到的另一件非常重要的事情是拥有强大的沟通技巧的重要性。
成为一只查询猴子并拥有强大的技术能力是不够的。重要的是要问这样的问题:
- 我要借助数据解决什么问题?
- 我如何将这些原始数据转化为对客户有用的见解?
- 我如何以客户易于理解的方式传达我的结果?
能够理解端到端的工作流非常重要,您应该能够将业务需求与您正在进行的分析联系起来。
如果他们不能理解您的仪表板,如果它不能让他们更接近解决他们的业务需求,没有人会真正关心您的仪表板有多漂亮。
客户 A 销售巧克力。他们希望更好地了解他们的客户群,以便知道如何定位他们的公司,并针对不同的市场制作有针对性的广告。数据团队有责任提出详细的见解,帮助他们更好地了解客户。
我们做什么:
基于可用的客户数据,我们研究了客户客流量、人口统计数据和客户心理特征。然后我们提出见解,例如:
- 客户 A 通常一个月在 A 公司出现多次。但是,在过去的一个月中,他们经常光顾 A 公司的竞争对手 B 公司。这可能表明 A 公司的一名忠实客户正在流失到他们的竞争对手那里,这可以进一步调查。还可以观察和预测客户流失率。
- 消费者细分通常是这样完成的,根据他们的人口统计数据和行为将顾客分成不同的部分。
数据团队进行这种细分,我们得出对公司 A 有用的见解,以决定如何向不同的客户群做广告。
我们构建图表和可视化,并围绕我们从数据中获得的洞察力讲述一个故事。我们所做的工作将进一步建立在商业智能团队的基础上,他们翻译这些见解,并为公司 A 提出营销活动的想法。

照片由车窗上的挡泥板拍摄
我在实习经历中学到了很多。事实上,我在过去三个月里学到的东西比我在大学里过去三年学到的还多。
与您需要学习的其他东西相比,这听起来可能很小,但实际上非常重要,尤其是当您处理数据时。
我无法告诉你有多少次我从未将文件保存到正确的路径,而不得不重新运行整个分析。
我一边实习一边在大学学习。这意味着我不仅要处理客户的请求,还要完成大学的作业和测试。
我必须非常努力地保持学校和工作之间的平衡,并按时完成所有的最后期限。
正如我上面提到的,作为一名数据科学家/分析师,业务领域知识非常重要。您的分析需要提供利益相关者或客户可以用来解决业务问题的见解。
商业领域的知识不一定是你需要阅读或学习的东西(尽管学习它肯定对你有用)。随着时间的推移,随着经验的积累,这是一项可以磨练的技能。
最后,我认识到拥有良好沟通技巧的重要性。正如我之前提到的,如果没有人理解你的图表,他们不会在意它有多漂亮。
你需要有能力将你的发现分解给非技术和非数据人员。
这意味着你需要用简单易懂的方式来解释你的发现,甚至七岁的孩子也能理解。
就这些,感谢阅读!
我想以我的数据科学实习是一次不可思议的旅程来结束这篇文章。我有机会和一个有才华、有动力的团队一起工作,他们指引我前进的每一步。
不断学习——总有“一件事”要学。
原文:https://towardsdatascience.com/my-data-science-interview-with-microsoft-6b7ec840b80e?source=collection_archive———19———————–

图像来源
微软是 2021 年夏天在我的大学雇佣实习生的软件公司之一。今年,这是微软首次为即将毕业的本科生提供数据科学实习机会。
微软设定的要求如下:-
- 学生的 CGPA 必须至少达到 8 分。
- 学生应该追求计算机科学或数学专业。
所有符合条件的学生都必须在微软职业网站上填写实习申请表,并附上简历。填写了申请表的学生会在 1-2 天内收到测试链接。
大约 60-70 名学生参加在 mettl 平台上进行的实习测试。测试持续时间为 1 小时。该测试由 62 道选择题组成,几乎触及了机器学习的方方面面。没有关于考试评分方案的信息。
在线测试的要点如下:
- 问题涉及各种主题,如线性回归、逻辑回归、SVM、决策树、随机森林、欠拟合、过拟合、偏差、方差、装袋、提升、聚类、推荐系统、PCA、LDA 和神经网络。有一些概率和统计的基本问题。
- 大多数问题是概念性的,如 SVM 的核函数或中心极限定理。
- 关于神经网络的问题较少,所以学生们应该精通传统的机器学习算法。
- 没有编码问题,也没有使用 sklearn 的算法的正确代码等问题。
我在 1 小时内完成了 62 个问题中的 50 个。
由于我对推荐系统和 LDA 算法了解不多,所以除了关于凸优化的问题(大约 2-3 个)之外,我无法回答这些问题。
微软没有公布测试的确切结果,但公布了 6 名学生入围面试的名单,包括我!
我有大约一天的时间准备面试,对数据科学面试一无所知。我接受了一些学长的帮助,修改了斯坦福 CS229 notes 的在线测试概念(大多是传统的机器学习算法)。除此之外,我还回顾了简历上关于项目的一切。
由于新冠肺炎,面试在微软团队平台上进行,每个候选人总共有 3 轮技术面试。
起初,面试官让我介绍我自己并谈谈我的兴趣,我谈到了我对计算机视觉的兴趣。
有人问了我以下问题
- 解释卷积层的工作原理并设计一个用于图像分类的 CNN?解释一下损失函数,正则化,和它所用的激活函数?
- 解释一下决策树算法?还有,用决策树解释一下 bagging 和 boosting 算法?解释 boosting 算法中使用的加权函数?
- 设计一个垃圾邮件分类系统?此外,解释用于评估的特征提取、算法和指标。
- 解释支持向量机(SVMs)的深入工作原理?此外,解释凸优化,核函数,什么是支持向量。
除了支持向量机的工作之外,我能够回答所有的问题,在支持向量机的工作中,我能够解释高达保证金和核函数,但不能解释凸优化部分。我通过在共享屏幕上演示算法来解释答案。
然后他问我是否有任何问题。然后,我询问了微软的一些数据科学用例。采访结束了。整个面试持续了大约 45 分钟。
三名学生进入了几个小时后举行的第二轮比赛。
我在第一轮和第二轮之间修改了 SVM。
这一轮与第一轮相似,但面试官问了大量 NLP(自然语言处理)问题。
这一轮同样从介绍我自己和我的兴趣开始。
有人问了我以下问题
- 偏倚和方差的区别是什么?
- 使用逻辑回归解释多类分类?此外,解释 softmax 激活,交叉熵损失,并写出相同的方程?
- 解释 rnn、gru 和 LSTMs 的工作原理?还有,解释一下每种网络的优缺点?还有,解释一下为什么基于 transformer 的模型比这些好?
- 解释获得手套嵌入的训练程序?
- 设计一个垃圾邮件分类系统?此外,解释用于评估的特征提取、算法和指标?
- 解释支持向量机(SVMs)的深入工作原理?还有,解释一下内核函数?当不同阶级之间没有线性界限时,SVM 是如何分类的?
- 应该使用哪种算法从搜索引擎查询中提取名词?并解释原因?
- 在线性回归中推导向前和向后传递的方程?
面试的大部分问题我都回答了,除了支持向量机涉及的数学方程。面试官似乎对我的大部分回答都很满意。我通过在共享屏幕上演示算法来解释答案。
然后她问我是否有任何问题。然后,我问了与第一轮相同的问题。整个面试持续了大约 45 分钟。
第三轮:
面试官没有数据科学背景,所以他问了我一些关于数据结构和算法的问题。但他提到这不会很难,因为面试是为了数据科学的角色。
面试从正式介绍开始,他照例让我介绍自己。
有人问了我以下问题
- 给定一个数组 A=[a1,a2,a3…an,b1,b2,b3…bn],将该数组转换为数组 B=[a1,b1,a2,b2……an,bn]仅使用 O(1)空间。
- 在前一个问题中,给定一个索引,数组 A,返回它在数组 b 中的索引。
- 您有一个由“N”个偶数元素和“N”个奇数元素组成的“2N”个元素的数组;使用最小数量的交换,确保偶数元素位于奇数索引处,奇数元素位于偶数索引处。
- 在前一个问题中,假设偶数元素的个数等于奇数元素的个数未给定,因此在使用最少数量的交换时验证相同,并且只在数组上进行一次迭代。
我无法正确回答第一个问题,所以面试官将其修改为第二个问题,我正确回答了第二个问题,并在共享屏幕中进行了编码。他似乎对第二个问题的答案感到满意。
然后他问了我第三个问题,我用两点技巧回答了这个问题,在向他解释后,我编写了解决方案。他似乎对答案很满意。
面试官随后将问题修改为第 4 个问题。我改变了循环,并在循环中添加了一些 if-else 语句。在讨论了一些解决方案会失败的边缘情况后,我修改了代码以适应边缘情况。面试官似乎对答案很满意。
然后他问我是否有任何问题,然后我问他关于微软的工作文化和他在公司做的工作。这之后,采访就结束了。整个面试用了 45 分钟。
关键要点:
- 理解算法背后的数学概念,而不是将其视为黑盒算法,这一点至关重要。
- 在简历中加入机器学习项目是一个巨大的加分点,因为其他所有候选人都必须解释他们的项目。彻底检查你的项目。
- 对 DSA 问题有一些像样的练习。这个过程中可能会涉及到一些 DSA 检查。我是六名候选人中唯一通过 DSA 检查的人。
- 阅读一些机器学习在行业中的使用案例,因为大多数数据科学面试都有这些类型的问题。
我对自己前两轮的表现非常自信,但对第三轮的表现有点不确定,因为我在数据结构和算法方面相当薄弱。
三天后,微软公布了实习职位结果,三名学生收到了 offer,而我就是其中之一!
2021 年 5 月至 2021 年 7 月,我将在微软印度公司的一个办公室实习。
如有任何问题,欢迎随时联系 领英 。
原文:https://towardsdatascience.com/my-data-science-online-learning-journey-on-coursera-d5f733c68368?source=collection_archive———3———————–

凯勒·琼斯在 Unsplash 上拍摄的照片
正是在 2016 年,我在完成机械工程学士学位后,立即开始了追求计算力学硕士学位的旅程。当时我的编程知识有限,更不知道什么是数据科学,什么是机器学习。
这件事发生在我硕士学习期间,当时我得到了一个经典的计算机视觉项目,我需要使用 Python、C++和 OpenCV 构建对象检测和对象跟踪算法。那个项目真的迫使我艰难地学习 Python 和 C++以及如何正确地编写干净的代码。
长话短说,后来我发现自己被计算机视觉领域迷住了,这使我着迷:我想成为一名计算机视觉工程师。
但在我阅读了所有空缺职位中计算机视觉工程师的职位要求后,厚望变成了灰尘:他们希望候选人了解机器学习和深度学习,特别是卷积神经网络(CNN)。

计算机视觉工程师常见职位描述
那时候我连机器学习是什么都不知道,更别说 CNN 了。虽然我的学习计划确实触及了编程、数学和统计领域,但我们从未谈论过机器学习。
经过一些研究,我发现如果你想了解 CNN,你需要先了解深度神经网络(DNN)的一般情况。如果你想了解 DNN,你需要先了解经典神经网络。想要了解神经网络,首先需要了解机器学习。如果你想从总体上了解机器学习,你需要首先了解数据科学的基础。

这就像一个电子游戏,我需要一步一步地向上,直到我到达我想要的主题。另外,我非常喜欢自下而上的方法,因此我决定先学习数据科学的基础知识。
当时的问题是:当我的学习计划不提供与它们相关的课程时,我如何才能了解所有这些知识?
我需要自学所有的课程。
那是我第一次知道 Coursera 的存在。
首先,我在这篇文章里并没有为 Coursera 背书的意思。我只是发现它们是我最好的在线学习平台,因为有很多来自知名机构的数据科学和机器学习课程。此外,您可以选择免费旁听课程,并且仍然可以访问学习资料。
最重要的是,如果你真的想追求专业化证书,与 Udacity Nanodegree 相比,它的总成本要便宜得多,尤其是如果你还是学生的话。
好了,说够了,让我们进入我的学习之路。
我想我们都同意,万事开头难。和我想涉足数据科学的时候一样。我一直在问一个问题:我从哪里开始?
经过一番研究,我终于想出了我的在线学习课程,以下是我在 Coursera 上按时间顺序学习的课程或专业列表。

我决定从非常基础的水平开始学习数据科学,因为我不想错过一些重要的概念。这就是为什么我决定将 IBM 数据科学作为我的第一个专业。
在学习这门课程之前,你不需要有任何关于数据科学、统计学、机器学习或编程的知识。这个专业的第一门课程字面上叫做*‘什么是数据科学?’*。我的意思是,你不会得到比这更基本的,对不对?
这个专业有 9 门课程。它从数据科学的概念和方法开始,然后深入研究 Python 和 SQL 的编程内容。接下来,它将向您介绍数据科学的核心内容——统计学、数据分析、数据可视化和机器学习。
完成本专业后,你不会成为数据科学专家,因为本专业不会非常详细地教授你每个主题。然而,它给了我一个非常好的数据科学概述,以及我接下来应该学习什么。
由于这个专业,我能够为我的数据科学和机器学习在线学习之旅创建一个路线图,如下所示:
- 结构化查询语言
- 统计数字
- 数据可视化
- 机器学习
- 深度学习
这将引导我进入下一个专业领域。

这是 Cloudera 提供的一个专业,专注于利用 SQL 进行大数据分析。这个专业总共有 3 门课程。
众所周知,如今的数据量太大,无法存储在传统的数据库管理系统中,因此在分布式集群中处理数据的知识和实践经验非常重要。这门课会教你这一点。
我真正喜欢这个专业的是它的实践性。借助 Cloudera 的虚拟机,我们有机会应用 SQL 查询来检索或存储 Apache Hive、Apache Impala、MySQL 或 PostgreSQL 中的数据。即使在完成专业化之后,您也可以随时重新访问虚拟机,因此您将始终能够修改您的 SQL 技能并处理数据。
如果您对 SQL 一无所知,请不要担心,因为这个专业将从基础开始教您。

我参加这个课程是为了补充我在 Cloudera 之前的专业课程中学到的内容。虽然 Cloudera 的专业化更侧重于在分布式集群中应用 SQL,但这种专业化让我能够在云上应用 SQL。
这个专业将教你如何在 BigQuery 中检索或存储谷歌云平台(GCP)上的数据。您将可以使用 Google analytics 等 Google 公共数据集,并自己实现 SQL 查询。
除此之外,我喜欢这种专业化的原因是,您将学到的不仅仅是 SQL 和 BigQuery。您还将了解如何使用 Google Data Studio 创建交互式数据可视化仪表板,以及如何直接在 BigQuery 中创建简单的回归或分类机器学习模型。
在完成这个专业之后,我进一步学习了数据科学和机器学习背后最重要的概念之一,也就是统计学。

我们同意统计学是数据科学的核心。因为我以前已经了解统计学,所以我选择了这个专业,期望更新统计学的基础理论。但最后,我得到的比我预期的要多。
专业化真正教会你所有你需要知道的关于统计学的知识,从关于概率的基础理论、推断统计学和从频率主义者和贝叶斯观点的回归理论开始。
这种专业化有两点是我喜欢的:
- 所有的期末项目都是有价值的,这意味着你需要做真正的统计数据分析工作,不要指望在一两个小时内完成。在你完成专业化后,你将有 3 或 4 个有价值的项目放在你的简历中。
- 每门课都需要用 R 来完成项目。这对我很好,因为我以前从未用过 R。我认为学习一门新的编程语言从长远来看是有益的,R 无疑是一个很好的数据科学和统计工具箱,可以添加到你的技能组合中。
完成专业学习后,我觉得我想更深入地研究贝叶斯统计,尤其是马尔可夫链蒙特卡罗。这就是为什么我在这个专业毕业后又上了一门关于统计学的课程,那就是…

如果你想全面了解贝叶斯统计的概念,我认为这将是适合你的课程。在本课程中,您将学习关于马尔可夫链蒙特卡罗的概念,以及如何用贝叶斯概念解决回归问题。
我真正喜欢这门课的是理论和实践之间的平衡。
对于每一个材料,首先会涉及到理论,然后会有一个演示,在这个演示中,讲师会向你展示如何用代码实现你刚刚学到的理论。在本课程中,您将学习如何在 R 和 JAGS 中实现贝叶斯统计。
本课程的期末专题也是有价值的,与上面 R 专业的统计学非常相似。你将被要求在 r 中用贝叶斯概念做统计分析工作。
结束课程后,我决定继续下一个主题,即数据可视化。

在可视化数据方面,我通常会使用 Python,或者借助 Matplotlib、Seaborn 或 Plotly。然而,我想学习一些新的东西——我想学习如何使用商业智能工具可视化数据,无论是使用 PowerBI 还是 Tableau。然后我就发现了这个专精。
如果您不熟悉 Tableau,并且想学习用它来可视化数据,我会推荐这个专门化。
这个专业有 5 门课程,包括一个顶点项目。前三门课程将为您提供数据可视化最佳实践的理论理解,以及如何用您的数据讲述故事。第四个课程基本上是您接触 Tableau 的地方,因为您将学习如何使用 Tableau 创建交互式数据可视化仪表板和故事。
我真正喜欢这个专业的是,当你注册了这个专业,你将获得 6 个月的 Tableau 桌面免费使用权。
这意味着您可以在本地机器上探索 Tableau 的许多功能,并用它创建许多有趣的可视化效果。如果许可证在 6 个月后过期,你将有机会再延长 6 个月。

至此,我已经了解了数据科学概述、使用 SQL 的大数据分析、统计学和数据可视化最佳实践。接下来,终于到了我学习机器学习的时候了。
作为一个完全的机器学习初学者,我决定参加吴恩达的机器学习课程,因为我知道这个课程是 Coursera 上关于机器学习的最知名的课程。
这是完全正当的。我相信我找不到比这更好的初学者机器学习课程了。
本课程将向您介绍经典的监督和非监督机器学习算法的概念,如线性回归、逻辑回归、SVM、K 均值聚类以及人工神经网络。不仅如此,安德鲁还为我们提供了在实践中应用机器学习系统的技巧和诀窍。
基本上,我喜欢这门课的一切。
我喜欢吴恩达在教我们不同类型的机器学习算法时的热情。我喜欢他向我们解释和简化困难的机器学习概念是多么容易。我也喜欢这个编程作业,以及我们如何有机会从头开始实现神经网络算法。
如果你是机器学习的新手,对我来说,这是你应该开始学习的最好课程。

最后,我越来越接近我的最初目标——学习卷积神经网络的概念。
我仍然记得当我发现吴恩达是这个深度学习专业的老师时,我是多么兴奋。在我完成机器学习课程后,选择这个专业对我来说并不是一个困难的决定。
专业化是非常好的结构。第一门课将在你学习了之前机器学习课程中的经典神经网络之后,教你深度神经网络的概念。接下来,它给出了卷积神经网络和序列模型的重要概念。
吴恩达一如既往地在教授深度学习算法的困难概念方面表现完美。编程作业很有趣,这让你可以用 TensorFlow 实现各种深度学习算法,tensor flow 是目前业界最常用的深度学习框架之一。
然而,这个专业中的大多数编程任务仍然在 TensorFlow 1 中实现,而 tensor flow 1 现在已经过时了。

我相信这个专精在 DeepLearning 之前在实践中叫做tensor flow。AI 更名为 TensorFlow 开发者职业证书。
无论如何,我在完成深度学习专业化后直接选择这个专业化的主要原因是,我想学习如何为各种深度学习算法实现 TensorFlow 2。这种专业化完全实现了这一点。
这个专业化是一个纯粹的动手练习。你在里面找不到任何关于深度学习的理论,因为它的重点是借助 TensorFlow 实现深度学习算法。因此,建议您在参加本专业之前已经了解深度学习的概念。
它为您提供了关于如何为图像分类、情感分析、诗歌生成和时间序列预测构建深度学习模型的实践经验。
作为奖励,如果你将来想参加 TensorFlow 开发者证书,这个专业也将是你准备它的最好来源。我最近参加了认证,我可以说这个专业是最好的准备来源。如果你对我参加认证的经历感兴趣,你可以在下面的链接中阅读。
[## 我参加 TensorFlow 开发者认证考试的故事
我参加考试的总体经历,我是如何准备的,如果我必须参加考试,我会做些什么…
towardsdatascience.com](/my-story-of-taking-the-tensorflow-developer-certification-exam-85d4fb777cbb)
我假设你已经知道,单独参加数据科学和机器学习课程不足以实现你的目标,无论是获得一份数据科学工作还是掌握某些数据科学概念。和我一样,上过 CNN 相关的课程并不代表我已经掌握了。
这些课程为你提供了你感兴趣的任何主题的基础知识。参加课程只是一个起点,接下来会发生什么完全取决于你。
将你从课程中学到的知识运用到实践中,真正巩固你的新技能。在参加这些课程的同时或之后,做一些自己喜欢的项目,将代码上传到 GitHub 上,并通过博客将项目或学习材料分享给其他人。
祝您的数据科学学习之旅一切顺利!
原文:https://towardsdatascience.com/my-data-scientist-doesnt-know-how-to-properly-start-an-ec2-instance-b1b9f4920359?source=collection_archive———7———————–

新加坡的 CBD 采用神经式传送,用的是这种码和纸。
在我之前的文章中,我们为弹性和数据密集型应用建立了一个云基础设施,如下图所示。如果您对 AWS 区域、AZs 或高可用性区域没有很好的了解,我推荐您阅读这篇文章。

我们上一篇文章中的云架构示例
让我们用这个例子来解释底层的网络和安全概念。请随意访问 AWS 控制台,启动我们提供的资源(大多数都是免费的)。阅读完本文后,您将能够理解在设置 EC2 实例时您实际上在做什么。不仅如此,它还将使您能够配置其他 AWS 服务并将它们链接在一起。此外,各部分都是相当独立的,因此在需要时可以直接跳到概念。
I .隔离您的基础设施
- VPC
- 子网
二。实例和网络之间的通信
- 弹性网络接口
- 互联网网关
- 路由表
三。安全事项
- 安全组
- 氯化钠
我们开始吧!
首先,请记住,互联网从根本上说是一个巨大的网络,其中的节点由像您这样的服务器或计算机组成,由公共的互联网协议地址或 IP (如 104.16.122.127)标识。这些节点使用互联网协议套件 ( TCP/IP )相互通信。
在继续之前,请务必熟悉这些概念。
当在云中创建一个应用程序时,比如上面提到的,我们可以独占访问由云提供商创建的位于更大的公共网络中的网络。这被称为虚拟私有云 (VPC),是首先要设置的。这是我们所有的 AWS 资源将在其中运行的网络。

在互联网这个庞大的网络中,你可以通过云提供商获得自己的私有网络。
默认情况下,VPC 最初会与任何其它网络隔离。它必须位于一个 AWS 区域中。然后,您需要选择一些 IP 地址,这些地址将用于标识在 VPC 中运行的实例。这必须在您开始构建基础设施时完成。例如,使用无类域间路由 ( CIDR )符号,您可以留出这些 IP 地址(或 CIDR 块)供将来使用:176.13.0.0/16。此语法指定了从 176.13.0.0 到 176.13.255.255 的所有 IP 地址。
为了确保这些地址不会与互联网上当前使用的公共 IP 地址重叠(例如像medium.com的地址),你应该从 RFC1918 范围中选择它们。如果你想连接两者,也不应该与现有的 VPC 重叠!选择您的 IP 地址范围非常重要,因为一旦创建了 VPC,您将无法修改它。所以仔细想想吧!
请注意,我们在示例中使用了 IPv4 地址,类似的概念也适用于较新的(1998…) IPv6 地址。
现在还不是在我们刚刚创建的 VPC 中开始 EC2 实例的时候:我们需要另一个层。每个实例必须与一个子网相关联,这个子网只是 VPC 内部的一个逻辑子网。它是用 CIDR 块定义的,它必须是 VPC CIDR 块的子集。例如,我们可以使用 CIDR 地址块 176.13.0.0/24 在之前创建的 VPC 中定义一个子网。它确实是 176.13.0.0/16 的子集。
为什么我们需要这样的子网?云架构师在构建应用程序时要牢记三个主要原因:
- 将实例彼此隔离:一个公共子网可用于直接与互联网通信的 web 服务器,而一个私有子网可用于仅与 web 服务器通信。
- **控制实例间的流量:**当你有一个分段的架构时,监控你的网络和防止攻击就变得更容易了。它还可以通过允许流量只到达某些子网来提高性能。
- 保持井然有序通过为每个子网分配特定的功能:一个子网可以专用于存储,例如 RDS 之类的服务。
最后但同样重要的是,您应该记住每个子网只能跨越一个可用区域 (AZ)。正如我们在上一篇文章中看到的,这意味着单个子网内的资源容易受到本地故障的影响(因为 AZ 对应于一个物理数据中心)。为了使您的应用程序具有高可用性(HA) ,您需要跨可用性区域复制子网,但仍然在同一个 VPC 内。
因此,让我们看看它在我们之前设计的应用程序中会是什么样子。

基本设置,单个 VPC 覆盖一个 IPv4 数据块和一个 IPv6 数据块,两个子网跨越两个 az。
我们现在有了一个合适的网络设置。现在,我们如何让我们的实例相互通信呢?
弹性网络接口(ENI)使网络实例之间能够进行通信。因此,任何实例都必须至少有一个:它是您的实例和一个子网之间的链接。IP 地址实际上绑定到 ENI,而不是实例!
大多数时候,我们忽略这些 ENI,因为它们将单个实例链接到单个子网。因此,我们之前的架构实际上应该是这样的(为简单起见,仅查看一个 AZ):

IP 绑定到 ENIs,ENIs 反过来支持与实例的通信。
尽管如此,当一个实例出现故障时,Eni 对于重定向流量还是很有用的。考虑下面有两个实例的情况:

在实例失败的情况下,可以使用相同的 IP 地址,而使用不同的实例来完成处理工作。
如果实例 1 出现故障,其 ENI 可以作为辅助 ENI 连接到实例 2。从外部看,流量仍然到达同一个 IP 地址,但实际上是由幕后的另一个实例处理的。
现在我们可以在子网内进行通信,那么与互联网通信呢?
为此,我们使用互联网网关(IG)作为中间人,连接到子网。它将给出一个实例:
- 一个**公共 IP 地址,**不同于标识子网内实例的私有 IP 地址(因此实例可以有两个 IP——公共和私有!),
- 到互联网的连接以查询网络客户端,例如,
- 从互联网接收请求的能力
IG 与单个 VPC 相关联。你认出它是因为它在 AWS 上的 ID 以igw-xxx开头。
现在,请注意,我们从未提及实例之间、子网之间、实例和互联网之间的流量应该如何流动,等等。那就是路由表介入的地方。它将指定从您的实例到其他实例和外部世界的路线。
关于路由表,您应该记住的第一件事是它们链接到一个或多个子网。路由表描述了应该如何重定向来自子网实例的流量。就路线而言,我们指以下两件事:
- 以 CIDR 记法表示为 IP 地址的目的地
- 一个目标,这是一个 AWS 网络资源,如 IG、ENI、本地或 NAT 设备(继续阅读了解这是什么;)
起初,让我感到困惑的是,一条路线只有一个目的地。实际上是因为原点是与路由表相关联的整个子网。
同样令人困惑的是:目的地和目标有什么区别?目的地是您希望数据包(数据)最终到达的最终 IP 地址,而目标是数据包下一步应该到达的地方,以便更接近这个最终目的地。
有两条特别重要的路线,您几乎会一直看到:
- 本地路由允许来自一个子网的实例与 VPC 内不同子网的其他实例通信。
- 默认路由指向互联网网关,允许互联网访问与路由表相关联的子网。
在我们的应用中,我们通常可以为第一个子网配置下表:
----- Example of a Route table for a webserver ----
+-------------------------+------------------------+
| Destination | Target |
+-------------------------+------------------------+
| 2001:db8:1234:1a00::/56 | local |
| 0.0.0.0/0 | igw-0e533011g0frrd318 |
| ::/0 | igw-0e533011g0frrd318 |
+-------------------------+------------------------+
您可以看到,第一条路由将流量从我们创建的第一个子网重定向到第二个子网,第二个子网由 2001:db8🔢1a00::/56 定义。最后两行简单地创建了与我们的第一个子网的互联网连接,允许所有地址("0 . 0 . 0 . 0/0*"IP v4 和"::/0**"IPv6 中的【】指的是所有地址—公共地址和您的 VPC 内的地址)通过 IG 到达。由于这两条线,子网变成了公共子网*。如果没有这些到互联网网关的连接,它将是一个私有子网。
让我们用这些新元素更新我们应用的云架构:

您可以看到上面的子网是公共的,而包含数据库的子网是私有的。请注意,私有子网仍然可以通过公共子网间接访问互联网。
如果现在您想以一种详细的方式控制流向您的实例的流量,该怎么办呢?比如哪个协议被允许到达你的实例,在哪个端口,等等。?
主要通过在实例级使用安全组和在子网级使用网络访问控制列表 (NACL)来实现对到达基础设施的内容的细粒度控制。
安全组基本上是一个防火墙,它控制着与该安全组链接的实例之间的流量。这是通过指定入站和出站规则来实现的,由以下内容组成:
- 数据包的入站规则的源(分别为出站规则的目的地)表示为 CIDR 块或另一个安全组的 ID
- 协议 用于与实例之间传输数据包(如 TCP)
- 端口 范围,指定数据包通过哪些端口中转
让我们以您想用作 web 服务器的 EC2 实例为例。在这种情况下,你会允许每个 IP 地址作为一个来源,因为你希望你的用户访问你的应用程序,对不对?在这种情况下,用于在互联网用户和实例之间建立连接的协议将是 TCP,而端口范围是 443,通常用于 HTTPS 数据传输。现在,您可能还想从远程终端控制您的实例来做一些维护工作。您将通过 SSH 从一个特定的源(例如在 197.52.101.10)完成这项工作。考虑到这一点,安全组的入站规则如下所示:
- Example of Security group Inbound rules -
+------------------+----------+------------+
| Source | Protocol | Port range |
+------------------+----------+------------+
| 0.0.0.0/0 | TCP | 443 |
| ::/0 | TCP | 443 |
| 197.52.101.10/32 | TCP | 443 |
+------------------+----------+------------+
请注意,默认情况下,所有外部通信都被拒绝。您需要明确地将将要与您的实例通信的源列入白名单。
另一方面,对于出站通信,默认情况下允许所有地址。这意味着您的默认出站规则如下所示:
Default Security Group's Outbound rules
+-------------+----------+------------+
| Destination | Protocol | Port range |
+-------------+----------+------------+
| 0.0.0.0/0 | TCP | 443 |
| ::/0 | TCP | 443 |
+-------------+----------+------------+
最后,关于安全组有一个重要的概念需要记住:据说它是有状态的。这意味着,如果在一个方向上允许一些流量,那么在相反的方向上也允许一些回复流量。这在与互联网客户端通信时很重要:我们的实例可能试图向 web 服务器发送一个包(像 GET 请求)并期待一个应答。我们的安全小组将允许答案通过。
当安全组在实例级控制流量时,另一个服务用于更方便地控制子网间的流量: NACL 。
网络访问控制列表在使用规则控制入站和出站流量的意义上类似于安全组。但是,一个 NACL 连接到一个子网,控制进出整个子网的流量。对于子网实例之间的流量,安全组是首选。
与担保集团类似,NACL 实施以下列要素为特征的规则:
- 规则号:一个整数,用于确定规则应用的顺序。首先应用较低的规则编号。
- 协议:与安全组相同的字段
- 端口范围:与安全组相同的字段
- 入站规则的源(或出站规则的目的地):与安全组的字段相同
- 动作:要么允许要么拒绝与的通信源或目的地
创建子网时,会附加一个默认 NACL,并且可以进一步修改。它的默认入站规则如下所示:
--------------- Default NACL Outbound rules -----------------
+-------------+-----------+------------+-----------+---------+
| Rule Number | Protocol | Port Range | Source | Action |
+-------------+-----------+------------+-----------+---------+
| 100 | All | All | 0.0.0.0/0 | Allow |
| * | All | All | 0.0.0.0/0 | Deny |
+-------------+-----------+------------+-----------+---------+
请注意,默认情况下允许所有入站流量,这与安全组不同!另请注意,最后一行带有星号作为规则编号:这是一个默认规则,不能修改或删除。它会拒绝先前规则未明确允许的任何流量。
NaCl 有一个特性会导致一些错误,因此值得记住:NaCl 是无状态的。这意味着它不会自动返回流量:您需要指定与允许通信发生的入站规则相对应的出站规则。或者你可以使用短暂的港口,但那是另外一个故事了!

NACLs 覆盖整个子网,而安全组在实例级运行(注意,DynamoDB 没有安全组,而是使用 IAM 角色……)
我们讨论了正确启动 AWS 服务所需的基本概念。我们看到了如何根据实例的利用率将实例安排到子网中。我们还支持实例之间的通信以及与互联网的通信(IG,路由表)。最后,我们通过指定应该允许哪些流量到达我们的实例(安全组,NACL)来保护我们的基础设施。
请记住,这篇文章仅仅触及了理解云架构的皮毛。下一步,您可能会对 AWS UI 感兴趣,创建自己的免费资源(使用免费层服务)。然后,通过阅读文档或关注 AWS 定期推出的新服务,您可以了解许多微妙之处:
- 例如,在创建 VPC 之后,您仍然可以使用辅助 CIDR 块为 VPC 分配 IP 地址(正如这里所宣布的)。这是为了在您需要更多资源时随时进行扩展。
- 最好使用安全组来限制出站流量,因为随着更新,端口可能会改变,并且 NACLs 不允许对其进行动态改变。
- 您可以使用弹性 IP 地址独占访问和使用一系列公共 IP 地址。
- 只需将流量从私有子网重新路由到 NAT 设备
- 还有更多…
一如既往地感谢您的阅读,请不要犹豫给我提供反馈或意见,以提高我对这个主题的理解。
原文:https://towardsdatascience.com/my-deep-learning-model-says-sorry-i-dont-know-the-answer-that-s-absolutely-ok-50ffa562cb0b?source=collection_archive———1———————–
我的深度学习模型说:“对不起,我不知道答案”。这完全没问题。

苏菲·玛德琳的绘画
虽然深度学习技术有效,但大多数时候不清楚 为什么深度学习有效 。这使得在航空、司法和医学等高风险领域部署人工智能变得棘手。
神经网络识别细胞活检是癌性的——它不告诉为什么。
通常,分类器模型被迫在两个可能的结果之间做出决定,即使它没有任何线索。它刚刚抛了一枚硬币。在现实生活中,医疗诊断模型不仅要关心准确性,还要关心预测的可信度。如果不确定性太高,医生会在决策过程中考虑这一点。
深度学习模型应该能够说:“对不起,我不知道”。
从不够多样化的训练集中学习的自动驾驶汽车模型是另一个有趣的例子。如果汽车不确定路上哪里有行人,我们会希望它让司机来控制。
泛化能力更强的网络更难解释。可解释的网络不能很好地概括。(来源)
有些模型可能不需要解释,因为它们用于低风险应用中,如产品推荐系统。然而,将关键模型整合到我们的日常生活中需要可解释性,以增加人工智能的社会接受度。这是因为人们喜欢把信念、欲望、意图归于事物(来源)。
理解和解释神经网络不知道的东西对最终用户来说至关重要。从业者也寻求更好的可解释性来构建更健壮的模型,这些模型可以抵抗对抗性攻击。

图片由 Goodfellow 等人于 2015 年在 ICLR 拍摄。 解释和治理反面事例 *。*给熊猫的照片加一点噪点会导致不正确的分类为长臂猿。
在接下来的几节中,我们将更深入地了解不确定性的概念。我们还介绍了如何评估深度学习模型中的不确定性的简单技术。
深度学习中有两种主要的不确定性:认知不确定性和任意不确定性。这两个术语都不容易脱口而出。
认知不确定性描述了模型不知道什么,因为训练数据不合适。认知的不确定性是由于有限的数据和知识。给定足够的训练样本,认知不确定性将会降低。认知的不确定性可能出现在训练样本较少的领域。
随机不确定度是观测值的自然随机性产生的不确定度。即使提供了更多的数据,也不能减少任意的不确定性。当谈到测量误差时,我们称之为同方差不确定度,因为它对所有样本都是恒定的。依赖于输入数据的不确定性被称为异方差不确定性。
下图代表了一个真实的线性过程( y=x ),它是在 x=-2.5 和 x=2.5 附近采样的。

在线性回归环境中展示不同种类的不确定性(图片由 Michel Kana 提供)。
一个传感器故障在左侧云层中引入了噪音。底层过程的噪声测量导致左边云中的高随机不确定性。这种不确定性不能通过额外的测量来减少,因为传感器在设计时一直产生大约 x=-2.5 的误差。
高认知不确定性出现在很少或没有训练观察的区域。这是因为可以提出太多似是而非的模型参数来解释潜在的地面真实现象。这就是我们云的左、中、右三部分的情况。这里我们不确定哪个模型参数最能描述数据。给定空间中更多的数据,不确定性将会降低。在高风险应用中,识别这样的空间是很重要的。
贝叶斯统计允许我们根据数据和我们对潜在现象的先验知识得出结论。一个关键区别是参数是分布而不是固定权重。
如果我们不学习模型的参数,而是学习它们的分布,我们将能够估计权重的不确定性。
我们怎样才能知道重量的分布呢?深度集成是一项强大的技术,在该技术中,大量模型或模型的多个副本在各自的数据集上进行训练,它们的结果预测共同构建预测分布。
因为集成可能需要大量的计算资源,所以提出了一种替代方法:丢弃作为模型集成的贝叶斯近似。这项技术是由亚林·加尔和邹斌·格拉马尼在他们的 2017 年论文中介绍的。
Dropout 是深度学习中一种常用的正则化方法,以避免过度拟合。它由随机抽样的网络节点组成,并在训练过程中将其删除。丢弃根据伯努利分布随机地将神经元清零。
一般来说,在贝叶斯模型中,正则化和先验分布之间似乎有很强的联系。辍学并不是唯一的例子。经常使用的 L2 正则化本质上是高斯先验。
在他们的论文中,亚林和邹斌表明,在每个权重层之前应用丢失的神经网络在数学上等价于高斯过程的贝叶斯近似。

图片由谭在 yuritan.nl 上提供——在不同的正向传递中,漏失改变了模型架构,从而允许贝叶斯近似。(授权引用的图片来自谭)
使用 droupout,每个未被删除的节点子集定义一个新网络。训练过程可以认为是同时训练 2^m 不同的模型,其中 m 是网络中的节点数。对于每一批,这些模型的随机抽样集被训练。
关键的想法是在培训和测试时都要退出。在测试时,论文建议重复预测几百次,随机剔除。所有预测的平均值就是估计值。对于不确定区间,我们简单计算预测的方差。这给了系综的不确定性。
我们将使用通过向函数 y=x 添加正态分布噪声生成的数据来评估回归问题的认知不确定性,如下所示:
- 在 x=-2 和 x=-3 之间的左侧云中产生 100 个数据点
- 在 x=2 和 x=3 之间的右侧云中产生 100 个数据点。
- 噪声以比右云高 10 倍的方差被添加到左云。

下面我们设计两个简单的神经网络,一个没有漏失层,另一个在隐藏层之间有漏失层。在每个训练和推理批次期间,丢弃层随机禁用 5%的神经元。我们还包括 L2 正则化应用优化期间层参数的惩罚。

没有脱落层的网络

带有脱落层的布局
rmsprop 优化器用于通过最小化均方误差来训练 10 个点的批次。训练成绩如下所示。两种模型的收敛速度都非常快。有退出的模型表现出稍高的损失和更多的随机行为。这是因为网络的随机区域在训练期间被禁用,导致优化器跳过损失函数的局部最小值。

下面,我们展示了模型在测试数据上的表现。没有辍学的模型预测了一条完美的 R2 分数的直线。包括辍学导致了一条非线性预测线,R2 得分为 0.79。虽然漏失过度拟合较少,具有较高的偏差和降低的准确性,但它突出了没有训练样本的区域中预测的不确定性。预测线在这些区域具有较高的方差,这可用于计算认知不确定性。

在没有训练样本的区域中,具有漏失的模型表现出具有高方差的预测。这个性质被用来近似认知的不确定性。
下面,我们在测试数据集上评估两个模型(有和没有脱落),同时在评估中使用脱落层数百次。这相当于模拟一个高斯过程。我们每次都从测试数据中获得每个输入标量的一系列输出值。这允许我们计算后验分布的标准偏差,并将其显示为认知不确定性的度量。

即使在没有训练样本的区域中,没有丢失的模型也没有 100%确定性地预测固定值。

在没有训练样本的地区,带有退出的模型估计了高认知不确定性。
正如预期的那样, x < -3 和 x > 3 的数据具有很高的认知不确定性,因为在这些点上没有可用的训练数据。
Dropout 允许模型说:“我对 x < -3 和 x > 3 的所有预测只是我的最佳猜测。”

图像由 OpenClipart-Vectors 在 Pixabay 上生成
在这一节中,我们研究如何通过更复杂的任务(如多项式回归)的退出来评估认知不确定性。
为此,我们生成一个从正弦函数中随机采样的合成训练数据集,并添加不同幅度的噪声。
下面的结果表明,包括辍学带来了一种方法,在没有数据的地区,甚至对于非线性数据,访问认知的不确定性。虽然遗漏会影响模型性能,但它清楚地表明,在没有足够训练样本的数据区域中,预测不太确定。

在没有训练数据的区域中进行预测时,没有辍学的模型会过度拟合训练样本并显示出过度自信。

辍学模型有较高的偏差,但在没有训练数据的地区不太可信。在训练样本缺失的情况下,认知的不确定性更高。
认知的不确定性是模型的一个属性,而随机的不确定性是数据的一个属性。任意的不确定性抓住了我们对数据无法解释的信息的不确定性。
当随机不确定性为常数,不依赖于输入数据时,称为同方差不确定性,否则,使用术语异方差不确定性。
异方差不确定性取决于输入数据,因此可以作为模型输出进行预测。同方差不确定性可以作为任务相关的模型参数来估计。
学习异方差不确定性是通过用以下等式代替均方误差损失函数来完成的(来源):

该模型预测了均值 y ^和方差 σ 如果残差非常大,模型将倾向于预测较大的方差。对数项防止方差无限增大。下面提供了这个任意损失函数在 Python 中的实现。
任意损失可用于训练神经网络。下面,我们举例说明一个类似于上一节中用于认知不确定性的架构,有两个不同之处:
- 隐藏层之间没有脱落层,
- 输出是 2D 张量而不是 1D 张量。这允许网络不仅学习响应 y^ ,还学习方差 σ 。

学习到的损耗衰减迫使网络在训练过程中寻找最小化损耗的权重和方差,如下所示。
**对任意不确定性的推断是在没有遗漏的情况下完成的。**下面的结果证实了我们的预期:左侧数据的随机不确定性高于右侧数据。由于 x=-2.5 附近的传感器误差,左侧区域有噪声数据。添加更多的样本并不能解决问题。噪声仍将存在于该区域中。通过在损失函数中包括任意的不确定性,该模型将对落在训练样本有噪声的区域中的测试数据进行不太可信的预测。

具有丢失的模型检测具有噪声训练数据的区域。这有助于在这些区域预测更高的随机不确定性。
测量任意不确定性在计算机视觉中变得至关重要。图像中的这种不确定性可以归因于当相机不能透过物体看到时的遮挡。图像的过度曝光区域或某些视觉特征的缺乏也可能导致任意的不确定性。
认知的不确定性和任意的不确定性可以相加得到总的不确定性。在自动驾驶汽车的预测中包括总的不确定性水平可能非常有用。

剑桥大学 Alex Kendall 的图像,关于计算机视觉中语义分割的任意和认知不确定性。任意不确定性(d)捕捉由于遮挡或距离而导致标签有噪声的对象边界。认知不确定性(e)突出显示模型不熟悉图像特征的区域,例如中断的人行道。
在这篇文章中,我们展示了如何在推理时间使用 Dropout 等同于使用贝叶斯近似来评估深度学习预测中的不确定性。
在商业环境中,了解一个模型对其预测有多有信心是很重要的。优步一直使用这种技术来评估时间序列预测中的不确定性。
在机器学习中适当地包含不确定性也可以帮助调试模型,使它们在对抗敌对攻击时更加健壮。新的 TensorFlow Probability 提供了概率建模,作为深度学习模型的插件。
你可以进一步阅读我关于负责任的数据科学的文章,看看当我们过于信任我们的机器学习模型时会出现什么问题。这份深度学习综合介绍和贝叶斯推理实用指南可以帮助深化和挑战深度学习的经典方法。
感谢《走向数据科学》的 Anne Bonner 的编辑笔记。
在不确定时期保持安全。
原文:https://towardsdatascience.com/my-dive-into-professional-machine-learning-b10a9a4e49bd?source=collection_archive———52———————–
大约一个月前我结束了实习。这一经历本身就非常有价值,我有幸与之共事的团队成员将成为我一生的导师。现在这个项目已经完成了,我想坦率地反思一下这段经历,并揭示一下从业余爱好者修补匠到在专业环境中开发机器学习模型是什么样的。
我的角色是 SPIE 的一名人工智能实习生,这是一家位于华盛顿州贝灵汉的非营利公司,我在那里完成了我的 MIS/Analytics 本科学位。SPIE 出版与光子学研究相关的研究期刊和其他文献,并全年举办学术会议,研究人员在会上展示新的发现。当我加入时,SPIE 刚刚开始尝试使用机器学习来改善他们的业务,并需要了解使用新技术的可能性。除了我自己之外,开发管道的另一个活跃成员是上个季度我的一个文本挖掘班的教授。据我所知,SPIE 主动联系他们,看他们是否知道有学生有兴趣成为最终成为实习的独特项目的一部分。本季度末,我曾写信给我的教授,询问他是否知道毕业后的就业机会,这封信正巧落在了他的手上。
SPIE 该项目的目标是预测一名研究人员提交给数字图书馆的论文是否会成功。利用这一预测,他们希望更有效地利用与这些演示相关的服务资源,如翻译论文和录制演示视频。由于内容的复杂性(密集的研究论文),这些任务必须由具有领域经验的人手工完成。
在这个项目中,我使用了两个数据集:
演示数据—SPIE 图书馆约 200 万篇研究论文的浓缩数据库。该数据集包含 101 个特征,从详细描述论文提交时间的简单日期特征到关于论文在哪个会议/子会议/研讨会上发表的等级信息。该数据集中还包括出席数据,详细说明了参加某一特定演示的参与者人数。数据中的结果集显示了从 2015 年开始的给定年份的下载量。因此,对于每篇论文,从 2015 年到 2019 年有五列数据,以及论文在那一年从 SPIE 的数字图书馆下载了多少次。
分类数据 — SPIE 投资创建了一个分类法,将每篇论文与特定主题联系起来。当一名研究人员将他们的论文发布到数字图书馆时,一个自动化系统会推荐哪些标签应该与论文相关联,以便人们更容易搜索它。如果系统推荐了正确的标签,它将包含在文档中。这一过程也允许研究人员输入他们自己的标签,这些标签也显示在数据中。这份文件只有 5 个特点,其中只有三个是有用的。
这个项目被限制在 20 小时/周,但考虑到我修了 19 个学分,而且这是我在大学的最后一个学期,大多数时候我可能在这个项目上工作 12-17 个小时,并相应地按小时计费。至于报酬,我可以选择作为独立承包商工作,每小时 23 美元,或者作为 SPIE 的正式员工,每小时 21.05 美元;我选择了后者,因为我认为“人工智能实习生”的头衔会吸引未来潜在雇主对我简历的关注。该项目从 2020 年 2 月持续到 2020 年 8 月,除了初步的现场访问之外,该项目完全是远程的。我通常更喜欢在办公室环境中工作,但实习的远程性质最终带来了好处,在我开始工作一个月后,新冠肺炎进入了高潮。
我可以深入研究我们在项目的每个部分使用的许多特定的包,但是我认为人们使用的工具并不总是像它们被认为的那样重要。只要你知道你在做什么,你能到达你想去的地方,我总是喜欢阻力最小的道路。
- Python——简单、健壮,并为我们正在尝试做的事情提供了很好的包。
- 清理 —自定义 SQL 和 Python 脚本。
- 包 — Pandas/Numpy 用于操作, Scikit-learn 用于模型的主要特性和探索性分析, Genism 用于潜在的狄利克雷分配工作。
- 可视化: Matplotlib 用于简单的东西, Tableau 用于大的东西。
在项目的第一个月,我获得了数据,并不得不清理它。我的第一个路障实际上是在看它。那时我对熊猫还很陌生,我处理的文件非常大。我花了一整天的时间试图找出哪些参数可以让我使用他们的自定义编码和分隔符,但最终我不得不向我以前的一位教授寻求帮助。一旦我过了这一关,我就开始研究数据。我联系了团队中具有更多领域知识的另一名成员,并真正投入到工作中,以便能够理解数据的底层组织如何有助于实现目标。在这一阶段,我还开发了一个管道,说明我是如何看待项目进展的,以及为什么每一步都需要在链中得到保证。我们还决定了如何对数据进行整理、分割和测试。有一些数据保真度的问题(下载只在一年内给出,而不是每月或每天),以及出席数据的损坏问题,所以我们必须找到一些解决方法。我们决定从原始演示数据集推进约 40 个要素,并决定使用下载数据作为预测的因变量。
在第二阶段,主要活动是设计新功能。我们最初的想法之一是使用一种前向链接的方式,看看前几年主题的表现如何可以用来预测后来该主题的其他论文的受欢迎程度。这种方法本质上是试图跟踪某些对象的动量。我们还使用了一种无监督的方法来将分类群聚类到它们的自然领域中,这被证明是成功的最重要的预测因素之一。除此之外,我们使用了基于分类变量和数字变量混合的随机森林方法。
因为初始数据集非常大,我们总是对随机播种的数据子集进行测试。我们使用标准参数进行培训/测试/验证,例如,我们使用 20%进行测试,80%进行培训。这是测试中最令人沮丧的部分之一,因为偏差和方差的问题凸显了我们之前犯的一些错误。在我们对模型的设置方式感到满意,并确信它在最坏的情况下也会表现良好之前,我们必须调整设置大约一周。我们在项目中使用前向链接来训练早期论文的数据,并使用后期的数据作为测试数据。比如 2018 年发表了一篇论文,我们用 2015–2017 年来训练模型,以 2018 年为基准判断准确率。这是有益的一步,但不完全符合预测新报纸业绩的商业问题。我们最终放弃了决策树部分的这种方法,只在 LDA 子模型中使用它。在这一阶段,我们还向执行委员会提交了我们的研究结果,在那里我们回答了他们提出的一些关于使研究论文受欢迎的特征的问题,并向他们展示了我们是如何做到这一点的。
到目前为止,我们一直在分段开发管道。因为有如此多的单个组件以特定的方式被处理,这个模型有点孤立。某些部分需要更多的预处理,而其他部分只是等待它们完成。我认为,如果我们在开始时花更多的时间进行规划,我们可以在这个阶段节省一些精力,但我对专业数据科学工作仍然非常陌生,可能不具备实际实现这一目标的智慧。该模型将部署在 Azure 上,但我们后来发现 Jupyter 笔记本在该平台上的弃用与我们打算使用的流程相冲突。不幸的是,这意味着我没有看到模型得到部署,因为我的实习即将结束,但我相信我们已经做了足够的工作,使模型相当简单,便于团队在未来部署。在这段时间里,将我的代码缝合在一起的一个更有趣的部分是看到我在这个项目过程中的进步。一行一行地回顾我写的所有东西(总共大约 2000 行)让我感到,因为找不到更好的词,怀旧。
我也只是想记录下我在这个过程中学到的新东西,以及项目过程中发生的变化。
- 如果没有我的团队和高管团队的支持,我不可能取得如此大的成功。开诚布公地交流我们在哪里,我们在做什么可能是这个项目成功的最大因素。举个例子,在我们的探索阶段,关于是否将一篇论文的月发表的特征视为分类变量或数字变量,存在(健康的)冲突。我极力主张明确,这样我们就可以把出版视为一个循环过程,但我最终被动摇了,因为我们团队的沟通方式允许健康的分歧发生。
- 每个人都愿意好奇并探索他们的直觉,这为我们建立模型的方式提供了很大的创造性空间。因为数据是独一无二的,所以我们必须跳出框框思考我们处理数据的方式。此外,我认为模型的子组件是我们能够做出的最佳选择。
- 没有花足够的时间专门规划管道的顺序会导致我的工作流程出现瓶颈。
- 在早期阶段尝试和测试模型的各个部分可能会很有趣,但是过度依赖早期的发现会使我的决策产生偏差,我们最终会消除整个部分,因为它们在更多数据下不稳定。
- 我们花了大约三分之一的时间进行探索性研究,但我认为我们还可以在这上面花更多的时间。理想情况下,我会花一半的时间来熟悉变量之间的关系。
- 处理如此大的数据集的过程非常顺利,希望在这个阶段有更多的挑战。
- 我在上一节中提到,我认为我们以创造性的方式使用了方法(我们确实这样做了),但我希望我有更多的时间来探索我没有使用过的其他方法,如 transformers 或 PyTorch。
- 许多我认为自己非常了解的包都非常深奥,在我了解它们之前,它们可以完成许多我手工完成的常见任务。阅读文件!
- 在您进入更大的项目之前,数学、计算机科学和数据库管理的广泛知识基础是非常重要的。你可以通过做一些构建在劣质代码上的小项目,而对底层理论却知之甚少,但是你最终会停滞不前。
- 真实世界的数据是混乱的。清洁仅次于虔诚。
总的来说,我认为这个项目是成功的,因为数据准确地预测了论文未来的受欢迎程度。
感谢阅读!
原文:https://towardsdatascience.com/my-end-to-end-process-for-data-science-projects-a12d62fbb40a?source=collection_archive———44———————–

照片由 Nghia Le 在 Unsplash 上拍摄
我为什么要写这个故事?原因很简单,不是每个数据科学项目都是成功的。当然,你可以谷歌一下这个话题,你会找到成千上万的理由。对我来说,没有成功的项目是改进我的过程和技能的最大机会。在这个故事中,我将通过提供我在一个数据科学项目中的当前(并且仍在改进)流程来简要总结我的学习。我不怀疑这个过程不适用于每个人,因为“数据科学项目”没有单一的定义。我的目的是通过总结一个项目的不同步骤来分享我的经验。这并不能保证成功,但至少,作为一名数据科学家,这个过程将尝试解决您可以预防的所有陷阱。我的角色是创建消费数据和提供洞察力的管道(参见我在之前的故事中对管道的定义)。这是我正在使用的过程。
第一步是确定解决方案的范围。有时很难在期望和定价之间找到平衡。我的建议是,通过审视真正的需求来推动任何决策。这将允许把“最好有”放在一边,优先考虑“强制功能”。
要草拟项目的范围,第一步是与客户一起工作,并理解难点和他的动机。在这个故事中,我将使用术语客户来表示为项目付款的人。实际上,客户可能是你公司的董事/副总裁/首席技术官。客户是决定投资这个项目的人。必须了解为什么这个人对这个项目感兴趣。最大化生产?过程的缩放?避免他工厂的失败?任何事情…痛点是什么?这对于下一步非常重要。一个好办法是询问客户目前如何处理他的痛点。如果已经有衡量当前流程效率的指标。
很多时候,我有机会在甚至不知道谁将使用该解决方案的情况下起草一个范围。这是不对的!如果使用了该解决方案,项目就是成功的。我曾经在一些项目中,用户甚至没有被清楚地识别出来。这是创造永远不会被使用的东西的最好方法。一家公司的首席执行官说:“人工智能既时髦又酷,我们应该用它做点什么”。快跑!
我们举个例子。一位主管/副总裁希望使用人工智能来优化工厂的库存管理。太好了!然后我开始谈论解决方案,但未来的用户甚至不在房间里。我们开始着手这个项目,并决定该算法将在每天早上提供一封电子邮件,其中包含需求预测,以帮助库存经理做出最佳决策。我努力工作,我成功地完成了这项任务。我们甚至开发基础设施来支持算法。一切都搞定了,CEO 也开心了!你猜怎么着?这个预测甚至不是经理最关心的。他很难实时弄清楚工厂里哪里有什么产品。太糟糕了,一个简单的交互式仪表板就可以完成这项工作。没有这些信息,预测是没有用的。这个项目失败了。
在另一种情况下,经理需要每周而不是每天的预测,或者预测需要实时可用而不是每天…所有这些情况都会发生。我的最佳建议是在对话中尽可能早地引入未来用户,因为他是定义需求的最佳人选。
此时,我想要的是一个清晰的成功标准。
客户:“我需要算法来预测我的装配线何时会出现故障”。
我:“好的”,我看着接线员,“你需要提前多长时间预测?”(在这里,我试图定义问题的粒度。)
接线员:“我需要提前 2 天的预测,早上 7 点前需要这些信息”。
我:“很好,但你必须明白,算法可能会产生错误警报,也会错过一些故障。你觉得这样舒服吗?目前情况如何?如果不需要一台机器,请维护团队来修理这台机器会造成多大的成本损失?一天之内你能检查多少台机器?”
我需要所有这些答案来创建一个成功的标准。
…
我:“你现在怎么解决这个问题?”。
操作员:“我们有 1000 台机器,每天至少有一台会出故障。我们无法全部检查,因此,我们优先检查长期未检查的那一个”。
最后一个信息非常重要,因为它告诉我酒吧在哪里。如果我模拟当前的策略,我可以评估我的解决方案有多好。
所有这些信息都有助于我用成功标准来定义一个衡量标准。在这种情况下,我宁愿使用命中率这样的指标。前 N 个最有可能的预测故障中的真阳性数。n 是维护团队一天内可以处理的干预次数。我很少向客户传达 F-Measure 或 AUC 之类的指标,因为他不能用这个指标来决定解决方案是否成功。在对话结束时,我们发现命中率为 2 对于要使用的解决方案来说是足够有价值的。此外,由于我收集的信息,我可以对客户目前浪费的资金以及客户通过成功的解决方案可以节省的资金进行定价。然后,当我向客户展示进度时,我可以将我的指标转换成美元。
一个重要的考虑是,我的解决方案将被集成到现有的系统中。这个系统的存在是有原因的,人们正在使用它。人工智能解决方案将改变这个系统。必须预见到这种中断,否则项目的最后阶段(当人们使用解决方案时)可能会导致意想不到的额外成本。这种干扰可能非常重要,以至于客户最终可能会改变主意,拒绝承担发布解决方案的风险(这发生在我身上)。我的建议是在解决方案的初始范围确定期间,在对话中引入这种潜在的中断。
在讨论结束时,我会询问一些数据片段,一些关于我们收集数据的方式的信息,等等。我会进行数据分析(1-2 天)以检查是否有大的危险信号。数据工程师也将参与对话以起草架构。
现在,我有了范围,我可以进入下一步,即制定解决方案。
这个阶段的目标是证明项目是可行的,并且能够带来价值。为了在这一阶段优化流程,您必须考虑需要哪些约束。

约束三角形
基本上,在 POC 阶段,我无法同时限制时间、资源和准确性。时间是指我能在这个项目上花费的时间。资源是分配给该项目的人数。准确性是指模型的准确性。理论上,你只能约束其中两个。实际上,资源或多或少总是受到限制的。也许一些公司可以在一个项目上分配“无限”数量的资源。我从来没有遇到过这样的情况。如果你放松准确性,它就相当于“黑客马拉松模式”或“尖峰”。当你想在短时间内研究一个想法时,这是很有用的。最现实的选择是放松时间。一些客户很难在这种模式下工作,因为他们需要遵守最后期限,并且他们可能会觉得 POC 永远不会结束。但是,诀窍是以有效的方式向客户传达进展。出于这个原因,我使用敏捷方法。这种范式是为软件开发而发明的,但我将其应用于数据科学项目的环境中。如果你不熟悉措辞,我邀请你读一些关于敏捷的文章。
我通常在 2 或 3 周的冲刺阶段工作,这取决于客户。第一次冲刺的目标是建立一个基线。当第一个端到端管道(从数据到指标)传递一个数字时,基线被声明。在最初的冲刺中,我选择最简单的路径。这是唯一重要的事情。尽快得到一个数字。例如,如果一些变量缺少值,最简单的方法是从数据集中删除这些变量。或者,如果我必须选择一个模型,最简单的是线性回归或逻辑回归,因为没有参数化。没有 creasy 预处理,只有简单的步骤。避免任何可能意味着微调或校准的步骤。没有 PCA,没有标准化,什么都没有。基本上,在这个 sprint 中,我设置了 CI/CD、git 存储库,编写了一个解析器,并创建了最简单的管道版本,以一个度量数字结束。我唯一需要注意的是评估策略。如果在 66%训练 33%测试程序和交叉验证程序之间切换,则很难比较两条管道的性能。评估策略需要尽可能接近管道的使用方式。在上面的例子中,我将为训练集使用一个增长窗口,为测试集使用一个滑动窗口。
第二个冲刺是将基线产品化。在数据工程师和 DevOps 的帮助下,我们建立了支持管道的架构。有些人更喜欢等到管道达到范围中定义的准确性水平。对我来说,我会尽我所能尽早地让其他团队明白,以便尽快产生一个 MVP。对于我的短跑,我使用标准周期。每天召开一次全体会议,检查是否有阻碍者。我们在 sprint 的开始做计划,在最后做演示。我们也不时做回顾。在冲刺的最后,我们检查新版本的管道是否提供了比基线更好的结果。如果是,它对应于下一个 sprint 的新基线。我在 sprints 中跟踪这些信息,并将其包含在演示中。

短跑中的指标跟踪
在演示过程中,我向客户展示了上面的图。他可以决定 1)继续另一个 sprint,2)宣布我们达到了目标,或者 3)放弃项目,因为当前的解决方案与预期相差太远,并且需要花费大量的时间来完成。这种早期停止对每个人都有好处。对于客户来说,他没有在一个可能过于昂贵的项目上浪费金钱,也没有将团队重新分配到另一个成功概率更高的项目上。演示也是验证新假设的机会。
在每次迭代中,我都会增加管道的复杂性。例如,我收集外部数据来扩充数据集,我改进预处理,添加更多功能,使用不同的算法,等等。这里的危险是过度设计管道。例如,我不会试图在第二次迭代时起草一个新的深度学习架构,或者我不会添加疯狂的复杂功能来确定一两个不会严重影响指标的离群值。为了确定对管道影响最大的改变,我经常查看误差最大的实例,试图找到解释,并得出新的清洁策略和/或新功能。我根据工作量对这些改动进行排序,从最简单的开始。
关于 CI/CD 和笔记本的注意事项:
度量的测量必须是可重复的。因此,我忽略了任何不是由 CI/CD 管道产生的数据点。如果结果是在 Jupyter 笔记本上获得的,我必须说服自己,它可以在另一台机器上重现。笔记本对于数据分析来说很酷,但是它们需要很强的纪律性来确保结果的可重复性。我知道我做不出这样的事。因此,我只相信 CI/CD 中的数字。我曾经遇到过这样一种情况,我向客户声称我们达到了预期,但最终却无法重现结果。这对每个人来说都是非常令人沮丧和昂贵的…我希望你永远不必生活在这种情况下。
我强烈推荐你看一下“机器学习系统中隐藏的技术债务”这篇文章。机器学习代码是整个解决方案的一小部分。清楚地了解产品化所需的额外步骤非常重要。产品化需要数据工程师和 DevOps 的支持。
但愿 POC 已经完成,我们达到了成功标准。很好!!现在需要把管道产品化。有两种主要的方法:
- 放手。概念验证的结果转化为规格。一组软件开发人员接手,重写整个代码,并将管道产品化。
- 推戳。我的代码“按原样”重用,在数据工程师和开发人员的帮助下,我们围绕它构建了一个基础架构。
这两种方法各有利弊。放手的方法将确保解决方案更加稳定。因为数据科学家并不总是经验丰富的开发人员(这里没有冒犯的意思),代码的产品化通常掌握在其他人的手中。在大公司里这是常有的事。一个细节,在这种情况下,代码的所有权不再属于数据科学家。所以修复 bug 是由软件开发团队来完成的。
第二种方法是让数据科学家将他的代码打包到一个库中,然后它将在另一个系统中使用。例如,在云中的 lambda 函数中。这种方法更快,因为我们避免了重写代码。代码被“清洗”了,债务也还清了。如果你遵循我在之前的故事中的建议,这一步可以高效完成。最后,代码的所有者仍然是数据科学家,我负责修复 bug。这种方式通常在小公司和初创公司中使用,在这些公司中,每个项目只能有有限的几个人参与。
我更喜欢使用第二种选择。我将在下一节更详细地解释我的理由。简而言之,当使用第一种方法时,如果我想发布解决方案的改进或添加一些功能,我将不得不处理我的代码库,重写规范,等待开发团队更新解决方案,等等。这可能需要几个月的时间。快速周期意味着最大限度地减少干涉。
好了,现在我的流水线在生产了。但是,创建一个流程来获取操作员的反馈以持续改进解决方案非常重要。例如,操作员每天都在使用该产品,但他对算法提出了一些改进。例如,他不去预测失败是否会发生,而是希望得到一个分数或者失败的概率。为了从预测中得到一个分数,需要在管道中做一个小的改变。只是返回概率而不是预测类。我试图做的是,一旦管道的第一个版本可用,就建立一个反馈流程(sprint 2–3)。这个反馈循环也可以帮助我在冲刺阶段进行调整,但是当产品发布时,这种持续的改进仍然存在。为了与用户进行良好的互动,我希望改进能尽快发布。出于这个原因,我避免了放手策略,自己去做改进,更快地获得反馈。反馈回路对于捕捉操作员做出的决策也很重要。当决策与管道的预测不匹配时,这意味着我们可以通过纳入运营商做出决策的“原因”来改进管道。随着时间的推移,运营商的角色会发生变化,变得越来越简单。一个结果是能够扩展他的能力。最终,预测性管道可能会变成规范性管道。然后,操作员不再解释预测,而是直接采取行动。这引出了我的最后一点:
重要的是要明白,在一家公司引入人工智能解决方案,将会扰乱员工通常的工作方式。有时,员工的角色变化和额外的技能可能是需要的。例如,如果你引入一个聊天机器人来帮助客户支持团队,这个团队可能会减少或重新分配到其他任务。该解决方案还可能导致客户公司的一些业务重新定位。我看到一些公司因为新的解决方案而改变了他们的策略,从销售产品到销售服务。这通常是客户没有预料到的。有时,它会导致项目暂停一段时间。在我看来,该公司会受到算法的严重影响,以至于在他们的系统中重组和集成解决方案需要更多的投资。他们最终决定不使用它。我试图在过程的早期引入这个主题,以确保客户能够预见到这种情况。
我希望你在我描述的这种或那种情况下认识到了自己。如果你同意,或者不同意,请在下面发表评论。
我的 Linkedin: 这里
原文:https://towardsdatascience.com/my-experience-as-a-bertelsmann-tech-and-deep-learning-nanodegree-graduate-459ab27db477?source=collection_archive———8———————–

迪米塔尔·贝尔切夫在 Unsplash 上拍摄的照片
当一年即将结束时,要做的一件负责任的事情就是反思。你取得了哪些成就,你面临了哪些挑战,你学到了什么,以及你如何让这一年的剩余时间变得有价值。
我可以肯定地分享的一个经历,希望对读者有益,是获得 2019 年贝塔斯曼技术奖学金,并获得 Udacity 的深度学习纳米学位,完全免费。今年,贝塔斯曼科技公司在开设了另一个奖学金申请项目,如果你对数据和云技术有热情,你绝对应该试试。
许多人在网上询问申请贝塔斯曼技术奖学金、赢得奖学金并完成 Udacity 的纳米学位是什么感觉。此外,一个人能从实现这一切中得到什么好处呢?所以希望这篇文章能帮助回答你可能有的一些问题。
我们开始吧!
贝塔斯曼是一家媒体、服务和教育公司,在全球约 50 个国家开展业务。他们的首席执行官 Thomas Rabbe 表示,他们的使命是让世界各地越来越多的人获得对数字技能的需求。他们与 Udacity 合作,提供免费的纳米学位课程,否则如果由个人全额支付将会非常昂贵。
2019 年,他们提供了数据分析、人工智能/深度学习和数据科学方面的纳米学位。今年,他们提供了三个新项目。如果你想了解更多,我在下面附上了链接。

2020 年贝塔斯曼理工奖学金项目。来源
去年的申请要求申请者写一篇短文,内容是关于(1)你为什么应该获得奖学金,以及(2)你打算如何利用你将从奖学金中获得的技能,或者你将如何从奖学金中受益。我们还被问及对我们的 Python 技能的信心。
今年,这个应用程序变得更加简单和容易。您只需要回答几个关于您自己以及您当前 Python 和 SQL 技能的问题。
为了获得全额奖学金,你必须通过两个主要阶段。
第一个是申请阶段。全世界有成千上万的人申请,只有大约 10000-15000 人被三个项目接受,这意味着每个项目大约有 35000 人被选中通过申请程序。
第二阶段称为第一阶段。第一阶段是给你提供你申请的 ND 项目的基础或基础课程。看看哪些候选人能真正完成整个课程。时长 3 个月左右,与去年持平。在 3-5k 申请者中,只有大约 300-500 人(10%)获得全额奖学金,即第二阶段,获奖者开始全部 ND 计划并完成剩余课程。
就是这样。之后,就看学者们在 6 个月内完成 ND 了。
以下是今年奖学金的时间表

2020 年贝塔斯曼理工奖学金时间表。来源
不要被愚弄,这些时间窗口可能看起来很长,但是参与阶段 1 和阶段 2 并不像看起来那么容易。尤其是和新冠肺炎·疫情。由于新冠肺炎和每个人都必须适应的“新常态”,我花了比预期更长的时间完成了课程。
现在,我们到了有趣的部分。我跟大家分享一下我从申请一路到毕业的故事。
2019 年,我选择了深度学习计划,因为我相信这些资源(学习资料、论坛、提示和技巧、最佳实践等。)对于深度学习来说,如果我选择在其他在线课程或网站上自学,仍然比其他两个更难达到。
我写了论文,提交了申请。一两个月后,我收到了这个。

我非常高兴,欣喜若狂,我的申请脱颖而出,被第一阶段录取了。
关键是我必须真正知道我想从这个项目中得到什么,以及为什么我(还有贝塔斯曼)会从接受(和给予)奖学金中受益。
所以,如果有另一个申请过程类似的奖学金,这里的关键是你真的真的要把它卖出去。
但是今年有点简单,因此在我看来,更难。为什么?好吧,申请中没有文章,只有几个复选框,这可能会让你在竞争中脱颖而出。
但是,这不应该阻止任何人去尝试,我说的对吗?😃
这就是贝塔斯曼理工奖学金的乐趣所在。
因此,在每一个 ND 项目中,学生们被分成三个全球松弛小组,每个小组根据他们申请的项目而定。每个学生都可以接触到他们研发项目的基础课程。
这一阶段以及进入第二阶段的说明简单明了。
我们必须及时通过基础课程,并积极参加休闲小组。
听起来很简单,对吗?完成课程并参加为期 3-4 个月的小组放松活动,对吗?
没那么快,
因为这是“容易”和“简单”的,每个人都可以很容易地做到这一点,即竞争也很激烈,很容易出错。人们最常犯的错误是:
- 他们很快就完成了课程,感到厌倦,不再参加小组活动
- 他们及时完成了课程并参加了小组活动,但还不够
第一个错误可能是因为无聊、办公室里有急事等等。关键是他们没有始终如一地参与到懈怠小组中。错误 2 是最危险的。因为许多人确实及时完成了他们的课程,他们确实参加了懈怠小组,但是他们被那些更积极的人淹没了。他们中的一些人甚至向 Udacity 投诉,说他们不同意/抗议他们朋友的选择结果。这些高度活跃的人通常参加学习小组会议(我们称之为学习堵塞),每天或一周中的几天发布在 Slack 小组中,要么是有用的想法,要么是对其他学生问题的回答,要么是激励性的报价,甚至可能是一个有趣的 meme 来放松。
关键是,那些进入第二阶段的人,是那些“疯狂地”想要这些奖学金的人,他们表现出来了。在第一阶段的所有 3-4 个月中。
第一阶段我做了什么?我在下班后与我的印度尼西亚学者们聚在一起,在课程中一起工作,组织并参加定期会议,并一直致力于它。我甚至发表了一个我用第一阶段获得的技能做的项目。
[## Pytorch 挑战中国十二生肖分类
贝塔斯曼 AI Udacity 奖学金的挑战之一,这是如何分类中国十二生肖的一种方法…
towardsdatascience.com](/chinese-zodiac-sign-classification-challenge-with-pytorch-d89a8897d00b)
经过大量的艰苦工作,那 3-4 个月感觉漫长得多。但这是值得的,尤其是这封邮件。

现在真正的艰苦工作开始了。
有 5 门主课,5 个项目,我们必须在 9 月 17 日之前提交。如果你觉得非常有动力,再加上一门课外课程。从事这 5 个项目并不是最大的挑战。是新冠肺炎。
世界被扔进了一个巨大的扳手,全球每个人都必须适应“新常态”,包括印度尼西亚。从早上 9 点到下午 6 点在办公室工作变成了在家工作,工作时间更长,也更随意。有时还是一样,有时你不得不从睁开眼睛的那一刻一直工作到晚上 10 点。真的很难预料。我不能合理地计划我的时间。当然,我必须首先确定工作的优先顺序。因为疫情,很多人被解雇了。
我别无选择,只能在深夜和周末全职攻读我的纳米学位。太累人了。
将近六个月过去了。最终,在祈祷、咖啡、谷歌以及 Udacity 的导师和学生中心的帮助下,我设法在大截止日期前完成了它,并毕业了。另外,我在不牺牲健康的情况下做到了这一点。
[## Udacity 纳米学位项目毕业证书
证明你完成了一个职业相关的项目,侧重于技术技能
confirm.udacity.com](https://confirm.udacity.com/P2VR7KDA)
这就是 2019 年贝塔斯曼技术奖学金和 Udacity 深度学习 nd 的过程和旅程。也有人问我,我做这一切得到了什么好处。以下是其中的一些
- 在奖学金和纳米学位期间,我遇到了许多有着同样动力和激情的了不起的人,并和他们成为了朋友。我们交流想法和令人敬畏的话题,并激励彼此进步。我仍然和他们中的一些人有联系。谁知道将来我们会如何从这个网络中受益。谁知道你会在 2020 年的贝塔斯曼技术奖学金中遇到谁呢
- 毫无疑问,技能和知识和我想象的一样好。讲师,导师和学生中心是如此惊人。这些讲座相对容易听懂和理解。实践项目也非常直观,它们还提供了解决方案,以防我们被一两行代码或它们背后的概念所困扰。
- 这些项目非常独特。我从纳米学位项目中获得的经验好得令人难以置信。这些问题是独特的。这些案子是真实的。Udacity 还为学生提供了 99 小时的支持 GPU 的工作空间,以比使用我们自己的私人笔记本电脑更快的速度运行我们的代码和模型。他们也给了我们一套清晰的目标,让我们在项目中实现(最小准确性、最大损失、清晰简明地解释我们的逻辑/思维过程)。没有其他在线课程能给我提供同样的体验。
总的来说,这是一次奇妙的经历。Udacity 没有为他们的深度学习 ND 夸大纳米学位这个术语。这几乎就像一个迷你硕士项目。我建议其他人去实现。
希望这篇文章对那些想申请和学习贝塔斯曼技术奖学金和 Udacity ND 的人有所帮助,或者至少激励你继续学习。
“保持饥饿,保持愚蠢”——史蒂夫·乔布斯
“保持安全和健康”——任何有常识的人
原文:https://towardsdatascience.com/my-experience-as-a-data-scientist-vs-a-data-analyst-91a41d1b4ab1?source=collection_archive———6———————–

威廉·艾文在 Unsplash 上的照片
T 这里有许多关于成为数据科学家和数据分析师所需技能的文章,但很少有人告诉你成功所需的技能——无论是获得出色的绩效评估、管理层的表扬、加薪、升职,还是以上所有这些。今天,我想分享我作为数据科学家与数据分析师的第一手经验,以及我获得成功的经验。
我很幸运,在没有任何数据科学经验的情况下,得到了一个数据科学家的职位。我如何做到这一点是另一个故事,我在这里的观点是,在接受这份工作之前,我对数据科学家的工作只有一个模糊的想法。
我之所以被聘用,是因为我有构建数据管道的经验,因为我之前是一名数据工程师,开发了数据科学团队使用的预测分析数据集市。
我作为数据科学家的第一年涉及建立数据管道来训练机器学习模型,并将其部署到生产中。我保持低调,没有参加很多与作为模型最终用户的市场利益相关者的会议。
在我的第二年,负责营销联络的数据科学经理离开了公司。从那时起,我就成了关键人物,并更多地参与模型开发和项目时间表的讨论。
随着我与利益相关者的互动越来越多,我意识到数据科学是一个模糊的概念,人们听说过但不太理解,尤其是高级管理层。
我建立了一百多个模型,但是因为我不知道如何展示价值,只有三分之一曾经被使用过,即使这些模型在一开始就被市场要求。
我的团队中的一名成员花了几个月的时间开发了一个模型,高层管理人员认为该模型可以展示数据科学团队的价值。这个想法是在这个模型被开发出来之后,在整个组织中推广这个模型,并鼓励营销团队使用它。
这被证明是一个彻底的失败,因为没有人明白什么是机器学习模型,也不明白使用它的价值。结果是几个月的时间浪费在没人想要的东西上。
这让我想起了我从成为一名成功的数据科学家中学到的经验:
在一家公司面试时,询问他们的数据文化,以及有多少机器学习模型已经被采纳并用于决策。求举例。
了解数据基础设施是否已经为您建立,以便开始建模。如果你花 90%的时间试图提取原始数据并对其进行清理,你将几乎没有时间构建任何模型来展示你作为数据科学家的价值。
如果你是第一个受雇于数据科学的人,请小心。这可能是好的也可能是坏的,取决于数据文化。如果高级管理层只雇佣一名数据科学家,因为他们希望被认为是一家利用数据科学做出更好决策的公司*,并且不知道这到底意味着什么,那么你可能会在采用方面遇到更多阻力。或者,如果你发现一家公司是数据驱动的,那么你会随着公司的成长而成长。*
在开始时,我提到当我还是一名数据工程师时,我已经为数据科学团队构建了分析数据集市。当我过渡到我的数据科学家角色时,我能够找到新的功能来提高模型的准确性,因为我在以前的角色中曾密集地处理过原始数据。
当我展示营销活动结果时,我能够展示这些模型产生了更高的转化率,其中一个 KPI 营销活动就是根据这些结果进行衡量的。这证明了营销模式对企业绩效的价值。
如果你的利益相关者从不使用你的模型来做商业决策,你将永远不会成为一名成功的数据科学家。
确保采用的一个方法是找到业务的痛点,并展示模型如何有所帮助。
在与我们的销售团队交谈后,我意识到有 2 名代表全职手动检查公司数据库中的数百万用户,以确定更有可能升级到团队许可证的单许可证用户。在选择过程中使用了一套标准,但这很耗时,因为销售代表必须一次查找一个用户。使用我开发的模型,销售代表现在可以选择最有可能购买的用户,并在更短的时间内增加转化的机会。通过提高销售团队可能涉及的 KPI 的转换率,这转化为更有效地利用时间。
几年过去了,我一直在重复开发相同类型的模型,感觉我不再学习任何新的东西。我决定寻找一种不同的角色,最终得到了一份数据分析师的工作。
尽管我再次支持市场营销,但职责上的差异与我担任数据科学家时相比,已经大不相同了。
这是我第一次分析 A/B 实验,发现所有* 实验可能出错的方式。作为一名数据科学家,我根本没有参与 A/B 测试,因为那是留给实验团队的。*
我做了各种各样的分析,营销对这些分析有影响——从提高保费转化率到用户参与度,再到防止流失。我学会了许多不同的方法来查看数据,并花了大量的时间来汇编结果,并将它们呈现给利益相关者和高层领导。作为一名数据科学家,我主要研究一种类型的模型,很少做演示。
我的数据分析师经历与我作为数据科学家时有很大不同,那时我的重点是开发模型来优化用户转化,而不是我作为数据分析师参与的项目的广度。
几年后,这些是我学会的成为一名成功的数据分析师的技能😗*
不要孤立的看 KPI。从整体的角度看待业务,将它们联系在一起。这将允许您确定相互影响的区域。高层领导从 30,000 英尺的高度审视业务,当决定晋升时,表现出这种能力的人会受到关注。
提供可行的见解,这是一个问题的解决方案。如果你主动提供这个解决方案,而没有被告知这是一个问题,那就更好了。
例如,如果你对市场部说——“我注意到最近网站的月访问量有所下降”。这是他们可能已经在仪表板上注意到的趋势,而作为分析师,你不会提供任何价值,因为你只是陈述观察结果,而不是提供解决方案。
相反,你可以查看数据,找出原因并提供解决方案。营销的一个更好的例子是—“我注意到最近我们网站的访客有所下降。我发现来源是有机搜索,因为我们最近做了一些改变,导致我们在谷歌搜索排名中下降。这表明你在跟踪公司的 KPI,注意到了变化,研究了原因,并提供了问题的解决方案。
你需要成为利益相关者就你所支持的业务提出建议或问题的第一个人。
没有捷径可走,因为展示这些能力需要时间。
关键是始终如一地交付高质量的分析,很少出错。计算中的任何错误都会让你失去可信度,因为下次你提交分析时,他们可能会怀疑如果你上次错了,这次你是不是错了。总是仔细检查你的工作。如果你对自己的分析有任何疑问,在陈述之前让你的经理或同事检查一下你的数据也无妨。
同样,成为一个有效的沟通者没有捷径可走。这需要练习,随着时间的推移你会变得更好。
关键是要找出你想要提出的要点,并根据你的分析结果,向你的利益相关者推荐任何可以改善业务的行动。你在组织中的职位越高,良好的沟通就越重要。传达复杂结果的能力是一项需要展示的重要技能。
作为一名数据科学家和数据分析师,我花了数年时间学习成功的秘诀。我们对成功有多种定义,被描述为“惊人的”和“全明星”分析师在我看来就是成功。现在你知道了这些秘密,我希望你的成功之路,无论你如何定义它,来得越早越好。
** [## 我如何使用机器学习模型来生成可操作的见解
将数据科学与数据分析相结合
medium.com](https://medium.com/swlh/how-i-used-a-machine-learning-model-to-generate-actionable-insights-3aa1dfe2ddfd) [## 我从数据工程师到数据科学家的不可思议的转变,之前没有任何经验
通过掌握一项基本技能
towardsdatascience.com](/my-unbelievable-move-from-data-engineer-to-data-scientist-without-any-prior-experience-6f76614fe340)**
原文:https://towardsdatascience.com/my-experience-with-the-tensorflow-developer-certification-exam-c75d2d1759de?source=collection_archive———17———————–

认证计划徽标
只有 200 多人被列为认证 TensorFlow 开发人员,已经有一些关于考试的帖子了。这个是我的,从一个更实用的角度来看你。在这篇文章中,我将告诉你我是如何准备的,以及你如何获得认证。
我的观点和我认为的大多数考生的观点有点不同。我已经是全职的机器学习实践者,我不是在找工作的学生,也不是自雇顾问。该考试似乎主要是在这两个类别中推广的。因此,我希望我的帖子对那些已经在数据科学或编程方面有良好基础的人非常有用。
所以你可能想知道张量流到底是什么,为什么你应该关心它。TensorFlow 是 ML 界的巨头。它是由 Google 维护和发布的 Python 框架。它旨在用于深度学习,而不是作为 Sci-kit learn 等经典 ML 库的替代品。从版本 2.0 开始,TensorFlow 实现了 Keras API,这基本上意味着您可以像使用 Keras 一样与 TF 代码进行交互。这一点很重要,因为 Keras 更高级,对初学者来说更容易学习。TensorFlow 是一个在工业和生产级任务中特别流行的框架。
但是,当然,你已经知道了所有这些。你可能在谷歌搜索中找到了这篇文章,寻找这个考试对你来说是否值得,你是否可以参加。我听到了。这项考试还有一些额外的好处:
- 你可以把它列在简历、Github 或 LinkedIn 个人资料上
- 你在公共认证目录上有一席之地
- 你将获得一枚徽章,可以在社交媒体上分享
- 很有趣

TensorFlow 认证目录具有地图功能,因此招聘人员可以更容易地跟踪你。
缺点:
- 花五个小时,以编码为基础,这是一个需要你做实际工作的考试。有失败的可能。
- 考试本身要花 100 美元,在 Coursera 上浏览课程可能也要花钱
- 它的有效期只有三年
此外,像所有证书一样,考试本身并不是对技能的认可,也不能保证为你打开更多的大门。也没有准入门槛。你可以在没有 TensorFlow 经验的情况下参加考试,但我不建议你这样做。
为了准备考试,我按顺序浏览了以下材料:

【pdf】考生手册是你可以从中获取考试信息的主要文件。我读了它,并在任何看起来有趣的地方做了笔记。它还 链接到另一个 pdf,详细说明如何设置您的环境 。由于这两个文件都是活文档,我在考试前检查了一下。

实践专业化张量流(Coursera)
TensorFlow 在实践中的专业化 本质上是课程到考试。劳伦斯·莫罗尼(Laurence Moroney)给出的,是对 TensorFlow 以及如何在 TensorFlow 中编写深度神经网络的官方介绍。这是一个包含四门课程的专业,每门课程包含四周时间。如果你是从零开始,这意味着你可能需要一段时间来解决这个问题。
然而,如果你已经很有经验并且很有能力的话,它会花费很少的时间。对我来说,课程 1 到 3 已经是我工作的一部分,我可以在四天内完成。每门课我都记笔记,并不断补充。只有当我到了第四门关于时间序列的课程时,我才慢了下来,因为我对时间序列只有有限的经验。

PyCharm 2020.1 spash 屏幕
专业化完成后,最后一站是练习解决方案。我选择在皮查姆学习。考试本身也是由 PyCharm 的一个插件管理的,如果你没有的话,你需要下载它。我不经常在深度学习工作中使用PyCharm,但我对它有些熟悉。我认为这是为任何 GPU 错误等做准备的好方法。为了帮助我确定学习过程的范围,我根据我几乎没有经验的事情列出了一个清单。其中的一些例子包括使用张量流数据集、生成 LSTMs 的诗歌以及一般的时间序列预测。我花了大部分时间在这里,因为我花了几个星期的下班后学习时间来完成所有的事情。

候选人手册中的屏幕截图,显示了您可能被要求实施的项目列表。请查看 TensorFlow.org 最新版本的列表。
最后一步,我设置了模拟测试环境的环境,以确保一切顺利进行。在考试之前,我还运行了一台 Jupyter 笔记本电脑服务器。虽然您应该能够在五个小时内在本地完成所有工作,但是您也可以使用其他环境来构建解决方案的原型——甚至是在云上。
- 阅读候选人手册 (pdf)
- 阅读设置您的环境说明 (pdf),该说明链接自考生手册
- 在 Coursera 上做 TensorFlow in Practice 课程。
- 研究:解决任何你从手册中不知道的概念,用那个概念建立你自己的解决方案
- 用考试规范建立一个 PyCharm 环境,这样你就知道应该在考试中发挥作用的一切。
- 建立一个后备环境(如笔记本电脑、Collab,甚至在 GCP 或 AWS 虚拟机上),以防考试期间发生任何事情。

我们信任云。摘自 Sara Robinson 关于 TF 2.0 部署的博客文章,你可以在这里找到。
我决定我已经准备好了,我想设置一切可能需要一两个小时。我在考试网站上创建了一个账户,并提交了我的 ID 和付款。我下载了插件,接受了条款,并确保我的互联网能够正常运行。万事俱备,只欠东风。
然后我吃了午饭。
一旦我按下那个大的[开始检查]按钮,计时器就开始倒计时。在五个小时的时间内,你需要解决许多问题,而且每个问题都比前一个难。后面的一些模型计算量很大,甚至在 GPU 上也是如此。每当我可以训练出一个解决方案的时候,我就会开始编码下一个。
最终,我遇到了一个 CUDA 问题似乎是由于版本不匹配。随之而来的是轻微的恐慌和漫长的时代。我可以更新考试环境,但不确定这是否会给我带来更多问题。我无法在 10 分钟内解决它(而且我真的不想在压力下做更多),所以我让我的模型在我的 CPU 上训练。此时,我已经花了 2.5 个小时。****
还有一些小问题,比如插件不能用提交按钮刷新屏幕。我不得不重新启动我的 IDE 几次。这并不十分麻烦,因为修复问题或多或少是正常开发的一部分。
然而,由于这些小问题影响了我排除故障的能力,我切换到我一直运行的 Jupyter 实例,并使用它进行原型开发。这意味着当我的 PyCharm 在后台使用 tensors 时,我仍然可以在那里制作模型原型。
没有给出太多的信息,考试确实给出了一点反馈,这样你就知道你对问题的解决方案什么时候足够好了,你就可以继续了。大约过了四个小时,我对我所有的解决方案都很有信心,并且有点自满。我开始改进一个不能完美得分的模型,由于现在在 CPU 上训练,我花了一段时间在它上面。在这个过程中,我重写了我以前的模型。你可能已经猜到了——新型号的性能更差,甚至降低了以前的分数。对我来说幸运的是,在剩下大约十分钟的时间里,我能够提交另一个型号,它的性能与旧型号相同。
在我提交了考试之后,我马上收到了一封电子邮件,说我通过了!
虽然考试的评分是瞬间完成的,但我花了几天时间才拿到徽章,一周后我的名字才出现在认证目录上。我觉得这反映出这可能不是一个自动化的过程,他们仍然在寻找最好的方法来完成它。

伙计们,这次没有带帽的谷歌毛衣或贴纸了
这种考试方式比监考更适合我。我发现当有人在你的笔记本电脑上看着你的时候,做一个考试很伤脑筋。我做不到。尽管考试花了五个小时,但这是一次愉快的经历。
TensorFlow 现在获得了认证,这一事实确实激励我对它有了更多的了解。我喜欢在学习时心中有目标。
预计未来会有更多的认证。我当然希望如此。他们可以涵盖许多有趣的高级 NLP 主题,我觉得在更大的 TensorFlow 生态系统中有一些元素非常适合这种类型的考试。未完待续,我猜。😃

即将推出:高级和专家级认证。来源这里。
祝你的 TensorFlow 之旅好运,希望这篇文章对你有用。如果您有任何问题,请告诉我。
原文:https://towardsdatascience.com/my-experience-with-twitter-premium-full-archive-api-using-rtweet-f6309f789902?source=collection_archive———41———————–

图片来源:Unsplash
Twitter 的高级存档 API 允许访问超过 30 天的推文,可以追溯到 2006 年。这是一种重要的数据资源,自然也很昂贵。人们应该在开始使用它之前了解某些事情,因为每个请求都是付费的,并且有一个有限的请求配额。
从 premium API 访问数据的整个过程在 Twitter 的开发者页面以及 R 和 Python 库的文档中都有很好的记录,但是有几个方面没有得到很好的解释或者完全被忽略了。
在我的项目中,我需要访问两到三个月前的推文,所以我购买了 Twitter 的高级访问权限以获得完整的存档。我使用了“rtweet”包,这是 R 的库,可以访问 Twitter 的 API。它有很好的文档记录,并且可能是唯一允许访问高级 API 的 R 包(但是它有令人痛苦的缺陷)。
然而,在你开始走这条路之前,有一些要点你应该知道。
- 成本+税— 此处给出的成本表不含税。我每月花 224 美元购买了 250 个请求,并额外支付了 44 美元。也许很多人都知道成本不包括税,但他们应该在某个地方说出来,特别是对于那些可能申请补助金/资金来支付这笔费用的人。
- 最近到以前的推文— 在构建获取推文的查询时,rtweet 函数 search_full archive 允许输入日期范围。该查询如下所示:
tweet <- search_fullarchive("#beyonce or #katyperry)(lang:en or lang:hi)" , n = 3000, fromDate = "201912120000", toDate = "201912120000", env_name = "curate", safedir = NULL, parse = TRUE, token = token)
Twitter 的 premium API 获取用户查询中提到的最近时间,然后一直工作到开始时间。这种方法不允许全天发布更大范围的推文,而只能在很短的时间内发布。
3.**推文配额—**Twitter Premium API 允许每个请求访问 500 条推文。而且,你也可以得到 500 的倍数的推文。例如,(这是我的理解)在上面的查询中,我在一个请求中请求了 3000 条推文,这将被计为=3000/500 = 6 个请求。人们需要注意这个数学问题,因为订阅允许一定数量的请求和一定数量的推文,在我的情况下,每月 250 到 125,000 条推文。如果你用完了请求,你将无法消耗你的 tweets 配额。在实验和查询构建中,很有可能一些请求会耗尽。
4. rTweet 消耗更多请求的速度更快— 我最近发现 rTweet 软件包有一个缺陷,它消耗的请求比需要的多。我不确定他们是否已经修好了。但是,由于这个错误,我丢失了大量的推文。你可以在这里阅读关于这个 bug 的。
当我开始使用 Twitter Premium API 时,我没有发现这些要点,因此我付出了惨痛的代价。
希望有帮助。
原文:https://towardsdatascience.com/my-favorite-free-interactive-data-visualisation-tools-550a3f7a44b?source=collection_archive———52———————–
交互式网络浏览器是我作为斯坦福大学数据科学家工作的重要组成部分,支持决策者为人类和自然做出有针对性的空间规划选择。当教的时候,我被问了很多关于底层工具的问题,所以这里有一个快速的回答。
在数据时代,我们饱受信息过剩之苦,有效地理解大量数据已经成为一项重要的技能;因此,数据可视化蓬勃发展。的确, 数据即 已经成为探索大型多维数据集必不可少的。交互式数据 viz 特别有助于链接不同的数据视图,过滤大数据集,或可视化跨比例的精细分辨率地图 …

在我从事生态系统管理的工作中,我看到了以一种用户友好的方式向决策者传达复杂的量化结果是项目成功的关键。交互式查看器有助于讨论,并易于吸引用户,让他们直观地研究数据集。除了它们潜在的吸引力,它们还真的有助于从复杂的数据集中获得洞察力,研究显示。
著名的全球观众 监测森林砍伐珊瑚礁健康气候适应能力食物系统资源海平面上升 (…)以及最近的冠状病毒 病例。这些甚至经常作为他们的主题的数据库,收集最新的数据集。在较小的范围内,特定于项目的查看器服务于特定的目标和目标受众,允许协作者共享和可视化数据,在团队迭代时促进跨组讨论。例如,在空间发展计划的背景下,观众帮助合作伙伴调查发展的场景,如新道路或新保护区建设的影响…

一个数据可视化工具的流程图,可以让你制作更漂亮的流程图…等等!
那么,最好的数据可视化工具是什么?没有放之四海而皆准的神奇解决方案;像任何好的视觉效果一样,合适的工具取决于你的受众、数据格式和要传达的关键信息。下面,我将列出我喜欢使用的工具,并链接一些例子。
先说最强大的交互标图库:**D3 . js是交互数据可视化的猛兽。从用 C3.js 轻松制作的非常简单的互动图表,到最酷的迷幻、艺术、以及富有洞察力的视觉效果。它几乎涵盖了所有类型的地块,从和弦图到单词树。D3.js 不容易,但是有充足的 教程和实例来支撑。**
说到空间数据, 小叶 是交互制图的女王库。它的能力依赖于它的插件,由社区贡献,可以适应最流行的数据类型。我将这些用于,特别是用于shape file、 geoJSONs 的那个,最近,我发现这个用于(相对较小的)栅格 。对于更大的栅格(和最快的显示),我推荐使用图块。商业解决方案(如 Mapbox 、 ArcGIS Online 或 Carto )让您可以轻松制作和托管切片,但有数据托管限制,并且永远无法 100%定制。我更喜欢创建自己的 tileset,它并不像看起来那么复杂(3 个 GDAL 命令,然后用 GitHub pages 平稳地服务它们)>参见我构建和服务自制 tileset 的神奇技巧!
现在,对于卫星图像, 谷歌地球引擎 (啧啧)大概是你最好的选择。优点:如果你展示的是 GEE 托管的数据集(他们托管了很多!),你会节省相当多的时间。你也不需要担心托管或服务你的浏览器,因为它是通过 GEE 应用程序托管和服务的。缺点:虽然编码被简化了(感谢谷歌),但它是沙箱化的,所以你不能完全控制创建你梦想中的漂亮界面。此外,应用程序部署仍处于测试版本。当然,它不是开源的。
GitHub Pages 让部署你自己的浏览器变得异常简单(设置>选项> GitHub Pages >源>选择你的分支和浏览器文件夹)。您的查看者的 URL 看起来像{您的用户名} . github . io/{ repository-name },但是如果您拥有一个更酷的域,则可以自定义。**
****只需要一个快速原型?如果你不需要部署一个完整的 web 浏览器,你可以节省大量的时间(基本上跳过所有的 web 开发:没有 HTML 也没有 CSS,直接跳到你的 viz 需要的 JavaScript),通过使用 Observable 的交互式 JavaScript 笔记本,可以在线加载你的数据。
对 JavaScript 过敏?别再担心了。一些很棒的 Python librairies ( 散景 , 牛郎星 )让你互动地到处玩(在 Jupyter 笔记本里)。尽管 Javascript 仍然是将在 web 上共享的任何内容的参考,但上面提到的大多数 js librairies 也有 python 版本(例如flower集成了 flower . js 用于 Python 数据)。
它总是在可定制性和易于实现之间进行权衡。
存在商业解决方案( ArcGIS Storymaps 允许轻松创建结合媒体、文本、地图和图表的交互式故事;Tableau 让你轻松创建仪表板…),尽管它们在功能和可定制性方面存在固有的局限性。大多数功能都是基于免费增值模式。老实说,我对他们不够了解,无法提供好的建议。
如果你不怕看代码,并且你对 github 有足够的了解,可以试试这个:
掌握这些可视化库,并让一切顺利地协同工作——从数据格式化到在线部署查看器——可能非常耗时。为了简化这个过程,我和出色的 Anna hhgg 为我们的同事制作了一个模板来免费、快速地构建网络浏览器。都是开源的,所以也是你的!
https://charlottegiseleweil.github.io/viewerTemplate/**

viz.naturalcapitalproject.stanford.edu/viewerTemplate(由安娜·哈格设计)
它仍然很新,所以非常欢迎您的反馈——看一看演示,并复制回购以开始使用。
底线:如本文所述,有许多新的库和工具可以用来制作更精致、更漂亮、更丰富多彩的网络地图…我建议在选择工具和设计解决方案时,始终关注要传达的关键信息和受众——有时最简单的就是最有效的!
牢记图形完整性原则,玩得开心!









