TowardsDataScience 博客中文翻译 2019(五百五十)
【发布时间】:2024-11-02 06:20:40
火凤直播高清直播美女解说
原文:TowardsDataScience Blog
协议:CC BY-NC-SA 4.0
原文:https://towardsdatascience.com/what-makes-an-active-timebank-49a98eba8502?source=collection_archive---------21-----------------------
(Source: DC TimeBank Facebook page)
在这篇文章中,我解释了我收集数据的过程,特征工程,以及使用线性回归来识别活动时间银行的预测器。但是首先…
毫无疑问,当我说我正在做一个关于时间银行的项目时,有人问的第一个问题是,“什么是时间银行?”
如美国时间银行网站所述:
“时间银行是一种基于时间的货币。给别人一个小时的服务,得到一次积分。”
你以前可能听说过时间银行或类似的系统,与互助网络、技能共享、本地交换交易系统(let)或共享经济等术语相关联。
辛辛那提时间商店是一家从 1827 年到 1830 年经营的实验性零售店。它使用“劳动纸币”作为货币,被认为是其他 let 的前身,包括时间银行和现代加密货币。
(Source: “Cincinnati Time Store”, Wikipedia)
20 世纪 90 年代,Edgar Cahn 注册了“时间银行”一词,并成立了美国时间银行,推动了美国的这一运动。他在人们修复世界播客的“按时运行而不是按钱运行的银行”一集中解释了他的动机。在经历了一次限制他工作能力的心脏病发作后,他反思了资本主义:“一种珍视稀缺资源、贬低更丰富资源、将真正丰富的资源视为一文不值的货币体系。我突然意识到,这意味着它贬低了作为一个人的价值,因为我们并不稀缺。也许我们需要一种重视作为一个人意味着什么的钱。”
Cahn 确定了时间银行的五大核心价值:
资产:我们每个人都有一些有价值的东西可以与他人分享。重新定义工作:有些形式的工作是不容易用金钱来支付的,比如建立强大的家庭、振兴邻里关系、让民主发挥作用、推进社会公正。时间积分是用来奖励、认可和表彰这项工作的。互惠:问题:“我能为你做些什么?”需要改变,所以我们问:“你也会帮助别人吗?”向前付出可以确保我们共同帮助彼此建设我们共同生活的世界。社区/社交网络:互相帮助,我们重新编织支持、力量和信任的社区。社区是通过扎根、建立信任、创建网络来建立的。尊重:民主的核心和灵魂在于尊重他人。我们努力尊重人们此刻所处的位置,而不是我们希望他们在未来某个时刻所处的位置。
目前在美国,许多人担心社会和政治分化似乎在加剧。与此同时,人们仍在应对美国历史上时间最长的政府关闭的影响,未来还有另一次可能的关闭。时间银行提供了在社区内加强联系,(重新)建立信任和关系,以及创建支持系统来帮助满足日常需求和从危机(政治、自然或其他)中恢复的可能性——而不依赖于金钱、市场或国家。
1995 年芝加哥热浪夺去了数百人的生命,随后,埃里克·克兰伯格研究了 T2 不同社区之间的死亡率差异。Little Village 是该市死亡率最低的城市之一,每 10 万居民中有 4 人死于高温。与此同时,紧邻的北劳恩代尔区是死亡率最高的地区之一,每 10 万居民中有 40 人死亡。
克兰伯格将这种差异归因于社会和空间环境的差异:
近几十年来,大多数热浪死亡率高的非裔美国人社区都被雇主、商店和居民抛弃了。抛弃、分散和衰退的社会生态使得社会支持系统极难维持。
自然的力量当然发挥了主要作用。但是这些死亡不是上帝的行为。数百名芝加哥居民*孤独地死去,*躲在锁着的门和密封的窗户后面,与朋友、家人和邻居失去联系,没有公共机构或社区团体的帮助。这一点都不自然。
时间银行的核心是建立强大的支持系统。在 2010 年和 2011 年坎特伯雷地震之前,利特尔顿时间银行已经组织了该镇 10%的居民和 18 个组织。由于已经开发的网络,时间银行能够在地震发生时迅速动员社区成员。他们已经知道该检查谁,以及如何最好地利用人们的技能。值得注意的是,时间银行还在急救人员离开后很长一段时间内实现了持续的支持和恢复。
Community members organize using resources provided by the Lyttelton Time Bank after the Canterbury earthquakes in New Zealand (Source: Developing Local Partners in Emergency Planning and Management)
虽然我们不知道芝加哥热浪在时间银行或类似系统存在的情况下会有不同的结果,但利特尔顿的例子表明时间银行可以成为社区安全、弹性和恢复的强大贡献者。
Cahn 分享了时间银行的其他成功案例:
在芝加哥,127 所学校让五年级学生帮助三年级学生学习字母表,几乎消除了特殊教育。
在华盛顿特区青少年法庭陪审团任职的青少年有助于减少累犯。该计划将再次逮捕率从 34%降至 6%。
美国时间银行最近也与 Seva Exchange 正式建立了合作关系,“这是一个利用人工智能和区块链技术的平台,通过为现代数字经济重塑时间银行服务来激励全球志愿服务。”Seva Exchange 正在研究基于时间的加密货币如何提供一种普遍的基本收入形式,与国家福利体系分开运营。
现在我们已经了解了一些背景信息,让我们开始研究我的项目吧。
这个项目主要关注美国时间银行的数据。虽然有其他平台列出了更多的时间银行(如 hOurworld 和 Community Exchange System ),但它们没有那么多关于单个时间银行的集中和公开信息。
我首先翻阅了 TimeBanks.org 目录的所有页面,得到了平台上所有时间银行的初始列表。然后,我创建了一个每日刮刀,在每天开始时获取以下内容的更新:
交易数量、时间、会员、报价、请求、最后一次交易按类别列出的聘用、请求和人才所有出价和请求列表
我手动收集了时间银行页面上脸书和推特账户的数据。这一决定最初是由脸书对自动数据收集的限制促成的。然而,这成为了一个了解更多不同时间银行的机会,考虑到拥有社交媒体账户的时间银行数量相对较少,这是可行的。
美国时间银行的地理定位和人口普查数据是使用geo codeo编制的。我从新西兰统计局收集了新西兰的人口估计。这些将用于项目的未来开发。
Map of timebanks on TimeBanks USA (Source: TimeBanks USA Directory)
详见清洁&特征工程笔记本。在这个笔记本中,我生成新的特征并将收集的数据合并到一个文件中用于建模。
我得到了复合情绪得分(使用 VADER 的)和每个 timebank 的使命陈述和笔记的字数。虚拟变量表示每个时间银行是否列出了电话号码、赞助商、二级网站、脸书账户或 Twitter 账户。我还计算了每日交流次数的平均值、每天交流的小时数、每次交流的小时数、出价数、请求数、出价与请求的比率以及每天新会员的数量。其他功能包括每个 timebank 的父类别数、总类别数(父类别和子类别)、包含聘用和请求的类别百分比,以及每个成员每个父类别的总人才数。
这个项目的工作是一个高度迭代的过程。我在数据收集、处理、特征工程等过程中使用了探索性数据分析。 EDA 笔记本包含将用于建模的组合数据的分析和可视化。这包括将所有时间库的数据与非活动和活动时间库进行比较。由此,我预计为所有时间银行和活动时间银行创建单独的模型将提供有用的见解。
A comparison of some features for ALL timebanks (left) vs ACTIVE timebanks only (right). Note the difference in scale between the bottom boxplots.
我为所有时间银行和活动时间银行创建了单独的模型。使用找到最佳参数,我尝试了使用、、、和的模型。最终,我选择了向后特征选择的线性回归作为两者的最佳模型。
相对于没有预测因素的模型,所有时间库的最佳模型解释了数据中 54.3%的可变性。该模型预测平均每日交易次数将随着以下因素而增加:
更多请求报价减少每次交换的时间更长一个被列出的电话号码笔记字数更多
相对于没有预测器的模型,活动时间库的最佳模型解释了数据中 39.8%的可变性。该模型预测平均每日交易次数将随着以下因素而增加:
脸书喜欢的人更少更多的脸书追随者更多请求报价减少被列名的赞助商
考虑到这个数据集中相对较少的时间库(总共 156 个,48 个活动的)以及它们彼此之间的差异,我并不期望得到非常健壮的模型。然而,它们仍然为活跃和不活跃时间库之间的差异提供了有用的见解,以及活跃时间库之间更多交换的潜在预测因素。我希望,增加时间银行所在社区的数据将会加强模型,并为活跃的时间银行的构成提供更多的见解。
查看流程日志,了解我的流程、挑战、问题、想法和参考资料的其他文档。
这个项目在很大程度上是一项正在进行的工作。未来的发展包括:
定期收集更新的目录信息以收集新的 timebank 信息。一旦收集了更长时间内的更多数据,就对列表进行时间序列分析。使用自然语言处理来深入了解交换了哪些请求和提议,哪些没有得到满足,以及其他模式。深入研究任务陈述和其他时间银行信息中的语言使用、框架、描述性和主动/被动语态。调查附近有更多时间库的区域是否也有更多活动。查看与时间银行位置相关的人口统计信息,包括人口规模和密度、失业率、房屋所有权等。设置每日刮刀通过 AWS 自动运行。
我正在积极参与这个项目,并希望随着它的进展在这里提供更新。张开双臂欢迎建设性的批评、建议和思想伙伴。请随时联系。在 dawngraham.github.io 获取最新联系方式。你也可以查看这个项目的 GitHub repo。
感谢阅读!想法、问题和反馈总是很受欢迎。
原文:https://towardsdatascience.com/what-makes-the-news-6b05507724f2?source=collection_archive---------21-----------------------
Photo by AbsolutVision on Unsplash
随着智能手机和社交媒体的兴起,几乎可以在任何平台和设备上即时获得新闻。大量的新信息来源对传统新闻媒体造成了重大的负面影响;皮尤研究中心指出,自 2008 年以来,新闻编辑室的工作岗位减少了 25%。考虑到这一点,我想了解一下主要新闻媒体都写了些什么。他们写的都是同一个话题吗?如果是的话,他们是用同样的方式写的吗?如果没有,也许他们有机会扩展到新的写作主题或风格。
我从 Kaggle 上的All News dataset中获得了这个项目的数据,其中包含了来自 15 个主要出版物的超过 14 万篇文章的全文。这些文章主要写于 2016 年和 2017 年,来源于各自出版物网站上的在线文章。文章分发的摘要可以在下面看到:
虽然从文章的最初部分来看,文本相当清晰,但我仍然需要解决几个在使用 unigrams 和 bigrams 进行 LDA 主题建模时可能导致潜在问题的特性。我删除了非 ASCII 字符和标点符号,以确保在后续步骤中只包含有效的单词:
在尝试建模之前,我使用 NLTK 的 WordNet Lemmatizer 对数据进行了预处理,将单词简化为它们的基本形式。然后,我使用 scikit-learn 的 CountVectorizer 对数据进行了标记,该工具以单词袋方法生成文本中的基本单词数。这种方法创建了大约 4600 个一元和二元模型的稀疏矩阵。
我修改的一些关键参数包括 min_df、max_df 和停用词列表。我将 min_df 设置为 0.01,max_df 设置为 0.99,分别排除不到 1%和超过 99%的文档中的术语。这有助于通过消除过于具体或过于宽泛的术语(导致相同的通用术语出现在几乎每个主题中)来防止在建模中添加噪声。我进一步修改了英语停用词的基本列表,以包括媒体中常用的词,如出版物本身的名称。请参见下面的相关代码:
完成上面的预处理后,我使用了多种方法来确定哪种建模方法会产生最易解释的主题以供进一步分析。我从潜在语义分析(LSA)建模开始(参见本文对 LSA 方法的概述),它要求用户输入固定数量的主题。虽然实现起来很简单,但我发现来自 LSA 的主题不容易区分,因为相同的关键字出现在多个主题中。
然后,我尝试了一个分级狄利克雷过程(HDP)模型,看看我是否能获得更好的结果。HDP 是潜在狄利克雷分配(LDA)的扩展,旨在解决主题数量未知的情况(参见本文档了解更多信息)。它推断数据中的主题数量,而不是要求预先输入,并返回每个主题的概率。通过绘制 HDP 模型的累积结果,它返回每个主题的概率,我可以观察额外的主题是否潜在地提供了价值:
根据上面的图表,每个主题的附加值在 20 个主题后急剧下降,这似乎是一个值得研究的主题数量。然而,通读了生成的主题后,我遇到了与 LSA 相同的问题;这些话题不容易解释,而且似乎相互交融。
我通过流行的 gensim Python 包转向了 LDA 建模。根据上面的分析,我将最初的主题数量设置为 20 个,在多次调整我定制的停用词后,结果看起来很有希望。我重新运行了这个模型,增加了主题的数量,直到达到 40 个,然后检查结果,看看什么最有意义。我确定了 24 个最合理的主题,并使用 pyLDAvis 模块将它们可视化:
上面的可视化显示了每个主题的距离图,理想情况下,圆圈应该很大,并且重叠最小,以便区分。由于这些主题既有意义,又从视觉上看起来很强大,我继续解释和测试我的结果。
为了使解释和分析更加简单,我将上面的 24 个主题分成了 8 个主要类别(具体请参见我的 Github )。下面是每个出版物的每个类别中的文章分布图:
仅从视觉上看分布,我们可以看到出版物可能侧重于不同的类别。例如,路透社关于市场的文章比例似乎最高,而福克斯新闻频道倾向于支持选举政治。
虽然看图表足以进行粗略的分析,但我想通过多重假设 A/B 测试对出版物之间的差异进行更技术性的分析。
A/B 测试最基本的场景是在两个变量(A 和 B)之间进行随机实验,并确定它们之间的差异是否具有统计学意义。在我的例子中,我想比较来自多个出版物的每个类别的文章比率,并假设所有出版物都有相同的分布。因此,我需要同时进行多重比较,对每份出版物中足够数量的文章进行检查。
为此,我决定只测试文章数量排名前 6 位的出版物(布莱巴特、CNN、NPR、纽约邮报、路透社和华盛顿邮报)。我用 Python 创建了几个自定义函数来计算每次比较的 p 值:
然而,为了确定这些 p 值是否具有统计学意义,我需要解决多重比较产生的多重性问题。如本文的中所述,如果不正确调整所需的显著性α,A/B 测试中的每一次额外比较都会增加 I 型错误的几率。我将自定义函数与 statsmodels 的 multitest 模块相结合,对我的 alpha 进行了 Holm-Bonferroni 校正,以便进行分析:
测试结果确定了 6 种出版物之间日常生活文章比率的统计差异;没有发现任何其他类别的显著差异。日常生活用品的不同费率如下所示:
区别很明显,路透社很少报道日常生活,而《纽约邮报》和《NPR》则重点报道日常生活。
作为检查各种出版物的最后一步,我决定看看每种出版物的可读性水平。使用 SpaCy-readability 模块,我确定了基于出版物的 3 个指标的平均可读性:
Flesch-Kincaid 等级级别是一种常用的度量标准,通过每句话的字数和每个单词的音节数来确定可读性;更多的单词和音节意味着需要更高的教育水平。按照这个标准,路透社是最难阅读的,需要十年级以上的教育,而商业内幕是最容易的。
戴尔-查尔可读性指标也使用每句话的字数,但将这个比率乘以“难词”的比率(基于美国四年级学生容易理解的 3000 个单词的列表)。路透社仍然是最难的,而商业内幕现在排名第二。《NPR》现在是最容易阅读的,可能是因为单词的用法。
烟雾可读性指标提供了一种替代 Flesch-Kincaid 的测量方法,使用了一种基于文本中句子样本内多音节的公式。SMOG 通常更严格,可能会在某些类型的文本中提供更高的难度,如医疗保健材料。在这种标准下,《国家评论》变得最难阅读,而《谈话要点备忘录》的短文被认为非常直截了当。
这项研究的目的是看一看一组出版物的主题和可读性,并注意它们之间的差异。这为媒体公司或其他感兴趣的研究人员提供了一个机会,来研究这些趋势,看看这些出版物在未来是否有扩展的领域(例如,路透社可以考虑以更简单的格式提供日常生活文章的独立出版物或博客,这不会与主要出版物直接竞争)。有了更多的时间,我想扩大出版物的数量,并获得更多的文章,看看这些结果是否随着时间的推移在更大的媒体景观中成立。
对基础代码感兴趣的,请看我的 Github 。
原文:https://towardsdatascience.com/what-moves-bitcoin-c06f7b46d2e4?source=collection_archive---------15-----------------------
由 巴勃罗 和 杰罗姆 。
替代数据探索( NLP )预测模型投资组合模拟( 30%收益率结论端的 Jupyter 笔记本代码参考
比特币是一种去中心化的加密货币,没有管理人或央行。它是由一个名叫“”的不知名用户在 2008 年创建的。比特币可以通过挖掘或通过用户之间的直接出售获得,但价格并不取决于一个潜在的或某种内在的价值,价格由供给和需求决定。
挖掘一枚比特币的过程需要两步:
验证 1 MB 事务的信息是否有效,这可以是一个事务或数千个事务,取决于每个事务的信息。这部分相对较快,一旦步骤二完成,这个 1 MB 的块将被添加到事务的公共信息中。一旦交易信息得到验证,挖掘比特币的用户就有资格赢得比特币,但为了保持添加到“区块链”的区块数量随着时间的推移保持恒定,需要执行一个名为“工作证明的过程。在这个过程中,试图挖掘的用户需要找到一个“哈希”,一个满足程序建立的要求的 64 位六进制数。找到这个数的概率是 13 万亿分之一,所以要找到它需要很大的计算能力和资源。一旦找到“目标哈希”,新的块将被接受,找到哈希的用户将获得比特币奖励。
通过这种方式,挖掘比特币的用户保持交易有效,因此,由于能够比其他人更快地找到目标哈希所需的资源量和计算能力,欺诈变得不可行。
开采获得的奖金,每增加 21 万块就平分一半,大概需要 4 年时间。这样做的目的是比特币因其短缺而增值,在某种程度上,有限数量的比特币将存在,而不可能开采更多的*,但为了保持对矿工的激励和保持交易过程的安全,矿工将获得佣金,佣金随着开采奖金的减少而增加。*
Figure 0. Bitcoin price through time.
另一方面,随着时间的推移,比特币的走势一直非常波动。不到三年前,比特币的价格约为1000 美元,而截至 2019 年 12 月 1 日的价格约为7400 美元,升值 640%,但不仅如此,价格在不到 2 天内下跌 25%之前达到了近 19000 美元的水平。因此,比特币一直受到价格大幅变化的影响,这种波动性使得投资这种加密货币风险非常大,对寻求风险可控回报更适中的投资者来说没有吸引力。
这就是我们如何得出我们的工作假设的:
有没有可能通过新闻分析预测比特币的走势?
这篇文章的目的是通过统计模型实现不同的预测,尝试看看新闻中出现的词语与比特币走势之间是否存在联系。此外,我们试图看看它是否能帮助我们预测加密货币的未来走势,并通过投资组合将这些预测货币化。利用市场的流动性,我们将观察一笔100,000 美元的资本在比特币动态头寸中的演变。
*需要特别提到的是,比特币不是在受监管的交易所进行交易,而是直接在用户之间进行交易,“点对点”,其中绝大多数是钱包用户。由于这个原因,比特币总是可以在一天的任何时间进行交易,为了衡量每日变化,采用了传统市场的开盘(开盘)和收盘价(**价格)*方法。
请记住,我们的目标变量是开仓对价格的变化,是分类变量。伴随这一变量的,还有其他定义每天比特币市场的变量。其中有高、 低等。然而,这些变量并不真正与我们的目标变量相关,显然时间序列模型可以更好地解释这些变量,然而,这不是本项目的重点。
自然语言处理( NLP )的概念就是在这里产生的。我们的模型将用于预测我们的开盘价对价格目标变量的信息来自引言中提到的报纸标题。谨慎的做法是在这里提出两个新概念。文本矢量器和 N 元语法。
文本矢量化工具只不过是一种矢量化文本的方法,值得冗余,也就是说,在某个空间中给每个单词或文本分配一个矢量。有很多方法可以做到这一点,一些技术为你的词汇表中的每个单词分配一个独一无二的向量,为你的语料库中的所有单词分配一个有趣的名字。这是一个由 0 和一个 1 组成的向量,位于你的词汇表中单词索引的相应位置。
对文本进行矢量化的一些其他方式为每个单词分配一个向量,该向量在多维空间的特定几何结构中对上下文进行编码,例如 Word2Vec 空间。在我们的特定案例中,在比特币市场开盘之前,使用了一个矢量器来计算新闻中每个词和每两个词在一天 12 个小时中的出现次数。
为了更好地理解一个单词和两个单词,我们可以检查一下 N-grams 的概念。让我们看一个下一句的例子:
在前一句话中,所有的 1-grams 将组成列表:
比特币是a很有效的等等。
每个单词一个条目。两个单词的列表或我们提到的两个单词将是:
比特币是是一个非常…的非常不稳定等等。
这些双词用于从经常出现的成对单词中提取信息,例如 New York。现在我们明白了,假设之前写的句子是 12 小时内唯一的标题。到此观察连同的价格打开,的价格和的价格成为我们的客观变量。将添加一个向量,其中计数每个 1 字和 2 字的出现。也就是说,在列的相应单元格中,它的值为 1,因为它只被提及一次,而在 和列中,它的值为 2,因为它们被提及两次,因此对于词汇表中的所有 n 元文法计数都是如此。
为了更好地理解我们的数据,让我们来看看下面的 2 轴曲线图:
Figure 1. Interesting words, open, price and our target variable.
如图 1 所示,在对比特币市场价值进行观察的每一天,也会出现像 elon 等词的数量。换句话说,这个词在观察每个打开值之前的 12 小时的标题中出现了多少次。除了我们的数据集出现了 2960 个单词和 2 个单词之外,很难仅从该图中提取信息!
值得一提的是,提取这样一个干净的数据集所做的预处理并不简单,幸运的是有像open blender这样的工具来促进所有这些工作。通过对其 API 的一次调用,可以从其他新闻来源获得一组标题数据,这些数据与来自更多市场的数值混合,并具有 12 小时窗口或其他配置,该调用旨在用于 R 和 Python 用户,以便他们能够以非常流畅的方式训练 NLP 模型或其他机器学习者*。***
数据和目标变量直接到你的本例中融合了 BTC 到美元和消息。**
让我们看看 API 调用:
这个调用从新闻标题创建了文本矢量器*,稍后将与比特币市场数据混合,让我们看看它最重要的参数:***
锚:新闻数据集的 id 和要作为源包含的特征的名称(在本例中只有’ title 【T7 ')ngram_range :将被标记的单词集的最小和最大长度remove_stop_words :这样就从源头上消除了停用词
接下来, API 调用用 函数将融入比特币行情的头条信息直接带入:
这个神奇的调用正在准备 target_threshold 字典键中的目标变量,而 lag_target_feature 比它滞后了一天,让我们看看其他有趣的参数:
id _ blend:text vector 的 id,它是第一个 API 调用的输出。blend _ type:‘text _ ts’所以它知道这是文本和时间戳的混合。*规格:过去的最大时间,以秒为单位,在本例中为 12 小时(360012)。这只意味着每一次比特币价格观察都会用过去 12 小时的新闻来预测。
OpenBlender 的灵活性允许你从大量的报纸、股票市场以及其他空间或时间序列数据集中进行这种混合*。***
为了继续探索我们的数据,让我们通过显示在我们所有的 68 观察中出现更多的词语来看看我们的标题在谈论什么:**
Figure 2. Most mentioned words and 2-words throughout our sample.
很明显,我们的数据集在谈论、和其他当前的热门问题,然而,这并不能很好地说明它们如何影响比特币市场。为了获得更好的洞察力,让我们看看 n 元图与我们的目标变量最相关和最不相关的。****
Figure 3. N-grams most and least correlated with the positive change between the opening and closing of bitcoin.
弹劾能否影响美元价格从而鼓励购买比特币?埃隆·马斯克在比特币上有大笔投资,他的项目的成败会影响比特币吗?**
这些和其他叙述可以从更深入的 NLP 分析中产生,超出了本文的范围,我们将继续通过主成分分析( PCA) 来改善我们对数据的理解,主成分分析将我们观察到的 2900 多个变量的维度减少到 2,将它们投影到可能是我们观察到的最佳照片中。或者用另一种方式解释,最大化数据总方差的 2 个正交轴:**
Figure 4. Our database in its first 2 main components.
在这个预测中,找到一些允许我们分割我们的观测值以生成我们的目标变量的适当预测的截点似乎很复杂,但是,这两个主要成分甚至不能解释我们观测值总方差的 10% ,特别是因为每个观测值的高维度*。幸运的是,我们在图 3 中的相关性让我们充满热情,我们将能够从标题中提取信息,以开发一个良好的预测。***
请记住,我们有兴趣预测的变量是正变化(开盘价与价格),即 2 类:
1 如果价格和开盘价之差为正值。****0 如果是阴性。****
这个二元分类问题是用以下模型解决的:
LDAQDA逻辑回归随机森林
这些模型使用第一个 70% 的数据进行训练,最后一个 30% 的数据按日期顺序进行测试。
上述模型中, LDA 和 Logistic 回归是线性模型,而 QDA 和随机森林不是。 LDA 和 QDA 分别指线性和二次判别分析。这两个模型试图找到一个线性或二次函数,使目标变量生成的组之间的距离最大化,同时使每个组中的密度最小化。**
其中一些模型的问题是在解释它们生成的结果时存在困难,特别是在逻辑回归和随机森林的情况下。例如,随机森林是一种生成随机决策树的模型,这些决策树以这样一种方式进行调整,即它们最大化预测结果。**
评估了所有这些模型,令人惊讶的是,所有模型中最简单的模型 LDA、被证明是预测我们的目标变量的最佳模型,准确率为 63% 。值得一提的是,其余的模型生成的精度较低,但都比随机要好。足够的证据支持我们的工作假说。现在让我们看看线性判别函数的投影观测值和 n 元图之间最重要的相关性*ὡ;**
Figure 5. Correlations between n-grams and the projected observations in the discriminant function.
这些相关性可以解释如下,高相关性增加判别函数中的值,低*相关性减少该值。*******
该判别函数旨在将目标变量给定的标签用一个切割点分开,也就是说,如果 12 小时的新闻落在判别函数的顶部,我们预测价格和开盘价之间的变化将为正,而如果该值比切割点小*,我们将预测变化为负。*****
为了更好地理解这一预测,让我们来看看下面的区域地图,在这里我们可以直观地看到这一行为:
Figure 6. Territorial map generated from the fitted LDA model.
每个观察值,即在 12 小时的航向中出现的 N 元图被投影到在垂直轴上定义的判别函数。划分区域的切割点允许我们生成预测,即底部区域将预测变化为负,而顶部则相反。 100% 精度是所有蓝色和黑色的观察值落在较低的区域,橙色和红色的观察值落在较高的区域。尽管我们的预测有误差,但它仍然比掷硬币给出的结果好得多,参见我们的模型输出的混淆矩阵*ὡ;**
Figure 7. Confusion matrix generated from the predictions obtained by the LDA model.
该图显示了我们的模型在预测中的成功和错误,在 4 种情况下该模型预测上升,事实上,它没有发生,在 3 种情况下我们未能预测下降。8 次 8 次有人预测价格会下跌,事实上它下跌了,而 4 次有人预测价格会上涨,而且上涨了。这 12 次成功,与矩阵的轨迹重合,给出了 63% 的准确度。**
作为第一步,我们观察比特币的价格是否会在第二天上涨和下跌,此外,我们还观察初始资本为100,000 美元的投资组合的演变。为了确定这种演变,我们依赖于一个动态投资组合*,也就是说,这个投资组合每天都在改变头寸,因为在开市前对比特币走势的预测会更新。***
我们的动态投资组合工作如下。位置长或短定义如下:**
其中 1 的仓位代表比特币的多头仓位,也就是我们买入比特币是为了以收盘价卖出。如果我们的预测是正确的,比特币的价格上涨,这对投资者来说意味着收益*,因为它将以高于购买价格的价格出售。另一方面,头寸-1 代表比特币的空头头寸,即我们借入比特币并在此刻卖出,这是我们欠另一个投资者的比特币。在一天结束时,在传统市场收盘时,我们必须购买比特币,以将它们归还给原始所有者,因此,如果我们的预测是正确的,那么这代表着一种收益,因为我们以高于回购价格的价格出售。***
让我们也看到,对于资本的演变来说,重要的是预测是正确的,并且在第一类和第二类错误之间没有区别,比如假阳性和假阴性,因为在这两种情况下,我们都会损失金钱,并且在问题的背景下,没有一个比另一个更糟。**
现在,资本的演变将发生如下变化:**
如果收益为负,并且我们的预测是正确的,那么我们在行动中持有空头头寸,这代表资本收益。让我们看到,我们资本损失的唯一方式是我们的预测是不正确的,因为这样,收益和位置相乘具有相反的符号,因此我们有完全负的表现。这里我们看到产量是分析的主要部分。如果我们正确地预测了价格低波动的日子,即低收益的日子,而错误地预测了价格高波动的日子,即收益绝对值高的日子,即使模型的精度水平大于 50%,我们也会遭受巨大的损失。**
此外,重要的是要看到我们采取什么样的假设才能模拟投资组合。回想一下,该模型是用 70 %的数据来训练的,并且该相同的模型在 30 %的剩余数据中预测每个观察值。这些假设如下:**
完美市场:市场反映的价格拥有所有的公开信息,也就是说,没有投资者拥有可以代表非正常利润的特权信息。此外,由于总是有供应商和索赔者,市场具有流动性*。这一假设很重要,因为模拟考虑到在市场开放时,总有人想要卖出和买入,我们每天都会改变我们的头寸。***空头头寸可以不受限制:空头头寸受到两个因素的限制,首先是能否找到拥有比特币并愿意借给投资者的人。零交易成本:在现实生活中,如上所述,当兑换比特币时,投资者必须支付交易佣金。**两个头寸的杠杆率均为 1:为了能够进行空头交易,投资者需要一定的杠杆率,这被定义为其拥有的每单位资本中以比特币借出的美元数量。对于这个模型,我们认为杠杆水平为 1,这不是对空头头寸的限制,补充了假设 2。
在下图中想象我们投资组合的表现*ὡ;**
Figure 8. Evolution of our portfolio together with the bitcoin market and our predictions.
我们看到资本的演变是增加*,尽管我们对资本流失的节点有不正确的预测。在代表几乎一个日历月的 18 预测观察之后,投资组合的年化收益率约为 30 % 。我们之前看到,就预测而言,最好的模型是 LDA ,其准确度为 63 %。先前的模型预测了超过 50%的测试观测值,然而,这并不意味着我们可以确保的正回报。请记住,资本的演变取决于正确的预测和每日收益率,如果预测数量增加,但在收益率绝对值更大时产生误差,那么资本的演变可能会变得递减,也就是说,具有负的月度和年度回报。***
我们认为,试图衡量这种高波动性加密货币的走势与媒体公开信息之间的关系是可以改进的。因此,我们建议遵循的这些可能步骤:**
通过添加其他媒体如、等来包含更多的信息*。这样做的目的是包括不一定是商业的手段,并获得具有更多更好信息的预测模型,以更好地拟合预测模型。***通过使用时间序列来微调模型。时间序列对于预测不同金融资产的收益有很大的帮助,例如, ARMA 模型可以提高精度水平*。***动态算法,每天用更多信息重新训练,可以实时做出投资决策*。随着新信息的出现,对模型进行重新训练是很重要的,这样预测模型就可以每天提高其准确性**。此外,实时决策可以帮助该模型在投资组合收益率方面变得更好,因为如果在某个时候发布了一个包含与比特币价格相关的词语的故事,就可以立即建仓。*****带风险分析的动态投资组合。最后,为了降低动态投资组合的风险,考虑预测的风险是很重要的。为此,有必要继续研究一个概率函数,以了解我们的预测有多安全,实施资本的动态分配涵盖了投资者的巨大的不利回报。
让我们回顾一下我们之前通过研究看到的内容。首先,我们得出结论,我们的工作假设得到了证实,因为在标题和比特币运动中出现的词语之间存在联系。这种关系存在并允许预测具有有限的确定性。我们还注意到,有一些词与比特币的走势更相关,在某些情况下,它们有一个金融解释*,关于为什么它们的相关性有一个**特定的符号。*******
最佳模型是线性判别分析或 LDA 模型,其准确度水平为 63 % 。此外,我们尝试了其他预测模型,其中第一个是通过使用主成分分析或 PCA ,但团队认为该模型的结果并不重要,因为前两个主成分几乎不能解释数据可变性的 10.5 % 。
最后,我们看到,使用这些预测,我们可以看到资本为100,000 美元的投资组合的演变,并且在预测的日历月中其收益率为 30 % 。以上谈到了预测模型在金融中的可能应用,以及这些变量之间的关系可以货币化*。*****
来自《走向数据科学》编辑的提示: 虽然我们允许独立作者根据我们的 规则和指导方针 发表文章,但我们并不认可每个作者的贡献。你不应该在没有寻求专业建议的情况下依赖一个作者的作品。详见我们的 读者术语 。
感谢费德里科·里弗罗尔,因为这项研究是基于他的教程中的想法,在这里找到代码为的 Jupyter 笔记本。
原文:https://towardsdatascience.com/what-my-data-science-degree-did-not-teach-me-part-1-3d7ff23875e5?source=collection_archive---------5-----------------------
Photo by Nathan Dumlao on Unsplash
T 三年前,我从数据科学硕士毕业,满脑子都是 AI 梦想和疯狂的野心。这个学位给了我进入这个领域的知识、信心和动力,我坚信如果没有这个学位,我永远不会成为一名数据科学家。我最近写了一篇文章,讲述了我从销售工作到成为一名数据科学家的不寻常的道路,其中我也提到了我的学位以及在此期间我所面临的挣扎。
当我回首往事时,我当然看到我的主人给了我巨大的帮助,让我有了一个开始。然而,有许多相关的要点,我的学术训练并没有解决。不要误解我,我不怪大学也不怪学术团队。数据科学和人工智能领域目前的扩张速度仍然太高,学术机构无法以同样的速度适应。此外,硕士学位的时间和资源限制限制了可以教授的内容。然而,当我进入这个领域时,这份工作的许多困难或基本方面我都不知道。本文涵盖了我在数据科学领域 3 年职业生涯中发现的第一部分。
编者按:这些发现大部分是由我自己的专业经验决定的,部分来自我以前和现在的同事的经验。其他数据科学家可能经历了完全不同的问题。
访问数据是我在作为数据科学家的职业生涯中遇到的最大挑战之一,这是我在接受学术培训后从未想到的。这听起来可能有点荒谬和天真,但我相信我的利益相关者会准备好建立数据连接,让我这个数据科学家分析他们的数据集。我很快意识到我错了。关于数据可访问性或数据提取的问题通常发生在充满复杂流程和法规遵从性的大公司中。然而,不可否认的是,较小的组织也会遇到类似的问题。
The Data Scientist Utopia where Data connections are ready and data is easily accessible.
在大多数情况下,利益相关者确实希望他们的数据科学家来分析数据。他们经常 根本不知道它在哪个系统中,也不知道谁有提取和共享数据的权限。一些过时的系统可能没有可用的直接连接,因此您无法从您的脚本中查询它,必须有人手动下载 Excel 格式的数据。有时,您可能需要依赖另一个团队来为您建立数据连接。如果数据必须来自三个不同的部门,而数据库不能在部门之外访问,该怎么办?此外,出于安全目的或出于没有人愿意参与的政治事务,一个数据所有者可能不希望这些数据库被部门外的人访问。
最终,您可能会意识到,获取数据集的唯一选择是等待市场部的 Angela 通过电子邮件将数据以. csv 格式发送给您。不幸的是,安吉拉可能会休假三周,像安吉拉这样的人似乎总是很忙。过一会儿,发送礼貌的提醒可能会成为你最有价值的技能!
Gif from Tenor.com
我毕业时对 Git 和版本控制了解不多。当我回顾我是如何处理论文版本的时候,我甚至感到有点惭愧。公平地说,有一次,一些客座讲师确实试图在那场似乎是有史以来最糟糕的讲座中教我们一些东西。这是我们第一次听说,没有人主要解释版本控制的重要性。后来我被告知,这位曾经的讲师承认了他的失败,并且那天实际上有很大的宿醉(作为学生,如果他诚实的话,我们可能会同情),这部分证明了他所做的超级混乱的讲座。
正如我在关于 PyCharm ,的文章中所说,理解版本控制伴随着使用版本控制!在我的第一个人工智能项目中,我在一个小组中学习了如何正确处理版本控制。我向更资深的队友承认,我不知道 Git 的细节,我在第一次提交和第一次合并冲突时得到了帮助。
任何学习或开始学习数据科学的人都可以从 Git 和版本控制中受益,即使是对于个别项目。如果你有机会在一个小组工作,吞下你的骄傲,寻求帮助!
从来没有人提出如果我想让我的项目顺利进行,我需要做多少工程。没有人提到 Linux ,也没有人提到如何查询一个 API 。数据科学家在云平台(如微软 Azure、AWS)上工作并使用 Apache Spark 等工具也很常见。我最近写了一篇关于数据科学家需要知道的数据工程技能的文章,因为完全诚实地说,我非常惊讶于我需要多少工程技术以及这些技能在日常生活中的帮助。
[## 一个数据科学家需要了解多少数据工程?
&他/她不需要知道多少。
towardsdatascience.com](/how-much-data-engineering-does-a-data-scientist-need-to-know-93afe7fab40c)
对我来说,数据科学是一项团队事业。我在以前的文章中已经提到,我非常重视数据科学的不同背景以及集体寻找解决方案所涉及的创造力。
这是一个极其广阔的领域,不断在运动,没有一个数据科学家能够知道一切。许多专业人士甚至建议专攻一个数据科学领域(例如 NLP、深度学习),因为这将极大地帮助你在该领域脱颖而出。拥有一个在几个领域都有专业知识的多元化团队比拥有一个什么都能做的聪明人能带来更好的结果。
雇佣一名数据科学家本身并不能带来团队的力量。头脑风暴可以带来黄金。
Photo by Thomas Kelley on Unsplash
虽然我不得不在毕业典礼上讲故事来解释我的硕士论文,但我没有想到这种类型的故事会如此复杂、频繁和严肃。我没有意识到可能要由我来说服销售专家,让他们相信我的项目值得他们和他们客户的时间。我也没有预料到可视化在某些数据科学项目中会有多大的分量,即使你的 Powerpoint 演示非常糟糕,你的模型结果也无关紧要。我也明白了,它不再是最低生存产品,它是最低可爱产品。
我的一个同事总是说“在开始造飞机之前,让我们先造一个可以工作的滑板吧”。然而,滑板应该非常闪亮,并有一个选项,说明“我可以在某些条件下飞行”,即使它还不能。这是概念原理的证明。它需要展示目前还没有的潜在功能。
关于代码效率,我刚毕业时的知识仅限于“因为循环是不可避免的罪恶”。我知道训练神经网络和某些机器学习模型可能需要一段时间,但除了选择功能、减少数据量和要求更好的笔记本电脑,我唯一的武器是耐心。
首先,在我攻读学位期间分析的大多数数据集并不能代表大多数行业中杂乱数据集的准确情况。它们通常最多来自一两个来源,不需要大量的准备和清洗。在商业案例中,数据通常分散在各处,需要多次合并、查找、过滤、清理、特征工程。
特别是在大型复杂的项目中,如果代码没有被有效地编写,数据准备有时会花费与预测一样长的时间。
虽然我已经知道 for 循环有多邪恶,但我也学到了几个基本的 Python“技巧”,我认为这些技巧应该在任何面向数据科学的编程课程中分享。例如,使用列表理解代替普通的 For 循环,使用集合代替查找列表,可以显著减少代码的计算时间!Python 也有很棒的包,可以让你找到代码中的瓶颈(例如 cProfile)或者简单地计时你的不同解决方案,找到更快的解决方案(例如 Timeit)。
我可能只在这个领域工作了几年,但我有太多的东西要写,无法在一篇文章中收集所有内容。本文第二部分将于下周发布!
在 中 或 推特 上关注我,以便在第二部分发布时获得通知!
2019 年 10 月 17 日更新:第 2 部分现已推出!
[## 我的数据科学硕士没有教给我的东西—第 2 部分
&在我的数据科学职业生涯之初,我本可以做些什么不同的事情。
towardsdatascience.com](/what-my-data-science-master-did-not-teach-me-part-2-ce56791fe2e9)
原文:https://towardsdatascience.com/what-my-data-science-master-did-not-teach-me-part-2-ce56791fe2e9?source=collection_archive---------15-----------------------
&在我的数据科学职业生涯之初,我本可以做些什么不同的事情。
Photo by Isaac Smith on Unsplash
重要:本文是 我的数据科学硕士没有教给我的东西—第一部分 的续篇!感谢每一个阅读第一部分并为之鼓掌的人!
作为一名数据科学家,我多少知道我必须投资领域知识。然而,在我攻读学位期间,没有人足够强调为了理解数据,应该花多少时间去理解数据之外的东西。数据集并不总是附带扩展文档,并且通常没有明确的列名,也没有预先选择的标签列。每个行业都有自己的首字母缩写词和简称,对于一个“局外人”来说基本上是不可读的。我最近才意识到,需要花费大量的时间与我的利益相关者和领域专家保持持续的沟通。
从学术角度来看,似乎“数据就是数据”,机器学习或数据分析在所有行业中都可以采用相同的方式。然而,现实要复杂得多。例如,数据相关性可能因字段而异。例如,如果您使用的是交易数据,那么 3 个月前的数据集就已经是“旧的”了,需要与最近的数据相结合才能生成准确的建议。然而,如果您正在为一年到头以相同频率使用的机器进行预测性维护,3 个月的旧数据集是完全相关的,并且对于准确的预测模型来说可能是足够的。类似地,虽然实时预测可以成为在线零售等特定行业的巨大游戏规则改变者,但它们也可能是其他行业的资源浪费。
借助 Azure、谷歌云和亚马逊网络服务等云平台,计算资源变得相当容易获得。他们甚至有一个免费层供你试验。然而,大多数大公司在如何获得或证明计算资源方面都有严格的流程,并且通常只支持有限范围的选项。使用云平台、虚拟机或服务器可能会带来法律后果,尤其是当高度敏感的数据必须在外部托管的云上共享时。作为一名处理敏感数据的数据科学家,我必须考虑到,由于数据保护要求,我对共享数据或上传数据的位置有非常严格的限制。
此外,强大的计算资源可能会变得非常昂贵,利益相关者需要确信您的模型的价值值得投资。这代表了另一种需要讲故事的情况,正如我在本文的第一部分中已经提到的。
这些管理限制有时意味着我只能在本地使用笔记本电脑工作。因为我不知道有多少计算能力可供我使用,也不知道我还要在我的笔记本电脑上开发多长时间,代码效率(也在第一部分中讨论)仍然至关重要。即使在拥有大量财务资源的大公司中,将计算资源视为理所当然也可能不是正确的方法,尤其是在模型的价值可能不值得强大虚拟机的成本的情况下。尽管可能会令人沮丧,但我已经学会了努力充分利用我已经拥有的计算资源。
这听起来可能非常愚蠢和天真,但在我攻读硕士学位期间,没有人告诉我,在任何东西投入生产之前,我需要一个开发环境,或者测试环境或验收环境。他们也从来没有告诉我,将模型投入生产的道路可能充满障碍、过程、政治问题和沮丧的人。我也完全不知道开发和生产环境之间到底有什么区别。
由于我不是来自 ICT 背景,我从未听说过分离环境和过程来将软件从开发带到“外面”可用。后来,我在 AWS 的一个项目中意识到,一个好的 CI/CD 管道是多么重要、有用和省时。我鼓励任何在该领域起步的数据科学家阅读它,并可能使用其中一个云平台的免费层来探索 CI/CD 管道的组件(例如 AWS CodeBuild、CodePipeline 或 CodeDeploy)。
作为一名数据科学家、数据分析师或任何数据人员,我的工作职位和描述已经变得非常不同,这取决于我工作的领域。虽然公司的规模也是另一个需要考虑的变量,但我认为这并不比考虑你将从事的领域的目的更重要。记住,数据几乎就是你每天、每天都要处理的所有东西。我曾经不得不在很短的时间内处理涉及动物试验的临床试验数据。我对此深恶痛绝,并认定临床试验数据不是我想要定期处理的数据的一部分。
我所在公司的真正目标、道德或客户价值极大地影响了我对自己日常工作的感受。我知道大多数模型都包含某种商业优势或利润。然而,与建立物体检测系统以改善道路安全相比,建立推荐系统以增加销售收入的感觉是不同的。我努力寻找最能激励我的东西,或者让我深深感兴趣的东西。许多新手只是想“我会去有大量数据要分析的地方”,但是丰富并不总是意味着有趣!
正如我在本文开头提到的,数据科学家必须花很多时间去理解他们工作的领域,所以我建议找一个你喜欢的领域。询问和联系已经在你考虑的领域或公司工作的数据科学家总是值得的。
我的数据科学硕士给了我一个很好的开端,但我应该在跳入水中之前更多地关注领域知识,以填补空白。
这绝对是我在完成学位后失败的事情。我完成了毕业实习,觉得自己懂得够多了,或者说懂得更多了。我没有真正尝试与其他数据科学家或数据分析师(除了我的同学)联系,以了解他们工作的领域和他们面临的日常挑战。我通过艰难的方式学到了很多东西,而一次简单的谈话可以教会我同样的东西。
我注意到我在毕业实习期间学到了很多有价值的行业知识,因为我有机会与大学的外部合作伙伴一起做这件事。我也相信实习和培训有助于填补空白,并对某个领域有所了解。
然而,如果你对这个领域或公司有疑问,我建议在签署一份 1/2/3 年的实习合同之前仔细考虑你的选择。职业生涯的最初几年会带来大量知识,并帮助你确定自己在数据世界中的发展方向。记得我毕业后,在商业智能和纯数据科学之间犹豫了很多。我现在非常清楚地知道,我不太喜欢将 BI 作为日常任务,但我喜欢我项目的 Python 开发部分。在我看来,将职业生涯推向错误的方向比花时间找出正确的道路更糟糕。
正如我在最近的几篇文章中所说,数据科学家永远不会停止学习,这也包括我。尽管这篇由 2 部分组成的文章已经完成,但我还有很多内容要写,包括数据科学领域目前教给我的东西,以及如何应对数据科学家可能面临的日常挑战。在 中 上关注我,获取我未来文章的通知!也可以在Twitter或者LinkedIn上找到我。
[## 向你的祖母解释数据科学
或者如何向你的家人或任何与技术世界脱节的人解释数据科学。
towardsdatascience.com](/explaining-data-science-to-your-grandma-f8345621483d)
原文:https://towardsdatascience.com/what-my-first-silver-medal-taught-me-about-text-classification-and-kaggle-in-general-ebae0df16278?source=collection_archive---------11-----------------------
卡格尔是一个学习的好地方。我从最近结束的关于 Quora 不真诚问题分类的比赛中学到了很多东西,在这篇文章中,我得到了一个的排名,我将尝试提供一个我尝试过的事情的总结。我还会试着总结一下我错过的但却是其他成功解决方案的一部分的想法。
作为旁注:如果你想了解更多关于 NLP 的知识,我想推荐高级机器学习专精中关于自然语言处理的这门优秀课程。您可以免费开始 7 天的免费试用。本课程涵盖了自然语言处理中从基础到高级的各种任务:情感分析、摘要、对话状态跟踪等等。您可以免费开始 7 天的免费试用。
所以首先给外行人一点关于竞争的总结。在这场比赛中,我们必须开发出识别和标记虚假问题的模型。这个挑战不仅是对性能的测试,也是对高效代码编写技巧的测试。 由于这是一场外部数据选项有限的核心竞赛,参赛者只能使用竞赛组织者提供的单词 embeddings。这意味着我们不允许使用像伯特这样的艺术模型。我们也受到限制,我们所有的模型都应该在 2 小时内运行。因此,对堆栈和怪物集合说再见吧,尽管一些解决方案通过使它们的代码超高效来做到这一点。稍后将详细介绍。
在开始讨论我的最终解决方案之前,我想分享一下关于 kaggle 的一些经验:
这场竞赛中真正让许多人困惑的一件事是,好的简历分数不一定能转化为好的 LB 分数。其主要原因是第一阶段的小测试数据集(只有 65k 行)(大约占总测试数据的 15%)。
论坛上的一个常见主题是关注我们应该选择哪些提交内容作为最终提交内容:
本地履历最好的那个?或者磅数最高的那个?
虽然说信任你的简历似乎很简单,但当你看到你的 LB 分数下降或保持不变时,无论你当地的 CV 分数何时增加,常识都会发生变化。
幸运的是,我没有犯下不信任我的简历分数的错误。由于 Kaggle 讨论板上有很多优秀的帖子, 我选择了一个公开 LB 分数为 0.697,本地 CV 为 0.701 的内核,截至最终提交时,它在公开 LB 上的排名大约为> 1200。它取得了 0.702 的分数,在私人 LB 排名 182。
虽然这看起来像是一个简单的事后选择,但当您拥有一些公共 LB 分数> = 0.70 的公共内核时,这是一个很难做出的决定
Benjamin Minixhofer 的这个 Pytorch 内核太棒了。它是我为这次比赛提交的许多作品的基础。但是这个内核有一个错误。它没有以正确的方式实现空间丢失。你可以在我的帖子这里或者在我的内核上找到空间丢失的正确实现。以正确的方式实现空间下降使局部 CV 增加了大约 0.004。
尽管如此,我还是用这个内核学会了 pytorch,我也同样感谢他。
我将在这里谈两件事:
种子调整:在比赛进行到一半的时候,每个人都试图在公众 LB 上获得尽可能好的排名。这只是人的本性。很多讨论都是围绕神经网络初始化的好种子和坏种子。虽然第一眼看上去没什么问题,但是对话更进一步,人们开始在内核中调整种子作为一个超级参数。一些讨论甚至继续说这是一个有效的策略。这就是大量过度适应公共 LB 开始发生的地方。仅仅通过改变种子,相同的提交将从 0.699 得到 0.704。作为参考,这意味着你可以从接近 400-500 的排名上升到前 50 名,只要在一个公共内核中改变种子。这意味着灾难。有些人就是这样做的。他们上了公共图书馆。在私人舞台上爆发了。在论坛上公开简历分数:我们总是试图用他人来衡量自己的表现。在许多讨论中,人们提供了他们的简历分数和相应的公开 LB 分数。由于不同的 CV 方案、CV 中的折叠数、报告的度量、过度拟合或交叉验证的简单错误实施,分数到处都是,没有可比性。但是他们最终影响了很多新手和新人。
你可以通过参与论坛和关注公共内核学到很多东西。本次大赛有很多优秀的公有内核,分别是 SRK 的嵌入、舒剑的模型、西奥维尔的预处理,给了大家一个先机。随着比赛的进行,讨论也在发展。有关于加速代码、工作方法、F1 阈值查找器和其他令人兴奋的主题的讨论,让我忙于新的想法和改进。
即使在结束后,在阅读关于解决方案概述的讨论时,我也学到了很多。我要说的是,找出获胜的解决方案是非常重要的。
分享是 Kaggle 的一切。人们在比赛时以及比赛结束后分享他们的代码和想法。只有团结一致,我们才能前进。我喜欢写博客,所以我通过一系列关于文本分类的博客帖子来分享这方面的知识。第一篇帖子谈到了不同的预处理技术,用于深度学习模型和增加嵌入覆盖。在第二篇中,我讲述了一些基本的常规模型,如 TFIDF、计数矢量器、哈希等。已经被用于文本分类并试图评估它们的性能来创建基线。在第三篇文章中,我将深入研究深度学习模型和我们可以用来解决文本分类问题的各种架构。为了使这个帖子平台通用,我将尝试用 Keras 和 Pytorch 编写代码。我们将尝试使用我们在本次比赛中未能使用的各种其他模型,如本系列第四篇文章中的 ULMFit 迁移学习方法。
我可能需要一点时间来写完整个系列。在此之前,你也可以看看我的其他帖子:kaggler 正在使用什么进行文本分类,其中讨论了 NLP 中使用的各种深度学习模型以及如何从 Keras 切换到 Pytorch 。
离比赛结束还有两周的时候,我们正愉快地进行着。分数增长缓慢。顶尖选手有些停滞不前。 然后是公开 LB 分 0.782 的帕维尔和团队。下一组的 LB 分数是 0.713。如此巨大的差异。我确信数据中有一些漏洞,除了帕维尔,还没有人发现。我花了将近半天的时间又做了一遍 EDA。
最后发现他们做的是刮——打得好!
他们也有一些非常棒的想法,包括额外的数据,这些本来可以在这次比赛中发挥作用,但没有发挥作用。
我的主要关注点是元特征工程和增加嵌入覆盖率和质量。这意味着我没有怎么接触过各种神经网络架构。以下是我在最终提交的材料中包含的内容:
我注意到手套嵌入在局部 CV 上表现良好,但在 LB 上表现不佳,而元嵌入(手套和 paragram 的平均值)在 LB 上表现良好,但在 CV 上表现不佳。我采用了一种混合的方法,所以我的一些模型只训练了手套嵌入,一些模型训练了元嵌入。在嵌入中增加了四个特性。因此我的嵌入是一个 304 维的向量。这四个新值对应于标题大小写标志、大写标志、文本点单词极性、文本点单词主观性使用 spacy 从整个训练和测试数据中找出 NER 代币,并将代币和实体保存在字典中。我用这个字典来创建额外的特性,比如、、、、的计数。增加了一些价值,并且与目标高度相关。我使用的其他功能包括、、以及一些工程化的功能,如(脏话的总和)、、、。可能没有增加多少价值,但仍然保留它们。我最终的解决方案是由四个型号的堆叠组合而成。我使用逻辑回归(具有正权重和 0 截距)堆叠了四个模型,并在最终的内核中给出了权重列表。
你可以在这里找到我最终提交的内核。
在第三个解决方案内核中,wowfattie 使用词干化、词汇化、大写、小写、大写,以及使用拼写检查器嵌入最近的单词,以获得其 vocab 中所有单词的嵌入。真是个好主意。我最喜欢这个解决方案,因为它能做我想做的事情,而且完成得很好。还有,代码非常干净。
免费获得大量模型。大多数成功的解决方案都有某种版本的检查点集成。对于第三位解决方案,预测是第 4 个时段之后的预测和第 5 个时段之后的预测的加权平均。我得到了这个想法,但是忘了在我的基于系综的内核提交中实现它。
许多获胜的解决方案最终都使用了加权元嵌入,它们为手套嵌入提供了更高的权重。一些解决方案也使用了级联嵌入。
我看到人们做的一件令人惊讶的事情是在双向层之后使用了 1Dconv 层。例如,这是比赛中排名第一的团队使用的架构。
我注意到的另一件事是,与许多公共内核相比,隐藏单元的数量增加了。由于时间限制,大多数公共内核使用 60 的隐藏单元大小。我用了 80 个单位,代价是少训练一个网络。由于可变序列长度思想或分桶,许多高分内核能够使用更多的隐藏单元。从第一位内核讨论:
我们不会基于整个数据将序列填充到相同的长度,而只是在批处理级别。也就是说,我们在数据生成器级别对每一批分别进行 填充和截断 ,这样一批中的句子长度就可以有所不同。此外,我们进一步改进了这一点,不是根据批次中最长序列的长度进行截断,而是根据序列中 95%的长度进行截断。这极大地改进了运行时间,并在单个模型水平上保持了相当稳健的准确性,并通过能够平均更多的模型来改进它。
也从第 7 名讨论:
分桶是将具有相似长度的实例制成一个小批量,以减少填充成本。这使得训练速度比 快了 3 倍,因此我可以为每一次 5 折的分割运行 9 个纪元。
因此,这种技术的使用也允许一些竞争者在更短的时间内适应更多的时代,同时运行更多的模型。相当整洁!
我们大多数人看到了问题长度的分布,并将完全覆盖最多问题的长度作为 maxlen 参数。我从来没有试图调整它,但它似乎可以调整。其中一个技巧是使用 35 到 60 的 maxlen。这使得内核运行得更快了。
大多数获胜的解决方案没有使用胶囊网络,因为它们需要大量的时间来训练。
我看到的另一件事是在使用单一模型的第 18 位内核
这是一场精彩而漫长的 2 个月的比赛,在这段时间里,我学到了很多关于文本和 NLP 的知识。我想在这里强调的是在达成我的最终解决方案之前,我最终尝试了很多没有成功的东西。有时这有点令人沮丧,但最终,我很高兴我最终获得了最佳数据科学实践。
我还要感谢 Kaggle 大师 Kazanova,他和他的一些朋友一起发布了“如何赢得数据科学竞赛” Coursera 课程。我从这门课中学到了很多。
如果你认为有什么遗漏/错误,或者我可以为这个比赛添加更多的提示/技巧,请在评论中告诉我。或者也许你有什么想法,你会怎么做。
请随时在 LinkedIn 上与我联系,在Twitter/Medium上关注我,或给我发消息征求意见。继续收听,继续学习。
原载于 2019 年 2 月 19 日mlwhiz.com。
原文:https://towardsdatascience.com/what-no-one-will-tell-you-about-data-science-job-applications-bff2d4b5e983?source=collection_archive---------5-----------------------
我是一名物理学家,在 YC 的一家初创公司工作。由于我们公司的工作,我收到了许多电子邮件,询问我关于数据科学职业的建议。
许多电子邮件问我非常相似的问题。随着时间的推移,我对自己经常遇到的问题有了一些常见的回答。
几天前,我收到了一封电子邮件,其中问了我通常在一封邮件中会遇到的大多数问题。我写了一个答案,并将其寄回,但后来我意识到这是一个扩展我的答案的好机会,并将其公布于众,供那些在寻找数据科学工作方面有困难,但不知道为什么的人使用。
每有一个人有一个问题,并问它,就有十个人有同样的问题,但不要问它。如果你是这十个人中的一个,那么这篇文章就适合你。希望你会觉得有帮助。
以下是我收到的电子邮件,根据长度进行了编辑:
出发地:朗尼[姓名已更改]
主题:试图在数据科学领域找到一份工作
我是一名大学辍学生(我这样说是因为很明显,如果你出生时没有理论物理学博士学位和 15 年的数据科学经验,那一定是出生时出了什么问题)。[……]当我在市场营销中漫游时,我发现我最喜欢数据部分。我最初熟练掌握了 A/B 测试,并在谷歌分析中获得了认证&通过优化他们的测试平台。然后从那里我进入了 Python,SQL 等等。我刚刚从[知名数据科学训练营]毕业,我甚至在努力争取面试机会。我已经发出了 100 多份申请(甚至在其他城市),却很少有面试。
为了继续“提高技能”,我正在攻读 Udacity 纳米学位& Dataquest.io
这是我的 LinkedIn,如果你想看的话。这不是真正的技能(虽然他们真的需要大量的工作,我正在做)。我甚至没有得到展示我技能的面试机会,所以我才这么说。
我和【BigCo】进行了一次面对面的交流,这是我第一次面对面地写代码或写白板,所以进行得并不顺利。
我有一份来自[大型创业公司]的生存分析报告,但我从未研究过,所以进展不顺利
我有一份来自[BigCo]的报告,它让我获得了面试机会,他们通过了,因为我的学历(这很愚蠢,因为他们已经有了我的简历)。
除此之外:一无所获
[1]
你好,朗尼——谢谢你伸出援手。
事实是:根据你提交工作申请的地点,2-3%的面试率可能是正常的。有两个原因,但你都不知道。
第一个原因是大多数招聘团队使用一种叫做申请人跟踪系统的东西来告诉他们最好的候选人来自哪里。如果你通过一个过去给他们不好的结果的渠道申请,他们会花更少的时间看你。[2]
Your job application will most likely be processed by an applicant tracking system like this.
例如,如果你申请一份技术工作,你不太可能有任何进展。事实上每个人都知道,并且很容易应用。这意味着申请工作的普通人实际上很可能是个普通人。因此,招聘经理会花更少的时间看一份来自“真实”的简历,因为她认为它很一般。
你可以通过在大多数人还不知道的网站上申请来解决这个问题。关键值和 Y Combinator 的在创业公司的工作工作页面是很好的起点。[3]通过使用大多数人还不知道的网站,你将自己标记为一个有意寻找机会的人。在这些网站上申请工作的普通人很有可能超过平均水平。这就是为什么公司更关注通过不太为人知的渠道申请的申请者。
申请普通职位不太管用还有第二个原因。你可能很难相信这一点,但是很多公司(尤其是大公司)在招聘栏上发布招聘信息并不是为了找到他们想要雇佣的人。[4]
If you’re searching for a technical position on Indeed, you’re doing it wrong. Sorry, Indeed.
这听起来很疯狂:那么,他们到底为什么要在招聘栏上发帖呢?你需要明白的是,在大多数大公司,人力资源团队(HR)和工程师之间有着明显的区别。事实上,人力资源团队通常是发布工作的团队。
不幸的是,人力资源部没有工程师,所以他们不能真正区分哪些候选人是真正有才华的,哪些不是。HR 只知道如何筛选证书,这意味着检查你是否去了一个好学校(斯坦福认为你足够好可以进去吗?)或者在一家不错的公司工作过(谷歌认为你足够优秀到可以在那里工作吗?).
所以这就是为什么你的命中率只有 2-3%的黑暗真相:HR 无法区分好的训练营和差的训练营。所以他们不得不默认说“不”,因为他们不想浪费工程团队的时间去关注那些可能并不优秀的新兵训练营毕业生。这种情况我见过几百次了。
幸运的是,有好消息:大多数工程团队明白他们的人力资源不能筛选人才。因此,最好的工程团队通过网络和后台渠道招聘,而不是通过招聘广告。因此,我给你的最好建议是:开始把自己嵌入到工程师驱动的机器学习聚会中。这里没有魔法:只要去 meetup.com 的,找到看起来相关的聚会,然后开始去参加。
你会很快发现哪些是有价值的,哪些是没有价值的。人际关系网有很多好处,所以问一些聪明的问题,尝试进行有益的对话,当人们自我介绍时,倾听不可避免的“我们正在招聘”的公告。
简单说一下:工作面试是一种黑暗、神秘的仪式。每个公司的流程都是不同的,每个公司都认为自己的面试是真正的面试。
提高面试水平有很多方法,但最好的方法是多做。所以我关于参加聚会的建议在这里也会对你有所帮助:你面试得越多,你就越擅长。即使你搞砸了你的第一次,这也是一项技能,就像其他任何事情一样,你会在进行中学会它。
最后,我很抱歉这个系统被严重破坏了。我知道这对初学者来说特别难。这不公平,但隧道的尽头有光明:在你有了 1-2 年的经验后,公司会开始追逐你。回报是值得努力的。
如果你有问题没有看到我在这里回答,你可以在推特上问: @_edouardharris 。我的 DMs 是开放的——不要害羞!
[1]在随后的一封电子邮件中,朗尼告诉我,他并不认为他的训练营是他遇到麻烦的原因,而是问题在于他没有受过多少正规教育。
[2]求职者跟踪系统还可以根据关键词自动筛选出简历。但是我发现大多数人已经知道在简历中包含正确的关键词,所以我不会在这里详述。
[3]我知道,通过在这里张贴这些求职公告板的链接,我保证会有更多的人知道它们。但在不久的将来,这两者都不太可能像现在这样大。
[4]当然,有些人会这样做,当然,即使那些不这样做的人有时也会意外地找到好的候选人。但是如果你正在找工作,就把这些公司当成一个惊喜吧。
原文:https://towardsdatascience.com/what-not-to-do-during-a-technical-interview-b2f35d62b963?source=collection_archive---------24-----------------------
今天我们将关注招聘过程中最重要的部分之一,也可能是最令人害怕的部分:技术面试。你的第一次面试(除了与招聘人员的筛选电话)通常是技术性面试,有时会通过电话进行,并有屏幕截图。如果你在那里做得很好,那么你经常会被邀请参加第二轮,这可能包括多次技术筛选。面试过程中有很多成功的小技巧,其实我们之前也写过面试准备指南。在此查看一个。也就是说,你经常紧张,流汗,思维混乱。
重要的是,不仅要知道该做什么,还要知道不该做什么(有点像你在车管所参加驾照考试——你可以做好每件事,但有些事情会让你自动失败,比如撞到路边)。
在这里,我们会给你六个技巧,告诉你在技术面试中不要做什么。我们开始吧!
需要马上注意的一件大事是,分析性面试不仅仅是寻找正确的答案。面试官在测试你解决问题的能力,包括你提问和运用解决问题的技巧来理解问题或问题背后的问题的能力。为了展示这种技能,你不能在面试中一收到问题或编码挑战就开始编码。首先,你应该问一些澄清性的问题并陈述假设,以证明你完全理解如何解决这个问题。面试官希望看到你的过程,以确保你理解处理问题的最佳方式。
即使你对这个问题很有信心,没有任何问题,你也应该和面试官交流。他们希望在开始编码之前,有人对他们对问题的理解有信心。
所以,不要马上开始编码——停下来,问问题,展示你的理解。
通常,面试官会轻轻地把你推向正确的方向。最终,他们希望你成功,所以他们可能会给你暗示或问一些问题来引导你找到解决方案。这就是为什么考虑面试官在面试中说的每一句话,而不是忽视或掩饰他们的评论是如此重要。
如果他们问“比率中的分母是多少?”或者“你看了这个指标吗?”,那么你需要思考并应用它。可能在所有情况下,如果不相关,他们都不会说。
面试官想要的最高技能之一是适应能力。不要做一个固执己见又不愿让步的人。当出现新信息时,你应该表现出考虑不同选择和调整方法的能力。
要知道,工作面试的问题可能就是为了测试这一点而设计的。通过提供新的信息,面试官会检查你是否能反思你所做的事情,认识到任何错误,并适应。通常,这项技能与找到正确答案同样重要,因为它代表了你不断努力达到正确答案的能力。
不要太固执己见。带着灵活开放的心态去参加面试。
分析工作面试应该淘汰一定比例的面试官。如果他们把事情做得太简单,他们就不会找到最合适的人来做这项工作。这通常意味着技术问题的答案不会是最直接、最明显的。毕竟这些题是来考验你的技术的。
面试官在寻找的是一个能够仔细检查问题,考虑所有可能的选择,并且懂得取舍的人。
这对你意味着什么?你应该让他们了解你的决策过程。告诉他们你正在考虑每一个选项,并考虑每个变量会如何影响你的答案。这样,即使你没有得出正确的答案,他们也能看到你的决策过程是合理的。
不接受最明显的答案。通常,答案看起来很明显是为了欺骗你。如果你没有适当考虑每个选项,面试官不会满意的。
事实是,并非所有从事分析工作的人都有技术背景。有许多不需要正规教育就可以学习分析技能的方法。许多从事分析工作的人没有技术背景,但通过努力工作和奉献,他们已经获得了做好这些工作所必需的技能。
也就是说,如果这适用于你,你不应该注意这个事实——它是不相关的。你在那里,你有做这份工作所需要的技能,所以让别人注意到你可能不如受过正规教育的人这一事实不会帮助你得到这份工作。
在面试中,你只需要提出一些与你胜任该职位的能力相关的问题。
如果你被问到你的正规教育,不要隐瞒细节,但是如果你没有被要求,也没有必要说出来。
另一方面,不要谈论你有多么合格,因为你受过正规的分析教育。很可能,面试官已经从你的简历中知道了这一点,一次又一次地提到它,会让人觉得你在吹牛。说到底,面试官并不关心你的正规教育,他们只是想看看你是否有做好工作所必需的技能。
毕竟,这次面试是为了测试你的技能,而不是检查你的正规教育。专注于向他们展示你的能力,而不是谈论你的学位。
做好准备总是一个好主意,但知道在某些情况下什么不该做同样重要。我们希望我们的建议对你准备技术面试有所帮助。
如果你从这个列表中选择一样东西,记住这些面试是关于过程和方法的。
即使你认为你不能得到正确的答案,也要让他们了解你的决策过程,向他们表明你愿意接受所有的选择。一个这样对待工作的人,最终一定会得到正确的答案,这是他们真正想看到的。
如果你对实践技术问题感兴趣,并想看看其他人是如何解决这些问题的,可以看看这个平台,在 Strata Scratch 。
最初发表于T5【https://www.stratascratch.com】。
原文:https://towardsdatascience.com/what-on-earth-is-a-tensorcore-bad6208a3c62?source=collection_archive---------1-----------------------
除了对数据和机器学习的痴迷,我还对计算机硬件有一种不健康的痴迷。有了像“这样的精彩宝石,强大的图形对数据科学有多重要?很明显,基于图形的机器学习是我最感兴趣的。每当数据科学和计算机硬件以惊人的方式重叠时,它真的让我兴奋。
随着 Nvidia 架构 VOLTA 的发布,这些已知的东西被 Nvidia 称为“张量核心”但是究竟什么是“张量核”,一个张量核真的值得仅仅为了一个显卡而花费一千美元吗?
如果你对基于图形的机器学习感兴趣,很可能你熟悉 CUDA 技术和 CUDA 内核。CUDA 是一个并行计算平台,允许图形卡加速中央处理器的性能,创建一个 GPU 加速计算,比在 CPU 上进行传统处理运行得更快。
不用说,
CUDA 太牛了
远远超过像 OpenCL 这样的公司。考虑到这一点,CUDA 内核和张量内核之间到底有什么区别呢?
CUDA 内核以每次计算为基础运行,每个单独的 CUDA 内核可以在 GPU 每次旋转时执行一次精确的计算。因此,时钟速度以及卡上可用的 CUDA 内核数量对 CUDA 的性能起着重要作用。另一方面,张量核可以通过每个时钟计算整个 4×4 矩阵运算来进行计算。
张量核能够将两个 fp16 矩阵 4x4 相乘,并将乘积 fp32 矩阵(大小:4x4)添加到累加器(也是 fp32 4x4 矩阵)。这又是一个混合累加过程,因为累加器取 fp16 并返回 fp32。
通常,CUDA 内核速度较慢,但精度更高。而张量核的速度快如闪电,但是会损失一些精度。
然而,我没有提到的是图灵张量核。图灵张量核明显更令人兴奋,因为虽然它们拥有与典型的 VOLTA 张量核相同的属性,但它们也有显著的改进,相比之下,CUDA 就像风中的灰尘一样。
图灵张量核心设计增加了 INT8 和 INT4 精确模式,用于支持量化的推理工作负载。FP16 也完全支持要求更高精度的工作负载。在基于图灵的 GeForce 游戏 GPU 中引入张量核,使得首次将实时深度学习引入游戏应用成为可能。图灵张量内核加速了 NVIDIA NGX 神经服务基于人工智能的功能,这些功能增强了图形、渲染和其他类型的客户端应用程序。不需要使用许多 CUDA 核心和更多时钟来完成相同的任务,它可以在单个时钟周期内完成,从而大大加快了机器学习应用的速度。不用说,数据科学家非常欣赏 Volta 所提供的一切。
根据 Nvidia 的说法,VOLTA 张量核心计算大约是以前架构 Pascal CUDA 计算的 12 倍。所以对于深度学习来说,这个速度当然不是空穴来风,张量核当然是英伟达做出的惊人壮举。
随着 AMD 大幅削减同等 GPU 的价格,这些 GPU 是…嗯,没有所有花哨的光线跟踪和张量核心的普通 GPU,对于某个品牌的人来说,红色团队肯定有购买力。记住这一点,有不同类型的买家,不同类型的买家有不同的需求。如果你想在你的 GPU 上玩游戏,你不介意没有所有的光线跟踪,并希望坚持常规照明,AMD 肯定是一条路要走。对于纯帧到美元的性能,AMD 几乎在现代 GPU 的每个方面都独占鳌头。
但如果你追求的是使用你的 GPU 进行机器学习和矩阵运算,Nvidia 基本上是你在 2019 年唯一的选择。这个故事也不是什么新鲜事,因为 AMD 在为开发人员开发 GPU 技术方面一直落后于潮流。如果 AMD 用户想用 GPU 进行任何计算,他们仍然依赖 OpenCL,我将让图表来说明这一点!
至于最高线,RTX 肯定是 2019 年最有效的选择。Nvidia 目前处于领先地位,但 AMD 也承诺在未来的 GPU 上进行坚定的构建,类似于他们给锐龙的待遇。我们只能希望他们尽早决定迎合图形加速编程。
我仍然记得我第一次安装 CUDA 驱动程序时,在一个绝对不可思议的时间内,对超过 50 个模型进行了拟合和预测。我对基于张量核的计算以及其他利用显卡的技术的未来感到非常兴奋。像 GPU 这样的东西上的统计计算确实是令人敬畏的。Nvidia 在这方面肯定领先于 AMD,这让我真的很感激他们在帮助开发者方面的投资。基于 GPU 的机器学习有很大的潜力来驱动我们的世界,数据科学的未来很有可能由英伟达的张量核心来驱动。我只能希望红队会拿出一些有说服力的东西来骗过 Nvidia 的眼睛,并像他们通常做的那样降低一些价格。
原文:https://towardsdatascience.com/what-online-poker-players-can-teach-us-about-ai-22e164535339?source=collection_archive---------20-----------------------
Successful Poker Player (Background) and Me (Foreground)
扑克被认为是对人工智能的一个很好的挑战,因为它被视为数学/战略游戏和人类直觉的结合,特别是关于他人的策略。我认为这个游戏是技术和人类技能两个极端的结合:国际象棋和石头剪刀布。
在国际象棋比赛中,技术出众的玩家几乎总是会赢,而业余玩家则会输给顶尖的国际象棋人工智能。
在石头剪子布游戏中,如果顶尖的人工智能在三分之一的时间里采取完美的策略,它将是不可战胜的,但根据定义,它也不可能打败任何人。要了解原因,让我们分析一下它如何与巴特·辛普森策略对抗:如果你的对手总是玩石头,你将在 1/3 的时间里玩石头,1/3 的时间里玩布,1/3 的时间里玩剪刀,这意味着你将平手 1/3,赢 1/3,输 1/3。相对于最糟糕的策略,这不是一个好结果。因此,在石头剪子布游戏中,要打败糟糕的游戏,我们自己需要通过了解对手来远离“完美”的游戏。
我玩过 500 多万手扑克,很多人玩的都比我多。汇集几十个在线扑克玩家的数据,将为我们提供数亿手牌的样本。
机器学习一般需要一个目标函数来决定哪些决策是好的,哪些决策是坏的。扑克可以使用赢得的金钱的目标函数,从长远来看,这是一种决定好/坏决策的好方法。除此之外,扑克玩家总是“言出必行”,这意味着他们受到强烈的激励,尽可能出色地完成任务。这意味着我们确实看到了他们在各种情况下决策的巅峰,这在其他比较中未必如此。
我们也许可以利用这一点来比较人工智能的决策和人类的决策,以找出人类的优势所在,并进一步改进人工智能。
一手扑克可以玩出的方式的数量比宇宙中的原子数量还要多,并且与象棋游戏不同,由于玩家拿到不同的开始手牌,开始位置总是不同的。这意味着人工智能需要快速学习归纳,这是“真正”智能的一个重要特征。
最近在扑克人工智能方面取得了成功,其中一个人工智能在 1 对 1 扑克和 6 人扑克中击败了顶级玩家(结果更加可疑)。这是一个非常令人印象深刻的结果,可能会让你相信我们没有什么要向扑克玩家学习的,因为 AI 已经可以做得和他们一样好/比他们更好。
有两个原因让我觉得这还没有完全确定:
特别是对于 6 人扑克机器人来说,有一些在现实世界中并不总是存在的限制。然而,这不是我这里争论的关键。据我所知,这些人工智能的成功与高超的技术理解有关,类似于国际象棋,而不是像石头剪子布那样需要对对手有高超的理解。这是本文其余部分将要讨论的内容。
当谈到理解扑克时,最重要的“人类”技能是理解他人。我们有内省的好处,这是人工智能没有的,也永远不会有(除非它们模拟人脑)。
我们非常了解情绪通常会如何影响一个人的情绪或策略。例如,业余玩家可能害怕在某些情况下变得好斗,或者愤怒的玩家可能变得过于好斗。
许多职业选手非常擅长将对手分成不同的类型,并针对每种“类型”使用不同的策略。如前所述,计算机试图用一种策略来对付所有人,这对于盈利能力最大化来说是次优的。
类似于玩家类型,我们可以看到其他玩家使用某些经验法则。比如“总是用一对 a 下注”。当前设计的人工智能可能需要更大的样本来找出这些启发,因为这些简化对计算机来说似乎是任意的——而作为人类,我们理解其他人可能会做出的简化。
我认为研究扑克玩家真的可以改善人工智能的发展,因为他们技术的一个关键部分是了解对手的想法,通常是在非常有限的数据上。特别是在线扑克,这几乎纯粹是基于游戏模式,所以没有理论上的理由为什么人工智能最终不能在这方面超越人类,我们可以很容易地从专业人士那里获得数亿手数据来尝试模仿它。我怀疑它可以成为一个非常有趣的人工智能研究项目。
原文:https://towardsdatascience.com/what-or-why-in-machine-learning-e2a73da528c8?source=collection_archive---------30-----------------------
使用大数据的机器学习在商界风靡一时。这些短语给了“协同办公室用语”一个机会。在这些流行语的背后,过去十年来机器学习技术和实现这些技术的机器的发展确实令人瞩目。模型越来越复杂,使得机器能够更好地分类、标注和预测连续值。然而,随着模型变得越来越复杂,我们如何确定模型没有利用训练偏差或预测背景噪声的细微变化。机器犯错误的方式与人类不同。(参见示例这里、这里和这里 ) 使用 python 库 ELI5 、 PDPbox 、 Lime 和 SHAP ,我们可以直观地看到一个模型如何预测一个结果、衡量特征的重要性,或者区分图像中的边界。事不宜迟,让我们透过黑盒模型的帷幕来看看我们的模型表现如何。代码和图像可在 GitHub 上找到。
点击这里帮助设置环境
当训练分类模型时,我们试图最小化单独测试集的错误分类。使用威斯康星乳腺癌数据集,我们试图根据肿瘤特征对肿瘤进行恶性或良性分类。为了训练我们的模型,我们将使用一个随机森林,并按 85/15 的比例分割数据。根据我们的测试集预测,我们会得到以下混淆矩阵:
Code for confusion matrix is adapted from Calvin Duy Canh Tran
探索模型中的错误是了解某些要素是否驱动模型预测的好方法。我们开发了一种方法来输出测试集中的假阳性(FP)和假阴性(FN)观察值的指数。我们使用 ELI5 研究特性对错误(本文中的 FP)的影响。
Contribution to probability of class by features. A negative value indicates a weight on the support for a malignant tumor in this example.
我们也可以用石灰来探索这个棘手的问题。
Lime output displays the value of the top feature contributors to a particular class.
或者 SHAP。
SHAP values also explain the contributions to a particular class.
上面的图片都探索了单一测试用例的完整特性集的贡献。SHAP、ELI5 和 PDPbox 可以解释所有测试数据中最重要的特性。这对于减少特征的数量和为将来的数据收集协议获取知识是有用的。
由于我们使用的是随机森林模型,我们可以直接从 sklearn 收集特性重要性。
ELI5 的排列重要性函数测量移除一个特征时精度的下降。这种去除是通过打乱特征值从而产生噪声来实现的。
The permutation importance is weighting some features higher than the standard feature importance.
在探索特性重要性方面,我个人最喜欢 SHAP。汇总图如下所示。
我们可以看到最差半径和最差周长的值是非常重要的特征。他们主要测量肿瘤的大小。最差凹点是另一个很有分量的特征,与前两个不同。最差凹点和最差周长是如何关联的?我们可以使用 PDP 独立探索功能:
或者我们可以一起探索它们:
SHAP 也可以对由 SHAP 值着色的 PDP 执行类似的分析。
此外,我们还可以使用 sklearn 进行特征选择。
对于这一部分,我们正在使用深度学习进行图像识别。传统上被认为是一个黑箱,我们使用石灰来掩盖图像分类中的重要特征。我使用的是来自 Marcotcr 的预建神经网络。网络偏向狗分类,有一些贬低的方法。随意选择自己的图像分类网络。给定一只鹅和一只边境牧羊犬的图像,模型的性能如下:
The scores are printed in reverse order with the highest confidences printed last
我们的模型正确地识别了边境牧羊犬和鹅。柯利牧羊犬和 whippet 是相似类型的狗。我们来看看网络是怎么做这些鉴定的。
Border collie label is called using the information from the locations in green. The areas in red is identified as not a border collie by the neural network.
除了正确地呼叫一只鹅和各种狗之外,我们的算法认为在这个图像中有一个橄榄球。我想知道为什么?
I can kinda see it
你有它!python 中异常值的要素贡献、要素重要性可视化和图像识别要素的概述。为这篇文章鼓掌,关注我,一定要看看我的个人 LinkedIn 。本文的所有代码和数据都可以在 Github 上找到。使用这些工具来解释模型将允许您检测偏差、调试、指导未来的数据收集,并以更高的透明度建立信任。
原文:https://towardsdatascience.com/what-project-management-tools-to-use-for-data-science-projects-49c17c719cfe?source=collection_archive---------10-----------------------
Source: unsplash.com
如果您从未考虑过这个问题,那么现在是时候面对项目和项目管理的真相了。这是我们每天都要处理的事情。项目管理作为一个专业领域正在蓬勃发展,专业项目经理和需要项目导向技能的工作急剧增加。
全球领先的项目管理组织项目管理协会指出,到 2027 年,雇主将需要近8800 万员工直接参与项目管理和项目管理导向的角色——这是一个令人震惊的数字。
如果你从事数据科学,机器学习等。,你知道组织信息、安排和计划步骤和阶段是多么重要。根据 Jeffery Leek 的说法,Jeffery Leek 是约翰·霍普金斯大学彭博公共卫生学院的教授,同时也是 Simply Statistics 和 Biostatistics 的联合编辑和 JHU 数据科学实验室的联合主任数据科学项目中几乎 20%的时间都花在了组织和记录所有的工作上。差不多吧,不是吗?
就其本质而言,数据科学项目管理依赖于常见的项目管理方法,但并不是所有的方法都能得到最充分的成功应用。由于这是一个相对较新的领域,数据科学可能需要一些新的东西,或者至少是标准方法的组合。
然而,由于数据科学仍在发展,还没有直接成型,对于什么方法在这些项目中最有效的问题,不可能有唯一的答案。
一般来说,可以区分以下方法:
CRISP-DM 作为数据科学项目管理的传统方法。
瀑布作为一种传统的方法。
作为敏捷方法的 Scrum。
看板作为一种敏捷方法。
这不是数据科学项目中使用的方法的完整列表。但是你一定会找到基于上述方法的应用程序。这就是为什么我将描述纯粹基于它们的工具。它们将有助于确定每种方法的关键点,从而帮助开发一个特别适合您的模型。
当我们处理数据科学时,数据挖掘是工作过程中最关键的步骤之一。当我们谈到挖掘标准时,CRISP-DM 代表数据挖掘的跨行业标准流程会立即浮现在脑海中,因为这可能是最广为人知的标准。
根据 CRISP-DM,数据科学项目管理中有六个迭代阶段。
理解一个你必须问很多问题的商业问题。
从 Web 服务器、日志、数据库、在线存储库等多个来源了解和获取数据。
数据准备,包括数据清理和数据转换。通常,这个阶段是最耗时的。
构建和评估模型时的数据建模。这是核心活动。
评估包括可视化和交流。
部署和维护以及最终报告和项目评审。
方法论的优点:灵活性和循环性;以任务为中心的方法;容易实现。
方法论的缺点:对团队不起作用;不包括沟通问题。
RapidMiner 被公认为 2019 年 Gartner 数据科学和机器学习平台魔力象限的领导者。所以,如果你认真从事数据科学,需要对大型模型和数据进行预测分析,这个工具是你完美的选择。
软件的优点:一个严肃的工具,提供你处理数据所需的一切;直观的界面;解释分析结果的可视化。
软件的缺点:对于没有准备的用户来说,价格可能太高;缺乏教程。
备选:橙色。
这种方法给出了从项目一开始就定义的所有任务的清晰的结果图。一个项目或它的某些阶段被分解成更小的部分,并用依赖关系连接起来。当你分块的时候,计划管理起来更加容易和有效。这里不认为会发生变化,但是它们可能会发生。
这种方法不适用于数据发现过程。然而,如果过程可以被看作是有形的阶段,它可能对计划有用。
这里成功使用的最广泛的工具是甘特图。
方法论的优点:需求、任务、日期、受托人从一开始就是已知的;包括大量清晰的视觉细节;容易跟随;非常适合团队沟通。
方法的缺点:不包括变更管理,尽管尖端的甘特图应用程序允许这样做。
GanttPRO 是一个强大的甘特图软件,具有许多附加功能。它还有助于管理资源、团队和成本,这也使它成为项目沟通和协作的有效解决方案。如果您需要将您的项目分成具有相关日期、里程碑、严格期限和进度的较小部分,请选择此甘特图制作工具。
软件的优点:简单易懂;较短的学习曲线;直观的界面;14 天免费试用。
软件的缺点:对长期项目来说不是一个完美的选择。
备选方案: Wrike 。
这是世界上最广泛的敏捷方法之一,在各种行业都有应用。
根据这种方法,大型项目被分成更小的阶段,称为 sprints,持续 1-2 周到 1-3 个月。每个 sprint 都有固定的时间框架,并且应该实现在动员会上设定的交付成果。
Scrum 非常依赖客户反馈。
方法论的优点:关注客户;适应性强且灵活,有很大程度的自主权;就数据科学而言,它允许优化可预测性。
方法学的缺点:时间限制的性质可能会在评估阶段造成麻烦,因为有许多未知的问题;不适用于长期项目。
这个工具不需要介绍。任何处理积压工作、冲刺和燃尽图的人都知道 JIRA。高效、可定制、视觉上吸引人——这一切使 JIRA 成为世界上最受欢迎的项目管理工具之一。
软件的优点:数百个集成;适用于小型和大型项目,适用于小型和大型团队;视觉报告。
软件的缺点:学习它需要时间。
备选方案: Clarizen 。
看板是一种方法,它使用一块板作为项目,卡片作为任务。传统的看板包括三栏——已完成、进行中和待完成。在数据科学项目方面,可以增加额外的专栏:在开发、编码、测试等方面。
这是一种更受欢迎的方法,证明了它的有效性。看板也指敏捷方法,和 Scrum 有很多共同之处。
同时,这种方法更加强调工作的进展,而不涉及日期和角色。
方法论的优点:强调正在进行的工作;它灵活易用;工作被极大地可视化了。
方法论的缺点:不强调日期和截止日期(相反,对于数据科学项目来说是加分的)。
Trello 是看板工具中的明星。这是非常简单的使用和非常容易理解。对于个人和团队项目来说,这是非常高效的。它的免费版本可以很好地满足大多数需求。
软件的优点:坚实的免费版本;手机版;使用简单;视觉上吸引人。
软件的缺点:它只适用于正在进行的工作;没有日历。
备选:佩莫。
在数据科学管理的项目生命周期中,很难找到一个完美的工具。有些阶段会有严格的截止日期,有些则没有;有些需要数据挖掘,有些不需要管理。数据科学项目存在于几个阶段,这是绝对自然的。
通过清楚地表明每个阶段的期望和目标,你将认识到如何更有效地使用正确的工具。
原文:https://towardsdatascience.com/what-putting-graphs-on-instagram-has-taught-me-about-data-science-1cb5d7145606?source=collection_archive---------9-----------------------
Some recent content @the.wine.nerd
今年早些时候,我创建了一个关于葡萄酒数据的 Instagram。
**我很快意识到人们不会真的那样做。**我的意思是,如果你快速浏览 Instagram 上的标签#数据科学,你会看到很多教育数据科学的内容,一些人在做分析,一些人在做讲座等等。有一些很棒的账号(我现在已经和他们建立了联系并定期给他们发消息)是非常有趣的事情: @datavizzy , @basic_muse , @thedatavizwiz 。但总的来说,Instagram 不是 Medium 那样的数据科学世界。
@ the . wine . nerd开始是作为我新兴的葡萄酒知识的一个创造性的出口,真的只是包括关于葡萄酒的照片和有趣的事实。2019 年 2 月,我开始向我的一些朋友提出做“葡萄酒数据分析”的想法,并在 2019 年 3 月发表了决定性的第一篇帖子(见下文)。
现在,在过去的几个月里,我和这位葡萄酒爱好者一起走过了漫长的道路,我对成为一名高效的数据科学家意味着什么有了惊人的了解。这篇文章的其余部分将重点分享一些经验。
我的意思是,我的博客就是这种情况——在 Instagram 帖子的评论中,你只能强调和回复这么多。相反,我学会了设置背景,将注意力吸引到故事的重要部分,并使用视觉线索来帮助读者理解我的观点。这方面的一些技术包括:
标题作为结论,而不是标题作为图表的主题。注释和比较线来设置基线。颜色来区分和建立微妙(甚至不那么微妙)的背景。
我在最近参加的一次会议上听到了这个短语;我都笑了,非常同意。不需要复杂的就不要复杂。简单,挑选一个关键的要点,不强调其余的数据,这样人们就能很快理解你想表达的意思。如果人们想花更多的时间看图表,更好地理解数据,他们会的。
这里有一个葡萄酒爱好者的帖子,展示了加州每个葡萄酒产区的平均品酒费。我想传达的关键信息是,纳帕的品尝费高得离谱。为此,我只保留了顶部区域,并且只保留了一个关键点。然而,通过将其余地区分离出来(而不是将数据分为“纳帕”和“非纳帕”),人们还可以对他们感兴趣的特定地区的品尝费用进行评论,如下所示。
我认为对数据科学家来说,最好的面试问题之一是以“把我当成五年级学生来解释”开始。作为数据科学家,我们应该能够清楚地表达我们的分析和使用的技术。
一个例子是,我在分析中大量使用箱线图,因为我认为它们是可视化不同类别分布的非常有效的方法。当有人问你如何解读你的情节时,你能解释清楚吗?更好的是,你能帮忙添加上下文吗,这样他们就不用问了?现在我试着在评论和标题中这样做——记住,每一个大胆的人问,10 个可能没有。
另一方面,作为数据科学家的一些最佳时刻是当人们挖掘你的结论或方法背后的基本原理时。我们终究是这样变好的!例如,上次有人质疑你在散点图中使用最佳拟合线是什么时候?
yes, I did respond to him with the r squared and slopes
现在,每当我分享图表时,我都会后退一步,思考“我遗漏了什么信息”,并确保我手头有这些信息,或者我将它们包含在图表的脚注中。下面是我下周分享的一个例子,包括相关系数:)
如果你习惯于向普通观众展示可视化效果,那么你通常不会在美化可视化效果的过程中投入太多时间。如果你看看那些利用数据的流行博客,比如 FiveThirtyEight 或纽约时报,你会注意到它们看起来很专业,而且整合得很好。基本的东西,如字体大小,删除框,样式颜色,添加图例,标签轴等。帮助你的观众不仅理解而且信任你的数据。
迄今为止,我发现的最令人惊讶的见解之一是我的葡萄酒混合分析。这里真正的发现是,大多数葡萄酒并不是 100%像它们所标注的那样,其中一些勉强符合葡萄酒的法律要求(如果你想了解更多关于分析本身的信息,请阅读我链接的帖子)。
但在试图传达这一发现时,我想要一个引人入胜的可视化效果,并真正触及这一点。我觉得关键是我想让人们清楚地了解两件事:百分比因酿酒商而异,其中一些非常低,接近法律要求。说实话,我觉得“大多数我们喜欢的出租车都不是 100%的出租车”确实引起了人们的注意,人们可以立即理解我在说什么。
作为一个明显喜欢可视化数据的人,这可能是最难承认的事情之一,但有时你真的不需要那些花哨的分布、绘图和图表。你真正需要的是给别人一种视觉上有趣的方式来消化你试图分享的信息。下面是一个例子,是我在迭代了大概 5 种其他方法后创建的,用来可视化每种葡萄酒在加州的生长地点和数量。最后,我决定将这些信息分开:一个地图显示地点的上下文,一个列表显示葡萄的百分比。
你在做什么来获得你的 10,000 小时?作为一名数据科学家,创办 Wine Nerd 是提高我技能的最好方式之一。
p.s .不要脸的塞在 Instagram 上关注我 @the.wine.nerd 还有我很想在评论里听听你们是怎么练技术的!
原文:https://towardsdatascience.com/what-separates-good-from-great-data-scientists-2906431455fd?source=collection_archive---------4-----------------------
数据科学就业市场正在快速变化。能够建立机器学习模型曾经是只有少数杰出科学家拥有的精英技能。但是现在,任何有基本编码经验的人都可以按照步骤训练一个简单的 scikit-learn 或 keras 模型。招聘人员收到了大量的申请,因为在工具变得更容易使用的同时,围绕“世纪最性感工作”的宣传几乎没有放缓。对数据科学家应该带来什么的期望已经改变,公司开始理解训练机器学习模型只是在数据科学中取得成功的一小部分。
以下是将最优秀的数据科学家区分开来的四个最有价值的品质。
对数据科学家来说,最常见的激励因素之一是寻找数据模式的天然好奇心。深入探索数据集、试验该领域的最新技术、系统地测试其效果并发现新东西的探测工作可能会令人兴奋。这种类型的科学动机是数据科学家应该具备的。但是如果这是 T4 唯一的动力,那就成问题了。在这种情况下,它会导致人们在孤立的泡沫中思考,迷失在统计细节中,而不考虑他们工作的具体应用和公司的大环境。
最优秀的数据科学家了解他们的工作如何融入公司整体,并有交付商业价值的内在动力。当简单的解决方案足够好的时候,他们不会在复杂的技术上浪费时间。他们询问项目的更大目标,并在找到解决方案之前挑战核心假设。他们关注整个团队的影响,并主动与利益相关者沟通。他们对新项目充满了想法,并且不怕跳出框框思考。他们引以为豪的是他们帮助了多少人,而不是他们使用的技术有多先进。
数据科学在很大程度上仍然是一个未标准化的领域,数据科学训练营教授的内容与企业实际需要的内容之间存在巨大差距。最优秀的数据科学家不怕走出他们的舒适区,去解决紧迫的问题,并最大限度地发挥他们的影响。
当人们想到理想的数据科学家时,他们脑海中通常会出现来自名牌大学的知名人工智能教授。当公司在竞争中建立尽可能精确的机器学习模型时,为这样的档案招聘人才是有意义的。当必须通过任何必要的手段挤出最后的准确度百分比时,那么您需要关注数学细节,测试最复杂的方法,甚至发明专门针对特定用例优化的新统计技术。
但这在现实世界中很少是必要的。对于大多数公司来说,精确度不错的标准模型已经足够好了,不值得投入时间和资源来将不错的模型变成世界上最好的模型。更重要的是快速建立具有可接受精度的模型,并尽早建立反馈周期,这样您就可以开始迭代并加速识别最有价值用例的过程。准确性的微小差异通常不是数据科学项目成功或失败的原因,这就是为什么软件工程技能在商业世界中胜过科学技能。
数据团队的典型工作流程通常是这样的:数据科学家用试错法和意大利面条式代码构建一些解决方案的原型。一旦结果开始看起来有希望,他们就把它们交给软件工程师,然后他们必须从头重写一切,以使解决方案可伸缩、高效和可维护。不能期望数据科学家交付全职软件工程师级别的产品代码,但是如果数据科学家更熟悉软件工程原则,并且对可能发生的架构问题有所认识,那么整个过程会更加顺利和快速。
随着越来越多的数据科学工作流程被新的软件框架所取代,扎实的工程技能是数据科学家最重要的技能之一。
从外部来看,数据科学可能是一个非常模糊和令人困惑的领域。这只是一场炒作还是这个世界真的正在经历一场革命性的转变?是不是每个数据科学项目都是机器学习项目?这些人是科学家、工程师还是统计学家?他们的主要输出是软件还是仪表盘和可视化?为什么这个模型向我显示了一个错误的预测,有人可以修复这个错误吗?如果他们现在只有这几行代码,那么过去一个月他们在做什么呢?
有很多事情可能是不清楚的,对数据科学家应该做什么的期望在公司的不同人之间可能有很大差异。
对于数据科学家来说,主动、持续地与利益相关方沟通以设定明确的预期、尽早发现误解并让所有人达成共识至关重要。
最好的数据科学家了解其他团队的不同背景和议程如何影响他们的期望,并仔细调整他们的沟通方式。他们能够以简单的方式解释复杂的方法,让非技术涉众更好地理解目标。他们知道何时抑制过于乐观的期望,何时说服过于悲观的同事。最重要的是,他们强调数据科学固有的实验性质,并且不会在项目成功与否尚不明朗时做出过度承诺。
云计算是数据科学工具包的核心部分。在本地机器上摆弄 Jupyter 笔记本达到极限,不足以完成工作的情况太多了。例如,当您需要在强大的 GPU 上训练机器学习模型、在分布式集群上并行化数据预处理、部署 REST APIs 以公开机器学习模型、管理和共享数据集或查询数据库以进行可扩展分析时,云服务尤其有用。
最大的提供商是亚马逊网络服务(AWS)微软 Azure 和谷歌云平台 (GCP) 。
考虑到大量的服务和平台之间的差异,几乎不可能胜任云提供商提供的所有服务。但是,对云计算有一个基本的了解是很重要的,这样才能浏览文档,并在需要时了解这些特性是如何工作的。至少,这允许您向友好的邻居数据工程师提出更好的问题和更具体的要求。
所以你有它。对于希望从零开始组建数据科学团队的公司,我建议寻找务实的问题解决者,他们拥有强大的工程技能和对商业价值的敏锐感知。卓越的统计可以带来很多价值,但是对于大多数用例来说,它变得不那么重要了,尤其是在早期团队中。
到目前为止,大多数公司都倾向于雇佣具有强大学术背景的数据科学家,比如数学或物理博士。鉴于该行业近年来的发展,看看未来是否会有更大比例的软件工程师或技术产品经理转变为数据科学角色将是一件有趣的事情。
原文:https://towardsdatascience.com/what-should-i-read-next-68be827960bf?source=collection_archive---------17-----------------------
Back Bay, Boston
我喜欢阅读,但每次读完一本书,我都会遇到同样的问题:接下来读什么?我使用的平台应该有大量的数据来帮助我解决这个问题。
然而,Libby——通过波士顿公共图书馆——没有提供任何推荐,亚马逊公司 Goodreads 的推荐也不是很好,我在那里存储了我的阅读历史。
我想要一个算法,为我提供有针对性和相关的选项,由于我没有通过我目前的图书供应商获得它,我想我会尝试自己构建它。
关于 Python 的完整项目代码, 请点击这里 。
数据
我能够找到的最佳数据集包含来自 Goodreads 的前 10,000 本书,以及用户评级、用户想要阅读的书,以及读者与该书相关联的任何标签。
这些数据有其局限性。我们只能访问 10,000 本最受欢迎的书籍,不能添加额外的信息,如流派或书籍描述。数据截至 2017 年,因此我们错过了新出版的书籍。也就是说,肯定有足够的东西来构建算法的框架。
我还能够导出我自己的 Goodreads 数据,虽然我读过的每本书都排在前 10,000 名,但在只考虑了我希望在算法中考虑的书籍后,有大约 60 本匹配。
方法和批判性思维
根据我们现有的信息,我觉得最好的方法是找到与我“最相似”的用户,然后寻找他们读过而我没有读过的最受欢迎的书(根据平均评分或阅读次数)。这种方法——在用户中寻找模式,并应用这些模式进行推荐——被称为协同过滤。
当你在一个产品下看到“购买了这个商品的顾客也购买了”的推荐集时,它实际上是亚马逊使用的一个简化版本。
Example product recommendations when searching for a cold brew pitcher.
我最初构思这篇文章的目的是关注协同过滤的步骤,但是在我完成第一组代码并查看结果之后,我意识到除了简单的过滤和编码之外,还有很多东西需要考虑。相反,下面将着重于如何使用直觉和批判性思维来提高最初的结果。
投入的加权和标准化
我意识到,需要有一种方法来标准化一本书在总体上以及在相似读者的相关样本中的受欢迎程度。否则,相似用户阅读最多的书可能会受到该书总体受欢迎程度的过度影响。这不一定不好,但是我想要一种方法来调整样本与总体。
为了克服这一点,我选择使用一种标准化结果的方法,将一本书被评分(阅读)并标记为“值得阅读”的次数除以该书的总评论数。除了帮助我们排序结果和抵消一本书的总受欢迎程度之外,这个比率在任何方面都不一定有意义。
那么,在选择读哪本书的时候,我是想要最受欢迎的书(按这个比例)还是收视率最高的书呢?我应该更看重我已经读过并喜欢的作者的书吗?或者说,应该优先选择 5 星评分最多的那家?简而言之,我选择创建一个与我的偏好相匹配的变量权重。如果我的偏好改变,这些可以在函数调用中改变:
系列、新作者和我的评分
当我运行这个算法时,我注意到,即使我在输入数据时,属于一个系列的书籍主导了结果。这是合乎逻辑的——当有人阅读并喜欢某个系列的第一本书时,他们很可能会去读第二本。如果我也读过第一本书,那些用户更有可能和我匹配。
我注意到一个丛书的模式,其格式通常是:标题,(丛书名,#[1,2,3,等等。]).因此,通过在标题中搜索“#”信号,可以很容易地识别系列中的一本书。它并不完美,但它抓住了大部分。因此,在对该函数的调用中,我添加了一个“Series”选项,如果 toggle 设置为“No ”,该选项会过滤掉所有系列。
同样,早期的推荐大部分来自我已经读过的同一作者——同样,考虑到权重,这是可以理解的。但是,如果我想读一个新的作者呢?这是一个简单的修复方法——在函数调用中加入了一个“仅新作者”开关,这样我就可以控制是否只看到新作者。
最后,在应用了其中一些因素后,我注意到我最推荐的是一个我已经读过但不一定喜欢的系列——我给大多数书打了 3/5 分。因此,为了弥补这一点,我采用了用于推荐的数据,在我自己的书中搜索了每个系列,如果平均评分低于 4,我就从数据集中删除所有实例。
我想看的书
我阅读各种类型的书籍——小说、非小说、商业等。—但不代表我评价高的东西都要推荐给我。如果我们有可用的流派信息,我可以指定我想要的推荐的流派类型,但是我们没有,所以我必须做一个变通办法。
出于本练习的目的,我决定创建一个新的专栏,并标记我希望被纳入推荐范围的书籍。只有这些书用于匹配,然后对我读过但不想推荐的其他书进行结果调整。
定义“相似的”
我必须和一个用户有多少本相同的书才能被认为是相似的?五个?十个?20?应该包括多少读者?算法的结果根据我们如何定义相似而变化。我选择使用相似读者的第 99 个百分位数,因为数据集是 600+人,他们共同评价了近 75,000 本书。同样,这个百分比可以在函数调用中更改。
推荐输出
对以上内容进行分层后,结果是什么?让我们试着调用几个函数:
Basic call to the function
Test the algorithm for new authors only
Widen the bucket of similar users
Change the weights and widen the audience plus new authors only
结论
我从这个项目中最大的收获是:
协同过滤——或者任何推荐系统——都不能放在盒子里看。在之上分层的必然是计算机无法理解的思维和直觉。系统和算法的灵活性远比简单地执行代码以实现程序功能的能力更有价值。我以为这个项目会以协同过滤代码开始和结束。相反,我花了更多的时间来完善这个系统,而不是一开始就创建它。
推荐是推动销售和满意度的一种强有力的方式。也就是说,必须小心谨慎地对待这个话题,因为糟糕的推荐可能会令人沮丧,并阻碍未来的销售。最终,帮助某人发现他们正在寻找或甚至不知道他们可能想要的产品或服务,对所有相关人员来说都是一种胜利,对于数据爱好者来说,这是一个有趣的挑战。
原文:https://towardsdatascience.com/what-should-i-watch-next-exploring-movie-recommender-systems-part-1-popularity-48a5e3c7d8e1?source=collection_archive---------36-----------------------
推荐系统。它们是什么,你为什么要关心?
事实证明,如今到处都在使用推荐系统。《纽约时报》、Reddit、YouTube 和亚马逊(仅举几个例子)都以各种方式利用这些系统来推动流量和销售,并为用户带来你正在寻找的东西。
当人们想到电影推荐者时,他们最经常想到的是网飞,他的算法是让用户一次又一次地回来观看新的和令人兴奋的东西。
我决定自己做一个推荐系统,这样我就可以给自己推荐新电影看了。我创建了四个不同的系统,从简单到复杂:流行度过滤器、基于内容的推荐器、使用 SVD 矩阵分解的协同推荐器以及协同和基于内容的混合推荐器。
在本系列的第一篇文章中,我将讨论数据处理过程,并探索我是如何制作流行度过滤器的。
有几个现成的电影数据集。最著名的可能是 MovieLens 数据集。如果你有一个像网飞一样的自己的网站,你可以使用来自用户的内部明确数据来帮助推荐电影。例如,Youtube 在其算法中使用平均观看时长(你的视频平均被观看了多少分钟)。Reddit 使用加权用户投票将热门帖子放在他们的“首页”。Instagram 会查看你点击了哪些广告,以及你如何在整个万维网上导航(显然这与你是否登录了你的脸书账户有关,因为脸书拥有 Instagram)。如果你已经找到了自己的路,你可能已经知道:数据是有价值的。
当然,我无法访问内部指标,如收视率、人口统计或其他任何东西,因为我没有实际推荐电影的应用程序或网站。因此,对于我的推荐系统的这一部分,我决定使用 GroupLens 的 MovieLens 20M 数据集。这给了我 138,000 个用户对 27,000 部电影的 2,000 万个评分(138,001,因为我添加了自己的评分)。一个很好的开始,当然!
然而,它缺少了一些关键的特性,而这些特性正是我真正想在基于内容的推荐系统中使用的。第一,我不想只用 27000 部电影。我想要一个电影推荐者,他可以深入电影记录的深渊,找出电影中一些尘封的钻石,甚至可以安抚最挑剔的批评家(想想皮克斯 2007 年电影《料理鼠王》中的柯博先生)。因此,为了我的受欢迎程度和基于内容的推荐者,我使用 IMDB 的可用数据集从 IMDB 收集我自己的数据来收集电影 id,然后使用 OMDBAPI 从 265,000 部电影中收集元数据。
在推荐系统方面,我想关注四个指标:多样性、覆盖面、意外收获、和新奇度。虽然我不会在这篇文章中谈论如何从数学上探索这些指标,但我会在下面快速定义它们。
多样性衡量推荐项目之间的不同程度。我是放钢铁侠回来钢铁侠 2,钢铁侠 3,复仇者联盟,复仇者联盟:奥创时代,复仇者联盟 3:无限战争等等?或者我会得到一些奇怪的,主题相关的电影,关于一个古怪的富有单身汉陷入困境,就像海底两万里?
不过,也考虑一下,100%的多样性可能看起来就像随机挑选电影,然后把它们扔回去。这不是一个很好的推荐系统。
C 超龄说明你的目录有多少被实际使用和推荐。例如,一般来说,大多数人的行为都遵循长尾帕累托分布,也就是 20-80 法则。MovieLens 20M 米评分数据集遵循这种长尾分布,我收集的数据也是如此。然而,对于我收集的电影数据集,包含 265,417 部电影,总投票数为 733,228,772,所有投票的 79.57%仅由列表中 1.5%的电影占据。当我们的投票数达到数据集的前 20%时,我们已经占了总投票数的 99.16%。
The KDE of movie votes from IMDB that shows the majority of the votes going to a few of the movies. This kind of distribution is widely explanatory of human behavior and aspects of societal life like wealth
Serendipity 是衡量返回的推荐有多令人惊讶和相关的指标。
新奇度决定了推荐的商品对一个用户来说有多不知名。这是没有严格“相关性”的“惊喜”,很难定量评估。
Image from Pexels
如果我创建一个理论上的网站来推荐电影,当我收集内部用户数据时,无论是显性的(投票/评级)还是隐性的(链接点击、观看时间、购买等),我都必须有一个开始的地方。
从流行度过滤器开始。这将返回“热门话题”。在 Reddit 上,这是他们的首页。《纽约时报》包括人气过滤器,比如他们的、【最受欢迎电子邮件】和(滚动到底部)。IMDB 有他们的“前 250 部电影”。
简单地说,流行度过滤器是这样工作的:你决定一个阈值。什么对你来说是“流行”的?前 5%?前 1%?如果您有可用的信息,您可以使用评级或投票的数量(IMDB 是如何做到的,以及我是如何做到的)来过滤这些信息。如果你是从零开始,你可以使用总销售额或票房这样的指标。一旦设置了阈值,就可以决定如何返回结果。
在我收集的数据(265,000 部)电影中,我可以看到一部电影获得了多少投票,以及这部电影在 IMDB 上的平均评分。简单来说,投票结果如下:
Votes a movie had received on IMDB. The average number of votes was 4,049. The fewest votes an individual movie had received was 5, the most votes an individual movie had received was 2,084,570
我决定看 95%以上的电影。这给了我 7691 票的初始门槛。我还决定看看那些在 IMDB 上的平均未加权评分在平均值或以上的电影。在这种情况下,未加权评分等于或高于 6.14。
但是,我们如何决定放映哪部电影呢?一般来说,这些电影会有相当稳定的平均收视率。但另一种方法是创建一个加权评级,考虑到这样一个事实,即如果我们在某个时候决定对我们的前 250 张排行榜使用评级,我们不会希望一部 5 票 10 分的电影战胜一部 100 万票平均 8.9 分的电影。稳定在人气图表中很重要。因此,我们可以使用真实的贝叶斯估计公式将原始平均评级转换为加权评级:
(ᵄ;ᵄ;)=(ᵆ;÷(ᵆ;+ᵅ;))×ᵄ;+(ᵅ;÷(ᵆ;+ᵅ;))×ᵃ;
其中:
R =电影
的平均评分 v =电影
的投票数 m =所需的最低投票阈值
C =数据集中所有电影的平均评分
如果这没有多大意义,下面是正在发生的事情:我们决定一个阈值(在我的第一个例子中是 7691 票)。对于票数超过这个门槛的电影,变化不大。然而,对于具有少得多的投票数 x 的电影,电影的平均评级随后被填充以剩余的阈值- x 投票,其中这些剩余投票中的每一个都是 C,即整个数据集的平均评级。这增加了评级的稳定性,从而增加了图表的稳定性。
我们稍后还将在基于内容的推荐器和我们的混合推荐器中使用加权评级。
The transformation of ratings on movies in my dataset with the most votes on IMDB vs the least votes. It’s clearly seen that the weighted rating of movies with many more votes than our threshold barely changes, whereas movies with very few votes move toward the mean of the dataset as a whole
根据我们的阈值(和平均未加权评分,如果你愿意的话)过滤电影后,我们剩下的是一个更小的合格电影列表。在那里,我们只需根据我们的偏好对推荐进行排序并返回。例如,以下是通过使用 265,000 部电影的整个数据集收集的合格列表中的前 20 部,按加权评分返回:
Popular movies returned
关于这第一个受欢迎度结果,有几件事:它包括全球所有的电影,包括 1891 年至 2019 年之间制作的电影。一个有用的列表,但是这是一个人们一进入网站就希望看到的受欢迎列表吗?大概不会。例如,许多美国用户在想到电影时可能会想到好莱坞,不想回到外国电影(《混乱阶级》是一部土耳其喜剧),如果在或狮子王之后推荐一部 1891 年的无声电影,他们可能会感到困惑。**
幸运的是,通过进一步过滤,这个问题很容易解决。例如,这是另一张流行度图表,只统计了 1990 年或以后发行的电影。请注意,因为我正在改变我的初始设置的形状,我的合格电影的阈值将会改变。在这种情况下,我的总票数门槛从 7691 票变成了 11707 票,看的是未加权平均评分 6.13 以上的电影。
Top 12 ‘popular’ movies from 1990 on
我们还可以选择进一步过滤,为独特的国家、导演、演员、流派、语言等创建流行度列表,确保每次都相应地更改阈值。
对于这些过滤器,在 python 中,由于通常你的数据帧中每个特征会有几个条目(例如:黑暗骑士把动作、犯罪、戏剧和惊悚都归为类型),一个解决方案是使用熊猫。DataFrame.stack ,这将允许您包含所有电影,仅通过您的目标功能的一个子集进行过滤。
Top 10 movies for Japanese language and top 10 movies for Comedy
总的来说,人气或前 N 名名单是推荐系统的一个很好的起点,无论你是为了个人博客还是电影推荐而编辑它们,有一些要点要记住:
默认情况下,前 N 名列表可能不会返回您想要的指标。对于寻找下一颗未加工钻石的电影爱好者或评论家来说,人气排行榜是不够的。它返回流行的和已知的。还记得上面有长尾的核密度估计图吗?
考虑到我们总共 7691 张投票的门槛和 6.14 的平均未加权评分,最初的合格名单包含 6532 部电影。回想一下,整个数据集有 265,000 部电影(更准确地说,是 265,417 部)。这意味着只有 2.46%的电影甚至被认为是这些前 N 名排行榜的(记住,在我整个刮出的数据集中,1.5%的电影占了总票数的近 80%)。这不是我们希望的覆盖率指标。在这种情况下,其他指标看起来有点棘手:我们有多样性,因为我们寻找它。我们的第一张图表有不同的国家,年代,流派,演员。过滤掉“日本喜剧”可能会减少我们的多样性,同时也注意到这正是用户正在寻找的。
新鲜感,在流行图表中,也可能是缺乏的。有人可能会看着 250 部顶级电影排行榜,然后想,“哦,对了,我忘了那部电影。”但他们可能不会对看到泰坦尼克号或低俗小说感到惊讶。**
关于人气排行榜要考虑的第二件事是,它们是 100%非个人化的。如果你在你的博客或网站上实现了一个流行度过滤器或图表,每个访问该网站的人都会看到相同的结果。看看 Reddit,网站历史上的热门帖子都是多年前的,这就是为什么当你访问他们的“热门”页面时,你不会看到那些多年前的帖子,其算法根据帖子的年龄进行计算和加权,通常只显示不到 6 小时的帖子。
关于人气排行榜,我们要考虑的最后一件事是,我们在假设人们喜欢什么。流行推荐背后的整个想法是,因为很多人喜欢它,一个随机的人也会喜欢它。显然,情况并不总是如此。仅仅因为 100 万人对魔戒:指环王联盟赞不绝口,并不能让一个不喜欢该系列的人突然喜欢上它。我不喜欢恐怖电影,任何受欢迎程度都不会让我改变主意。此外,虽然进一步过滤的图表确实解决了这个问题,但我非常怀疑一个五岁孩子的父母会看我们的第一张图表,并找到任何适合他们孩子观看的东西。**
总的来说,流行度图表简单,易于实现,是向用户推荐产品、页面或其他服务的良好开端。人气排行榜不是:个性化的,深度潜水的,或者会向你推荐你从来不知道你需要的电影(除非那部电影是阿凡达)。**
感谢阅读!在下面的评论中留下任何问题,如果你愿意,可以查看我的 python 笔记本或我的 github repo for this project 。
我的下一篇文章将讨论基于内容的推荐器:使用电影元数据和标签,如流派、美国电影协会评级、情节关键词、演员和工作人员、语言等,使用 NLP 矢量化和距离函数推荐电影,同时考虑可扩展性。准备好读了吗?点击这里。
原文:https://towardsdatascience.com/what-should-onboarding-look-like-for-data-scientists-9d723c15908d?source=collection_archive---------11-----------------------
Kickstarting a new journey (source)
很有可能,你以前去过那里。众所周知,入职是公司招聘流程的重要组成部分。它始终影响着新员工和团队成员,但出于某种原因,它经常被忽视。
入职不仅仅是公司给人的第一印象;它为新员工在那里的体验定下了基调。尽管在线数据科学社区产生了越来越多的内容,但与入职相关的最佳实践信息却少得惊人。
在这篇文章中,我将通过分享我的经验来解决这一需求,这些经验告诉我如何在行业中聘用新的数据科学家。
我们知道数据科学本质上是一个多学科领域,需要多样化的技能组合。作为多面手,我们需要涵盖工程、产品、报告、分析等所有领域。
然而,这也意味着新员工需要在这些领域中的每一个领域中进行适当的入职培训。这就是为什么入职数据科学家的任务比大多数人更棘手。你必须走得更远。这意味着建立几个不同领域的知识基础,而不是专注于一两个专业。
虽然不可避免,但这并不是一个巨大的障碍。这仅仅意味着我们需要以不同的方式思考数据科学家的入职问题。不是一个全面的改革,但是我们需要一个个性化的系统来适应我们将要做的工作。
Everyone’s favorite Venn diagram (source)
一旦所有人力资源方面的事情都解决了,新员工也熟悉了公司范围内的信息和流程,就该设定期望值了。
这通常采取与他们的经理进行初次会面的形式,在会面中,他们可以分享一些信息,并进一步深入角色。在您进一步进入入职培训之前,讨论应包括以下内容:
职位概述随之而来的期望需要考虑的近期项目路线图下可能的项目你想制定什么政策他们会经常与谁互动问题的联系方式
接下来,是时候见见其他队员了。这一步骤因公司而异,取决于您的数据科学团队的规模和组织结构。这里最重要的是让新员工感到舒适,并让他们了解彼此。这可以是绕着办公室跑一圈去见见每个人,或者是和团队一起坐下来吃午饭这样简单的事情。
一旦介绍完成,他们应该更好地了解每个人,并开始更多地了解团队。我最喜欢的方法是在前几个月使用脸书的职业冷启动算法。这种算法的前提是从你的经理那里得到一份你应该与之交谈的人员名单,询问他们每个人 30 分钟的时间,然后做以下事情:
前 25 分钟:让他们告诉你他们认为你应该知道的一切。做大量笔记。只有阻止他们问你不懂的事情。总是阻止他们问你不明白的事情。
接下来的 3 分钟:询问团队目前面临的最大挑战。
在最后 2 分钟:询问你还应该和谁交谈。写下他们给你的每个名字。
对给定的每个名字重复上述过程。没有新名字之前不要停。
这一点更简单,但是您的新数据科学家需要一些时间来设置他们的环境和工具。这通常意味着要跨越许多障碍,或者请求访问各种帐户和软件应用程序。
在这个过程中你能做的任何消除摩擦的事情都应该去做。我们都曾在运行某些软件或软件包时遇到过问题。我们知道这有多令人沮丧。共享适当的文档,缩短员工和服务台之间的反馈循环,以及指定团队成员联系问题,这些都是很好的举措。
无论你在与什么行业和商业模式合作,数据科学家都需要了解他们的客户。领域知识对于持续推动影响力是绝对必要的。发展这种领域知识的一个强有力的初始方法是了解你的客户群和他们所属的人口统计数据。
“我们认为数据是大规模用户的声音。”—埃琳娜·格雷瓦尔
更好的是,如果可能的话,新员工应该尝试使用该产品。你会发现,成为自己的客户这一简单的行为可以打开你在以后产生假设和从数据中获得洞察力时不知道存在的大门。
我们知道历史注定会重演,有时我们不愿承认。这就是为什么了解团队和公司内部过去的项目、计划和见解可以让数据科学家的生活更轻松。
他们应该花时间回顾与团队相关的任何过去的分析或项目。即使浏览一些材料也会让新员工对以前做过的事情有所了解,如果他们在做类似的项目,可以让他们继续跟进。他们不应该陷入困境或浪费时间重新发明轮子。
也许更重要的是,确保清楚了解公司的愿景和路线图,以及他们正在做的事情的原因。
数据科学家是思想家。与项目经理或工程师相比,我们有更多的时间思考问题,所以在产生影响时,对全局的深刻理解会有很大的帮助。
Double underlined for extra emphasis (source)
一旦您的数据科学家设置好他们的环境,就让他们开始一个初始项目。理想情况下,你已经减少了技术和公司范围内的入职培训,足以让这个项目在一两周内开始。
这可以是一些小而具体的事情,如后续分析或利益相关者的一次性询问。如果没有产生惊天动地的结果也没关系。这个项目的目标是让员工参与进来,让他们开始做更有影响力的工作。
一旦他们在这方面取得了一些进展,给他们一些更具探索性的东西也是一个好主意。让他们稍微活动一下自己的创造性肌肉,探索数据,尝试解决一个模糊的问题。这种灵活性将大大提高他们对数据和新工作流程的适应能力。
现实是,没有人能马上完全跟上速度。这将是一个过程,其中优先考虑最重要的领域是关键。因此,重要的是要强调,新数据科学家在入职期间将他们的宝贵时间集中在及时技能和工具上,而不是在以防万一事情上分散精力。
更具体地说,及时学习的一个例子是熟悉你公司选择的数据仓库,这是他们需要尽早知道的。另一方面,学习生存分析,因为它可能是适用的,并不是入职过程中的优先事项,因此符合以防万一分组。
情况并不总是这样,应该有一个平衡。但这是一个更快启动事情的好方法。
文档在这个过程中的重要性怎么强调都不为过。拥有一个集中位置的入门知识可以让入职工作更加顺利。以正确的方式构建它可能需要一些前期时间,但从长远来看,它会得到回报。
Your manuals probably shouldn’t make things harder (source)
最后,收集对流程的反馈,并为团队的下一个成员进行改进。很难站在一个刚刚起步的人的角度考虑问题,所以不要依赖它。收集反馈,找出过程中的一些潜在弱点,这样你就可以集思广益,最终实现潜在的解决方案。你未来的雇员会感谢你的。
感谢阅读!请随意查看下面我的一些类似的文章,并订阅我的简讯以接收任何新内容。
为新的和有抱负的数据科学家汇编建议A 型数据科学家的颂歌MVA:最低可行分析
你可以在 Medium 上关注我更多类似的帖子,也可以在 Twitter 上找到我。想了解更多关于我和我在做什么,请查看我的网站。
原文:https://towardsdatascience.com/what-should-you-be-tracking-in-2019-a9415a700897?source=collection_archive---------13-----------------------
跟踪和个人数据可以也应该成为你追求目标、发展更好的自我理解和优化自我提升的一部分。
随着新的一年的到来,我们许多人经常会设定新的目标和决心。在像生日、新的一个月或新的一年这样的时间触发事件中,我们宣布我们想要改变什么,并试图建立一个新的习惯或达到一个渴望已久的目标。其中很多都会失败。据估计,超过 90%的新年决心都失败了。
我们想了很多关于我们想要达到的目标。但是我们有多少次想到了 过程 底层 我们如何实现 甚至 如何衡量我们朝着那些目标前进 ?
虽然有很多术语被抛来抛去,但本质上自我追踪、量化自我、个人信息学或任何你称之为的东西都可以被定义为测量或记录关于你自己的某些事情的活动。反过来,我发现最好把这种跟踪框定在更好的自我理解或优化的自我提高上。因此,当谈到目标时,跟踪数据可以作为一种反馈机制,用于了解健康或生产力等特定领域,或者作为一种衡量你朝着客观目标前进的尺度。
在这篇文章中,我想分享我将在未来一年中跟踪的东西,但我也想讨论为什么我认为跟踪在今天是一项有用和有意义的活动。
在第一部分,我将分享一些为什么许多人跟踪和为什么个人数据收集在今天是如此有价值的追求的原因。言归正传,我发现跟踪有益的主要原因是,它是更好的自我理解和自我提升的促成因素。但是,如果我们不仅仅是跟踪和收集数据,而是开始处理我们的数据,跟踪才能成为一个推动者。这就是我认为数据参与如此重要的原因。你不需要成为数据科学家来使用你的数据。
在第二部分,也是最长的一部分,我会列出我在 2019 年要跟踪的内容,包括具体的领域和我使用的技术。我还将通过每周回顾、个人数据仪表板和目标检查来分享我处理跟踪数据的三种方式。
最后,我将简要分享我认为每个人都应该跟踪的四个方面,以及跟踪和个人数据如何与您的目标保持一致。
让我们开始看看你在未来的一年里可以跟踪什么!
几年前,我第一次写了一篇关于我计划追踪一整年的文章。我最初的观点是,追踪生活比以往任何时候都容易,我分享了一个大清单,上面列有我在未来一年要追踪的事情。跟踪的简易性在今天依然如此。只需一部智能手机,几个应用程序,最好是一个可穿戴设备,你就可以生成和收集大量关于你自己的数据。
改变的是我如何定位目标跟踪。我不再只是为了追踪而追踪,而是为了让数据驱动的生活能够自我理解和自我提升。
我逐渐意识到,自我跟踪最好被认为是目标的支持结构。我们使用数据对我们的生活和追求进行一些客观的测量。然后,我们使用这些数据来了解正在发生的事情,并可视化我们的状态和进展。追踪不是重点;跟踪是一些其他追求或目标的推动者,比如了解我们的健康状况或改善我们的思考或写作方式。
我发现跟踪有益的人类活动和追求的主要原因是,跟踪数据可以成为更好的自我理解和自我改善的强大推动力。数据帮助我们回答问题,并追求数据驱动的目标。但是,数据和跟踪成为推动者的唯一方式是我们参与并使用这些数据。我们需要超越跟踪和数据收集,开始使用我们的数据进行反馈、自我反思和数据可视化。
简而言之,追踪可以是授权和有益的,但只有当我们使用我们的追踪数据时。这让我意识到自我跟踪应该分为两个部分:数据收集和数据参与。
数据收集:获取我生活各方面数据的标准流程,包括健康、时间、财务、生产力、目标等。数据参与:从数据中学习,检查进度,获得反馈,并考虑你的方法。
让我们看看我将跟踪什么,以及我计划如何在 2019 年处理我的数据。
说到要追踪什么,最好的办法是想一两个你想要实现的目标,然后找到追踪它的方法。如果你想跑得更多,记录你的跑步。如果你有几个想养成或改掉的习惯,记录下你的习惯。如果你想更好地管理你的时间(或减少电脑或屏幕时间),跟踪这些。
如果跟踪与你已经有的目标一致,你会取得更大的成功。反过来,通过跟踪你的目标和使用你的跟踪数据,你将能够更加专注于你试图理解或实现的任何事情。
如果你不打算使用这些东西,那么跟踪它们就没有什么意义,而且我跟踪的绝大多数东西都是为了实现我自己的目标。正如我在上一节提到的,我现在把我的跟踪工作分成两部分:1。我的实际跟踪或数据收集和 2。我的数据业务。让我们先看看我追踪的是什么。
在过去的几年里,我已经慢慢地建立了很多跟踪自己生活的方法。我不建议刚刚开始自我跟踪的人去尝试和实施所有这些方法。
尽管有这个关于限制跟踪量的警告,我现在跟踪的大部分数据都是被动跟踪的。所以真的不需要那么多时间去做。
可穿戴 : 采集睡眠、步数、心率。拥有一个可穿戴设备是一种收集各种健康和运动数据的简单方法。我主要使用 Apple Watch,但最近我也在测试一款 MiBand3。我发现睡眠是这里最有用的数据,因为我们睡眠的多少对我们的健康、学习和创造力有很大的影响。与此同时,了解我的运动量和心率也被证明是非常有用的。健身/锻炼 : 集跑步、力量训练和机动性(在较小程度上,还包括游泳和骑自行车)。几年前,我超重而且不爱运动。从那以后,我跑了多次全程和半程马拉松,感觉更好,也更有活力和创造力。我在 Apple Watch 上用 Strava 跟踪跑步,通过快速手动方法记录运动训练,并使用 Fitbod 等应用程序管理我的力量训练。健康 : 收集补充剂、HRV、疾病状态、血液测试生物标记、血压、体重、脂肪/身体成分。既然我已经恢复了相对较好的健康和体能,我就不会过多地关注我的健康状况。虽然我真的只服用维生素 D 和其他一些,但我确实使用药丸提醒(Round Health)来跟踪我的补充量。我喜欢用 HRV 4 训练来记录我的心脏状况、疾病、感觉等。我通过定期验血和血压检查来确保我的整体健康状况。此外,我记录我的体重,最近做了身体成分扫描,因为它可以帮助我评估我的力量和肌肉变化。时间 : 收集花在电脑和手机上的时间以及项目时间和日历。我一直是时间追踪的粉丝。没有比追踪时间更好的方法来了解你的时间去了哪里。我用 RescueTime 知道我在电脑上花了多少时间,我用 Toggl 跟踪我的项目时间,包括客户工作、学习和写作。去年我主动减少了我的屏幕时间,并计划继续关注苹果的屏幕时间。虽然它可能不被认为是正式的跟踪,但我发现管理你的日历提供了许多相同的好处,以及一种快速可视化一周时间块的方法。生产力 : 收集完成的任务、习惯、目标。我主要是“跟踪”我的任务和习惯,以获得更好的责任感,并专注于做对我来说重要的事情。与其说是跟踪,不如说是做重要的事情。我用 Todoist 来跟踪我的任务(和偶尔重复的习惯),用 Habitica 来跟踪我的习惯。我越来越相信目标跟踪的潜力,我已经建立了一个 AirTable 目标跟踪器来处理目标设定、目标跟踪和目标管理。所有这些都为我实现目标提供了巨大的支持和力量。财务/金钱 : 收集数字交易和每月财务状况。我现在已经在很大程度上实现了财务系统的自动化。我使用 Mint 对我的数字交易进行分类,每个月我都会做一次财务检查,记录我在不同账户中的金额。写作 : 收集打字字数,写笔记、草稿、发表博文的字数。关于我如何跟踪我的写作的完整解释超出了这篇文章,但总结一下,我跟踪:我现在用纯文本文件写作,所以我得到了关于我的笔记和草稿的每日变化的统计数据,我在某些应用程序中打字的字数,以及我如何创建我发布的博客。我结合使用了 Mac 版的 WordCounter 和我创建的 git 笔记和写作跟踪器。这加起来就是跟踪习惯行为(写作打字和时间)、过程(草稿和笔记)和结果(最终手稿)。我计划在接下来的一年里为更正式的数据分析和跟踪我的作品创建一些代码。知识 : *收集智能笔记、阅读的书籍和文章、播客和研究。*智能笔记是我新的个人知识管理系统的一部分。除了做更好的阅读笔记的目标之外,我的目标是记录我最终做了多少笔记。此外,我会继续我的传统,用 Goodreads 和 Kindle Highlights 记录我读了多少书,用 Instapaper 或 Pocket 记录我读的文章。对于播客跟踪,我继续使用 PodcastTracker.com,这是我几年前创建的。如果我有足够的时间和用户的兴趣,我计划在未来的一年里试着找时间完全重写 PodcastTracker。我也使用 Anki 进行抽认卡研究,那里有一些数据,但是还没有研究如何收集和分析。媒体消费和其他随机跟踪 : C 收集设备拍摄的照片、音乐、电视/电影、YouTube(时间和喜欢的视频)。我追踪的其他几个领域并不一定服务于某个特定的目的(至少现在还没有),但是因为它们很简单,给我的生活提供了更多的背景,我喜欢它们,所以我做了它们。
PhotoStats.io:例如,我在 2017 年末创建了一个名为 PhotoStats.io 的照片跟踪应用程序,开发仍在继续。PhotoStats 应用程序继续作为一种方式来了解你拍了多少照片,拍了什么。Last.fm:我被动地使用这项服务来跟踪我在 Spotify 上听的歌曲。Trakt.tv:我尝试手动将我观看的每个节目和电影登录到这个电视和电影服务中。YouTube:虽然我过去曾试图完全跟踪我在 YouTube 上观看的视频,但这太费力气了。所以我选择了一个更简单的方法来跟踪我的 YouTube 使用情况。我使用 IFTTT 集成来收集喜欢的视频,每周一次记录我在 YouTube 上的观看时间,以了解我在这项服务上花了多少时间。
今年,我跟踪了大约 20-25 个领域或指标。其中一些主要集中在确保我的健康、时间和生产力的背景统计上,而另一些则与我在写作、学习和科技产品方面试图实现的目标密切相关。我在反馈循环中使用这些重点领域来培养习惯并达到我的预期结果。
虽然很多关注点倾向于放在我们跟踪的东西上,包括可穿戴设备、验血、应用程序等,但我发现这种对个人数据收集的单一关注忽略了一个重要组成部分,即数据参与。基本上,如果你不定期处理你的跟踪数据,或者让你的数据提供反馈,那么它就不是很有用。因此,如果我必须给那些开始追踪自己生活的人提供一个建议的话:利用你的数据!
你不需要成为数据科学家来使用你的数据。你只需要一个活跃的好奇心和一些熟悉一些简单的工具。通常,查看电子表格应用程序中的数据就足够了。Python 的数据科学工具包、Google Data Studio 或 Tableau 等其他工具可以帮助您更进一步。
就我个人而言,我遵循几个习惯来确保我使用我跟踪的东西来更好地了解自己,并朝着我的目标做出改进。以下是我的数据参与的三个例子:
我坚信每周评论的力量。不管是每周一次还是每月一次,基本的想法是每周做一点组织清理和反思。想想过去的一周,计划下一周。对我来说,这是一段时间,你去“元”,并考虑什么工作和不工作在你的过程中。随着时间的推移,重复这个过程将帮助你更好地理解你的工作和生活系统,并实施改变来改善你的生活和工作。
就我个人而言,几年前我开始做每周回顾,它仍然是我最有用的生产或目标驱动的习惯之一。每周一次,我会留出大约 30 分钟来回顾过去的一周,检查关键领域,并为未来一周制定计划和目标。虽然这种形式已经经历了几次不同的迭代,但我坚持每周日都这样做,保持在 30 分钟以内,并确保至少有 10 分钟用于个人反思写作。
最初的灵感来自于把事情做好,现在我用一种数据驱动的方法来做我的每周回顾。首先,我使用 Google Form 聚集和记录几个数据点,并将其存储到 Google Sheet 中。我还收集了一些跟踪区域的截图。其次,我做了一些小的清理,并在电子表格中运行了一些简单的比较公式。第三,我用填充的数据点生成一个模板。第四,也是最后一点,我用这个模板写下我自己的想法,反思过去的一周和未来的一周。
如果我只能推荐一个每周一次的改变给某人尝试,那就是每周评论。入门很简单,但却能产生深远的影响。
无论是在公司还是仅仅为了个人需求,处理数据的最佳方式之一就是创建一个数据仪表板。
这是我的“生产力”仪表板的一个例子:
有很多工具可以用来创建个人数据仪表板。它看起来如何并不重要,因为它的主要目的是帮助您比较一段时间内的数据,并可视化各种趋势。像 Google Sheets 或 excel 这样的电子表格应用程序也可以用来可视化您的跟踪数据,而 Tableau 或 Google Data Studio 则是稍微专业一些的选项,它们可以提供一种与存储数据同步的方式。
我越来越喜欢使用 IFTTT 或 Zapier 将我的数据自动收集到 Google Sheets 中。然后,我使用一些简单的公式函数将数据处理成额外的时间维度,如日期、月、周和年,并处理成有用的指标。最后,我将这些数据链接到 Google Data Studio 来创建交互式数据可视化。
我花了几个小时构建我当前的仪表板,并随着我的目标和重点的变化,在这里和那里添加了一些调整。不可否认,使用 Google Data Studio 有一个轻微的学习曲线,但是它不应该花费超过一两个下午的时间来启动和运行。
如果你有兴趣学习如何创建你的个人数据仪表板,我目前正在准备一门关于谷歌数据工作室个人数据分析和量化自我的课程,将于 2019 年初发布。注册我的时事通讯以获得早期访问和其他好处。
Goal Tracker, built with AirTable
目标是一个复杂的主题。思考目标和目标的内容比思考能积极支持(或消极破坏)我们实现目标的系统有趣得多。我最近开始更有意识地设定和跟踪我的目标,尤其是在对目标科学做了更多研究之后。
最终,使用目标跟踪的关键是在评估目标时使用数据和数据分析。我在一个名为 AirTable 的电子表格应用程序中保存了一个很大的目标列表。然后,我对这些目标进行分类、排序和安排。
例如,我遵循了巴菲特关于目标优先化的建议,并制定了 5 个长期目标。我额外的子目标或激励是短期目标,旨在实现那些大目标,比如财务自由或跑一场 4 小时以内的马拉松。鉴于同时致力于多个目标有多难,我按月或季度安排这些子目标。我发现这是一个很好的平衡,它帮助我将目标视为一个过程,而不是一个目标。具体来说,我能够在一个地方完成目标设定、目标跟踪和目标管理。
这被证明是相对可持续的,我使用我现有的跟踪数据和一点反思来看看我做得如何,并找出需要修复或优化的地方。目标是一个过程,跟踪帮助我优化这个过程。
追踪和个人数据仍然是一个复杂和有争议的话题,我预计在未来几年内仍将如此。它仍然是一个如此热门的话题的一个重要原因是,所有这些数据的大部分利益都流向了少数几家技术公司。通过收集用户数据,谷歌、亚马逊、脸书等公司能够高度准确地知道他们的用户是谁,以及如何操纵他们。这对于数据的使用来说是不公平的,因为作为数据的创造者和所有者,我们也应该从中受益。
我的个人使命之一是帮助人们更好地理解、收集和使用他们的个人数据。在这篇文章中,我分享了为什么我认为跟踪数据是有益的,以及它如何能够促进更好的自我理解和改进我们如何改进。我还分享了一份相当长的清单,上面列有我在未来一年要追踪的事情。我不期望也不建议大多数人跟踪所有这些领域。一个原因是,设置需要一些时间,但主要是因为你跟踪的内容应该与你想做的事情一致。
2019 年你应该追踪什么?
我认为每个人都应该跟踪四个关键领域:健康、金钱、时间和项目(例如,任务、习惯和目标)。
1。你的钱或财务
除非你有幸生来富有,否则我相信大多数人都会从某种程度的财务知识、计划和设定目标中受益。金钱是最容易也是最简单的追踪方式之一。大多数银行和货币交易都是数字化的,这意味着很容易获得你的数据。财富跟踪也是一个领域,你可以很容易地自动化许多过程,从交易分类到投资扣除。像 Mint、个人资本、Spendee 或者你需要一个预算这样的工具都是很好的开始方式。就跟踪什么和如何跟踪而言,我建议跟踪三个方面:你的交易、你的财务检查(定期账户余额)和你的财务目标。
2。你的时间(或生产力)
时间也相对容易追踪。您可以使用被动方法或手动记录来记录您的时间使用情况。手动和被动时间跟踪以及我个人使用的混合方法都有优点,在混合方法中,你被动跟踪设备使用情况,手动跟踪项目时间。为了开始追踪时间,checkout RescueTime 可以让你追踪你的电脑时间,并分类哪些网站或应用程序是有效率的,哪些是令人分心的。在记录你的电脑使用情况一段时间后,检查你的总体数字,决定你的分配是否是你想要的,并实施改变以减少或增加某些领域的时间。
如果你更关心手机的使用,安卓和苹果都提供了应用程序来记录你的屏幕时间,并知道你在设备上花了多少时间。两者都允许你设置通知和限制。
可以说最难也是最强大的时间追踪方法是手动追踪。就我个人而言,我使用 Toggl 来记录我的时间,但大多数计时器工具也能工作。从追踪一个单一的关键领域开始,比如写作或学习,然后考虑从那里扩展。如果你想确保你为一个目标投入了时间,那就记录下来。
3。你的生产活动=项目、任务、习惯和目标
任何超过一步的都是项目。在“生产活动”的总称下,我包括项目、目标、习惯和任务。这是我提供一个关于跟踪和更好地管理任何多步骤计划或活动的总括短语的方式。关于生产力以及如何最好地管理生产力的书籍和文章不计其数。我在这里的主要观点是,通过跟踪,你可以创建一个“记分卡”,允许你跟踪你完成的常规步骤和总体成就。例如,你可以使用像 Todoist 这样的任务追踪器来了解你多久完成一次某个项目的任务,或者你可以使用像 Habitica 这样的习惯追踪器来了解你多久完成一个新习惯以及你目前的情况。一旦你开始记录你完成的任务,你就可以开始游戏化,确保你一天完成这么多,多少高优先级和低优先级的任务。
4。您的健康
在这四个项目中,健康是最难确定如何最好地衡量和量化的项目之一。在跟踪健康状况时,一个可能有用的关键区别是您是否正在测量您的健康状况(如验血、心率等)。)或跟踪某些健康承诺(如跑步、喝水、服用维生素等)。你应该致力于跟踪你的健康状况和你的健康习惯。
说到健康状况,我建议定期检测你的血液生物标志物,如果你已经超过 35 岁,并且从未定期检查过,那就检测你的血压。两者都将提供一个良好的基线。如果你超重了,你应该去称一称体重并记录下来。就我个人而言,我是 HRV 的粉丝,这是一种测量你长期压力和自动神经系统的方法。我习惯于查看自己是否训练过度、压力过大、过度旅行等,并定期调整以获得更多休息。
要记住的是,“健康”甚至“生病”都不是简单的二进制。事实上,有许多参数(如血液生物标志物)可以对从患病到正常到最佳的范围和尺度进行评分,甚至这些范围也有些主观。也就是说,虽然你可能决定自己的健康数据,但当谈到健康和健康时,我推荐并使用一些公认的健康指标。关键是要持续跟踪他们,并使用健康数据作为反馈环,以了解生活方式的改变是否改善了你的健康。
说到跟踪你的健康承诺,有几乎无数种方法可以做到这一点。如果你只是需要多运动,穿戴式或计步器计步器就可以了。用几天时间来获得一个基线,然后看到一个需要改进的目标。如果跑步、游泳或其他活动是你的事情,用 Strava 或其他应用程序跟踪它。最终,你用什么并不重要,只是试着找到一种简单的方法来了解你运动的频率和你在做什么。就我个人而言,我发现最简单的方法是使用可穿戴设备。我使用苹果手表,但我也是 Fitbit、MiBand、Garmin 和 Oura Ring 的粉丝。
最后,如果你有兴趣收集你的跟踪数据,并做一些数据分析来处理这些数据,请查看我在 github.com 的开源项目 QS 账本。这是一个 Python Jupyter 笔记本的集合,引导您收集数据和数据处理,进行全面的数据分析,并创建您自己的数据可视化。
2019 年你会追踪什么?我错过了什么,你认为我应该在来年尝试?
【www.markwk.com】最初发表于。
原文:https://towardsdatascience.com/what-skills-you-need-for-data-science-d1963064397d?source=collection_archive---------31-----------------------
成为一名数据科学家的很大一部分是知道如何为编码建立一个良好的环境,当你刚刚开始使用一种新的编程语言时,这可能是一个挑战。
Become a great Data Scientist
以下是你在这个初始阶段想要学习的一些东西:
Python 编码能力。在大多数数据科学环境中,编码经验将是一项基本技能。很好地理解编程需要使用什么工具和库。这里有一些你可能会用到的东西:
让我们来分解一下:
工具—您需要目前在数据科学中常用的好的 Python 工具。这些工具包括 pandas、matplotlib、numpy、Scipy、SQLite 和 r。如果您想做数据科学看起来很酷的事情,您需要熟练使用大多数 Python 工具。
库——随着您开始擅长 Python 编程,您最终也需要知道如何使用一些开源 Python 工具。这些包括那些与 NumPy 和 SciPy 相关的,需要 NumPy 和 SciPy 支持的内置 Python 库,等等。您需要知道如何快速轻松地安装这些库,以及它们与机器和网络堆栈交互的选项。
网络堆栈—需要这些工具中的一些来与机器和网络堆栈进行通信。这里有一些你想了解的话题:SSH 和 FTPS,MySQL。
这只是简单概述了开始学习 Python 和数据科学需要了解的内容。
即使在您精通 Python 并适应使用所有计算工具之后,如果您打算在工作站上运行代码,您仍然希望密切关注自己工作站的硬件。如果硬件不提供这些组件,其中一些组件将会损坏。如果您当前的计算机出现故障,其他人可能会要求您购买新的计算机,并且由于计算机的年龄,其他组件也会有特殊的要求。这将是你需要学习和跟上潮流的另一个领域,在这个过程中你会有一些有趣的项目。
自从“量化自我”出现以来,我们看到许多人希望他们拥有那些“生活方式”的计算机科学技能。进入应用计算机科学领域的最佳途径是什么?
根据我的经验,从一个数据科学爱好者这样的初学者成为一名数据科学家是非常困难的。这份工作可能是数据分析师,但数据仍然需要大量的软件和分析。我也看到了许多伟大的硕士学位。帮助你进入数据科学领域的一些特征是什么?
数据科学家的技能非常专业。数据科学家需要:
分析数据将其分解成组件(或数据集)理解它们所代表的数据系列建立工具来做到这一点计算统计模型分析并构建算法来分析结果
我不想在这篇博文中有点跑题。我认为这是最重要的第一步,但如果不认真对待,人们通常会脱轨进入其他领域。
一个很好的第一步是阅读博士和硕士水平的教程。了解每个步骤和涉及的工具。然后多看例子,自己尝试一下。
这是最关键的属性。如果你的技能不符合你所进入的行业的要求,你将只是一个没有前途的“数据分析师”。这意味着学习能为你的下一份工作、人际交往技能或一次经历增加价值的东西。
另一方面,如果你真的不在乎,你就什么也学不到。
祝你好运!
Data Science Job
最后,如果你想了解成为一名数据科学家意味着什么,那么看看我的书数据科学工作:如何成为一名数据科学家,它将指导你完成这个过程。
如果你在找一份书单,看看下面这些文字:
2020 年你应该读的数据科学书籍2020 年你应该读的人工智能书籍2020 年你应该读的创业书籍
原文:https://towardsdatascience.com/what-the-heck-is-word-embedding-b30f67f01c81?source=collection_archive---------8-----------------------
Photo by Dmitry Ratushny on Unsplash
Word Embedding = >学习将词汇表中的一组单词或短语映射到数值向量的模型的统称。
神经网络被设计成从数字数据中学习。
单词嵌入实际上就是提高网络从文本数据中学习的能力。通过将数据表示为低维向量。这些向量被称为嵌入。
这种技术用于降低文本数据的维度,但这些模型也可以了解词汇表中单词的一些有趣特征。
处理文本数据中单词的一般方法是对文本进行一次性编码。你的文本词汇中会有成千上万个独特的单词。用这样的一次性编码向量来计算这些单词将是非常低效的,因为一次性编码向量中的大多数值将是 0。因此,将在一个热点矢量和第一个隐藏层之间发生的矩阵计算将导致具有大部分 0 值的输出
我们使用嵌入来解决这个问题,大大提高了我们网络的效率。嵌入就像一个完全连接的层。我们将这一层称为嵌入层,将权重称为嵌入权重。
现在,我们直接从嵌入权重矩阵中获取值,而不是在输入和隐藏层之间进行矩阵乘法。我们可以这样做,因为独热向量与权重矩阵的乘法返回对应于“1”输入单元的索引的矩阵行
因此,我们使用这个权重矩阵作为查找表。我们将单词编码为整数,例如,“酷”编码为 512,“热”编码为 764。然后,为了得到“酷”的隐藏层输出值,我们只需要在权重矩阵中查找第 512 行。这个过程被称为嵌入查找。隐藏层输出的维数就是嵌入维数
重申:-
a)嵌入层只是一个隐藏层
b)查找表只是一个嵌入权重矩阵
c)查找只是矩阵乘法的捷径
d)查找表就像任何权重矩阵一样被训练
目前使用的流行的现成单词嵌入模型:
Word2Vec(谷歌)手套(斯坦福)快速文本(脸书)
Word2Vec :
该模型由谷歌提供,并在谷歌新闻数据上进行训练。该模型有 300 个维度,并根据谷歌新闻数据中的 300 万个词进行训练。
团队使用跳格法和负抽样来建立这个模型。2013 年上映。
手套 :
单词表示的全局向量(GloVe)由斯坦福大学提供。他们基于 2642840 亿个令牌提供了从 25、50、100、200 到 300 个维度的各种模型
团队使用词到词共现来建立这个模型。换句话说,如果两个词多次共同出现,这意味着它们在语言或语义上有一些相似之处。
fast text:
这个模型是由脸书开发的。他们提供了 3 个模型,每个模型有 300 个维度。
fastText 能够实现单词表示和句子分类的良好性能,因为它们利用了字符级表示。
除了单词本身之外,每个单词都被表示为一包 n 元字符。例如,对于单词,当 n=3 时,字符 n-grams 的快速文本表示是。添加了和作为边界符号,将 n-grams 与单词本身分开。
如果你喜欢这个,请在 medium 上关注我。你的掌声对你写更多、写得更好是一个巨大的鼓励和动力。有兴趣合作吗?我们在 Linkedin 上连线吧。请随意写下您的想法/建议/反馈。
原文:https://towardsdatascience.com/what-the-numbers-tell-us-about-a-kawhi-effect-2f48fbdb7a1?source=collection_archive---------20-----------------------
首先他拿下了国王,结束了迈阿密热火王朝。然后他在海湾结束了金州勇士王朝。我们通过数字来解释弑君者和王朝征服者科怀·伦纳德的伟大。
7 月 5 日,洛杉矶市遭到地震袭击。然而,地震的余震可能会造成比地震本身更大的震动。全联盟的篮球迷们热切期待的答案终于来了。真正值得一年的等待归结为媒体周期中一周的猜测。"科怀会在世界上的哪个地方演出?"主宰了体育新闻圈。所有其他主要的自由球员都选择了他们想要的比赛目的地。7 月 5 日,科怀·伦纳德给洛杉机带来了一场地震——只不过他要加盟的是快船,而不是湖人。伴随科怀地震而来的是余震。
“2 号”,斯基普·贝勒斯讨厌地称呼科怀——用他的球衣号码称呼他,因为科怀离开斯基普的圣安东尼奥马刺队后留下了酸味——采取了行动。他不仅震惊了篮球世界,选择了湖人的同城对手,洛杉矶快船的“小弟”,他还成功地将快船交易到保罗·乔治。
对于 7 月初的自由球员事件,不能低估经营者科怀的精明程度。体育界确信他会去湖人…然后是猛龙…然后又是湖人…“96.5%的可能性他会来这里…预定吧!”香农·夏普在体育辩论节目上说的是无可争议的,试图将他的愿望变成现实,以便科怀可以与勒布朗·詹姆斯和安东尼·戴维斯合作。科怀·伦纳德以我们从未见过的方式驾驭了体育媒体世界。他不仅让每个人都相信他会和湖人签约,他还成功地让快船管理层交易了一个即将结束 MVP 赛季的保罗·乔治,他去年刚刚和俄克拉荷马雷霆队签订了一份最大合同。
讲故事讲够了。让我们直接进入数字。科怀和保罗·乔治都是联盟中的超级巨星。你可以对勇士受伤说任何你想说的话,但科怀带领多伦多猛龙队获得了他们的第一个 NBA 总冠军。尽管达米恩·利拉德向雷霆和他们的球队挥手告别,但保罗·乔治在 NBA 常规赛 MVP 投票中排名第三。我们将分析这两个玩家的价值观以及它对未来的意义。不过,首先,让我们想想“科怀效应”是否存在,以及迄今为止他的影响有多大。
没有关于科怀价值的讨论就没有德玛尔·德罗赞,这个被猛龙交易到马刺的球员最终被租借给科怀·伦纳德一年。奥格·阿努诺比—德玛尔·德罗赞—赛尔吉·伊巴卡—凯尔·洛瑞—约纳斯·瓦兰丘纳斯的首发阵容一起打了 52 场比赛,是猛龙队 2017-18 赛季所有首发阵容中最多的,36-16,赢得了 69.2%的比赛。事实证明,凯尔·洛瑞的 VORP 几乎是德玛尔·德罗赞的两倍,分别是 5.0 和 2.6。像科怀这种水平的超级巨星对整个 VORP 的贡献要大得多,对吗?不完全是。
丹尼·格伦-赛尔吉·伊巴卡-科怀·伦纳德-凯尔·洛瑞-帕斯卡尔·西亚卡姆的首发阵容一起打了 26 场比赛,是 2018-19 赛季猛龙队首发阵容中最多的。科怀·伦纳德贡献了总 VORP 的 25.9%,仅仅比一个赛季前德罗赞贡献的总 VORP 多 2.3%。虽然凯尔·洛瑞在 VORP 方面后退了一步,但这可以归因于几件事情。1)弗雷德·范弗利特有一个职业赛季,所以凯尔·洛瑞的价值没有他的替代者高是有道理的。2)帕斯卡尔·西亚卡姆职业生涯的一年,赢得了进步最多的球员。科怀的 VORP 为 3.6,西亚卡姆的 VORP 为 3.5。哦,对了,我没有提到这个首发阵容的记录,对吗?18 比 8,胜率——你猜对了——69.2%。和上个赛季打得最多的猛龙阵容一样的胜率。
到现在为止,我肯定你已经厌倦了我一遍又一遍地谈论同样的事情。我总是“VORP 这个,VORP 那个”,不是吗?在有人直截了当地对我说之前,我会给你们一些新的统计数据和指标,供我们评估科怀的效果时考虑。真正伟大的球员是那些在季后赛中完成任务的球员——把硬件带回家。科怀·伦纳德做了德玛尔·德罗赞不幸从未能为多伦多做的事——赢得冠军。科怀总是被吹捧为他的防守能力,所以这绝对是我们在思考“科怀效应”时应该指出的事情。
为了描绘出基本统计数据如何成为一个球员价值和效果的糟糕指标,让我们先来看看基本统计数据的直接比较。
三个主要统计类别的视力测试无疑对科怀有利。科怀在季后赛(超过 24 场)的 30.5 PPG 远胜德罗赞的 22.7 PPG。平均助攻数也差不多。科怀场均篮板数是德罗赞场均 3.6 个篮板的两倍,场均 9.1 个篮板。就像科怀说的“董事会成员得到了报酬”,这个夏天他确实得到了报酬。
由于视力测试有利于基本统计,让我们快速地将这个概念翻倍。德罗赞的投篮命中率为 43.7%,科怀的投篮命中率为 49%。用 3 分镜头可以看到更大的画面。德罗赞的三分球命中率只有 28.6%,而科怀的三分球命中率接近 38%。很明显,科怀拥有强大的进攻能力,带领猛龙队通过季后赛,获得了他们的第一个也是唯一一个 NBA 总冠军。
在查看这些高级指标之前,先快速概括一下它们的含义:
超过替补球员的价值(VORP)——某个球员给一个假设的替补球员带来的估计价值。所述替补球员通常不是常规轮换球员。计算 VORP 的数学方程式是[(方框加/减)-(-2.0)](上场时间的百分比)(团队比赛/82)。返回的值是在整个赛季中,玩家在替换过程中每 100 个团队财产所产生的点数。
进攻获胜份额(OWS)——一名球员通过进攻贡献的估计获胜次数。
防守获胜份额(DWS)——一名球员通过防守贡献的估计获胜次数。
获胜份额(WS)——玩家贡献的估计获胜次数,是 OWS 和 DWS 的总和。
(来自 Basketball-Reference.com 的高级指标解释)
现在是有趣的部分:高级指标。毫无疑问,德罗赞的先进指标显示他在季后赛中表现糟糕。我知道我说过我不会谈论 VORP,但我没有选择把它包括在内。说真的,我别无选择。如果我把战争(胜于替补,用 VORP * 2.7 计算)算进去,德罗赞的情况会更糟。德马尔的 VORP 为-0.2。其他的统计,OWS(进攻赢球份额)、DWS(防守赢球份额)和 WS(赢球份额)都支持科怀在季后赛的伟大。科怀作为防守猛兽的名声再次保持,DWS 1.7,相比之下德罗赞的 *-0.2。*总体而言,与德罗赞的 0.2 Win 股份相比,科怀贡献了 4.9 Win 股份。简单地说,与德罗赞相比,科怀在季后赛中一直表现出色,而德罗赞在季后赛中就是做不到这一点——科怀比德罗赞多打了 14 场比赛。
所以很明显,在季后赛到来的时候,绝对有一个“科怀效应”,马萨伊·乌吉里(猛龙队总经理)最终做出了一个正确的决定,租借科怀·伦纳德一年。尽管德玛尔,我们仍然爱你。
从统计的角度来看,预测洛杉矶快船队在即将到来的 2019-2020 赛季的成功有点模糊。他们打了 23 场比赛的首发阵容是艾弗里·布拉德利-达尼罗·加里纳利-沙伊-吉尔吉斯-亚历山大(Shai 马辛·戈塔特-托拜厄斯·哈里斯。该阵容以 39.1%的胜率取得了 9 胜 14 负的战绩。更重要的统计数据?这些球员都不在快船的名单上了。
在 17 场比赛中出场次数第二多的首发阵容是帕特里克·贝弗利-达尼罗·加里纳利-SGA-兰德里·沙梅特-伊维察·祖巴茨。这个首发阵容是绝对的热,烧焦他们的对手,去 15-2,在一个高达 88.2%的胜率。现在,这是一个我们实际上可以做一些分析的阵容。
如前所述,达尼罗·加里纳利和 SGA 已经不在队中了,因为他们是保罗·乔治大交易的一部分。让我们将 George 和 Leonard 分别插入他们的位置,并比较一下这对高级度量意味着什么。
这张图表没有留下多少解释的余地。新的快船将会是致命的。2018-19 年版本的 Clips 是一支有趣的球队,超出了预期,并从金州勇士队(当时在甲骨文球馆)赢了两场比赛,预计 2019-20 年的快船看起来准备好将其他球队赶出体育馆。
哦,对了,我有没有提到谁是快船的替补?卢·威廉姆斯和蒙特雷兹·哈雷尔。特雷兹场均 16.6 PPG 和 6.5 RPG,同时带来了很多勇气和强度,而斯威特·卢将他一如既往的圆滑带到了场均 20 PPG 和 5.4 APG 的比赛中——在需要的时候也充当了夹子的终结者。只是为了好玩,让我们看看与前面提到的首发阵容相比,关键时刻的阵容可能会是什么样子。
好了,你有它的乡亲。它是一个包裹。快船在 sev-开玩笑的。也许我们可以说,如果不是一个乐高 at 詹姆斯在同一栋楼里为对手球队打球。为了更深入地了解这一点,请继续关注我的下一个故事,“湖畔秀”。
我想我会为那些对理解代码实现感兴趣的人提供这一部分。对于那些不感兴趣的人,恭喜你,你可以停止阅读了!
所有代码都是用 Python 写的。我上次提到过,我想从 Basketball-Reference.com 下载 CSV(逗号分隔值)形式的统计数据,并使用 Pandas 模块将 CSV 的内容存储在 Pandas Dataframe 对象中。我就是这么做的。实际上,做起来真的很容易。大部分值的解析和提取都可以在这么多代码中完成:
旁注—“#”是在 Python 中开始注释的方式。我在代码中添加了一些注释来解释部分代码。
说真的,就是这样。我肯定还有其他人可以做得更好,但这对我很有效。在这之后,我只是在另一个 python 文件中引用了这两个函数,我的图形就是在这个文件中生成的。我想知道科怀每场比赛得分的一个例子:
一旦我得到了我想要的统计数据,我就把它们包装在一个列表中,作为参数传递给另一个函数,并使用 numpy 和 matplotlib 模块相应地绘制图表。这里有一个例子,我用来比较德马尔·德罗赞和科怀·伦纳德的数据:
很容易编写代码,并且摆脱了在我们寻找的值中进行硬编码的工作。
希望有所帮助!
下一次,我将尝试使用 plotly 模块代替 matplotlib 进行数据可视化。生成的图形更清晰、更全面,总体来说,plotly 带来了更多的功能。
感谢阅读!
来源
图像:
https://www . Reddit . com/r/LAClippers/comments/ca 8 xrp/made _ a _ kaw hi _ pg _ jersey swap _ and _ I _ thought _ you _ guys/【https://www.youtube.com/watch?v=-X7ozPnYlcg
统计数据:
Basketball-Reference.com
原文:https://towardsdatascience.com/what-to-avoid-common-mistakes-on-data-science-applications-a19696752890?source=collection_archive---------23-----------------------
Photo by Clem Onojeghuo on Unsplash
数据科学和机器学习职业仍然相对较新,我之前写过一篇关于数据科学家在工作中经常遇到的问题的文章,因为一些公司不知道如何最大限度地利用它们。
有趣的是,在接受了许多技术采访后,我发现许多潜在的数据科学家不知道如何很好地展示自己。对于那些几乎没有行业经验的人来说尤其如此(数据科学硕士毕业生等)。).
这是一个巨大的耻辱,因为我(个人)真诚地希望每个人都尽最大努力,得到他们想要的工作,但当我找不到强有力的理由让他们进入招聘流程的下一个阶段时,我确实感觉很糟糕。我想这也适用于许多处于我这种位置的人。他们希望你成功,但在我们投入时间进行面试之前,我们需要知道你能成功。奇怪的是,他们对企业来说并不是免费的,如果你考虑到你将会见 2-3 个人,每个人一个小时,这可能会很快增加生产力的损失。
为了准确指出这个成本,我们可以做一个数量级的估计。高级数据科学家的年薪为 60,805(31/小时),而数据科学家的年薪一般为 46,820(24/小时)。如果你认为高级数据科学家可能会与你进行总计一个小时的电话交谈(或向招聘人员介绍你),如果你通过了,那么你将与两个人进行一个小时的面试(一名团队数据科学家进行技术面试,高级数据科学家进行一些软技能和适应性面试),然后是 30 分钟的关于面试结果的私人小组讨论。然后他们在你身上投资了 4 个小时或大约 114 英镑的工资成本。然而,这是最低成本,因为你需要考虑额外的时间或其他因素,如人力资源人员等。
所以,面试是衡量你的一项昂贵的投资,让每个人都尽自己最大的努力是很重要的。
根据我自己关于生存偏差的经验,我没有列出一个成功的申请人做对了什么,而是列出了那些在这个过程中从未走得很远的人的错误。我希望这能帮助你避免我在办公桌上收到的一半以上的申请中常见的错误。
我将详细阐述每一个,但总的清单是:
不要说谎保持它的相关性&切题只写下可辩护的材料
Photo by Joao Tzanno on Unsplash
注:这些都是我自己的亲身经历和看法结合和别人聊自己的面试经历。不同的人和/或公司可能有不同的经历/观点。
这似乎是显而易见的,但我确实看到了这一点,这是一个瞬间的“不不”。幸运的是,我很少看到公然撒谎,但我见过这样的情况,有人声称自己是一个小组的负责人,却发现面试官实际上认识这个小组的负责人,并在这次中期面试中与他们对质。
信任是一种很好的商品,因为在代表公司时,你会被期望传达一种正直和专业的形象。因此,你不想做任何让他们怀疑你能做到的事情。所以,我在这里所说的“不要撒谎”是指试图扭曲或掩饰你对自己的介绍,以至于你被认为是不可信的。
这种“真理延伸”包括以下内容:
把别人的功劳据为己有暗示你参加的 Kaggle / MOOC 是一份真正的工作放下不可能发生的事情
在 MOOC 或其他课程被冒充为原创作品的地方,人们常常会认为这是一个真正的行业数据科学项目。与顶点课程(也就是说,你只获得数据和很少的解决方案指导)不同,这些课程是你按照结构化的课程材料学习的,解决方案是现成的。
以这种方式呈现它们的缺陷是,任何合理规模的数据科学团队都可能有人已经采用了它,因此会注意到您所谈论的内容的相似性。他们通常可以剔除这些,虽然不是完全的不,但这可能会被模糊地看待,这取决于失礼的程度。对于较小的团队来说也是如此,因为他们通常仍然拥有经验丰富的数据科学家的核心(其中一些人可能已经编写了您引用的课程)。
Photo by Austin Distel on Unsplash
不要误解我的意思,我希望任何人都能够展示出自己最好的、最令人印象深刻的一面(例如抬高自己),展示自信是好的,但你也可能做得太过了。
如果你在“工作/行业/职业经历”一栏中列出 Kaggle、Coursera 或 edX 课程,你会感到惊讶。虽然所有这些都是很好的继续教育和职业发展,但它们很少能与付费客户或老板给你一个真正的问题来解决的独特挑战相比。后者的作品更令人印象深刻,但前者也不错。把它放在正确的地方。
第三点中最常见的地方(不可能发生的事情)是缺乏基本事实核查的断言。也就是说,如果你声称拥有 10 年的 TensorFlow 经验(2015 年发布的),不要指望它会被接受。此外,如果你说你非常注意细节,确保你没有明显的格式错误。
任何这些说法都可能被指出来,你会感到尴尬。或者你可以争辩说你是对的(正如已经发生的那样),但是如果你不能证明这一点,那么这将对你不利(见下面第三点)。
Photo by You X Ventures on Unsplash
想象一下,你刚刚读了一本书,尽管你是在书店的那一区买的,但它从来没有提到过与科幻小说有关的任何事情。你一直读到最后,希望它会突然出现。
现在想象一下,从后往前看一份简历,读到最后发现它一次都没有提到数据科学或机器学习。你怎么判断他们的技术?
如果你想要一份数据科学的工作,你需要提到它并详述细节。我见过很多简历上写了很多他们做过的事情,但是没有提到机器学习算法、统计学甚至 python/R 等等。
要被录用,面试官需要看到你对主题领域有所了解,他们需要足够的细节来了解你的经验水平,这样你才能得到合适的面试。例如,如果您从未使用过 SQL,就没有必要对您进行测试。相反,他们可能会在你提到的一个更强的领域测试你(建立良好的数据科学能力需要很多种方法)。
如果你说“我用了机器学习”告诉我更多。让它成为一个简短但有趣的故事。例如:
“我们利用机器学习解决方案来检测排水管泄漏,首先对傅立叶变换的声音轮廓应用 PCA。使用 K-最近邻进行最终分类
听起来比:
“我们遇到了下水道漏水的问题。使用机器学习,我们能够检测到它们。”
上面的解决方案有点长,但是你提到的两件事会引起我的兴趣,那就是“你是如何做到的”和“领域知识”。它有助于将你与使用现成程序的人区分开来,前者知道它是如何工作的,可以设计定制的解决方案,而后者只需点击一下就忘记了(例如,它运行多个模型,并在没有专家监督的情况下选择最佳方案)。
关于相关性,确保与数据科学家不相关的领域在你的简历中更靠后。我经常被教导为我申请的每一份工作量身定制我的简历,这将需要把更相关的部分上移,这样它们会被首先看到。如果一个潜在的老板一天看很多简历,他们会缺乏注意力,你需要尽早抓住他们。这也表明你拥有数据科学的一项关键技能,即清晰快速地传达你的发现的关键点。
如果你有一封求职信或声明,让它相关。他们可能只需要知道你有 12 个阿姨,并且已经两年没吃肉了,这是你面对面面试开始时破冰对话的一部分。
Photo by The New York Public Library on Unsplash
随着数据科学的巨大爆炸,人们很容易记下所有你能记住的流行语,并希望它们能抓住某人的眼球。
由于这是一个如此多样化的领域,放下很多东西会撒下一张大网,但会引起人们的惊讶,你是否真的是数据科学的神奇独角兽。如果你不是,那么当被问到时你可能会挣扎,可能会疏远面试官(还记得夸大事实吗?).
这是因为面试官有一个习惯,一旦他们发现你知识上的一个漏洞,他们就会咬破它,看看这个漏洞有多深。这意味着你可能会在面试中花 15-20 分钟被问到你所知甚少的问题,变得非常沮丧,感到尴尬,而你非常擅长的领域永远也不会出现。
避免这种情况的方法是,只在你的简历上写一些你觉得如果被问到你可以为自己辩护的东西。
我确实遇到过这样的情况,在一次技术面试中,有人很难回答我设置的一个 SQL 问题。然而,当他们说这不是他们通常做的事情时,我已经指出了他们写的应用程序的一部分。这对每个人来说都很尴尬,而且会让人对你简历中其他可能很可靠的地方产生怀疑。
面试是可怕的,信不信由你,面试官也担心事情会如何发展(至少我是这样)。他们希望你成功,尽你所能成为最好的数据科学家,因为没有人愿意为那些显然不能胜任工作的人参加面试。
如果你得到了一个你明确展示过的面试机会,你就有足够的承诺来承担安排面试的成本。
为了帮助你做到最好,这些建议可以帮助你:
只写下你能在面试中辩护的内容确保你的简历没有语法和格式错误提及数据科学,并提供足够的细节,让人们知道你做了什么不要写战争与和平。你希望最好的部分清晰且容易找到,而不是被淹没把相关的部分移到简历的顶部,这样它会首先被看到,并在招聘人员阅读其他部分时记住一定要包括关于你自己的细节,但要放在正确的部分(例如,知道你划船是好的,会让你更有个性,但如果你申请的不是与船相关的工作,也许应该放在最后)
总之,如果你能以一种易于理解的形式写下你有多了不起,你在这个领域有什么经验,那么你就证明了你能很好地传达关键信息!
另外,不要害怕寻求反馈。你可能收不到任何东西,也不要因此而沮丧,但你得到的任何东西都是宝贵的,可以帮助你找出薄弱环节。
原文:https://towardsdatascience.com/what-to-do-when-the-model-doesnt-work-5ea09ad6d423?source=collection_archive---------22-----------------------
Photo by JESHOOTS.COM on Unsplash
你的团队已经工作了几个月来收集数据,建立预测模型,创建用户界面,并与一些早期客户一起部署新的机器学习产品。但是,你现在听到的不是庆祝胜利,而是客户经理对那些早期采用者客户的抱怨,他们对他们看到的预测准确性不满意,并开始认为“模型不起作用”。你现在做什么?
这是我们在 Pattern Labs 与在新产品中实现机器学习的组织合作时经常看到的情况。这不是一个容易迅速解决的问题。现实世界的机器学习模型的性能受大量因素的影响,其中一些因素可能在您的控制之下,而另一些因素可能不在您的控制之下。最重要的是,当试图对现实世界的现象进行建模时,每个建模问题都有内在的噪声/随机性混入信号中,这使得人们很难理解预测模型真正能够达到的准确度。再加上客户对模型准确性的期望,突然之间,您的数据科学团队陷入了一个棘手的境地,甚至想不出从哪里开始解决问题。
1)理解要解决的问题
首先要确保团队对他们试图用模型解决的客户问题有很好的理解。令人惊讶的是,数据科学团队对成功定义的理解经常与客户的标准不同。我们最近与一家公司合作,该公司试图预测恶劣天气对公共事业运营的影响。技术团队正绞尽脑汁试图提高他们模型的 MAPE 分数。当我们深入研究时,发现 MAPE 根本不是正确的衡量标准,他们努力追求的目标是他们自己设定的(相对于倾听客户的声音)。客户实际上最关心的是我们将风暴按照他们为其操作程序定义的 1-5 级影响严重性范围进行分类的能力。
确保数据科学团队对问题有透彻的了解,最好是从客户那里听到第一手信息,这对于新计划的成功至关重要。如果您的团队陷入上述模型“不起作用”的情况,第一步是返回并确保您已经正确定义了问题,并了解您的客户如何衡量成功。
2)数据是否正确、完整?
下一步是回去查看您的团队收集的输入数据。在处理复杂的现实世界模型时,模型性能不足的主要原因通常是由于输入数据集和要素的问题,而不是模型本身的问题。特别是如果您正在运行多种类型的模型(我们建议您尽可能这样做)并获得相似的结果,这通常表明您的输入数据集正在阻碍您的发展。
这一步的关键部分是确保你尽可能多地收集相关数据。现实世界中的模式往往有一些并不总是直观或明显的促成因素,因此您可以收集的数据和特征越多越好。有许多技术可供您选择来缩减特征数据,以在最相关的特征上构建模型,我们将在下一步中对此进行讨论。但对于这一步,重点是重新审视你的假设,即哪些输入驱动你试图建模的输出,并在需要时回头获取额外的数据。例如,在尝试对现实世界的现象进行建模时,通常需要考虑一些不明显的因素,因为它们会影响趋势,尤其是异常情况,如季节性、天气、日历事件,甚至地缘政治事件。
其次,应该进行一些简单的 QA 检查,以确保输入数据得到正确的映射和处理。我们最近与一位在模型性能方面遇到困难的客户合作,最终发现问题根本不在模型上-该客户错误地处理了一些地理定位的要素数据,这使得他们运行的模型无法识别正确的模式。
CRISP-DM Process. Source: https://en.wikipedia.org/wiki/Cross-industry_standard_process_for_data_mining#/media/File:CRISP-DM_Process_Diagram.png
CRISP-DM 流程是许多数据科学团队管理项目时最常用的框架之一。我们喜欢它,因为它专注于在开始建模之前确保对业务和数据的理解。CRISP-DM 流程中的两个关键步骤是“数据理解”和“数据准备”。正确地遵循这些步骤需要深入研究输入数据以真正理解它,通常借助于数据中分布、趋势和关系的可视化。“数据准备”通常包括预处理、数据扩充和/或标准化,以便为建模做准备。如果处理得当,这两个步骤可以帮助数据科学家确保输入数据中的错误不会导致他/她后来遇到的任何模型性能问题。
3)模型调整以调节性能
既然已经验证了输入数据的正确性和完整性,那么是时候关注有趣的东西了,建模本身。此步骤中影响最大的部分之一是要素选择-向下选择对输出影响最大的关键要素,并根据这些要素训练您的模型,消除冗余或高度相关的要素以加快速度并提高模型精度。有几篇关于特征选择技术的博文,包括单变量选择、递归特征消除和随机森林特征重要性。这里有一个供参考:https://machinelingmastery . com/feature-selection-machine-learning-python/。无论您采用哪种技术,或者它们的组合,请确保在这一步花费时间,以便为您的模型获得最佳的功能组合。
这一步的另一个重要部分是重新考虑您选择的模型,或者考虑添加额外的模型类型或者集合多个模型。同样,也有许多比较不同模型优缺点的好文章,但是我们建议尽可能运行至少两种模型类型(最好是神经网络)来比较结果。
最后,一旦您有了您的功能和您的模型选择,重新运行您的超参数调整,确保您已经正确地定义了您的训练、验证和测试集,在调整您的模型时,您没有“作弊”,以便它可以很好地推广到新数据,而不是在训练集上调整得太紧,以至于在新数据的实践中过度拟合和表现不佳。
4)最后,也是最重要的一点,管理客户的期望
这是许多数据科学家忽略的另一个关键步骤,他们认为这“不是他们的工作”。当推出一款全新的机器学习产品时,该模型在野外的表现存在相当大的不确定性。此外,如上所述,现实世界中围绕您正在解决的问题出现的大量噪声可能会限制您的模型的性能,尽管您尽了最大努力来最大限度地提高准确性。数据科学团队的部分职责是与产品经理、销售人员和 customer success 携手合作,向客户传达他们期望从模型中看到的性能信息,同时教育他们模型将如何随着时间的推移而改进,并提供更多数据进行培训。
因此,下次您的团队在发布新模型时遇到性能挑战时,不要玩责备游戏或直接调整模型超参数来优化拟合,而是后退一步,按照这个简单、结构化的过程一步一步地解决问题,并最大化新模型的成功概率。
原文:https://towardsdatascience.com/what-to-do-when-your-classification-dataset-is-imbalanced-6af031b12a36?source=collection_archive---------8-----------------------
建立一个好的机器学习模型的关键是它被训练的数据。因此,训练数据必须是干净和平衡的。在完善训练数据上花费的时间越多,在模型上花费的精力就越少。因此,让我们看看如何着手获得一个平衡的数据集。在本文中,我们将讨论,
不平衡的数据集意味着什么?为什么数据集不平衡很重要?处理不平衡数据集的不同方法。处理不平衡数据集的不同工具。
让我们看看当试图解决一个分类问题时,偏斜意味着什么。当数据集中的大多数数据项表示属于一个类的项目时,我们说数据集是偏斜的或不平衡的。为了更好地理解,让我们考虑一个二元分类问题,癌症检测。假设我们的数据集中有 5000 个实例,但只有 500 个阳性实例,即实际存在癌症的实例。然后我们有一个不平衡的数据集。这种情况在现实生活中的数据集上更常见,因为在所有发生的检查中发现癌症或在所有每天发生的交易中发现欺诈交易的几率相对较低。
In this cancer dataset, there are only 57 positive instances whereas there are 212 negative instances, making it a perfect example of class imbalance.
当您的数据集没有平等地表示所有数据类时,模型可能会过度适应在您的数据集中表示更多的类,从而忽略了少数类的存在。它甚至可能给你一个很好的准确性,但在现实生活中却悲惨地失败了。在我们的示例中,一个每次都持续预测没有癌症的模型也将具有良好的准确性,因为癌症本身的发生在输入中是罕见的。但是,当一个实际的癌症病例被分类时,它就会失败,达不到它最初的目的。
一种广泛采用的处理高度不平衡数据集的技术称为重采样。重采样是在数据被分成训练集、测试集和验证集之后进行的。仅在训练集上进行重采样,否则性能度量可能会出现偏差。重采样有两种类型:过采样和欠采样。
欠采样包括从多数类中移除样本,过采样包括从少数类中添加更多样本。过采样的最简单实现是从少数类中复制随机记录,这可能会导致过拟合。在欠采样中,最简单的技术是从多数类中移除随机记录,这会导致信息丢失。
Under- and Over-Sampling
另一种类似于上采样的技术是创建合成样本。将合成样本添加到训练数据中也仅在训练测试拆分之后完成。
Scikit Learn 的 sklearn.utils.resample 包允许您对数据进行重采样。它将数组作为输入,并以一致的方式对它们进行重新采样。
首先,让我们尝试对这个数据集进行过采样。
现在,在我们的训练数据中,这两个类的实例数量相同。
接下来让我们看看欠采样。
两个类都有 41 个实例。
imblearn 库有一个名为 imblearn.over_sampling 的类。使用 SMOTE 执行过采样的 SMOTE。这是 SMOTE 或合成少数过采样技术的实现。让我们看看下面的实现。
SMOTE 为这两个类创建了足够的合成数据,每个类有 157 个数据项。
我们刚刚讨论了最流行的重采样方法。Imblearn 在 imblearn.under_sampling 和 imblearn.over_sampling 类下定义了许多其他欠采样和过采样方法,以及在 imblearn.combine 类下组合这两种方法的方法。
你可以在 https://unbalanced-learn . readthedocs . io/en/stable/API . html # module-imb learn . over _ sampling 上了解更多信息