主成分分析背后的数学
从原始数据到主成分
Photo by Tim Johnson on Unsplash
介绍
主成分分析(PCA)的中心思想是降低由大量相关变量组成的数据集的维数,同时尽可能多地保留数据集中存在的变异。这是通过转换成一组新的变量来实现的,即主成分**【PCs】,它们是不相关的,并且是有序的,因此前几个保留了所有原始变量中存在的大部分变化。
PCA 背后的数学
PCA 可以被认为是一个无监督的学习问题。从原始数据集获取主成分的整个过程可以简化为六个部分:
- 取由 d+1 维组成的整个数据集,忽略标签,这样我们的新数据集就变成了 d 维。
- 计算整个数据集的每个维度的平均值。
- 计算整个数据集的协方差矩阵
- 计算特征向量和相应的特征值。
- 将特征向量按特征值递减排序,选择 k 个特征值最大的特征向量,形成一个 d × k 维矩阵 W.
- 使用这个 d × k 特征向量矩阵将样本变换到新的子空间上。
所以,让我们一个一个地展示这背后的数学原理。
- 取由 d+1 维组成的整个数据集,忽略标签,这样我们的新数据集就变成了 d 维。
假设我们有一个数据集,它是 d+1 维的。其中,在现代机器学习范例中,d 可以被认为是 X_train ,1 可以被认为是 y_train (标签)。因此, X_train + y_train 组成了我们完整的训练数据集。
因此,在我们去掉标签后,我们剩下的是 d 维数据集,这将是我们用来寻找主成分的数据集。此外,让我们假设在忽略标签(即 d = 3)后,我们剩下一个三维数据集。
我们将假设样本来自两个不同的类,其中数据集的一半样本被标记为类 1,另一半被标记为类 2。
让我们的数据矩阵 X 是三个学生的分数:
2。计算整个数据集每个维度的平均值。
上表中的数据可以用矩阵 **A,**来表示,其中矩阵中的每一列显示测试分数,每一行显示学生的分数。
Matrix A
因此,矩阵 A 的平均值为
Mean of Matrix A
3。计算整个数据集的协方差矩阵(有时也称为方差-协方差矩阵)
因此,我们可以使用以下公式计算两个变量 X 和 Y 的协方差:
https://getcalc.com/statistics-covariance-calculator.htm
使用上述公式,我们可以找到 A. 的协方差矩阵。同样,结果将是 d ×d 维的方阵。
让我们像这样重写我们的原始矩阵
Matrix A
它的 c 卵巢矩阵会是
Covariance Matrix of A
这里值得注意的几点是:
- 如对角线上的蓝色所示,我们可以看到每次测试分数的变化。艺考方差最大(720);还有英语考试,最小的(360)。所以我们可以说艺考成绩比英语考试成绩有更多的可变性。
- 协方差在矩阵 A 的非对角线元素中显示为黑色
a) 数学与英语的协方差为正(360),数学与美术的协方差为正(180)。这意味着分数趋向于以积极的方式协变。随着数学分数的上升,艺术和英语的分数也趋于上升;反之亦然。
T21 然而,英语和艺术之间的协方差是零。这意味着英语和艺术成绩之间没有可预测的关系。
4。计算特征向量和相应的特征值
直观上,特征向量是一个向量,当对其应用线性变换时,其方向保持不变。
现在,我们可以很容易地从上面的协方差矩阵计算特征值和特征向量。
设 A 为方阵, ν 为向量, λ 为标量,满足Aν**=λν,则 λ 称为与特征向量νA关联的特征值。
A 的特征值是特征方程的根
计算 det(A-λI) 首先, I 是一个单位矩阵:
先简化矩阵,我们可以以后再计算行列式,
****
既然我们已经有了简化的矩阵,我们就可以求出它的行列式:
****
我们现在有了方程,我们需要求解 λ,从而得到矩阵的特征值。因此,将上面的等式等于零:
求解此方程得到 λ、 的值后,我们得到以下值
Eigenvalues
现在,我们可以计算上述特征值对应的特征向量。我不会在这里展示如何计算特征向量,访问这个链接来了解如何计算特征向量。
因此,在求解了特征向量之后,我们将得到相应的特征向量的如下解
5。将特征向量按特征值递减排序,选择 k 个特征值最大的特征向量,形成一个 d × k 维矩阵 W.
我们从降低我们的特征空间的维度的目标开始,即,通过 PCA 将特征空间投影到更小的子空间上,其中特征向量将形成这个新的特征子空间的轴。然而,特征向量仅定义新轴的方向,因为它们都具有相同的单位长度 1。
因此,为了决定对于低维子空间,我们要去掉哪个(些)特征向量,我们必须看一下特征向量的相应特征值。粗略地说,具有最低特征值的特征向量承载关于数据分布的最少信息,并且那些是我们想要丢弃的。
常见的方法是将特征向量从最高到最低的对应特征值进行排序,选择顶部的 k 个特征向量。
因此,按降序排列特征值后,我们有
对于我们的简单示例,我们将 3 维特征空间缩减为 2 维特征子空间,我们将两个具有最高特征值的特征向量进行组合,以构建我们的 d×k 维特征向量矩阵 W.
所以,特征向量对应的两个最大特征值是:
6。将样本转换到新的子空间上
在最后一步中,我们使用刚刚计算的 3x2 维矩阵 W 通过等式y = W′×x将样本变换到新的子空间上,其中W′是矩阵的转置**
最后,我们计算了两个主成分,并将数据点投影到新的子空间上。
学分和来源:
Scikit-learn 和 Spark 中决策树、随机森林和特征重要性的数学
简介
这篇文章试图在 Scikit-learn 和 Spark 中整合关于树算法及其实现的信息。特别是,它提供了如何计算特性重要性的说明。
网上有很多很棒的资源在讨论决策树和随机森林是如何创建的,这篇文章并不打算这样做。尽管它包含了上下文的简短定义,但它假设读者已经掌握了这些概念,并且希望知道 Scikit-learn 和 Spark 中的算法是如何实现的。
所以,让我们从…
决策树
决策树学习如何最好地将数据集分成越来越小的子集来预测目标值。条件或测试被表示为“叶子”(节点),而可能的结果被表示为“分支”(边)。这个分裂过程继续进行,直到不能获得进一步的增益或者满足预设规则,例如达到树的最大深度。
决策树算法
有多种算法,scikit-learn 文档提供了其中一些算法的概述(链接)
那么 Scikit-learn 和 Spark 用什么呢?
Scikit-learn 文档称,它正在使用“CART 算法的优化版本”。虽然文档中没有明确提到,但可以推断 Spark 将 ID3 与 CART 一起使用。
所以让我们把重点放在这两个上——ID3 和 CART。
论文对 ID3、CART 和 C4.5 决策树算法的优缺点进行了比较研究。更全面的定义也可以在那里找到。
ID3
该算法创建了一个多向树——每个节点可以有两条或更多条边——使用杂质标准熵找到将最大化信息增益的分类特征。它不仅不能处理数字特征,而且只适用于分类问题。
优势
- 从训练数据中创建可理解的预测规则
- 构建最快的树
- 构建一棵矮树
- 只需要足够的属性,直到所有数据都被分类
- 找到叶节点使得测试数据能够被修剪,从而减少测试的数量
- 搜索整个数据集以创建树
不足之处
- 如果测试一个小样本,数据可能会过度拟合或过度分类
- 一次只测试一个属性来做出决策
- 不处理数字属性和缺失值
推车
CART 代表分类和回归树。该算法创建一个二叉树,每个节点正好有两条向外的边,使用适当的杂质标准找到最佳的数字或分类特征进行分割。对于分类,可以使用基尼系数或 twoing 标准。对于回归,CART 使用最小二乘法(均方误差)引入了方差缩减。
优势
- CART 可以轻松处理数字和分类变量
- CART 算法将自己识别最重要的变量并消除不重要的变量
- CART 可以轻松处理异常值
不足之处
- 购物车可能有不稳定的决策树
- 购物车按一个接一个的变量拆分
节点杂质/杂质标准
Scikit-learn 和 Spark 都在其文档中提供了有关杂质标准所用公式的信息。对于分类,他们都默认使用基尼系数,但提供熵作为替代。对于回归,两者都使用均方差来计算方差减少。此外,可以使用 Scikit-learn 中的平均绝对误差来计算方差减少。
Impurity Formulas used by Scikit-learn and Spark
树算法文档的链接
信息增益
另一个值得注意的术语是“信息增益”,它与使用熵分割数据一起使用。它被计算为在属性上分割数据集后熵的减少:
增益(T,X) =熵(T) —熵(T,X)
- T =目标变量
- X =要分割的特征
- 熵(T,X) =在特征 X 上分割数据后计算的熵
随机森林
随机森林(RF)在训练中构造许多个体决策树。来自所有树的预测被汇集以做出最终预测;用于分类的类的模式或用于回归的平均预测。由于他们使用一系列的结果来做最后的决定,他们被称为集成技术。
特征重要性
特征重要性被计算为通过到达该节点的概率加权的节点杂质的减少。节点概率可以通过到达节点的样本数除以样本总数来计算。值越高,特性越重要。
sci kit-learn 中的实施
对于每个决策树,Scikit-learn 使用 Gini 重要性计算节点重要性,假设只有两个子节点(二叉树):
- ni sub(j)=节点 j 的重要性
- w sub(j) =到达节点 j 的加权样本数
- C sub(j)=节点 j 的杂质值
- left(j) =在节点 j 上从左侧拆分的子节点
- right(j) =在节点 j 上从右侧拆分的子节点
sub()正在被使用,因为下标在媒体中不可用
参见 _tree.pyx 中的compute _ feature _ importances方法
决策树中每个特征的重要性计算如下:
- fi sub(i)=特性 I 的重要性
- ni sub(j)=节点 j 的重要性
然后,通过除以所有要素重要性值的总和,可以将这些值归一化为 0 到 1 之间的值:
在随机森林级别,最后一个特征重要性是所有树的平均值。计算每棵树上的要素重要性值之和,然后除以树的总数:
- RFfi sub(i)=从随机森林模型中的所有树计算的特征 I 的重要性
- normfi sub(ij)=树 j 中 I 的归一化特征重要性
- T =树木总数
参见 forest.py 中的方法 feature_importances_
符号的灵感来自这个stack exchange thread,我发现它对这篇文章非常有用。
在 Spark 中实现
对于每个决策树,Spark 通过对增益求和来计算特征的重要性,增益按通过节点的样本数进行缩放:
- fi sub(i) =特性 I 的重要性
- s sub(j) =到达节点 j 的样本数
- C sub(j) =节点 j 的杂质值
参见 treeModels.scala 中的方法computeFeatureImportance
要计算随机森林级别的最终要素重要性,首先要相对于树对每棵树的要素重要性进行归一化:
- normfi sub(i) =特征 I 的归一化重要性
- fi sub(i) =特性 I 的重要性
然后将每棵树的特征重要性值归一化求和:
- RFfi sub(i)=从随机森林模型中的所有树计算的特征 I 的重要性
- normfi sub(ij)=树 j 中 I 的归一化特征重要性
参见 treeModels.scala 中的方法特征重要性
结论
该模型的目标是解释 Scikit-Learn 和 Spark 如何实现决策树并计算特征重要性值。
希望在这篇文章结束时,你能更好地理解适当的决策树算法和杂质标准,以及用于确定模型中每个特征重要性的公式。
机器学习的数学
在过去的几个月里,有几个人联系我,说他们热衷于探索数据科学的世界,并使用机器学习(ML)技术来探索统计规律,构建无懈可击的数据驱动产品。然而,我观察到有些人实际上缺乏必要的数学直觉和框架来获得有用的结果。这是我决定写这篇博文的主要原因。最近,出现了许多易于使用的机器和深度学习包的可用性热潮,如 scikit-learn 、 Weka 、 Tensorflow 、 R-caret 等。机器学习理论是一个交叉统计学、概率学、计算机科学和算法方面的领域,产生于从数据中迭代学习和发现可以用于构建智能应用的隐藏见解。尽管机器和深度学习有巨大的可能性,但要想很好地掌握算法的内部工作原理并获得良好的结果,对这些技术中的许多技术进行彻底的数学理解是必要的。
为什么要担心数学?
机器学习的数学之所以重要,有很多原因,下面我将重点介绍其中的一些原因:
- 选择正确的算法,包括考虑准确性、训练时间、模型复杂性、参数数量和特征数量。
- 选择参数设置和验证策略。
- 通过理解偏差-方差权衡来识别欠拟合和过拟合。
- 估计正确的置信区间和不确定性。
你需要什么水平的数学?
当试图理解像机器学习这样的跨学科领域时,主要问题是理解这些技术所需的数学量和数学水平。这个问题的答案是多维度的,取决于个人的水平和兴趣。对机器学习的数学公式和理论进步的研究正在进行中,一些研究人员正在研究更先进的技术。我将陈述我认为成为机器学习科学家/工程师所需的最低数学水平,以及每个数学概念的重要性。
Image by Author
- 线性代数:我的一个同事,Skyler Speakman 最近说“线性代数是 21 世纪的数学”,我完全同意他的说法。在 ML 中,线性代数随处可见。诸如主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU 分解、QR 分解/因式分解、对称矩阵、正交化&正交化、矩阵运算、投影、特征值&特征向量、向量空间和范数等主题是理解用于机器学习的优化方法所需要的。线性代数的神奇之处在于有如此多的在线资源。我总是说,传统的课堂正在消亡,因为互联网上有大量的可用资源。我最喜欢的线性代数课程是麻省理工学院课件(Gilbert Strang 教授)提供的课程。
- 概率论和统计学:机器学习和统计学不是很不同的领域。实际上,最近有人将机器学习定义为“在 Mac 上做统计”。ML 需要的一些基本统计和概率理论是组合学、概率规则和公理、贝叶斯定理、随机变量、方差和期望、条件和联合分布、标准分布(伯努利、二项式、多项式、均匀和高斯)、矩母函数、最大似然估计(MLE)、先验和后验、最大后验估计(MAP)和抽样方法。
- 多元微积分:一些必要的主题包括微分和积分,偏导数,向量值函数,方向梯度,海森,雅可比,拉普拉斯和拉格郎日分布。
- 算法和复杂的优化:这对于理解我们的机器学习算法的计算效率和可扩展性以及利用我们的数据集中的稀疏性是很重要的。需要了解数据结构(二叉树,散列,堆,栈等),动态规划,随机和次线性算法,图形,梯度/随机下降和原始对偶方法。
- 其他:这包括上述四个主要领域中没有涵盖的其他数学主题。它们包括实分析和复分析(集合和序列、拓扑、度量空间、单值和连续函数、极限、柯西核、傅立叶变换)、信息论(熵、信息增益)、函数空间和流形。
一些用于研究机器学习所需的一些数学主题的在线 MOOCs 和材料是:
- 可汗学院的线性代数、概率&统计、多变量微积分和优化。
- 编码矩阵:通过计算机科学应用的线性代数作者菲利普·克莱恩,布朗大学。
- 线性代数——前沿基础作者:罗伯特·范·德·盖因,德克萨斯大学。
- 线性代数的应用,第一部分和第二部分。戴维森学院蒂姆·查蒂尔的新课程。
- 约瑟夫·布利茨坦— 哈佛统计 110 讲座。
- 拉里·乏色曼的书——《所有的统计学:统计推断简明教程》。
- Boyd 和 Vandenberghe 在斯坦福大学上的凸优化课程。
- 线性代数—edX 前沿基础。
- Udacity 的统计学简介。
最后,这篇博文的主要目的是给出一个善意的建议,关于数学在机器学习中的重要性,以及掌握这些主题的必要主题和有用资源。然而,一些机器学习爱好者是数学新手,可能会发现这篇文章令人沮丧(说真的,这不是我的目的)。对于初学者来说,开始做机器学习不需要很多数学。基本的先决条件是本文博客中描述的数据分析,随着你掌握更多的技术和算法,你可以在旅途中学习数学。
本条目最初发表于 2016 年 7 月我的 LinkedIn 页面。
数据科学的创新思维
培育健康创新的数据科学功能的原则
Photo by Israel Viadest
随着组织转向数字化转型战略,他们也越来越多地围绕数据科学实践组建团队。目前,许多首席信息官、首席数据官和其他首席数据科学家面临的主要挑战在于,如何准确定位数据科学职能,以满足组织改进当前和未来活动的需求。这意味着嵌入数据科学团队以全面参与业务,并调整公司的运营骨干(例如,技术、流程、基础架构、文化、法律)。
数据科学没有正式的描述。其“用数据理解和分析实际现象”的使命,从业界到学术界可以有很大的不同。凭借在这两个领域的经验,我对数据科学的定义偏向于数学、编程和通信技能的结合,以及科学方法在特定知识领域的应用。我喜欢将实践总结为四个不同的战略领域:
- 数据集通常涵盖数据治理、战略数据源和基础设施。
- 技能组合是关于衡量分析就绪性、管理人才、传播循证文化(例如创建共享语言)、应用数据科学流程以及设计数据科学团队的组织框架。
- 工具集涵盖了合适的数据科学工具的选择以及最佳实践在整个组织中的应用。
- 一种思维方式集合了支持数据科学功能精神的生动原则,以在数字化转型的源头提供价值和创新。
我相信心态是将对数据集、技能和工具集的投资转化为经济和文化影响的推动力。我来试着介绍一下为什么和怎么做。
10 多年来,我有幸与梦之队合作,将数据科学带入他们领域的前沿。在麻省理工学院可感知城市实验室(麻省理工学院),我们在分析人类活动的数字痕迹以促进城市创新的技术方面处于领先地位, Bestiario 开发了独特的环境,使数据操作和可视化民主化, BBVA 数据&分析 (D & A)从金融数据中获取知识以转变银行业(例如风险建模、客户咨询、流程自动化)。我认为这些机构在人才、开放式挑战和获取大量数据方面堪称典范。每个都有不同的结构、融资机制和功能,但都有一个共同的使命,那就是引领其赞助商或客户的数字战略。
我在麻省理工学院、Bestiario 和 D&A 持续体验到的是一种独特的能力,能够交付切实的成果,以不同的方式思考,打破现状。我经历了一种因复杂性和不可预测性而形成的思维定势,这种思维定势是由设定背景、激励人们而非管理他们的领导层形成的。
根据我的观察和学习,我制定了一套原则,作为如何培养数据科学创新思维的蓝图。这些原则没有按重要性排序,而是旨在相互补充。我看重:
1。文化胜过技术
2。多才多艺
3。双重性超过破坏性
4。短跑故事
5。道德高于利润
虽然右边的项目有价值,但我更看重左边的项目。当然,这些原则会有不同程度的潮起潮落,不应该被认为是普遍规律。
1。文化胜于技术
在麻省理工学院精神的核心,D&A 和 Bestiario 承诺永远学习,寻求同行的认可,并帮助他人做同样的事情。例如,D&A 团队的很大一部分人在工作时间之外致力于教学。这种文化为实践社区之间的知识获取和知识共享提供了投资回报,也为增加承诺、凝聚力、奉献和激励水平的联系、合作和品牌化提供了投资回报。换句话说,数据科学存在于技术之外。
在一个技术推动、“技术先知”和媒体回音室的世界里,人们很容易陷入技术陷阱,因为它迫切需要不断探索只会导致分心和短期美容效果的新工具。与其他创意团队类似,吸引或留住数据科学人才的不是技术。驱动人们的是一种开放和健康的文化,这种文化确保人们在工作中感到充实、挑战和支持。
2。多才多艺
我在麻省理工学院的经历最让我着迷的是,它的研究活动不局限于单一领域的方法论。它的特点是一种“全方位”的方法——受麻省理工学院媒体实验室的启发——说设计师、工程师、物理学家、生物学家、社会科学家甚至艺术家的语言。类似地,Bestiario 的首席执行官 Jose Aguirre 为工程师开发科学肌肉和像设计师一样思考提供了背景。
数据科学包含一系列不同的学科,并不是孤立存在的。为了与他人合作,专家需要学习他们专业领域之外的知识。一些组织可能会陷入这样的陷阱,即从事数据科学需要专业的博士学位,或者这是一门工程学科。事实上,这种实践要求对理解其他学科的语言有一种发达的好奇心,并对协作学习有强烈的兴趣。“博学者”或“广义专家”的这些特征,让科学团队能够与企业中来自产品管理、设计、营销、法律、沟通、工程、财务等不同岗位的人打交道。最近,行业中出现了“产品科学家”或“人工智能设计师”等新的混合名称,突显了将不同学科与科学方法联系起来的必要性。与此同时,来自跨学科领域的观点,如科学技术研究 (STS)关于算法责任、数据偏差或“厚数据”的观点,正在成为数据科学核心主题的一部分。
通才专家带来了跨学科知识的优势,这有助于培养创造力和对社会、组织或企业需求的更深刻理解。一个综合专家团队比一个专家团队能为深层、复杂和非常规领域带来更好的整体视角。
**3。**双重性超过破坏性
在定位他们的数据科学职能时,一些组织将实践的新颖性与他们的创新议程联系起来。他们期待用颠覆性的概念创造新的价值。不幸的是,这种主动的方法经常导致与组织现实的某种程度的脱节,团队探索一些可能不是实际问题的东西,或者调查错误的问题。因此,这种勘探模式的可测量影响可能只是残余的。这是麻省理工学院赞助模式或雇佣外部顾问做法的一个潜在缺点。
一个组织的强大取决于其团队相互协作的能力。因此,其他组织依靠部门的协同定位来确定正确的问题,并对问题进行优先排序。这些团队通常专注于将数据科学应用于当前的优化需求。如果执行得当,交付的价值将产生足够的影响,加速数据科学成为组织核心业务的一部分。然而,埋头苦干的数据科学团队并没有完全让组织受益。忙于小的改进、短期的要求、会议和报告,人的大脑和创造力没有用来质疑现状和思考替代机会。
在数据科学和其他领域,在创新和优化之间平衡战略需要权衡。D & A 的一个主要成功因素是它成长为一个的双手并用的组织。一方面,我们有一个为 BBVA 作为一个全球金融机构创造效率和增量变化的战略。除了展示数据科学的短期价值,这些项目还为团队掌握金融行业的真实问题提供了最佳背景。另一方面,我们也相信,想要在 21 世纪蓬勃发展的公司需要使用数据科学来探索他们未来的竞争优势。这条工作线是关于价值创造和推动创新议程的边界。与麻省理工学院或 Bestiario 类似,任务是帮助一个组织“跳出框框”思考和执行,远离日常干扰和干扰。这些探索是反思获得的知识、培养怀疑和阐明下一步行动的难得机会。
Photo by BBVA
4。冲刺的故事
在早期阶段,项目需要得到领导层的认可,以安抚反对变革的人,并对抗不切实际的期望。在麻省理工学院,我们雇佣了可感知城市实验室主任卡洛·拉蒂所说的“城市演示”来将想法转化为实验和愿景。这些演示并不展示任何结果,而是为即将到来的探索做准备。他们讲述了一个真实的故事,关于赞助商和人们采取批判性方法的“可能结果”。
我记得 WikiCity Rome 是一个城市演示,特别影响了新兴“智能城市”行业的想象。该团队制作了一个公开放映的动画地图,实时覆盖了城市中不同类型的移动性(行人、出租车、公共交通工具)。这个项目完成于 2007 年,是首批城市实验之一,现场观众可以体验数字信息的反馈循环机制。
Photo by MIT SENSEable City Lab
在那个阶段,演示不需要构建业务案例;它的故事似乎得到了足够的赞助商的支持,以获得资源来探索更多的概念并报告我们的发现。同样,在 D&A,我们开发数据故事,我们设计小说以一种有趣的方式解释我们分析能力的应用和含义。这些内容以可视化、视频或黑客广告的形式分享,有助于传播既严谨又思辨的见解。这些故事让赞助商或客户对潜在的未来以及他们的组织将如何利用创新来应对有了更清晰的观点。不足为奇的是,Bestiario 也有能力通过展品构建关于复杂系统的故事,并有能力提供企业数据驱动的解决方案。
随着敏捷或类似方法的广泛应用,许多公司正在成为伟大的短跑运动员。但是创新需要时间和耐心。故事是一种随着时间的推移建立持续关注的方式,也是一种为团队开发“耐心资本”的方式,以便在季度报告之外执行。虚构、可视化、演示或其他类型的故事使数据科学团队能够暂停、质疑并更多地关注学习和愿景,而不是冲刺规划。叙事提供了一个机会,通过互动和系统动力学来深思熟虑地考虑业务,以及分析能力的发展如何影响一个组织。他们生成的材料也作为跨学科和组织外部共享知识的连接器。他们传播开放、积极和创新的精神。
Photo by nataliahelo
5。道德高于利润
当我在无处不在的计算和人机交互的十字路口完成我的博士学位时,一个研究团队会因为他们研究的质量和大胆而一再脱颖而出。斯坦福大学的说服性技术实验室过去一直在设计——现在仍然在设计——数字技术来改变人们的信念和行为。它的研究通常是针对想戒烟的人或需要坚持特定饮食的人。毕业后,一些实验室的学生很自然地搬到了谷歌和脸书的隔壁校园。在那里,他们将他们的习惯形成算法应用于注意力经济,这是一种利用人类心理学尽可能长时间和频繁地保持社交媒体用户活跃的业务。这个故事中的问题不是说服技术的发展,而是缺乏关于数据科学的应用如何以道德的方式改变人们行为的指南。
由于数据科学的实践仍处于萌芽阶段,具有广泛的潜力,团队必须发展道德指南针和技术,以预见他们的发现的局限性。他们的领导职责也是帮助理解已开发的分析和算法的社会使命。需要共同努力来确保数据科学的应用考虑到(非预期的)影响。忽视这一点就像命令一个团队像汤姆·莱勒的歌中描述的韦纳·冯·布劳恩一样:
一旦火箭升空,谁会在乎它们从哪里落下来?那不是我的部门。”
在麻省理工学院,城市演示提供了一种方式,在我们的概念是否有潜在的利润之前,探索它们是否在文化或社会上可以接受。同样,D&A 在数据科学的社会影响方面也有工作,因为我们建立了负责任的数据使用的内部指导方针,并就机器学习与信任、可解释性和公平性的关系发出了积极的公众声音。我们引领将人类和地球置于利润之上的社会公益倡议,发现我们可以与可能没有从事商业活动的合作伙伴(例如政府、联合国、非营利组织)一起丰富我们的分析能力,还可以吸引顶尖人才。
Photo by Luca Simeone
科学领导的心态
今天的现实是,大多数组织仍然没有衡量创新成功的方法。我相信良好的心态可以帮助科学领导团队弥补这一缺陷,并将数据科学融入他们的核心战略和文化。例如,我所揭示的原则可以作为以下内容的组成部分:
- 描绘愿景 预测下一步,争取领导层的认同,安抚反对变革的人,对抗不切实际的期望。
- 用数据科学活动产生的经济影响、变革和创新价值的指标和故事正式传达成功。
- 与赞助商、客户或母公司保持密切联系和协调,确保创新和优化战略之间的平衡。
- 招聘优秀员工拥有开放、多元的文化,确保人们在工作中感到充实、挑战和支持。
数据科学部门的人员也需要一个能说他们语言的科学领导。这些年来,我学会了设定我的优先事项,以促进我的团队创新版本:
- 提供与工艺、好奇心、同理心和功效相关的背景。
- 用“为什么”来激励培养怀疑,激励优秀的人给自己惊喜,并要求团队尽可能多地展示他们开发的能力的应用。
- 用“为什么不”来授权在灵活的工作环境中分担责任,走非常规的道路。
- 不要(太)忙花时间让你和你的团队远离行动去思考。
这种哲学来自我的职业经历。它的某些部分可以应用于其他学科的其他高绩效团队。我很高兴谈论和分享更多,我也同样有兴趣听到你的想法和故事。如果你想用其他原则或不同风格来培养数据科学的创新思维,请随时发表评论或联系我。
感谢 Jose Aguirre、Elena Alfaro、Jon Ander Beracoechea、Marco Bressan 和 Carlo Ratti 这些年来一直是鼓舞人心的领导者,感谢 Lisa Gansky 的指导,感谢 Nicolas Nova 和 Neal Lathia 对本文的深刻反馈。
机器学习革命中缺失的部分
尽管人工智能被广泛采用,但扩展和部署基于人工智能的产品一如既往地困难;但是一些新技术正试图改变这一现实
(免责声明:我不受雇于 Algorithmia,也不以任何方式与该公司有财务关系。我只是一个有数据科学背景的人,觉得这家公司很有吸引力。)
毫无疑问,我们正在进入人工智能时代,机器学习几乎触及了我们日常生活中的一切。在数据存储和计算能力的逐步创新的推动下,神经网络从 70 年代轰轰烈烈地回来了。医药、安全、客户服务、欺诈检测,凡是你能想到的,都有资金充足的公司应用机器学习来改进和增强它。见鬼,你甚至可以通过 Medium 基于机器学习的推荐系统找到这篇文章。
不管出于什么原因,深度学习似乎对许多立竿见影的问题非常有效。你甚至可以称之为一场革命。
创建深度学习模型变得越来越容易,但不是大规模部署它们
虽然数据存储和 Nvidia 的发展无疑有助于刺激这场革命,但今天机器学习状态的主要驱动力之一是你可以轻松地实际创建工作,准确的模型。机器学习正在经历重大的抽象化— 新工具使人工智能比以往任何时候都更容易起步。
除了为特定任务提供功能丰富的 API 的私营公司,如 Clarifai 和 Indico ,像 R 和 Python 这样的流行数据科学语言的第三方包生态系统正在呈指数级增长。谷歌在 2015 年 11 月发布了最初版本的 TensorFlow ,从那以后它就像火箭一样起飞了(除了已经很流行的 ScikitLearn)。对于数据科学家来说,在测试环境中创建复杂的模型变得更加容易。
不幸的是,这种轻松并没有离开 iPython 笔记本。这是因为让机器学习模型在生产中工作与让它在你的电脑上工作是完全不同的任务。部署您的模型意味着让它们在需要时以您希望的方式大规模工作。创建理论上准确的模型是没有用的,如果一旦你开始把它们提供给客户,它们就会分崩离析。
你需要担心一系列全新的挑战,掌握一系列新的技能,以及衡量你成功的不同标准。
部署与模型创建有很大不同,对于小型和大型公司来说都非常困难
像任何分布式应用程序一样,部署机器学习模型是极其困难的,这与一开始创建它们是完全不同的任务。这在多个维度上都是正确的:
**谁:**建模由数据科学家和机器学习研究人员完成,而部署由软件工程师、机器学习工程师和数据工程师完成。
**度量:**模型构建的目标是创建可以准确预测的东西,而部署的目标是快速可靠地预测。
**其中:**模型构建通常由几个人在几个虚拟服务器上完成,而部署的模型需要能够伸缩并处理数千或数百万个 API 请求。
这些只是部署与众不同的几个方面。这也很难做到——它涉及到杂耍不同的技能、优先级和能力。如果您最精确的模型运行时间太长怎么办?你如何用新数据更新你的模型?您如何通过跨地域多样化来优化速度?
这个问题在不同规模的公司中都存在。对于寻求围绕机器学习模型开发和运行产品的早期创业公司来说,部署是一团乱麻。雇佣合适的软件和数据工程人才已经够困难的了;当你试图推出一个产品时,这就更难了,你的恢复能力取决于一群新的人让你的模型运行起来。数据科学家拥有的技能(精确的模型)不会让你达到目标(大规模部署)。
随着公司的发展,这个问题不会变得更容易——事实上,在某些方面,这个问题在企业中更为突出。数据科学团队开发有影响力的模型和产品,但他们需要让它们工作并可扩展;这意味着转向其他不一定有合适背景的工程团队。然而,数据科学家需要依靠它们来正确移植模型、调整超参数和决定批量大小。当他们的同事团队完成了机器学习部署的所有挑战时,可能是 4 个月或更久之后,这些模型看起来或行为都不像数据科学团队最初构建的。
总之是很多早期公司解决不了,很多企业处理不了的真正头疼的问题。部署问题的一个常见解决方案是使用水平平台,但这并不适合大多数公司。本质上,您保留自己的数据,但使用 API 来构建驻留在供应商服务器上的快速而肮脏的模型;他们为您向外扩展,并担心如何让事情正常运行。符合这种模式的平台有 BigML 和 Seldon 。
不幸的是,水平部署平台并不总是有用的,因为它们是如何构建的:如果你是一家制造涉及大量机器学习的产品的公司,你不能让你的模型驻留在第三方。你想要创建自己的复杂算法,无论是 TensorFlow 上的神经网络还是其他任何东西。
问题是,没有一种产品只负责最后一英里——允许你按照自己的想法开发模型,然后只负责剩下的部分。谢天谢地,这种情况正在改变。
Algorithmia 通过提供部署即服务来解决最后一英里的问题
Algorithmia 正在发布一款新产品来解决这个问题,但仍然将建模和数据留在了它应该在的地方:数据科学家的手中。它被称为企业人工智能层,它本质上自动化了机器学习部署的开发操作,同时让您担心什么是重要的——创建伟大的模型和产品。
企业人工智能层涵盖了您在可伸缩部署解决方案中期望的所有基础。它与云无关,可根据您的需求进行扩展,允许您在 CPU 和 GPU 之间进行选择,并且延迟极低。Algorithmia 的平台也是由开发运维团队设计的,这意味着需要大量详细的仪表盘,并跟踪所有正确的指标,以确保您的部署符合您的客户需求。
“作为一个花了多年时间设计和部署机器学习系统的人,Algorithmia 的无服务器微服务架构给我留下了深刻的印象——对于希望以任何规模部署人工智能的组织来说,这是一个很好的解决方案”
谷歌人工智能工程副总裁安娜·帕特森*
但除了技术规格,Algorithmia 的人工智能层也很重要,因为它改变了组织看待机器学习的方式。目前,机器学习就像任何应用程序一样——在发送新数据和预测之前,你需要处理所有的基础设施。就像一个 API 调用 Yelp 应用程序一样,你的 API 调用你的模型。这是一种应用程序,这意味着您的团队需要应用程序部署专业知识。
现在不同了,因为你的团队可以专注于创建伟大的模型,而不是让它们工作的基础设施。这是无服务器的数据存储模式,谷歌的 BigQuery 和 T2 的亚马逊的 Athena 让组织专注于分析他们的数据,而不是将数据存储在任何地方的技术复杂性。赚钱的数据分析是从数据存储中抽象出来的。现在建模可以从部署中抽象出来。
这太棒了:这意味着更多的想法可以转化为产品,更多的产品可以摆脱单调的巨型工程团队和企业积压。这意味着作为一名数据科学家,你可以做你真正想做的事情:专注于构建伟大的想法和模型,而不是如何处理他们的后端工程。我认为这是一件大事。
*安娜和谷歌是 Algorithmia 的投资者。
建模者反击:对抗对抗性攻击的防御策略(下)
[这篇文章是一个关于对立例子的系列文章的第二部分,也是最后一部分;第一个用具体的术语框定了对立例子的问题,如果你在没有一个关于这个问题的清晰和缓存的心智模型的情况下进入这个问题,也许应该先读一下
对立的例子很少吗?
关于对立例子的最初理论是,它们代表数据分布中异常的低概率点。如果是这种情况,你会期望对对立例子的修改可能会把例子“推”回模型做出可信预测的区域。
然而,Goodfellow 在 2015 年的一篇论文中并没有发现这一点:他们发现,如果他们朝着敌对的方向移动,那么他们可以在给定方向上以更高的失真值获得越来越自信的病理行为,这意味着这与其说是一个敌对的例子,不如说是一个敌对的子空间或区域。
这是令人失望的,因为它限制了防御策略的有效性,防御策略可能试图向所有输入添加随机噪声,以将它们“推”回模型表现合理的区域。
题外话:什么是流形?
如果你通读任何最近关于对立例子的论文,你会看到许多关于数据“在流形上”或“不在流形上”的观点的参考和争论。基本上,你可以把它理解为“数据存在的空间区域”。作为一个简化的例子,想一个这样的情节:
理论上,这是一个二维空间。然而,该空间的大部分实际上并不作为数据的宿主,因为它们是特征空间中无效的(或者至少极不可能的)特征组合。在自然图像的例子中,有一些自然的限制:真实世界中的对象往往由共享相同视觉属性的连续像素空间块组成。
更具体地说,单词“流形”倾向于指在输入存在的非常高维度的空间中只有相对小的区域。我们也经常把流形本身称为“高维空间中的低维空间”。这里经常使用的一个例子是高速公路:即使高速公路在 3D 空间中弯曲,在许多情况下,例如告诉你在其上行驶 65 英里的方向,它也可以被表示为一个较低(1D)维的流形,因为,至少对于当前的汽车来说,你实际上不能独立于你的前后方向而改变你在垂直方向上的位置。当你想到不同种类的距离时,这个心智模型也是一个有用的模型。如果你是一个不理解汽车和重力之间关系的外星人,你可能会说地面上的一辆汽车和悬浮在空中 15 英尺的一辆汽车比同一辆汽车更近,并且在公路上还有 40 英尺,因为,从纯欧几里得距离的角度来看,这显然是正确的。然而,如果你对大多数汽车的实际位置进行标准化,并且将问题框定为“相对于所有汽车的分布,哪辆汽车处于更明显不同的位置”,那么悬浮汽车显然符合该标准。
This image gives a good visualization of what manifolds look like in higher dimensions
这个概念主要是作为一个概念占位符,用来讨论一个对立的例子与其余数据之间的不同关系。继续这个比喻:如果我们在寻找一个对立的例子,我们是在寻找高速公路上的另一辆车,还是一辆悬浮在空中 15 英尺的车。在你的脑海中记住这个形象;我们稍后再来讨论。
你能通过非常非常好地隐藏你的模型参数来防御吗?
你可能已经注意到——我第一次在这篇文献中注意到的——我们概述的所有对抗性攻击策略都需要详细的模型知识;不仅仅是所使用的架构,而是存在于已训练的生产模型中的实际学习参数。这可能会让你觉得奇怪:在我们的对手对我们的操作设置有全面了解的威胁模式下,我们通常不会期望一个系统(军队、计算机网络)是完全安全的。为什么这是一个合理的威胁模型呢?这种威胁模型会因为简单地采用围绕模型存储的高安全性规范或要求而失效吗?
答案是:这不是真正的威胁模型。或者至少不是直接的。对立例子的一个令人惊讶的(至少对许多人的直觉来说)特性是可转移性。可移植性是指您可以在不同的训练集上训练具有不同结构的模型,只要模型被训练来执行相同的任务,为一个模型生成的对立示例通常会在另一个模型上工作。这是值得注意的,因为这表明这些例子利用了图像空间本身的可概括属性,而不仅仅是一个特定模型的神秘怪癖。此外,当涉及到如何训练他们的“虚拟模型”时,攻击者有多种选择:他们可以拥有自己的带标签的训练集,或者,如果目标模型的决策以任何方式公开可用,他们可以使用目标模型通过选择示例并查询这些示例的模型来为他们自己的训练集生成标签。
通常,攻击者模仿现有模型的最简单方法是训练该模型生成的概率,因为否则你只能得到“哪一个是最可能的类”这种非常低信息的信号。然而,研究人员已经表明,即使你只能获得大大减少的最可能类错误信号,也有可能学习到有用的替代模型(“我们认为这是一只猫”对“猫:0.90,老虎:0.05…”)).这是通过有选择地查询主模型来实现的,在主模型中,模型在输出中表现出最高的方差,因为这些区域很可能是存在决策边界的区域。结果,替代模型获得了目标模型的决策边界的更精确的图像。
蒸馏能让你的模型不那么过于自信吗?
模型提取是一种技术,它通过训练主模型的“软”概率输出,而不是“硬”(0/1)真实标签,来学习次模型以模仿主模型所学习的内容。在这样做的过程中,次级模型被训练成推动它在输出上产生更均匀的分布,而不是一个非常有把握的值和许多其他变化很小的值。这种对“更软”输出的偏好被证明对防御对抗性攻击的最初变种有一些成功,但被最近的攻击击败,如 Carlini Wagner 攻击。
对抗性例子的训练能起到辩护的作用吗?
一个早期建议的对对抗性例子的辩护是直截了当的:也许我们可以通过在我们的训练集中包括对抗性干扰的例子来教我们的模型对对抗性例子是健壮的。这被证明是一种有用的通用正则化形式,但并不是一种真正强大的防御。至少在我所做的阅读中,用对抗训练增强的模型倾向于看到较低的对抗成功率,但主要或仅针对用于进行训练的特定攻击。
到目前为止,我还没有发现任何一种方法显示出对抗性训练对其他攻击提供了有意义的鲁棒性水平;这使得这种方法有点像打地鼠游戏,你需要以攻击者攻击的特定方式进行防御才能有效。
对立的例子是可识别的“脱离流形”吗
据我所知,这是目前在这个问题上争论最激烈的领域,也是我认为最有希望的辩护方法。一些论文认为,对立的例子明显远离数据流形——用我们早期的例子来说,悬浮在高速公路上方——这使得生成模型能够检测到输入何时是对立的。其他人反驳说,问题在于决策边界太靠近数据流形,而与该流形的微小差异会将示例推到边界的另一边。
这里值得问的一个问题是:在参数概率模型难以拟合的情况下,我们如何严格定义流形,以及我们如何知道某些东西是否偏离了所述流形?对于复杂的数据集,通常我们能做的最好的事情是建立非线性(通常是深度学习驱动的)生成模型,其工作是学习数据的分布特征。
磁铁
在这种情况下,我发现一个特别聪明的防御方法是磁铁,它利用自动编码器作为其生成模型的形式。(题外话:不,我没有任何坚实的解释为什么这个名字磁铁,虽然我有一些理论)。
MagNet 背后的基本原理是基于我们对它是自动编码器所做的事情的直观了解:也就是说,学习数据的统计规律,使之有可能从较低信息量的压缩表示中重建输入。从结构上来说,自动编码器的工作原理是获取一个输入,将其映射到一个低维的隐藏单元,然后通过将解码器权重应用于隐藏表示来重建该输出。然后训练该模型,使得输出接近原始输入。
为了更清楚地理解这一点,假设您的输入由两个变量组成,这两个变量是从一个线性协方差结构中生成的,其中添加了一些噪声。如果 autoencoder 框架有足够的数据来进行适当的训练,那么理想情况下,它将能够学会在其自己的权重向量中表示该线性关系的偏差和权重。一旦学习了这些适用于整个数据集的参数,我们就可以用一个值很好地表示这个回归数据,它告诉我们沿着这条低维线要移动多远。您可以考虑这些回归参数的另一种方式是利用统计规律,让您重现已被压缩到更低维度的数据。在这个类比中,偏差和权重向量是由解码器(其捕获关于完整数据分布的信息)学习的权重,并且沿着回归线轴的值表示专门为此示例计算的较小的激活向量。
autoencoder 学习数据的分布级趋势,然后使用这一特性从压缩形式中重建数据,这正是 MagNet 利用的技术。MagNet 的主要直觉是:如果一个例子在数据的主要分布之外,那么如果你通过一个自动编码器运行它,输出将会有一个相对于输入的更高的误差。为了使这个想法具体化,让我们回顾一下这篇文章前面非常简单的例子。
假设我们已经经历了学习形成数据核心的回归线的权重和偏差的过程,并且我们使用它作为我们的“解压”功能。如果我们在(1.0,0.2)处有一个输入,那么它的压缩表示将是 1.0,并且,使用我们从总体数据分布中学习到的参数,自动编码器的输出将可能是 0.65 左右。相对于训练数据,这将代表输入和输出之间的巨大差距。MagNet 的应用前提是,它可以使用这样的自动编码器系统来 1)通过寻找我们提到的缺口来检测对立的示例,以及 2)通过对自动编码器输出(理论上更符合训练数据分布)而不是对立输入的模型进行评分,将对立的示例“推”回流形。
像素防御
一个非常类似的模型是 PixelDefend ,它不是自动编码器,而是使用一种叫做 PixelCNN 的深度学习生成模型。PixelCNN 模型直接学习输入图像的每个像素的条件概率,以其周围像素的卷积为条件。它被设计成能够直接计算给定输入的可能性,给定模型学习的分布。相比之下,GANs 和 autoencoders 都可以从分布中生成示例,但是没有提供原则性的方法来查询,对于您输入的示例,它在学习模型下的可能性有多大。(术语:在给定特定模型的情况下,给定数据输入的概率是该模型的数据点的可能性)。
这个框架让我们直接问:对于这个(可能是敌对的)样本,如果我们假设它来自与输入数据相同的分布,它有多大的可能性?这个问题给出了一个非常适合进行 p 值测试的公式,并且论文实际上显示了对立例子与干净测试集数据的显著不同的 p 值分布。
但是,对于这两者,有一个隐含的东西,对立的例子必然必须是偏离流形的,这与注意到,如果你只是碰巧在某个特定的方向产生对立的例子,它们可能会也可能不会偏离流形是不同的
[对抗性领域](http://Adversarial Spheres is a somewhat controversial paper in that some people thing it’s simplified example — of having the input data distribution be a high dimensional sphere — is too basic to be useful. That criticism aside, the paper makes the general point that, in sufficiently high dimensions, you can actually get a quite low test error by learning a model that implicitly only uses information from a subset of dimensions, so that along other dimensions,)是一篇有些争议的论文,因为有些人认为它的简化例子——输入数据分布是一个高维的领域——太基础了,没有用。撇开这种批评,这篇论文提出了一个总的观点,即在足够高的维度中,通过学习一个隐含地仅使用来自维度子集的信息的模型,你实际上可以获得相当低的测试误差。这意味着,在其他方向上,即使是流形上的例子也会被错误地分类。这一点并不完全是对反面例子的反驳。可能当前攻击所产生的大多数例子确实是不存在的,但是即使你完全解决了这些攻击,在高维空间中,仍然存在一些不可减少的敌对区域。
总结与思考
据我所知,在花了 3 周时间阅读文献后,有一些技术在识别给定输入何时具有对抗性方面取得了相当大的成功。也就是说,如果你假设一个完全的白盒攻击(即所有参数都为对手所知),那么理论上对手也可以使用你的生成模型的知识来创建对抗性的例子。我很想更好地理解的一个领域是,这种数据特征化生成模型的可移植性是否和区分性(或以分类为中心的)模型一样是个问题。如果是这样的话,那么分类模型的相同替代模型弱点也将持续存在于这些生成性对抗感知层中。也就是说,似乎简单地通过使用上面引用的一些可移植性策略来构建替代生成模型要困难得多,例如在现有的基于分类的模型的输出上训练模型。看起来你确实需要一套真正有代表性的训练设备。
话虽如此,我实际上想从流形、扰动、范数和误差率后退一步,问一个更广泛的问题:为什么这是一个重要的问题?我们真正要防范的威胁是什么?
这里有几个单独的优先事项需要梳理:
- 我们希望我们的模型在生产中使用时能够“优雅地失败”:如果模型遇到的输入在某种程度上与训练集中看到的有所不同,那么它不应该对任何类的预测表现出高水平的置信度。这反映了对模型的普遍渴望,即在来自自然世界的大量输入下,模型是“稳定”和“可靠”的。
- 我们特别关心这样的场景,人类会以同样的方式对给定的输入进行分类,但是模型会改变它的分类。从表面上看,还不清楚为什么这是一个特别值得关注的问题。一种框架简单地说就是接近性:在人类不可分辨的输入和像素空间中接近的输入之间往往有一条线。或者,我们可以把它框定为一个字面上的问题:模型失败实际上只是更关心它们何时会愚弄人类。
但是这个模型本身并不明显是错误的。这个模型对敌对选择的目标有很高的信心,这当然不是最优的。但实际上,当呈现给模型的图像永远不会代表自然界中真正的猫时,模型最好返回“cat ”?这似乎是一个更困难的问题:教导模型,特征空间的很大一部分,通常从未有人居住,对应于类别“猫”。“猫”的对抗性扰动图像不是“真正的”猫,只是人类视觉系统的敏感度与人工视觉的敏感度不同。作为类比,想象我们正在查看由飓风产生的风和天气模式的数据,以及那些没有的数据。如果我们细微地修改一个输入向量,使它看起来不像飓风,而一个人看着它说它看起来像飓风,这并不意味着修改后的向量将代表真正的飓风所产生的结果。在天气数据的背景下,我们不会先验地认为人类是生成从特征到标签的映射的真实来源。
我确实认为,当我们的模型在分布之外运行时,推动它们表现出适当的低置信度是一个非常有效的问题。不过,如果这真的是我们关注的核心,这将表明一个不同的研究方向和重点,也许更多的是以贝叶斯神经网络的方式,建立更自然地表达不确定性。特别是:如果我们的关注是由问题(1)引起的,我们就不应该真的关心我们的分布外的例子在某种欧几里得或视觉意义上是否“接近”;我们只想对这种类型的所有示例强制实施低置信度。
但是,也许以上所有的都是迂腐的暂且不提;这是一个“过于努力”的例子,把问题夸大了。也许,即使这些例子不代表模型的基本错误,从人类的角度来看视觉上接近的对立例子从实践的角度来看是重要的。
在“我们真正关心的是明显的攻击,而不是一种让我们感到不舒服的不稳定”的领域内,我不太清楚为什么有必要有特定的干扰,这是人类的近距离视觉地图。在使用机器学习模型的大多数情况下,大量数据都是在没有人工干预的情况下自动处理的。比方说,如果我要在我的房子顶上安装一个大型噪音过滤器以防止卫星探测,或者过滤我所有的脸书照片以使我无法被识别,没有明显的理由我必须伪装成人类来这样做,除非我真的预计人类会像我一样被抓住。
像数据一样,人类识别输入总量并对其进行评估的能力非常罕见:许多形式的数据都不具备这种能力。因此,在这些情况下,如何得出一个数据足够接近而具有对抗性,并且明显不同的模式并不明显。围绕对立例子的许多对话直接来自于这样一个事实,即在文本和语音等领域,我们正在对人类擅长的任务进行基准测试,在这些领域,人类可以一次轻松地感知大量的数据维度。大多数数据都不具备这种特性。
然而,如果我们真的关注图像,自动驾驶汽车的例子肯定是一个突出的例子:想象有人破坏停车标志,使其不太容易识别,人类司机很难察觉,这似乎是合理的。在这种情况下,人类无法检测到伪造的数据将使他们无法预测模型的不良行为。不过,如果我们真的想象汽车的决策反应时间足够短,那么如果有人可以在停车标志上粘贴一些对人类来说明显不是停车标志的东西,但仍然导致汽车在一瞬间做出悲惨的决定,这对于人类来说太快了,无法直接干预,这也是一个问题。所以,也许这最终会回到“不在分配范围内”的问题上。
看起来很多真正的抱怨并不是这些模型失败了,而是它们失败的方式从人类的角度来看似乎是显而易见的错误。在问题的一个框架中,我们是“典型的思维”,并假设对我们的问题解决模式来说容易的事情对一个陌生的、人工的模式来说应该是容易的。我们被不一定比我们犯更多错误的系统弄得不舒服,但是那些犯不同种类错误的系统。
总而言之:我不确定我们是否真的在坚持我们真正关心的问题——模型在训练分布之外表现出不可预测和过度自信的表现——并想知道对立的例子是否实际上只是那个问题的一个不完美的代理。如果没有真正严谨和清楚地了解我们关心的这个问题的不同方面,以及我们为什么关心它们,我认为我们可能无法提出真正令人满意的解决方案。
参考
(即我在写作过程中的某个时候读到的东西,但记不太清楚,无法直接链接引用)
现代营销人员机器学习算法指南
ost 营销(和销售)团队有着看似简单的目标:识别你的最佳客户,锁定看起来像他们的潜在客户,促进积极的购买体验,并将这些潜在客户带入你的客户社区。这方面的挑战是,公司面临着数据的冲击,不可能经济地将人投入到上述每个目标中。自动化和人工智能可以更快、更好地完成许多商业学习和日常任务。人们永远不可能像机器一样以同样的速度筛选所有的数据,当然也不可能像精心设计的算法那样精确。
如今,每个企业都在从事数据业务,为了做出更好的决策,领导者需要机器学习和分析来在数据中找到可操作的模式。但是首先,清楚地定义他们试图解决的问题是很重要的。例如,如果你的公司正在努力解决客户流失的问题,你可能想利用算法来找出减少客户流失的方法。在这种情况下,你需要了解什么时候有人可能会流失,这样你就可以提出报价来降低风险。另一个问题可能是为什么有人搅拌,但这是一个完全不同的问题,需要不同的算法来解决。
一旦你将范围缩小到一个初始的营销问题,机器学习算法无疑将非常适合用你的 CRM、营销自动化或数据仓库中的历史前景和客户数据来解决它。开始时,能够与您的数据从业者和/或预测分析供应商说同一种语言会很有帮助。让我们看一看幕后,对营销中使用的关键算法方法有一个基本的了解:
分类
分类建模也被称为类概率估计,是定义你的最佳客户的一个极好的方法。这些算法基本上回答了一个问题,即某样东西是否适合某个群体。例如,“这个细分市场是否有可能对我们的营销提议做出回应?” Autopilot 是一家领先的营销自动化提供商,它使用带有分类模型的预测分析来衡量其营销渠道绩效,并确定营销资金应该投资或转移到哪里。
为了训练分类模型,您需要将您的历史潜在客户和客户数据分为两组,即已回复和未回复、理想和非理想潜在客户,或者客户和非客户。这个分类器允许算法调整到您的最佳客户的积极属性,以及您的非理想客户的消极属性。最终确定的模型可用于对您现有的数据库以及未来所有新的潜在客户进行“评分”,看他们转变或成为客户的可能性。
回归
另一种可以让你的营销更上一层楼的技术是使用回归建模来预测对你来说重要的信息的具体价值。这种方法与分类有关,它预测是否某事会发生,但它不同,因为回归(也称为价值估计)预测多大程度某事会发生。这些算法可能会查看群体中的相似个体及其历史使用情况,以便生成一个数字预测,比如说,“产品 X 有多少会被细分市场 a 使用。”
回归建模的一个很好的用例是查看通过交叉销售或追加销售机会,您可以从某个特定客户那里多获得多少收入。领先的在线视频平台 BrightCove 以这种方式使用预测分析来帮助增加其现有客户群的合同价值。此外,采用分层定价的公司可以使用类似的算法来生成每个新潜在客户的估计价值(针对初始销售,或整个生命周期的客户价值)。有了这种认识,他们可能会以不同的方式处理潜在客户,例如将价值较低的潜在客户发送到自助服务选项,以保持效率,这样他们就可以给最有价值的潜在客户白手套待遇。
聚类
最后,聚类模型根据相似性对群体中的个体进行分组。这种算法的一个营销问题可能是,“我们的客户形成自然的细分吗?”这些信息对于初步的领域探索,或者确定应该如何构建客户支持或销售团队特别有用。通过分析您的潜在客户和客户数据库,这些模型将每个人分配到由相似属性定义的“集群”中。
聚类的开放式方法仍然依赖于数据而不是人类的直觉,以便识别你的营销对象的最主要特征。因此,您将获得对您的客户群体(或全部潜在市场)的全新认识,并发现新的客户和潜在客户群。然后,营销人员可以使用关键群组信号来开发有针对性的活动或更个性化的销售策略,并识别出与表现最佳的群组相似的其他群组。
上面的具体例子展示了人工智能正在如何显著地改变公司理解和处理数据的方式。最棒的是,你不需要有数据科学的学位就能理解这些算法的好处,或者利用它们的输出。总之,算法可以通过三种主要方式帮助销售和营销团队:
- 找到管道中的“**”。通过识别可测量的优化转化的机会,算法可以迅速对收入增长产生影响。
*2.*执行真正的自动化,减少人类劳动。每个企业都至少存在一些效率低下的问题(如人工线索调查),这些问题很容易被高效算法和预测分析所取代。
*3.*丰富传统应用。算法还可以通过添加一个智能层来帮助团队从他们的销售和营销堆栈中获得更多,该智能层可以在数据中找到重要的模式,以推动敏捷性和竞争优势。
走向市场团队的一些最佳机会围绕着发现业务中的低效之处,即减少营销浪费、加速线索或客户资格认定、优化渠道和计划等。因为提高销售和营销业绩的潜在回报是巨大的,所以没有理由等待。每个营销人员都应该认识到,一场数据军备竞赛正在进行,那些不根据数据发展业务运营方式的人很快就会落后。
数据科学中最难的事:政治
这篇文章最初发表于 rDisorder
当我早上 6 点起床学习支持向量机时,我想:“这真的很难!但是,嘿,至少我会变得对我未来的雇主非常有价值!”。如果我能得到德罗宁,我会回到过去,并呼吁“公牛队**t!”在我自己身上。事实是,现实要微妙得多,该领域还远未成熟的事实一点也没有帮助。
经典的故事是这样的:“数据科学家花 80%的时间获取、清理和管理数据,只有其余的时间花在分析和机器学习上”。不对。如果我们只考虑花在生产性工作上的时间,事实上是这样的。现实是,很多时间都花在了说服人们、躲避攻击和催促高管避免愚蠢的错误上。
然后是公司政治 …
一切是如何开始的
有一天,SuperMegaCompany 的某个人在某处读到:你必须由数据驱动才能成功,AirBnB、网飞和优步等公司正在吞噬世界,这要归功于数据科学,等等。这引发了大量的炒作和议论,我们可以清楚地从大量需要某种数据科学方法的职位发布中看到这一点。
这种行为导致了过多的问题,Monica Rogati 很好地总结了这些问题,归结为“你可能还没有准备好让数据科学家加入”。对于那些从未开创过这样一个领域的人,我可以用几个词来总结:将会有流血。
大多数时候supermega company从未处理健康数据科学所需的流程,请不要谈论数据驱动的文化。即使有某种形式的报告,你也不是数据驱动的。我听说你每天都检查画面?它不会让你受数据驱动。
我明白了,你在网上读到的所有关于这个话题的东西最终都会退化,要么是非常抽象的公司术语无用的东西,要么是你可以随意使用的工具的 T2 展示。我不会评论第一个选项,但第二个选项更有趣,因为它更微妙。这些人基本上声称,你可以通过得到一个更好的计算器来提高数学水平,但任何人都清楚,这与事实相差甚远。
工具本身不会制造任何东西。它们被称为工具是有原因的:你用它们作为达到目的的手段,但它们不会自己使用,如果你用错了,你将不会达到任何目的。文化来自于人,而不是工具,它深深地根植于我们有意识和无意识的头脑中。人们有偏见,倾向于成为习惯的动物:常规拯救了我们,而你却要来破坏这一切。
你会发现什么
如果你幸运的话,你会发现有人知道他们不是数据驱动的,并雇用你来获得一些帮助。但有可能你会发现一些人认为他们是数据驱动型的,懂数据,“我每个月都会查看财务报表和每个领域的总结报告,所以你知道,我们这里确实是数据驱动型的…”。好的。当然可以。
这是可能发生的最糟糕的情况,事实上这些人认为你会锦上添花,几个月后你会找到所有商业答案的圣杯,并摧毁你的竞争对手。但在现实中,你会发现大多数数据都存储在电子表格中,没有人部署过日志解析器,要访问数据库,你不得不求助于 IT 部门。
如果你得到足够的支持,并且没有遇到太多的问题,从头开始构建可能会很有趣,但这几乎是不可能的。
政治是障碍
比方说,你必须从一个由 SuperMegaCompany 高管领导的领域收集数据,这个人在那里工作了 8 年,一切都很顺利。一天,一个讨厌的家伙敲主管的门,问是否有可能轻松地收集他所有的数据。你怎么敢?所以他问你为什么需要所有的数据,他开始怀疑。你说你需要他们开始分析公司正在发生的事情,此时通常有三种可能的答案:
- “容易!我们每隔<插入期 >发布一份非常详尽的报告。你可以从那里得到数据”
- “不可能得到我们每天产生和处理的所有数据,你看,我们的工作非常复杂,加上虚假的形容词,只有这样我们才能保证质量”
- “当然可以!你可以和<甚至不知道公司是做什么的人交谈 >他/她可以帮助你!”
好了,欢迎来到公司政治的魔法世界!
现在几个月——如果不是几年——的战斗正等待着你,对此无能为力。有些人会抵制它,他们会认为你想控制他们,并向他们的老板报告他们的效率有多低。最后谁能完全责怪他们呢?会发生的。迟早有人会因为你收集的数据而被解雇,同样的数据你如此一丝不苟地清理和篡改,是的,他们会知道是你分析并提交的。****
让我澄清一下:这不是你的错,他们可能也会在几个月后被解雇,那时效率低下的问题会变得人人皆知。但是从他们的角度来看,这意味着承认他们并不完美,谁愿意这样做呢?
以政治对抗政治
在我写这篇文章的时候,我发现和是关于同一个主题:为数据科学家导航公司政治的指南。我同意帖子里写的大部分东西,但是我觉得有点简单化了。是的,这些概念大部分是可以的,但它们谈论的是政策,而不是政治。我知道,我知道,对你们中的一些人来说,这些似乎或多或少是一回事,但它们不是。
政治指的是统治的实践,或旨在获得统治地位的行动。政策是你获得统治权力后实施的计划。我知道这似乎是一个政治学家无用的咆哮(真正的政治科学毕业生在这里……嗯…),但是区别很重要。很多。
为了成为一个正常运作的数据科学团队,需要正确的政策,但是如果没有权力,您将如何实施这些政策呢?你如何获得力量?用政治,然后你用其他政治和政策来维持它,而不是反过来。
政策第一的方法是典型的美国思维方式:如果你把事情做对了,人们会喜欢,你就会做得很好。而在欧洲——尤其是在意大利(马基雅维利有印象吗?)—事实正好相反:政治是权力的斗争,而不是实施政策的途径。当然,最好的方法是走中间路线,这两种方法都有明显的问题,从长远来看是行不通的。
数据科学还很年轻,这一事实也增加了这种情况发生在您身上的可能性:
- 管理层或部分管理层不接受
- 抵制数据收集和分析
- 拒绝预测、预言和见解
- 把你当“数字/Excel 猴子”
- 认为任何未解决的问题都是你的问题,即使它不需要你的角色定义技能
那么你怎么能熬过这一切呢?
驾驭公司政治的一些技巧
你应该做的第一件事是找到更友好的经理,并马上开始和他们一起工作。做能在几周内完成的简单项目,如果可能的话,向尽可能多的人报告结果和 T2 增值。在开始时,关注高层管理人员,尽可能地“在那里”:会议、电话会议等。
去那里,尽可能地积极主动,提出新的想法,如果有人说了一些没有意义甚至完全愚蠢的话,不要害怕说出来。当你在做这项工作的时候,开始让你自己对普通的同事有用:帮助他们获得他们需要的数据,自动化或加速无聊的简单任务,等等。
所有这些将主要是非正式工作,最初几个月会很艰难,但你需要尽快得到公司几乎每个层面的认同。事实上,如果你错过了火车,那就要花更多的时间才能赶上。
我知道对你们中的一些人来说,这些可能看起来是琐碎、无聊的任务,但我保证大多数人会高度重视它们,甚至会因为稍微不相关的问题来找你。
当这一时刻到来时,你必须开始撒网,这次从底部开始。尽可能地提供帮助,提供你的技能让你的同事的工作变得更容易,并且友善一点。真的。友善到让人恶心:仔细清楚地解释你必须做的每一件事,你为什么要这么做,以及你如何能让别人的工作更容易。
能够沟通是做这份工作最重要的技能,如果你不能在公司的每个层面都有效地沟通,你将无法从这份工作中获得成功。如果你不能很好地沟通,人们会把你当成安东·齐格(图中的家伙):一个拿着不起眼的工具试图消灭他们的古怪家伙。
我知道,这听起来很残酷,但这是真的。人被新事物和自己不了解的东西吓到,更害怕自己不了解的新事物。你必须想办法限制那些认为你很讨厌的人的数量,我说限制是因为不可能每个人都理解你。
对付这些人的唯一方法就是忽视他们,如果你真的必须和他们一起工作,那就比和其他人一起工作更好。如果他们不是真正的混蛋,你最终甚至可以赢得他们的支持,但是如果他们真的是混蛋,你必须找到方法在不妨碍公司的情况下让他们慢下来。
你必须找到一个愿意成为你的避雷针的人来吸引大部分的攻击并代替你吸收它们。这一点很重要,当你是新人时,你不能成为自己的避雷针,资历很重要,不同的人会承受不同程度的伤害。过一段时间后,你可以开始展示你的价值,但永远记住,你不是大多数你将共事的人的老板。
所以涂总结一下:
- 找到友好的经理,开始和他们一起工作
- 尽快开始产生价值
- 将你所做的一切传达给每个层级尽可能多的人
- 态度好一点,把一切都解释清楚,帮助大家
- 不要急,真的
- 找一根避雷针代替你吸收伤害
打倒政策
既然你已经获得了权力——有些权力就足够了,绝对的权力是乌托邦——你可以开始更多地关注政策。你必须继续帮助别人,但是现在你可能正在做更大更重要的项目,你没有时间做每件事和每个人。
让每个人都明白你想继续帮助他们,但是请求变得太难了,很难马上实现。保持友好,想办法把大部分请求工作推到每周一天:例如,周五提出请求,给人们一个提出延期请求的方法。一张谷歌表单就足以收集他们和他们的一些细节,你可以每周查看一次。
我做了很多关于沟通和做好沟通的事情,但是很难持续有效地做。在开始做陈述的时候,和你的同事面对面地谈自己的个人情况(T21),这样你可以更好地了解人们,并区分他们的弱点、潜在的混蛋、支持你的人等等。
唯一的问题是,你不能无限期地这样做。展示东西需要时间和精力,大量的时间和精力,你不想把所有的时间都花在幻灯片和图表上,对吗?因此,你必须找到合适的媒体在公司内部分享信息。
如果 SuperMegaCompany 已经有了一个广泛使用的分享系统,那就坚持下去。否则,你可以利用许多可能性。如果你认为内部博客会有所帮助,你可能会想看看 Airbnb 的知识报告:这是一个完整的 CMS,带有一个网络服务器和一个漂亮的模板系统,可以自动将 Jupyter 笔记本和 R Markdown 文件转换为帖子。
我可以告诉你的是,仅仅一个博客是不够的:人们不会自发地开始阅读它,并开始自己参与。处理这个问题最简单的方法是开始给你知道可能感兴趣的人发邮件,你可能会发布关于它的报告和研究,这样你就可以把人们引向那里。
真正棒的是建立一个讨论频道,每个人都可以发表和讨论内容,这样你就只是众多发帖者中的一个,没有人会在给他们发新帖子和当“自作聪明”时开始嘲笑你。我个人喜欢 Reddit ,如果你愿意,你可以部署你自己的内部 Reddit 版本。
总是记录下你做了什么,花了多少时间,然后试着给每一个完成的项目赋予一个价值。如果它是可直接测量的,插入一段时间内的正确值,如果不可测量,即使一个数量级和/或一个范围也没问题。当有人问你为他们或试图挑战你的公司做了什么时,这将变得有用。
估计未来项目所需的时间也将是有帮助的,企业不习惯我们工作的周期和时间跨度,所以人们会期望你在几周或更短的时间内交付。但是我们知道,如果 A/B 测试需要 1 个半月的时间才能得到答案,可能会更多,几乎不会更少。因此,提前明确你的项目所需的努力、资源和时间,记住你可以购买一切:计算能力、人员(不是真的购买,但你明白这一点)、材料等等。
唯一买不到的就是时间。没有人能还给你花在阅读这篇文章上的时间,即使你是世界上最富有的人。所以,把你的时间当作你所拥有的最宝贵的东西,记住,对别人来说,你的时间总是不如他们的宝贵。
为了明智地花费时间而不是浪费时间,你必须建立一个你可以在大部分时间里遵循的过程。试着根据手头的任务来划分,对于不同的事情,你会有不同的要求和步骤。我不太相信敏捷、看板等,尤其不相信跟踪软件。一份电子表格和一份议程对于一个小团队来说已经足够了,甚至对于大团队来说也是很好的。
总结:
- 记住时间管理是关键
- 确定每周一天来筛选和处理请求
- 做演示,但要找到一种更深入、更持续地传播知识的方法
- 画出你的流程,并找到一种给每个项目赋予价值的方法
- 尽可能保持精简和简单
总结(政治)
如果你在想:“所有这些东西看起来工作量很大!”你说得对。你们中的大多数人可能已经注意到,数据分析、机器学习等等只是被简单提及,但它们从来都不是重点。不幸的是,兼职非常重要,如果你不做,你就没有机会证明自己的价值,一切都将变得毫无意义。
即使你成功获得了一些认可,也要记住权力带来了责任:会议、简报、电话、出差等等。如果你是公司里唯一一个尽职尽责的人,祝你好运。很快一切都会变得无法忍受,你将不得不尽快找人和你一起工作。在这种情况下,权力和影响力将非常有用,如果你没有权力和影响力,没有人会听你的,你将不得不继续自己做每件事。
所以请记住:政策很重要,但是你需要权力才能将它们落实到位。缺一不可毫无意义,甚至会适得其反。
你会活下来的。
原载于 2017 年 9 月 13 日www . rdi sorder . eu。
有史以来最著名的数据可视化以及我们能从中学到什么
Napoleon’s invasion of Russia
想获得灵感?快来加入我的 超级行情快讯 。😎
你需要数据可视化
毫无疑问,数据可视化是数据科学和机器学习的重要组成部分。在创建你的 ML 模型之前,你需要理解你将要提供给它的数据。这通常通过探索性数据分析(EDA)来完成;Kaggle 有一些很好的例子。
数据可视化是 EDA 的一部分,我们在其中创建了一个可视图形,一个我们数据的特定 描绘 ,以便更清楚地理解其特征和属性。可视化我们的数据使事情变得容易得多,因为我们正在寻找的信息可以在我们面前得到强调。可视化通常使用许多不同的颜色、形状、大小和图表来触发自然的视觉队列,并传达比实际数字更清晰的数据图像!
简单明了,你需要数据可视化。
入侵
也许最著名的数据可视化是上面显示的拿破仑入侵俄罗斯。它被用在几乎所有你会看到的数据可视化课程的介绍性讲座中。
现在,法语可能不是你的母语…但这正是这种观想的美妙之处:你可以理解图片形式的一切。
流动
从一开始你就可以看到从左到右有一个清晰的流向。这自然符合大多数语言的书写方式,为阅读和理解所描述的内容提供了直观的指导。看起来拿破仑的军队开始于科诺,结束于莫斯科。
定位也被用作显示军队行进方向的视觉队列。我们可以看到军队是如何从西边的左翼出发,向东北推进的。尽管这不是一条完全直接的路。
也许军队不得不绕过一些崎岖的地形或障碍,甚至可能是敌国的边界。不管怎样,我们肯定知道他们走了某种间接途径。
尺寸、形状和颜色
尺寸和形状也在量化 某些关键属性中起到关键作用。在左边,形状开始非常大,慢慢变得越来越小。这可能是由于军队叛逃者,死于战争,或者恶劣的天气条件(稍后将详细介绍)。
在科诺和威尔娜之间的旅程开始时,我们看到一个小的、几乎垂直的部分加入了形状的大部分。这可能是一些后来加入的援军。当我们向右移动时,我们稍后会看到一些军队离开,前往波洛特克。
颜色和形状也与可视化的黑色形状组合在一起。它明显比另一个小。它确实遵循相同的流程并到达相同的目的地,但它采取了不同的路径。也许拿破仑有一个单独的陆军师用来攻击侧翼!
看起来一些去波洛特克的军队在中途加入了这个黑人团体!
我们还看到,黑色组相对于另一组在规模上有所增长,可能是因为他们加入得更晚,天气也更好(同样,稍后会有更多介绍)。
我们大概可以说,拿破仑有两个独立的师要进攻,总的来说,他的军队规模随着时间的推移大大缩小了。
使用线条、数字和文本来揭示细节
在观想中使用文本常常是相当危险的,因为通常画一幅画的目的是为了直观地看到事物!但是,对拿破仑入侵的描述是正确的。
这些数字被稀疏而聪明地放置,以进一步强调恰到好处的细节,而不会使画面过于混乱。如果你想要更多的细节,数字被放在军队的形状旁边来精确量化它的大小。如果你想要,细节就在那里,如果你不想,细节就不在你面前!
右边的地图比例放得很好,没有任何问题。河流被画得很粗糙,这样就不会刺眼,也不会照在你的脸上。作者似乎已经明白,在描绘军队行进的背景下,画那些河流的主要目的是为了表明它们的位置。
我们可以看到,在最右边的两条河流,黑色军队的规模扩大了!也许他们在那里的城镇补给。无论哪种方式,河流的绘制都服务于描绘其地标的正确目的。
底部的线条被绘制成看起来像垂直的图表。图表描绘了整个旅程中的温度。因为它的简单,它非常直观,易于阅读;图表上越高意味着温度越高!
我们可以从左到右看到,随着时间的推移,温度变得更高。我们现在知道,攻击开始于冬天,结束于春天!
TLDR:或者如何进行有效的观想
(1)使之直观。诉诸人类视觉理解事物的自然方式。从左到右,上下,更大更小。
(2)使用最基本和原始的视觉队列:大小、形状、颜色、位置。形状和位置非常适合描绘流动。颜色和形状是用来分组的。大小是用来量化的。当然,所有这些都是一般规则。
(3)使用文字、线条和数字来强调重要的细节。
(4)知道什么是重要的,并强调它;知道什么不是,然后忽略它。
(5)不要让图片过于杂乱,只展示必要的部分。定位很重要。
喜欢学习?
在 twitter 上关注我,我会在这里发布所有最新最棒的人工智能、技术和科学!也在 LinkedIn 上和我联系吧!
数据科学项目最重要的部分是写博客
写作创造机会,给你批判性的交流实践,通过反馈让你成为更好的数据科学家
在将最终代码上传到 GitHub 或提交作业后,称数据科学项目已经完成是一种诱惑。然而,如果你就此打住,你就错过了这个过程中最关键的一步:写并分享一篇关于你的项目的文章。写博客通常不被认为是数据科学管道的一部分,但是为了从你的工作中获得最大的收益,它应该是你任何项目的最后一步。
写一篇关于你工作的简单博客有三个好处:
- **沟通练习:**好的代码光靠它自己是不够的。如果你不能让人们关心这项工作,再好的分析也没有影响。
- **写作创造机会:**通过向世界展示你的作品,你将能够建立联系,从而获得工作机会、合作和新的项目创意。
- **反馈:**变得更好的循环是:做工作,分享,听取建设性的批评,改进工作,重复
写作是那些活动中的一种——锻炼和教育也在考虑之中——可能在短期内没有回报,但从长期来看几乎有无限的潜在回报。就我个人而言,我的博客帖子每天有 10,000 次浏览量,每次需要 3-15 个小时才能写完,我从中赚了 0 美元。然而,如果不是因为我的文章,我也不会有一份全职的数据科学工作。
此外,我知道我的数据科学工作的质量要高得多,因为我打算写它,也因为我使用了我以前收到的反馈,使写作的长期回报明显是积极的。
沟通:好的代码是不够的
我知道这种感觉:你在 GitHub 上放了一些 Jupyter 笔记本或脚本,你想停下来说“我已经完成了工作,现在我要让其他人发现它。”虽然这可能发生在理想世界,但在现实世界中,让你的项目受到关注需要交流你的结果。
如果 GitHub 上最好的作品能自动浮出水面,那就太好了,但事实上,最有影响力的是那些得到最好传播的作品。
想想你最后一次在 GitHub 上找到项目代码库:如果你和我一样,那么你读了一篇关于一个项目的有趣文章,然后继续阅读代码。人们从一篇文章到代码,因为首先他们需要一个令人信服的理由来检查代码。这并不意味着愤世嫉俗,这只是事情的运作方式:人们不会去挖掘你的分析,直到他们知道你做了什么,以及为什么它很重要/有趣。
举一个真实世界的例子,我的数据分析报告是众多数据科学项目的集合,大多数都是用非常粗糙的代码编写的。然而,因为我写了一些关于这些项目的文章,它有超过 600 颗星。虽然明星不是衡量影响力的好方法,但很明显,人们正在使用这些代码,并从中发现价值。然而,前几天当我偶然发现这个组合结构贝叶斯优化(BOCS) 的回购时,客观地说,它比我写过的任何代码都好,我震惊地看到它只有两颗星。就像伟大的想法在孤立中死去,如果没有令人信服的结果交流,最好的代码将会被忽视。
分析和解释一样有价值
分析的价值不是与使用最好的算法或最多的数据成正比,而是与你如何与广大观众分享结果成正比。1854 年,约翰·斯诺利用 578 个数据点、一篇公开论文和一张点状地图帮助减缓了伦敦霍乱疫情。他没有把他的结果藏在笔记本里,希望人们偶然发现它们,而是把他的工作发表出来,让人们可以很容易地获得。
John Snow’s dot map of the London cholera outbreak. (Source)
最终,他能够说服镇上的成员停用水泵,从而阻止了霍乱的传播,实现了数据科学的目标:利用数据做出更好的现实决策。
写博客可以让你在数据科学最重要的部分之一进行实践:与广大读者交流你的工作。写得好的代码和透彻的分析是一个好的开始,但是要完成你的项目,你需要把它和一个令人信服的叙述联系起来。一篇文章是解释你的成果并让人们关心你所有努力的完美媒介。
机遇:写作打开了大门
尽管数据科学在招聘中可能比其他领域更客观,但获得一份工作仍然主要取决于你认识谁——或谁认识你——而不是你知道什么。上大学的全部意义(这里只是稍微夸张)不是学习你将在职业生涯中使用的东西,而是在你打算的职业领域结识人并建立联系。
幸运的是,在数据科学这一点上,虽然上大学学习的东西是有帮助的,但这不是必须的。有了通过一篇博客文章接触成千上万在线用户的能力,你就可以通过写作和分享的行为形成那些关键的联系并打开大门——不需要学费。当你在公共论坛上写你的项目时,你可以获得机会,而不仅仅是交作业。
我大学学的是机械工程,在学校没有做过一个数据科学方面的联系(更别说学什么有用的技能了)。然而,我在最后一个学期确实开始了写作,因此,我能够与潜在的雇主、合作者,甚至书籍编辑(答案是最终)建立许多关系,这对我导航数据科学职业生涯的开始非常有帮助。
回到第一点,我的代码远不如许多其他数据科学家的代码好,但我很幸运地获得了机会,因为我能够让我的工作变得容易理解。
我从来没有被在 GitHub 上找到我的人单独联系过,但我被看过我文章的人联系过几百次。
虽然我的雇主Feature Labs——确实找到了我的 GitHub 工作,但不是通过在 GitHub 上搜索“伟大的数据科学分析”。更确切地说,是通过我写的一篇文章,遍历一个项目并总结结论。记住,不是代码对文章,是文章对代码。
博客文章是建立重要联系的绝佳媒介,因为它表明 1。你做了很好的数据科学工作。你在乎的是分享它,并教给别人。对数据科学的过度热情不是一份工作的必备条件,但表现出你对该领域和学习感兴趣将有助于吸引雇主,尤其是如果你刚刚起步,没有太多经验的话。此外,写得好的博客文章可以有很长的保质期,给你一个潜在的未来几年的投资组合。
数据科学工作还没有既定的路径,这意味着我们都可以打造自己的工作。写作并与社区分享可以帮助你形成所有重要的联系,并在该领域获得立足点。
反馈:工作、分享、倾听、改进、重复
作为一个新的领域,数据科学很少有什么标准答案。最好的学习方法是尝试一些事情,犯一些错误,然后从经验中学习。将您的工作放在公共场所意味着您可以从数千名拥有数千年集体经验的数据科学家那里获得反馈。这就是成为社区一员的好处:我们一起比任何一个人知道的都多,作为社区的一员,你可以通过反馈来利用这些知识来改进你自己的工作。
处理互联网上的反馈可能很难,但我发现数据科学社区,特别是媒体上的数据科学的非常文明。我的应对评论的策略是:
- **正面评论:**致谢
- 建设性的批评:写下评论,修正当前分析中可以修正的部分,并在未来的项目中尽可能实践这些建议
- **非建设性的批评:**忽略
不幸的是,我们经常没有花时间经常回顾我们自己的工作,但是,幸运的是,我们可以与世界分享它,并让其他人回顾它。这些人对我们的工作可能比我们更诚实,所以我们通过分享得到了更客观的评估。
一堂课最有价值的部分从来都不是内容,而是你从教授那里得到的对你作业的反馈。幸运的是,通过在博客中公开与数据科学社区分享您的项目,您可以在不上课的情况下获得反馈。
虽然学校教育我们要厌恶失败,但只有通过反复失败,然后改进,我们才能变得更好。毫无疑问,我是一个更好的作家和数据科学家,因为我把我的工作拿出来接受批评,并听取反馈。
怎么办?
现在,你可能有一个或十几个 Jupyter 笔记本,可以用来写很棒的文章!花一两个小时写一篇这样的文章,并把它公之于众。不一定要完美:只要你做过数据科学的工作,人们就会尊重你的文章。
如果你纠结于释放任何不完美的东西(这是我最大的问题之一),那么设定一个时间限制,比如说 60 分钟,无论你在 60 分钟内完成了什么,都必须释放。我不得不这样做了几次,这使得我的工作更有意义,也更有效。
现在,拿起你的笔记本,写一篇文章。在媒体上发布,然后让社区看到你的作品。虽然回报不是瞬间的,但随着时间的推移,收益会逐渐增加:
- 你会更好地完成重要的沟通任务
- 机会/关系将会打开
- 你的数据科学和写作会随着你建设性的批评而提高。
继续做你的数据科学项目,但是不要在代码上传到 GitHub 或者上交的时候停下来。走完最后一步,写一篇文章。你未来的自己会感谢你的!
和往常一样,我欢迎反馈、建设性的批评以及倾听您的数据科学项目。可以在 Twitter @koehrsen_will 上找到我。
数据科学家最需要的技能
雇主在寻找什么?
数据科学家应该知道很多东西——机器学习、计算机科学、统计学、数学、数据可视化、通信和深度学习。在这些领域中,有数十种语言、框架和技术可供数据科学家学习。想成为雇主抢手的数据科学家应该如何花费学习预算?
我搜索了工作列表网站,寻找数据科学家最需要的技能。我研究了一般的数据科学技能,并分别研究了特定的语言和工具。
更新:2019 年底,我再次查看了这些技术,并将它们与 2018 年的结果进行了比较,以了解哪些技能在上升,哪些在下降。见分析这里。
我于 2018 年 10 月 10 日在 LinkedIn 、果然、简单雇佣、怪兽、 AngelList 上搜索招聘信息。这张图表显示了每个网站列出的数据科学家职位的数量。
我通读了许多工作清单和调查,寻找最常见的技能。像管理这样的术语没有进行比较,因为它们可以在工作列表中的许多不同的上下文中使用。
使用*“数据科学家”“【关键词】”*对美国进行所有搜索。使用精确匹配搜索减少了结果的数量。然而,这种方法确保了结果与数据科学家的职位相关,并以类似的方式影响所有搜索词。
AngelList 提供了拥有数据科学家名单的公司数量,而不是职位数量。我从两个分析中排除了 AngelList,因为它的搜索算法似乎是作为一种或类型的逻辑搜索来运行的,没有能力将其更改为和。如果你在寻找*“数据科学家”【tensor flow】*的职位,AngelList 可以很好地工作,但如果你的关键词是“数据科学家”【react . js】,它会返回太多非数据科学家职位的公司列表。
Glassdoor 也被排除在我的分析之外。该网站声称在美国有 26263 个*【数据科学家】*职位,但它显示给我的职位不超过 900 个。此外,它的数据科学家职位列表数量不太可能超过任何其他主要平台的三倍。
LinkedIn 上有超过 400 个通用技能的条目和超过 200 个特定技术的条目被纳入最终分析。肯定有一些交叉张贴。结果记录在这个谷歌表中。
我下载了。csv 文件并将其导入 JupyterLab。然后,我计算了出现的百分比,并在所有的工作列表网站上进行平均。
我还将软件结果与 2017 年上半年数据科学家工作清单的 Glassdoor 研究进行了比较。结合来自 KDNuggets 的使用调查的信息,看起来一些技能变得越来越重要,而另一些则失去了重要性。我们一会儿会谈到这些。
查看我的 Kaggle 内核的交互式图表和附加分析这里。我用 Plotly 来实现可视化。在撰写本文时,将 Plotly 与 JupyterLab 一起使用需要一些争论。我写了一个使用 Plotly 的指南,你可以在这里看到。
一般技能
以下是雇主最常寻求的通用数据科学家技能的图表。
结果显示,分析和机器学习是数据科学家工作的核心。从数据中收集见解是数据科学的主要功能。机器学习就是创造系统来预测性能,它非常受欢迎。
数据科学需要统计学和计算机科学技能,这并不奇怪。统计学,计算机科学,数学也是大学专业,大概对他们的频率有帮助。
有趣的是,近一半的工作清单中都提到了沟通。数据科学家需要能够交流见解并与其他人合作。
AI 和深度学习不像其他一些术语那样频繁出现。然而,它们是机器学习的子集。深度学习正被用于越来越多的机器学习任务,而其他算法以前曾被用于这些任务。比如现在大多数自然语言处理问题最好的机器学习算法就是深度学习算法。我预计未来将更明确地寻求深度学习技能,机器学习将成为深度学习的同义词。
雇主在寻找哪些针对数据科学家的特定软件工具?让我们接下来处理那个问题。
技术技能
以下是雇主正在寻找有经验的数据科学家的前 20 种特定语言、库和技术工具。
让我们简单看看最常见的技术技能。
Python 是最受欢迎的语言。这种开源语言的流行已经被广泛观察到。它对初学者友好,有许多支持资源。绝大多数新的数据科学工具都与之兼容。Python 是数据科学家的主要语言。
R 紧随 Python 之后。它曾经是数据科学的主要语言。我很惊讶地看到它仍然如此受欢迎。这种开源语言的根源是统计学,它仍然很受统计学家的欢迎。
Python 或 R 是几乎每个数据科学家职位的必备技能。
SQL 的需求量也很大。SQL 代表结构化查询语言,是与关系数据库交互的主要方式。在数据科学领域,SQL 有时会被忽视,但如果你打算进入就业市场,这是一项值得掌握的技能。2019 年 12 月更新:我正在编写一本 SQL 书籍。加入我的数据牛逼邮件列表,确保你不会错过。👍
接下来是 Hadoop 和 Spark ,它们都是来自 Apache 的大数据开源工具。
Apache Hadoop 是一个开源软件平台,用于在由商用硬件构建的计算机集群上对超大型数据集进行分布式存储和分布式处理。— 来源。
Apache Spark 是一个快速的内存数据处理引擎,具有优雅和丰富的开发 API,允许数据工作者高效地执行需要快速迭代访问数据集的流、机器学习或 SQL 工作负载。— S 源。
与许多其他工具相比,这些工具在媒体和教程中很少被提及。我认为拥有这些技能的求职者比 Python、R 和 SQL 要少得多。如果您已经或能够获得 Hadoop 和 Spark 的经验,它应该会让您在竞争中占据优势。
然后是 Java 和 SAS 。看到这些语言如此之高,我很惊讶。两家公司背后都有大公司,至少有一些免费的产品。在数据科学社区中,Java 和 SAS 通常很少受到关注。
Tableau 是下一个热门。这个分析平台和可视化工具功能强大,易于使用,并且越来越受欢迎。它有一个免费的公开版本,但如果你想让你的数据保密,就要花钱。
如果你不熟悉 Tableau,绝对值得在 Udemy 上上一堂 Tableau 10 A-Z 这样的速成课。我没有从这个建议中获得佣金——我只是参加了这个课程,发现它很有价值。
下面的图表显示了一个更大的最受欢迎的语言、框架和其他数据科学软件工具的列表。
历史比较
GlassDoor 在其网站上对 2017 年 1 月至 2017 年 7 月数据科学家最常见的 10 种软件技能进行了分析。以下是 2018 年 10 月,这些术语在他们网站上出现的频率与 LinkedIn、Indeed、SimplyHired 和 Monster 的平均频率的比较。
结果相当相似。我的分析和 GlassDoor 都发现 Python、R 和 SQL 是最受欢迎的。我们还发现了同样的九大技术技能,尽管顺序略有不同。
结果表明,与 2017 年上半年相比,R、Hadoop、Java、SAS 和 MatLab 现在的需求较少,Tableau 的需求较多。鉴于来自 KDnuggets 开发者调查等来源的补充结果,这正是我所期望的。其中,R、Hadoop、Java 和 SAS 都显示出明显的多年下降趋势,Tableau 显示出明显的上升趋势。
推荐
基于这些分析的结果,以下是对当前和有志成为数据科学家的一些一般性建议,这些科学家关心的是如何让自己变得更有市场。
- 证明你可以做数据分析,并专注于成为真正熟练的机器学习。
- 投资于你的沟通技巧。我推荐阅读《T2》这本书来帮助你的想法产生更大的影响。还可以使用海明威编辑器应用程序来提高你写作的清晰度。
- 掌握一个深度学习框架。精通深度学习框架是精通机器学习越来越大的一部分。关于深度学习框架在使用、兴趣和受欢迎程度方面的比较,请参见我的文章这里。
- 如果你在学习 Python 和 R 之间做选择,选择 Python。如果你对 Python 不感冒,可以考虑学习 r。如果你也懂 r,你肯定会更有市场。
当雇主在寻找具有 python 技能的数据科学家时,他们也可能希望候选人知道常见的 Python 数据科学库:NumPy、pandas、scikit-learn 和 Matplotlib。如果您想学习这套工具,我推荐以下资源:
- 2019 年 12 月更新:我最近发布了我的令人难忘的 Python 书,以帮助你以对大脑友好的方式学习 Python!🐍如果这听起来符合你的口味,那就去看看。😀
- DataCamp 和 DataQuest —它们都是价格合理的在线 SaaS 数据科学教育产品,在这里你可以边编码边学习。他们都教授一些技术工具。
- 数据学校有各种资源,包括一套很好的解释数据科学概念的 YouTube 视频。
- 用于数据分析的 Python作者 McKinney。这本书由 pandas library 的第一作者撰写,重点关注 pandas,并讨论了数据科学的基本 Python、NumPy 和 scikit-learn 功能。
- 用 Python 学习机器简介 穆勒&圭多。Müller 是 scikit-learn 的主要维护者。是一本用 scikit-learn 学习机器学习的极好的书。
如果你想进入深度学习,我建议先从 Keras 或 FastAI 开始,然后再进入 TensorFlow 或 PyTorch 。Chollet 的 用 Python 进行深度学习 是学习 Keras 的绝佳资源。
除了这些建议,我建议你学习你感兴趣的东西,尽管在决定如何分配学习时间时,显然有许多考虑因素。
如果你正在通过在线门户网站寻找一份数据科学家的工作,我建议你从 LinkedIn 开始——它总是有最多的结果。
如果你在找工作或在工作网站上发布职位,关键词很重要。“数据科学”在每个网站上返回的结果数量是“数据科学家”的近 3 倍。但是如果你严格地寻找一份数据科学家的工作,你可能最好搜索“数据科学家”。
不管你在哪里寻找,我建议你制作一个在线作品集,展示你在尽可能多的需求技能领域的熟练程度。我在这里做了一个投资组合网站的小指南。
作为这个项目的一部分,我收集了其他数据,我可能会变成文章。跟着我确保你不会错过。👍
如果你想看到交互式 Plotly 图表和它们背后的代码,请查看我的 Kaggle 内核。
我希望这篇文章能让你对那些雇佣数据科学家的组织有所了解。如果你学到了什么,请在你最喜欢的社交媒体上分享,这样其他人也可以找到它😃。
我写关于数据科学、云计算和其他技术的东西。如果你对这些感兴趣,请关注我,在这里阅读更多。😀
快乐学习!📖
如果您是数据科学家或想成为数据科学家的人,这是最有价值的资源
我从事数据科学家的工作已经有几年了,一直在大学里作为私人教师和讲师教授数据科学。这篇文章反映了我自己的观点。请注意,我没有支付推广任何网站。
从哪里开始学习,不断进步?
coursera.org、 fast.ai 、sci kit-learn documentation、Quora——举一些我经常使用的网站——有太多的在线资源提供高质量的数据科学实践内容。但是有一个人脱颖而出:kaggle.com
让我解释一下为什么 Kaggle 这么酷,为什么你绝对应该在这个网站上学习
什么是 kaggle.com?
Kaggle 是一个数据科学竞赛的在线平台。此外,它聚集了世界上最大的数据科学家群体之一。由受信任的公司和组织主办的竞赛类型包括欺诈检测、自然语言处理、图像处理等。而且当然是免费的。
Currently 16 open competitions, on image processing, sales forecasting…
向最好的人学习
Kaggle 社区分享了许多关于如何成为数据科学从业者的见解,这对学习者来说是黄金。
Kaggle 为每场比赛提供:
- 带有解释的数据集。数据通常是真实世界的数据,这很好,因为你想在真实世界中擅长数据科学
- 评估算法性能的度量(或测量)的定义。这是理解我们想要通过机器学习实现什么具体目标的关键。根据您的度量标准,一个简单的算法有时就足够了。定义度量将定义问题的复杂性
- 规则和奖励,这些东西其实并不重要,除非你是一名经验丰富的数据科学家,有时间花在一项挑战上:)
现在最重要的资源来了:
- 讨论区数据科学家分享关于数据或指标的疑问,人们在这里寻求建议或帮助来改进模型。这是拓宽您对数据科学家如何解决给定问题的视野的好方法。通过投票对主题进行排序,以获得最有价值的贡献
Kernels are scripts, usually Python or R, showcasing a data scientist’s skill to perform well in a competition and/or to explore and visualize datasets
- 内核部分——我的 goto 资源——在这里,数据科学家不仅分享他们的算法的代码以在比赛中获得高分,还分享他们探索和可视化数据集的代码。与讨论类似,您可以通过 upvotes 对内核进行排序。投票最多的内核提供了解释和可视化。它们会令人兴奋不已
An example of data visualization from a Kernel, created by a data scientist on Kaggle on a competition about road traffic in NYC. The data and the code are available for everyone for free
下面是一些最受社区欢迎的内核。你应该去看看!别忘了:好的艺术家复制,伟大的艺术家偷窃。
招聘餐厅游客预测-R 代码
www.kaggle.com](https://www.kaggle.com/headsortails/be-my-guest-recruit-restaurant-eda) [## 语音表示和数据探索
TensorFlow 语音识别挑战—Python 代码
www.kaggle.com](https://www.kaggle.com/davids1992/speech-representation-and-data-exploration) [## 纽约出租车 EDA -更新:快速和好奇
使用来自多个数据源的数据
www.kaggle.com](https://www.kaggle.com/headsortails/nyc-taxi-eda-update-the-fast-the-curious) [## 探索性分析- Instacart
使用来自 Instacart 市场篮分析的数据
www.kaggle.com](https://www.kaggle.com/philippsp/exploratory-analysis-instacart) [## 数据分析和 XGBoost 启动器(0.35460 磅)
使用来自 Quora 问题对的数据
www.kaggle.com](https://www.kaggle.com/anokas/data-analysis-xgboost-starter-0-35460-lb)
如果你喜欢这篇文章,考虑给它至少 50 分👏 😃
神经网络的最完整的图表,解释
神经网络类型的动物园呈指数增长。人们需要一张地图来在许多新兴的架构和方法之间导航。
幸运的是,阿西莫夫研究所的 Fjodor van Veen 编辑了一份关于神经网络拓扑的精彩备忘单。如果你不是机器学习的新手,你应该以前见过它:
在这个故事中,我将介绍每一个提到的拓扑结构,并尝试解释它是如何工作的,以及在哪里使用。准备好了吗?我们走吧!
感知器。我们所知道的最简单和最古老的神经元模型。获取一些输入,对它们求和,应用激活函数,并将它们传递到输出层。这里没有魔法。
前馈神经网络也相当古老——这种方法起源于 50 年代。它的工作方式在我之前的一篇文章中有所描述——“老派矩阵 NN ”,但一般来说它遵循以下规则:
- 所有节点都完全连接
- 激活从输入层流向输出层,没有环回
- 在输入和输出之间有一层(隐藏层)
在大多数情况下,使用反向传播方法训练这种类型的网络。
RBF 神经网络实际上是 FF(前馈)神经网络,使用径向基函数代替逻辑函数作为激活函数。有什么区别?
逻辑函数将某个任意值映射到 0…1 范围,回答“是或否”的问题。它适用于分类和决策系统,但不适用于连续值。
相反,径向基函数回答了“我们离目标有多远”这个问题?这非常适合函数逼近和机器控制(例如,作为 PID 控制器的替代)。
简而言之,这些只是激活功能和器具不同的 FF 网络。
DFF 神经网络在 90 年代初打开了深度学习的潘多拉盒子。这些只是 FF NNs,但是有不止一个隐藏层。那么,是什么让它们如此不同呢?
如果你读过我之前关于反向传播的文章,你可能已经注意到,当训练一个传统的 FF 时,我们只把少量的错误传递给前一层。因为堆叠更多的层导致训练时间的指数增长,使得 dff 非常不切实际。只是在 2000 年代早期,我们开发了一系列方法来有效地训练 DFFs 现在,它们形成了现代机器学习系统的核心,涵盖了与 FFs 相同的目的,但结果要好得多。
递归神经网络引入不同类型的细胞——递归细胞。这种类型的第一个网络被称为乔丹网络,当每个隐藏单元以固定的延迟——一次或多次迭代——接收它自己的输出。除此之外,它就像普通的 FNN。
当然,有许多变化——像将状态传递给输入节点、可变延迟等,但是主要思想是相同的。这种类型的神经网络主要在上下文很重要的时候使用——当来自过去迭代或样本的决策可以影响当前的决策时。这种上下文最常见的例子是文本——一个单词只能在前面的单词或句子的上下文中进行分析。
这种类型引入了一个*存储单元,*一个特殊的单元,可以在数据有时间间隙(或滞后)时处理数据。rnn 可以通过“记住”前十个单词来处理文本,而 LSTM 网络可以通过“记住”许多帧前发生的事情来处理视频帧。LSTM 网络也广泛用于书写和语音识别。
记忆细胞实际上由几个称为门的元素组成,这些元素是循环出现的,控制着信息如何被记忆和遗忘。在维基百科的插图中可以很好地看到该结构(注意,块之间没有激活函数):
长短期记忆(LSTM)是一种支持机器学习的人工神经网络架构。这是…
en.wikipedia.org](https://en.wikipedia.org/wiki/Long_short-term_memory#/media/File:Peephole_Long_Short-Term_Memory.svg)
图上的(x)是门,它们有自己的权重,有时还有激活功能。在每个样本上,它们决定是否向前传递数据、擦除内存等等——你可以在这里阅读更详细的解释。输入门决定有多少来自上一个样本的信息将被保存在内存中;输出门控制传递到下一层的数据量,遗忘门控制存储的存储器的撕裂率。
然而,这是 LSTM 单元的一个非常简单的实现,还存在许多其他的架构。
gru 是具有不同门控的 LSTMs。句号。
听起来很简单,但是缺少输出门使得对一个具体的输入多次重复相同的输出更容易,并且目前在声音(音乐)和语音合成中使用得最多。
然而,实际的组成略有不同:所有的 LSTM 门被组合成所谓的更新门,而重置门与输入紧密相连。
它们比 LSTMs 消耗更少的资源,并且几乎同样有效。
自动编码器用于分类、聚类和特征压缩。
当你训练 FF 神经网络进行分类时,你通常必须输入 Y 个类别中的 X 个样本,并期望 Y 个输出单元中的一个被激活。这就是所谓的“监督学习”。
另一方面,AEs 可以在没有监督的情况下进行训练。它们的结构是,当隐藏单元的数量小于输入单元的数量(输出单元的数量等于输入单元的数量)时,当 AE 以输出尽可能接近输入的方式训练时,迫使 AEs 归纳数据并搜索共同模式。
与 AE 相比,VAEs 压缩概率而不是特征。
尽管做了简单改变,当 AEs 回答“我们如何概括数据?”,VAEs 回答问题“两个事件之间的联系有多强?我们应该在两个事件之间分配误差,还是它们是完全独立的?”。
更深入的解释(有一些代码)可以在这里找到。
虽然 AEs 很酷,但它们有时不是找到最健壮的特性,而是适应输入数据(这实际上是过拟合的一个例子)。
DAE 会在输入单元上增加一点噪声—通过随机位改变数据,随机切换输入中的位,等等。通过这样做,可以强制 DAE 从有点噪声的输入中重建输出,使其更通用,并强制选择更多的共同特征。
SAE 是另一种自动编码器类型,在某些情况下可以揭示数据中隐藏的分组模式。结构与 AE 中的相同,但隐藏单元数大于输入/输出层单元数。
马尔可夫链是一个非常古老的图形概念,其中每条边都有一个概率。在过去,它们被用来构造文本,比如“在单词 hello 之后,我们可能有单词 dear 有 0.0053%的概率,单词 you 有 0.03551%的概率”(顺便说一下,你的 T9 使用 MCs 来预测你的输入)。
这种 MCs 不是传统意义上的神经网络,MCs 可以用于基于概率的分类(如贝叶斯过滤器),用于聚类(某种类型),以及作为有限状态机。
Hopfield 网络是在有限的样本集上训练的,因此它们用相同的样本响应已知的样本。
每个单元在训练前作为输入单元,训练时作为隐藏单元,使用时作为输出单元。
当 HNs 试图重构训练样本时,它们可以用于去噪和恢复输入。给定一半的学习图片或序列,他们将返回完整的样本。
玻尔兹曼机器非常类似于 HNs,其中一些细胞被标记为输入并保持隐藏。一旦每个隐藏单元更新它们的状态,输入单元就变成输出(在训练期间,BMs / HNs 逐个更新单元,而不是并行更新)。
这是使用模拟退火方法成功获得的第一个网络拓扑。
多个堆叠的玻尔兹曼机器可以形成一个所谓的深度信念网络(见下文),用于特征检测和提取。
RBM 在结构上类似于 BMs,但是由于受到限制,允许像 FFs 一样使用反向传播来训练(唯一的区别是在反向传播传递之前,数据被传递回输入层一次)。
上面提到的 dbn,其实就是一堆玻尔兹曼机(被 VAEs 包围)。它们可以链接在一起(当一个神经网络训练另一个神经网络时),并且可以用于通过已经学习的模式生成数据。
DCN 现在是人工神经网络的明星。它们具有卷积单元(或池层)和内核,每一个都有不同的用途。
卷积内核实际上处理输入数据,池层简化了输入数据(主要使用非线性函数,如 max),减少了不必要的功能。
通常用于图像识别,它们对图像的小子集(大约 20x20 像素)进行操作。输入窗口沿着图像逐像素滑动。数据被传递到卷积层,卷积层形成一个漏斗(压缩检测到的特征)。就图像识别而言,第一层检测特定对象的渐变、第二条线、第三个形状等等。dff 通常附加到最后的卷积层,用于进一步的数据处理。
DNs 是 DCN 的反序。DN 取猫图像,产生类似{狗:0,蜥蜴:0,马:0,猫:1 }的矢量。DCN 可以用这个向量来画一只猫。我试图找到一个可靠的演示,但最好的演示是在 youtube 上。
设计(哦,我的上帝,这是长的)看起来像 DCN 和 DN 粘在一起,但它是不正确的。
实际上,它是一个自动编码器。DCN 和 DN 不是独立的网络,而是网络输入和输出的隔离物。这些网络主要用于图像处理,可以处理之前没有训练过的图像。由于它们的抽象层次,这些网络可以从图像中删除某些对象,重新绘制图像,或者用斑马代替马,就像著名的 CycleGAN 所做的那样。
GAN 代表了一个由发生器和鉴别器组成的双网络大家族。它们不断地试图欺骗对方——生成器试图生成一些数据,而接收样本数据的鉴别器试图区分生成的数据和样本。如果你能够保持这两个网络之间的训练平衡,这种类型的神经网络可以不断进化,从而生成现实生活中的图像。
pix2pix 就是这种方法的一个很好的例子。
LSM 是稀疏(非完全连接)神经网络,其中激活函数由阈值水平代替。单元累加连续样本的值,仅当达到阈值时发出输出,将内部计数器再次设置为零。
这种想法来自人脑,这些网络广泛应用于计算机视觉和语音识别系统,但没有重大突破。
ELM 试图通过创建具有随机连接的稀疏隐藏层来降低 FF 网络背后的复杂性。它们需要更少的计算能力,但实际效率严重依赖于任务和数据。
ESN 是具有特殊训练方法的循环网络的子类型。数据被传递给输入,如果被多次迭代监视,则传递给输出(允许循环特性生效)。此后,仅更新隐藏单元格之间的权重。
就我个人而言,除了多个理论基准之外,我不知道这种类型的真正应用。随便加你的)。
DRN 是一个深层网络,其中部分输入数据被传递到下一层。这个特性允许它们非常深(高达 300 层),但实际上它们是一种没有显式延迟的 RNN。
KN 引入了“到单元的距离”功能。这种类型的网络主要用于分类,试图调整它们的细胞以对特定输入做出最大反应。当某个单元被更新时,其最近的邻居也被更新。
像支持向量机一样,这些网络并不总是被认为是“真正的”神经网络。
SVM 用于二元分类任务。不管网络可以处理多少维度或输入,答案总是“是”或“不是”。
支持向量机并不总是被认为是一个神经网络。
哈,最后一个!
神经网络有点像黑匣子——我们可以训练它们,得到结果,增强它们,但实际的决策路径对我们来说大多是隐藏的。
NTM 试图解决这个问题——它是一个提取了记忆细胞的 FF 吗?一些作者也说这是对 LSTM 的抽象。
存储器通过其内容寻址,并且网络可以根据当前状态从存储器中读取和向存储器中写入,这代表了一个不完全的神经网络。
希望你喜欢这个概述。如果你觉得我说错了,可以随意评论,订阅以后关于机器学习的文章(还有,如果对题目感兴趣可以查看我的 DIY AI 系列)。
回头见!
多类定义
Photo by Tuân Nguyễn Minh on Unsplash
初露头角的机器学习程序员学到的第一课就是关于二进制分类。这是你和你的模型试图将一个输入归类为两个结果之一的想法。这是一个热狗或不是热狗,你应该拒绝或接受某人的贷款,或者你认为一个学生会通过或不及格。
一旦你掌握了这一点,课程就会开始教授多类分类。这是输入可以被归类为许多输出中的一种的想法——这更接近地代表了世界。也许你想预测一个介于 0-9 之间的数字图像。或者,你可能对邻居草坪上的那朵漂亮的花很好奇,所以你训练了一个模特来找出答案。一些首要的关键经验包括像一次性编码或标签编码。
我们都在这里学习,我最近发现了不同的多类和多标签分类,我想与大家分享。所以,让我们开始吧。
多标签分类
这组算法可以被认为是将您的输入分类为一个或多个类的一部分。一秒钟想到中等文章。当作者准备发表他们的文章时,他们必须决定一组代表他们文章的标签。这些标签可能是“人工智能”、“愚蠢的故事”或“走向数据科学”。
现在,Medium 或有时间的人可以训练一个模型,它可以通过对文章本身进行一些自然语言处理来学习人们如何标记他们的文章。然后,他们的模型将能够预测或推荐一篇新文章应该拥有的前 5 个“标签”或标记。
这里的思路是,没有没有互斥,输出可以把输入归为很多事物中的一种。
多类分类
反过来,多类分类确实有互斥性。如果我们把中等的类比延伸得更远一点,同样的模型只会预测或推荐其中一个标签,而不是许多。
这种类型的问题在机器学习指南中更常见,因为训练集可能有定义的基础事实。例如,如果您有一个预测狗品种的分类器,您会希望模型选择一个输出而不是两个。
有趣的是,在这组方法中有几个子类。有一对一和一对全/休息分类。这里的是一对链接,它们简洁地解释了这些差异。本质上,将多类分类分成更简单的子问题,特别是二分类问题,是聪明的方法。
多输出回归
这种分类方法类似于多类分类,但不是模型预测的类,而是模型为结果提供一个数字或连续变量。如果你想创建一个输出苹果股价和下一步走势的模型,这可能是个不错的选择。
像往常一样,在机器学习中,即使是第一个主题,也总是有更多的东西要学。如果您想更深入地研究这些方法,您可以查看属于每个类别的不同算法。SVC、朴素贝叶斯和随机森林可以归入不同的类别,它可以让您更好地理解这些工具集之间的差异。
感谢阅读。
噪音的误导效应:多重比较问题
如何避免被随机性愚弄
一家大型制药公司的首席执行官遇到了一个问题。他的化学家们开发的增强意志力的神奇新药每次试验都失败了。首席执行官无法相信这些结果,但研究人员告诉他,在 0.05 的显著性水平(p 值)上,没有证据表明这对意志力有影响。确信药物在某些方面肯定是有益的,首席执行官有了一个绝妙的主意:不是只测试药物的一种效果,而是同时测试 1000 种不同的效果,所有的效果都是相同的 p 值。即使它不会增加意志力,它也必须做一些事情,比如减少焦虑或增强记忆。持怀疑态度的研究人员完全按照首席执行官所说的重新进行了试验,监测了服用该药物的受试者的 1000 项不同的健康指标。研究人员带回了令人震惊的消息:该药物对 50 个测量值有显著影响!奇迹般的权利?实际上,如果他们在这个实验分析中发现没有显著影响,那会更令人惊讶。
首席执行官的错误是多重比较问题的一个例子。这个问题归结于现实世界中数据的噪音。虽然噪声影响一个结果的机会可能很小,但是我们进行的测量越多,随机波动被误归类为有意义结果的可能性就越大。虽然这影响了进行客观研究的研究人员,但它也可能被用于邪恶的目的。
首席执行官有一种药物,他想卖,但它没有达到它的设计目的。他没有承认失败,而是指示他的研究人员继续观察,直到他们发现药物改善的一些重要迹象。即使这种药物对任何健康指标完全没有效果,研究人员最终也会发现,由于数据中的随机噪声,这种药物确实改善了一些指标。由于这个原因,多重比较问题也被称为看别处效应:如果一个研究者没有找到她想要的结果,她可以继续寻找,直到她找到一些有益的效应!
If at first you don’t succeed, just keep searching!
幸运的是,大多数统计学家和研究人员是诚实的,并且使用方法来解释多重比较问题。最常见的技术称为 Bonferroni 校正,但在解释之前,我们需要先谈谈 p 值。
p 值表示在零假设为真的情况下,检验统计量至少与测量值一样极端的概率。在药物的例子中,对于最初的试验,无效假设是药物没有增加个体的平均动机。另一个假设,或者研究者的信念,是药物增加了平均动机。p 值为 0.05,这意味着在一个药物不会增加平均动机的世界中,研究人员将测量药物会因随机噪声而增加动机 5%的时间。
在进行研究之前,研究人员选择一个 p 值(称为 alpha 或显著性水平)来建立统计显著性。如果测得的 p 值低于阈值,则拒绝零假设,结果具有统计学意义。较低的测量 p 值被认为更好,因为它表明结果不太可能偶然出现。
一旦我们知道 p 值代表什么,我们就能发现 CEO 的错误。他命令以同样的 p 值 0.05 再次进行试验,但他不是只测试一种效果,而是要测试 1000 种效果。如果我们执行 1000 次假设检验,p 值为 0.05,由于随机噪声(1000 次的 5%),我们预计平均会找到 50 个显著结果。一些结果实际上可能是有意义的,但是宣布它们都是有意义的,并根据这项研究来销售药物是不道德的!
下图说明了这个问题。我从一个标准的正态分布中产生了 1000 个随机数,并将它们绘制在相应的概率密度函数上。我们可以忽略此处的 y 轴,而专注于 x 轴,即 z 得分。如果我们执行假设检验,并假设我们的检验统计(测量值)的平均值来自正态分布,那么我们根据 z 得分计算我们的检验统计。使用我们为假设检验选择的 p 值(α),我们可以找到统计显著性所需的 z 值。p 值为 0.05 的这些阈值显示为红色垂直线,线外的观察值被认为具有统计显著性。黑点是不重要的随机生成的观察值,而红点是“重要的”随机生成的数据点。
Random Observations with a p value of 0.05
我们可以看到,通过随机观察和使用未校正的 p 值,我们将这些结果中的一些归类为显著的!如果我们有一种药物要卖,这可能是一个好消息,但是作为负责任的数据科学家,我们需要考虑进行多次测试,这样我们就不会被噪音误导。
多重比较问题的一个简单解决方法是 Bonferroni 校正。为了补偿许多假设检验,我们取单个比较的 p 值,并除以检验次数。在药品公司试验的情况下,原始的 p 值 0.05 应该除以 1000,得到新的显著性阈值 0.00005。这意味着结果必须更加极端才能被认为是有意义的,从而降低了随机噪声被描述为有意义的概率。
我们可以将 Bonferroni 校正应用于上图,看看它如何影响随机点的分类。该图具有相同的结构,但现在显著性阈值说明了多重测试。
Random Observations with Bonferroni Correction to Significance Level
没有随机数据点现在被认为是重要的!有的批评认为 Bonferroni 修正过于保守,它可能会导致我们拒绝一些实际上有意义的结果。然而,该方法背后的重要概念是,当我们进行许多比较时,显著性值需要调整。
多重比较的问题不仅仅局限于假设检验。如果我们比较足够多的数据集,我们可以发现相关性只不过是随机噪声。网站的虚假相关性幽默地说明了这一点,该网站列举了一些完全不相关的趋势,而这些趋势恰好密切相关。
Seems Legit (Source)
当我们检查研究时,要记住多重比较问题,这很重要,但它也可以用于我们的日常生活。如果我们足够努力,我们可以在任何地方找到相关性,但这并不意味着我们应该因为它们而改变生活方式。也许我们每天称体重,发现体重与发短信的数量呈负相关。寄希望于减肥而发更多的短信是愚蠢的。人类擅长识别模式,当我们足够努力地寻找并进行足够多的比较时,我们可以说服自己随机噪音中有意义。一旦我们意识到这种趋势,我们就准备分析可疑的主张,做出理性的选择。
一如既往,我欢迎反馈和建设性的批评。可以在 Twitter @koehrsen_will 上找到我。
数据科学的音乐
Photo by: Jorge Guillen
我学到的一件事——或者更确切地说,被提醒的一件事——是统计学就像乐谱上的音乐。就像只用七个音符的音乐家一样,统计学家更喜欢用很少的字母来代表变量、常数和函数。他们都选择了大量难以复制的符号来装饰这几个选定的字母。
当我们将这些统计函数转换成 Python 时,我们发现有许多方法可以使用统计数据的复杂组合。首先,我们必须选择仪器或库。以下是其中的一些库:
Numpy 和Math**😗*Numpy 是一个重要的库,许多其他库都基于它,比如 Pandas 和 Scipy。对于统计,我们可以使用这个清单中的字面函数来重新创建统计函数,如标准差或简单的线性回归。
这个简单的线性回归表达式(针对房屋的预测价格):
*β0= y_bar - β1*x_bar #y_bar is mean of prices
#x_bar is mean of square ft**β1= r(sqft, price)*(std price/std sqft) #r is Pearson's r value* Y = *β0 + β1X #Predicted price*
变成了这样:
import numpy as npdef beta0_beta1(x_list, y_list):
x_list_mean = np.mean(x_list)
y_list_mean = np.mean(y_list)
x_list_std = np.std(x_list)
y_list_std = np.std(y_list)
beta_one = (np.corrcoef(x_list, y_list)[0,1])*.
(y_list_std/x_list_std)
beta_naught = y_list_mean — (beta_one * np.mean(x_list)
return (beta_one, beta_naught)X = beta0_beta1(X_list_sqft, Y_list_price)SLR = beta_naught + (beta_one * X)
#Simple linear regression model.
作为初学者,在代码中“看到”这些函数的每一步,有助于理解其他更复杂的建模技术是如何在源代码中编写的。
Numpy 和弹钢琴一样容易,一样难。你只需触摸琴键就可以发出声音,但只有理解了你想要弹奏的“音符”(即理解了数学),它才会产生真正的音乐。
stats models**😗*这个名副其实的库是一个统计极客的工具箱。我们可以调用我们想要使用的函数,比如普通的最小二乘法和其他统计函数。我喜欢 StatsModels 的主要原因是model.summary()
函数,它有点像熊猫探索性数据分析的dataframe.describe()
:精彩、清晰、充满有用信息。此外,它还有用于练习和测试的数据集。
普通最小二乘模型:
import statsmodels.api as sm#Set up data
X = housing[“sq__ft”] # X usually means ind variables
y = housing[“price”] # Y usually means output
X = sm.add_constant(X) # add intercept (beta_0) to model#Fit the model
model = sm.OLS(y, X).fit() # OLS is order of least squares
sm.OLS(output, input).fit() #(fit relationship between beta0 hat
and beta1 hat)#take in X (input) and run the model to get predictions
predictions = model.predict(X)# Print out the statistics
model.summary()
在这里,model.summary()
将输出系数、R2 分数、p 值等。
StatsModels 有点像小提琴——同样,发出声音并不难——但如果演奏者缺乏对音乐和乐器本身的理解,那声音绝对可怕。也就是说,由于这些模型“在引擎盖下”有更多的功能,新手可能很容易做出可怕的预测,而不知道如何或为什么。
scikit learn**😗*这个库显然是高级的。创建代码的开发人员显然试图优化我们当中那些想要研究需要计算效率的机器学习技术的数据科学家。像 StatsModels 一样,它也有许多用于测试和实践的数据集。
预测工资的多元线性回归:
from sklearn import linear_model
from sklearn.metrics import r2_scoreX = subset[['years_experience', #Choose the variables
'years_since_degree']]
y = subset['salary'] #Set the target for
predictionlm = linear_model.LinearRegression() #Call a function that
model = lm.fit(X, y) runs MLR and fit it to
data
predictions = model.predict(X) #Look at predictions (and
probably use it to plot)
print "Model Score:", model.score(X, y) #What's the R2?
我非常尊重这个工具包,就像一把斯特拉迪瓦里琴一样,这个乐器的极限显然是为专业人士设计的。
关于如何使用各种库来创建模型,以及哪些库更适合不同的用途,有很多讨论。现在,我弹得越来越好,越来越轻松,但我迫不及待地想尝试用斯特拉迪瓦里小提琴演奏维瓦尔第。
起源之谜——利用 Fast 进行癌症类型分类。人工智能图书馆
tree without its roots
第一章。问题——没有根的树
大约 15%的癌症转移,即癌细胞从它们最初形成的地方(原发部位或起源组织)脱离,并通过血液或淋巴系统形成新的转移性肿瘤。确定转移肿瘤的原发部位是癌症治疗中的公开问题之一,因为治疗的功效通常取决于癌症原发部位。
使用肿瘤中的 点突变 进行癌症分类具有挑战性,主要是因为数据非常稀少。许多肿瘤在编码区只有少数突变,而且许多突变是独特的。
先前已经证明,依赖于肿瘤中点突变的分类器实现了有限的准确性,特别是在 12 个肿瘤类别上 64.9%,例如 DeepGene 算法。依靠基因表达数据的可用性,可以大大提高肿瘤分类的准确率(33 个肿瘤类别**~ 90%)。然而,这些额外的数据在临床环境中通常不容易获得。因此,能够仅从 DNA 点突变预测肿瘤类别而不依赖于额外的基因表达数据的精确计算方法是非常令人感兴趣的。**
第二章。解决方案=嵌入+迁移学习和微调
那么解决办法是什么呢?
正如量子理论物理学家 尼尔斯·玻尔 所指出的那样: “每一个巨大而深刻的困难本身都有它自己的解决方案。”为了找到它,它迫使我们改变思维。
让我们检查一下我们面临的困难:
- 数据的表示 —当前的数据表示不允许我们使用预训练的深度神经网络,这些网络在图像数据集上表现非常好。不幸的是,在癌症基因组应用领域,训练数据很少,并且诸如数据扩充的方法不适用。从癌症基因组图谱(TCGA) 可获得 9642 个样本,分布在 29 个类别。
- 即使在基因水平上总结,肿瘤点突变数据也很少。来自癌症生物学的一个有趣观察是,属于同一途径的基因中的癌症突变通常是互斥的。下面是癌症中受影响的“标志性”过程(途径)的一个例子。路径以蓝色列出;图片摘自本文。
那么,为什么不用途径编码点突变数据,但是怎么编码呢?使用来自通路中基因成员的信息来训练我们自己的基因 2Vec 编码怎么样?****
这里有一个预览,它在不阅读细节的情况下工作得有多好— 仅依靠 DNA 点突变对 29 种肿瘤分类的准确率为 78.2%。
第三章。循序渐进的“如何做”
****3.1 数据及其预处理:我从基因组数据共享门户下载了 TCGA 突变注释格式(MAF)文件。我去除了沉默突变,只保留了带有智人基因组组装 GRCh38 (hg38)注释的基因。数据集被分成 29 种肿瘤类型,每种类型中 80%的样本用于训练,20%用于测试。
MutSigCV 用于识别在每个肿瘤类型训练集中检测到的非沉默突变中的显著突变基因。这让我能够提取非常稀疏的数据集的重要特征。考虑到包括给定基因的碱基组成、长度和背景突变率在内的协变量,MuTSigCV 检测突变发生率高于随机预期的基因。我只剩下1348 个独特的显著突变基因**。**
为了学习数据的生物学相关嵌入,我训练了 Gene2Vec 嵌入。我使用了所有已知途径的数据库,MSI gdb6.2 版,包含 17810 个途径。本着 Word2Vec 的精神,我将路径相似的基因映射到附近的点上。在这里,我假设出现在相同途径环境中的基因共享生物功能。我在定义 Gene2Vec 时使用了标准的 Skip-Gram 模型。
3.2 突变数据到图像的转换:
然后我提取学习过的基因 2Vec 嵌入我们训练集中的 1348 个明显突变的基因,这一步产生了一个方阵。我使用谱聚类算法在嵌入矩阵中创建视觉结构。谱聚类是一种将一维空间中的 N 个数据点分成几个簇的技术。然后使用光谱聚类基因嵌入对训练和测试样本进行编码。左图是胃癌样本的包埋示例。下图是 1348 个显著突变基因的 t 分布随机邻近嵌入( t-SNE )基因嵌入可视化。参与相同癌症途径的基因在它们的表达中彼此更接近,例如 KRAS 和 PTEN(结肠直肠癌);TP53、APC 和 MSH6 (DNA 错配修复)比其他基因靠得更近。
3.3 迁移学习和微调— 快速。AI :
我使用 ResNet34 模型在 ImageNet 上预先训练好的权重作为使用我们的肿瘤图像嵌入进行肿瘤分类的目标任务的初始化。图像被重新缩放到 512x512,并被归一化以匹配 ImageNet 图像的平均值和标准偏差,批量大小被设置为 32 以适合我的 GTX 1070 Ti GPU。
在微调的第一阶段, ResNet34 除了最后一个自定义全连接层外,其他层都被冻结。使用学习率查找器将学习率选择为 0.01,参见 Leslie Smith 的论文及其在 Fast 中的实现。AI 回购。倾斜三角形学习率训练计划用于 10 个周期。第一阶段达到的精度为 73.2% 。
在第二阶段,区别微调使用 0.000001 至 0.001 的学习率序列,这些也是使用学习率查找器确定的。区别性微调将深度神经网络的层分成组,并对每个组应用不同的学习率,因为不同的层应该被微调到不同的程度;最早的残差块最小,全连通层的学习率最大。在第二阶段的训练中,我使用了 12 个周期的倾斜三角形学习率训练计划。第一阶段达到的准确度为 78.3% 。
这是我们分类器的混淆矩阵:
第四章。一些观察
我观察到我们的错误分类主要在相同的器官系统内,例如卵巢浆液性囊腺癌(OV)和乳腺癌(BRCA)。
我还观察到卵巢浆液性囊腺癌(OV)是错误最多的一类。这实际上并不令人惊讶,因为与其他群组的大量基因相比,在该群组中只有 6 个基因被确定为显著突变。
但是我最重要的观察是快。AI 库允许最先进的迁移学习和微调**。给定数据的正确表示,构建最先进的分类器变得非常容易:在这里,我将这个问题的先前最先进的错误减少了 30%以上,而同时区分了更多的类。谢谢杰里米、雷切尔和 Fast。艾!**
我真的很期待表演更多的 【知识转移】从 Jeremy 和 Rachel 到我自己 (😃 ,有区别地微调我在其他重要和有趣的问题上所学的 hack!
如果您对上述内容有任何疑问请在 twitter @alenushka 上找到我****
朴素贝叶斯分类器
约瑟夫·卡坦扎里特
朴素贝叶斯分类器 或许是用来构建、训练和预测的最简单的机器学习分类器。这篇文章将展示它是如何工作的以及为什么工作。 第一部分 揭示了广为人知的 贝叶斯法则 只是简单陈述了关于 联合条件 的概率。但它的平淡掩盖了惊人的力量,正如我们将在 第 2 和第 3 部分、 中看到的,在那里我们组装了机械的 朴素贝叶斯分类器 。 第四部分 是一个简要的讨论,而 第五部分和第六部分 列举了 朴素贝叶斯分类器 的优缺点。 第 7 部分 是总结, 第 8 部分 列举了几个我觉得有用的参考文献。欢迎建设性的意见、批评和建议!**
Reverend Thomas Bayes
1.前奏:贝叶斯法则
给定两个事件 A 和 B,联合概率 P(A,B)是 A 和 B 一起发生的概率。它可以用两种方式之一来写:
第一种方式:
P(A,B) = P(A|B) * P(B)
这里 P(A|B)是一个条件概率:假设 B 已经发生,A 发生的概率。这就说 A 和 B 一起发生的概率是(假设 B 已经发生,A 发生的概率)乘以(B 已经发生的概率)。
第二种方式:
将前一等式中的 A 和 B 互换,得到一个等价的表达式:
P(B,A) = P(B|A) * P(A)
注意,P(B,A)和 P(A,B)是相等的,因为联合概率不依赖于顺序。相等的两个方程的右边产生著名的贝叶斯法则:
P(A|B) * P(B) = P(B|A) * P(A)
2.如何构建贝叶斯分类器
假设我们有一个由 N 个数据点组成的数据集,每个数据点有 M 个特征,被标记为一组 K 个类中的一个。给定特征值,有一个可以预测类别标签的分类器就好了,对吧?你想一下,条件类概率 P(C|D)就是那张票!我们只需要添加一个决策规则来告诉我们如何选择类标签。
条件类概率来自贝叶斯法则的应用:
P(C | D)= P© P(D | C)/P(D)*
其中:
c 是一个类,D 是一个数据点,由 M 个特征中的每一个的值组成。
贝叶斯规则表达式中的术语从左至右为:
- 后验 P(C|D)是数据点 D 在类别 C 中的概率
- 先验 P©是 C 类在数据集中出现的概率,即具有 C 类的数据点的比例
- 可能性 P(D|C)是给定类为 C 的情况下,我们观察到数据点 D 的相对概率
- 证据 P(D)是数据点 D 在自然界出现的概率
实际上,P(D)通常很难或不可能计算。不要担心!因为 P(D)独立于 C 类,就我们而言,它只是一个比例常数,我们并不关心。
不知道 P(D)的唯一后果是后验概率将是一个相对概率,而不是一个真实概率。但这也没什么,posterio r 的相对值足以进行分类预测。
为了完成我们的分类器的规范,我们采用了映射(最大后验概率)决策规则,该规则将标签分配给具有最高后验概率的类。
为了应用分类器,我们
1。计算每个类的 posterio r,然后
2。应用映射决策规则来预测分类标签
3.朴素贝叶斯分类器
采用“天真的”假设,即特征值对于给定类别的成员是独立的,可以极大地简化可能性的计算。假设数据点 D 的 M 个特征值具有值(x1,x2,…,xM)。然后在“天真”的假设下,可能性成为每个特征的独立可能性的乘积:
P(D|C) = P(x1,x2,…,xM|C) = ∏{i=1 到 M}P(xi|C)
独立的可能性易于计算离散特征:P(xi|C)是 C 类中所有数据点的比例,这些数据点在具有特征的中具有 xi 值。
通过这种简化,贝叶斯法则变成了
P(C|D) ∝ P© * ∏{i=1 到 M}P(xi|C)
上述公式受到下溢误差的影响,因为它通常是非常小的数的乘积。取对数将小数字的乘积转换为普通大小数字的和,同时保持正数的顺序(即,如果 A > B,则 logA > logB)。有了这个补救措施,我们就有了一个实用的计算版本的朴素贝叶斯分类器,它很容易用代码实现:
logP(C|D) = logP© + ∑{i=1 到 M}logP(xi|C)
我们忽略了右边比例常数的对数;由于我们只对后验的相对值感兴趣,这不会影响课堂作业。
对于具有离散值的特征(如单词),求和中带有项的是 C 类数据点比例的对数,其带有特征值的等于 xi。万一没有呢?那项变成 log(0),方程爆炸,我们无法做出预测。为了确保这种情况不会发生,我们可以在每个可能性因子的分子和分母上加 1。这是拉普拉斯平滑的变体。
4.讨论
如果有连续值特征,如身高和体重,朴素贝叶斯可用于回归。在这种情况下,训练数据被划分到它的类中。在每个类中,每个特征的值都被假设为正态分布;高斯的参数是特征值的均值和方差。或者,可以通过宁滨值对连续要素进行离散化,但这样做会丢弃信息,并且结果可能对宁滨方案很敏感。
每当“天真”假设成立时,朴素贝叶斯分类器是最优的(意味着它是最准确的可能分类器),甚至在某些情况下不成立。在大多数情况下,假设不成立,结果是后验概率不准确。令人惊讶的是,使用图决策规则进行的分类通常相当准确,即使概率并不准确!
当训练数据代表母体时,朴素贝叶斯应该工作得最好,以便先验是准确的。
5.朴素贝叶斯分类器的优势
- 对于少量训练数据的问题,它可以获得比其他分类器更好的结果,因为它具有较低的过拟合倾向。那是奥卡姆剃刀在起作用!
- 训练很快,包括计算先验和可能性
- ****对新数据点的预测很快。首先计算每个类的后验。然后应用映射 决策规则:标签是具有最大后验的类。
- RAM 内存的占用是适度的,因为这些操作不需要一次将整个数据集保存在 RAM 中。
- ****CPU 使用率适中:没有梯度或迭代参数更新需要计算,因为预测和训练仅使用解析公式。
- 与特征数量和数据点数量成线性比例,并且易于用新的训练数据进行更新。
- 因为它的线性缩放、快速执行、较小的内存需求和较低的 CPU 使用率,可以为其他方法计算量太大的大量问题(许多行和列)提供可行的解决方案。
- 轻松处理缺失的特征值 —在没有该特征的情况下通过重新训练和预测!
6.朴素贝叶斯分类器的缺点
- 无法合并功能交互。
- 对于回归问题,即连续的实值数据,可能没有好的方法来计算的可能性。对数据进行宁滨并将离散类分配给箱是次优的,因为它丢弃了信息。假设每个特性都是正态分布的是可行的,但是如果特性不是正态分布的,可能会影响性能。另一方面,有了每个类中足够的训练数据,您可以直接估计可能性密度,允许对新数据进行精确的可能性计算。
- 性能对倾斜的数据很敏感,也就是说,当训练数据不代表总体中的类别分布时。在这种情况下,之前的估计将是不正确的。
7.摘要
在这篇文章中,你已经学会了如何从头开始构建一个朴素贝叶斯分类器。你现在被授权运用奥卡姆剃刀从观测数据中推断宇宙的真相!我希望你已经看到了一丝曙光,为什么贝叶斯规则是有史以来最重要的实用数学发现之一。现在,向前去发现…
8.参考
c.Naμve Bayes 分类器,维基百科
Bayes’ Rule
数字声音处理的天然耳朵
傅立叶变换的替代方案
这是自然耳朵的原始模型。我为什么想到它,以及它在数字声音处理(DSP)中如何优于快速傅立叶变换(FFT)——这就是本文的内容
我参与的一些软件开发项目使用傅立叶变换进行波形分析。这些项目包括枪支目标和 DTMF 信号的声音音调识别。但在此之前,我渴望得到一张人类语言和音乐和谐的“照片”。最近,我启动了一个应用程序,它可以在我弹吉他的时候演奏一些乐器。问题是教电脑听我的节奏,并保持音乐节奏有序。为了做到这一点,我在平克·弗洛伊德的作品《放逐》的前几秒使用了傅立叶变换。然后,我将“图片”与我演奏的相同作品进行比较,结果很差,直到我选择了高达 8192 的 FFT 块大小来识别至少第六个八度音阶的音符。
这显示了傅立叶变换的第一个问题——要获得真正好的分析,需要增加块大小(在多个频率仓上),结果性能下降,特别是对于实时处理。
音乐傅里叶变换分析的第二个问题是,同样的乐器,根据音色的不同,会产生不同的泛音。这些通过 FFT 分析的泛音频率产生了与我们实际听到的内容无关的峰值。为了概括这个结果,我用 12 个半音概括了频率仓。画面更好,但现在第一个音符被识别为 C,而实际上是 B:
这迫使我去阅读更多关于声音、听觉和 人耳 的本质。我想问题可能是傅里叶变换的第三个问题——它对信号相位很敏感。人耳不能识别单个谐波的相位,只能识别频率。
我使用 R 语言创建了一个模型(您可以在文章末尾找到代码),它为一组频率生成输入信号:
然后用我十五年前组合的一些公式(同样的实验由于 PC 性能差而失败)创建了一个钟摆的模型。物体可以接收输入信号,如果信号中有相同的频率,物体就会振荡
频率:
不依赖于摆锤自振频率的衰减系数:
钟摆的位置:
速度和能量:
这是钟摆对相同频率信号的反应:
绿色—输入信号
蓝色—摆振荡
红色—摆能量
对于与摆锤频率略有不同的输入信号,振幅和能量明显小于之前的结果:
九种不同信号的组合图—中央信号已被识别:
在那之后,我为不同的频率建造了一套钟摆来覆盖五个八度音阶和十二个音符。这导致了 60 个钟摆聆听“放逐”的第一个和弦的能量:
结果,主音调被正确地检测到。我认为人耳忽略输入信号相位信息的能力对于音乐识别至关重要。我用这个模型创建了一个名为耳蜗的 C++库,用来实时聆听、检测和同步音乐。这将在下一篇文章中描述。
r 代码
library(plyr);
library(tuneR); #*define a class that imitate a pendulum and has two methods - init and tick*pendulum <- setRefClass(
"pendulum",
fields = list( v = "numeric",
x = "numeric",
K = "numeric",
T = "numeric",
Phi = "numeric",
E = "numeric",
lastS = "numeric"),
methods = list(
#*define the initial state and calculate coefficients*
init = function(w = "numeric")
{
#*period*
T <<- 44100 / w;
#*coefficient of elasticity*
K <<- (2 * pi / T) * (2 * pi / T);
#*fading coefficient*
Phi <<- 2 * atan(T) / pi;
#*initial state*
v <<- 0;
x <<- 0;
lastS <<- 0;
},
#*pass the position of the stimulating lever*
tick = function(s)
{
lastX <- x;
#*position*
x <<- x + (v + s - lastS - K * x) * Phi;
#velocity
v <<- x - lastX;
#*energy*
E <<- (v * v) / 2 + (K * x * x) / 2;
lastS <<- s;
return(c(x, E));
}
)
)
#*create one pendulum and init with 700 as frequency of auto-oscillation*
p <- pendulum();
p$init(700);
#*init a vector of waveforms with frequencies from 500 to 900*
m <- aaply(seq(500, 900, 50), 1, function(x) sine(x, 1500)@left);
# *clear end of the waveform*
m[, 1001:1500] <- 0;
#*apply the pendulum tick to the vector of waveforms*
m <- t(m);
r <- aaply(m, c(1, 2), p$tick, .progress = "time");
#*index of the waveform to plot*
i <- 5;
#*show results*
plot(m[, i] * 100, type = "l", col = "dark green");
lines(r[ , i, 1], type = "l", col = "blue");
lines(r[ , i, 2], type = "l", col = "red");
沿着这个链接可以找到 R 码: R 码
附言(同 postscript);警官(police sergeant)
对于个人问题,请在 Linkedin 或脸书上联系我,有时我会在那里发布关于人工智能的简短新闻和想法。
如果有 AI 方面的需求,或者需要组建数据科学咨询团队,请联系我
深度学习的不远的将来
在所有最新的深度学习研究中保持领先是非常困难的。下载 Arxiv 移动应用并启用通知将向您展示深度学习研究的疯狂步伐。这么多论文被公开,很难区分信号和噪音。这篇文章将强调我认为将对深度学习的未来产生最大影响的 3 个研究领域。
一、建筑搜索
事实上,设计神经网络架构与其说是科学,不如说是艺术。我们大多数人只是从货架上抓取一个流行的网络架构,如 VGG-16/19 [1]或 ResNet [2]。这些前沿架构是如何被发现的?使用强大的 GPU 计算机进行简单的试错。
何时应用最大池、使用何种卷积滤波器大小、在何处添加漏失层,这些决策大多只是随机猜测。
回车,神经架构搜索 [3]。NAS 使用强化学习来搜索卷积网络架构。
与敌手对 NAS,衰老进化为图像分类器搜索【4】。该策略使用遗传算法的修改来搜索卷积网络架构。
这两种算法都能够设计出优于人类的 CNN 架构。Keras 或 PyTorch 等库中的未来神经网络 API 将只要求您定义网络中所需的一系列层或参数。这些算法将设计架构。
二世。压缩神经网络
训练深度学习网络是熟悉计算机内存的好方法。典型的笔记本电脑大约有 8 到 16 GB 的内存。iPhone 8 plus 有大约 3 GB 的内存。VGG-16 图像分类网络有大约 1.44 亿个参数,大约 500 MB。由于这些网络的巨大规模,很难建立移动人工智能应用程序和使用多个网络的应用程序。将网络加载到 RAM 内存中可以加快计算速度。
压缩这些网络的研究比如深度压缩【5】工作原理非常类似 JPEG 图像压缩;量化和霍夫曼编码。深度压缩能够将 VGG-16 从 552 MB 减少到 11.3 MB,而不损失准确性。
三世。基于 GAN 的数据增强
构建深度学习模型的最大挑战之一是构建数据集。深度学习模型需要大量的数据。GANs 是一个很有前途的生成式建模框架,可以从数据集中推断出新的数据点。这可用于从小数据集创建大数据集。
甘斯与训练稳定性作斗争。在图像域,很难实现高分辨率输出,如 GANs 的 360 x 360 x 3。这导致了诸如 DCGAN [6]、StackGAN [7]和逐渐增长的 GANs [8]等架构的发展。
结论
总而言之,我认为架构搜索、压缩神经网络和使用 GANs 建立深度学习数据集都将成为深度学习未来的基础部分。关于这些主题,有很多令人兴奋的研究论文,我推荐大家去看看。
感谢阅读!希望这有助于引导你对深度学习的兴趣!
参考文献
[1]卡伦·西蒙扬,安德鲁·齐泽曼。用于大规模图像识别的非常深的卷积网络。2014.
[2]何、、任、。用于图像识别的深度残差学习。2015.
[3] Barret Zoph,Quoc 诉 Le。强化学习的神经结构搜索。2017.
[4] Esteban Real,Alok Aggarwal,黄雁萍,Quoc 诉 Le。图像分类器结构搜索的正则化进化。2018.
[5]宋汉,毛,威廉 j .日报。深度压缩:通过剪枝、训练量化和霍夫曼编码压缩深度神经网络。2015.
[6]亚历克·拉德福德,卢克·梅斯,苏密特·钦塔拉。深度卷积生成对抗网络的无监督表示学习。2015.
[7]张寒、徐涛、李洪生、张少婷、王晓刚、黄小蕾、季米特里斯·梅塔克萨斯。StackGAN:使用堆叠生成式对抗网络进行文本到照片级逼真图像合成。2016.
[8]泰罗·卡拉斯、蒂莫·艾拉、萨穆利·莱恩、贾科科·莱蒂宁。为了提高质量、稳定性和变化性而逐步种植甘蔗。2017.
对数据基础设施的需求,以便更好地利用人工智能
随着智能手机、智能汽车、智能家居等创新的出现,技术正迅速将我们的世界转变为一个“智能”世界。物联网(IoT)是其中的主要贡献者之一。物联网的核心是配备传感器和微芯片的互联设备,这些设备有助于通过互联网在中央平台上传输数据,以提高效率和性能。据估计,到 2020 年,全球联网设备的数量将接近 500 亿台。
随着连接设备的数量持续快速增长,管理和分析这些设备产生的海量数据的需求将会增加。这些数据至关重要,因为它包含有价值的见解和模式,可以帮助企业和组织评估潜在风险,寻找新的业务机会,最重要的是提高组织的整体运作和生产力。现在,这就是人工智能(AI)和机器学习(ML)的用武之地。AI 和 ML 技术允许数据科学家深入研究海量数据,并从中发现有意义的见解。在强调人工智能对于物联网和机器的重要性时,约翰·麦卡锡教授恰当地指出:
人工智能的目标是开发具有智能行为的机器。
尽管处于发展阶段,人工智能已经开始在全球市场创造就业前景。凯捷报告称,近 83%利用人工智能技术的组织认为人工智能领域已经开始涌现新的工作岗位。随着越来越多的组织加入大数据和人工智能的行列,现在对数据科学家、数据工程师、数据分析师等熟练数据专业人员的需求巨大。
现在,互联网上充斥着高度教育性和知识性的在线人工智能课程,让你在人工智能领域开始职业生涯变得更加方便。这些课程是专门为有抱负的学生介绍人工智能的基本概念,如算法,自然语言处理等。,并逐步向机器学习、深度学习等更复杂的概念进展。如果你和技术领域有一点点关系,建议你参加这些课程,提高你的就业能力。因为,现在已经很清楚了,各种组织都在不断寻找高技能的数据专业人员。没有比现在更好的时机让你开始了!
计算在数据管理中的作用
如今,数据呈指数级增长,每天产生近 2.5 万亿次数据!在我们生活的数据驱动的世界中,这些数据是所有信息的来源。然而,管理如此海量的数据本身就是一项挑战。由于高端计算流程,我们能够存储、处理和分析这些数据,以揭示隐藏的趋势和见解,从而改善业务运营、提高生活质量,最重要的是,促进创新。
计算机处理和分析数据的速度比人类快得多,也更准确,因此,计算机正在极大地帮助公司利用其掌握的数据来计算重要的统计数据、监控员工绩效、实现自动化、提高生产率和销售额、提高机器的效率等等。正是由于这种计算能力,今天的组织可以获得大量的统计和技术见解和数字。此外,云计算等技术增强了人工智能的功能。例如,网飞和亚马逊等工业巨头依赖基于云的框架来处理需要全面分析和计算的人工智能任务和服务。
数据基础设施和人工智能
数据基础设施是数据处理和分析的一个重要方面。如果没有合适的数据基础设施,企业和组织就无法从数据中创造价值。对于数据基础设施,我们指的是处理、存储、传输和保护数据所需的整个后端计算支持系统。
虽然许多公司使用软件定义的基础架构(SDI)来支持动态 IT 环境,但 SDI 仍有其积压工作。SDI 不仅受到静态源代码的限制,而且它的功能在很大程度上也依赖于为特定环境编写代码的软件开发人员的技能和专业知识。因此,SDI 不是“智能的”现在的趋势是转向人工智能定义的基础设施(ADI)。
从本质上讲,ADI 是 SDI 的智能升级版,全面集成了复杂的 AI 和 ML 算法,可以从现有信息中“学习”以自动构建自修复框架。ADI 公司可以:
- 不断分析现有基础设施所有组件的动态行为,并“学习”理解它们自身的工作方式。
- 通过主动监控基础架构组件的功能并自主采取措施解决问题(如果有),创建一个无错误的环境。
- 根据工作负载的要求部署资源,并在不再需要时取消分配特定资源。
这些数据基础设施有助于支持各种人工智能相关的技术和应用,包括:
- 对现有框架的支持:数据基础设施应该整合人工智能框架,如 TensorFlow、Caffe、Theano 和 Torch,以增强和支持现有框架。然而,重点不应该仅仅依赖于人工智能框架,而是应该符合软件开发人员的需求和兴趣。
- GPU 友好环境:为了确保 AI 任务和进程的无缝处理,数据基础设施必须支持具有令人印象深刻的计算能力的 GPU 环境。微软的 N 系列 GPU 实例就是一个很好的例子
- 人工智能优化的管理环境和工具:缺乏合适的管理环境和工具来支持和运行人工智能应用是当前数据基础设施的最大缺点之一。因此,集成正确的管理工具和环境以提供最佳性能至关重要。
- 机器推理:AI 环境中不可分割的一部分的机器推理。机器推理算法使人工智能环境能够跟上基础设施和技术的动态趋势,从而为最佳行动提供有意义的见解。
组织技能在 AI 实施中的重要性
仅仅投资和利用人工智能技术是不够的。公司和企业需要一个专业人才库,能够以确保最佳结果的方式使用这些人工智能工具。随着人工智能和机器学习继续渗透到全球各地的行业和企业,越来越需要重新思考一个组织的整个领导力和思维过程,从产品战略和客户体验到寻找提高人力资本生产率的方法。商业世界的领导者必须通过以下方式鼓励智能人工智能集成到他们的系统中:
- 以人为本
仅仅投资人工智能技术不会有任何结果。企业也必须相应地投资于员工。根据杜克大学人类自主实验室主任米西·卡明斯,
“人工智能的未来是支持和增强人类的能力,这样一个人-人工智能团队比任何一个单独的团队都更强大。”
- 培养学习的工作文化
作为一个发展中的领域,人工智能需要不断的训练和学习,以跟上它今天带来的创新和变化。在未来,人工智能将在技术领域带来新的变化,只有通过鼓励和创造不断学习和培训的工作环境,组织才能跟上人工智能的创新。
- 提高业务运营的透明度
组织应该努力维护并推动其业务各个方面的透明度。领导者和管理者应该与员工就他们的人工智能方法进行公开交流。这不仅有助于获得他们的信任和信心,还会鼓舞他们的士气,激励他们更加努力地工作。
Adecco 集团首席执行官 Alain de haze称:
“融合了人类输入和人工智能的增强智能,将成为商业成功和形成繁荣社会的关键驱动力。我们正处于人类历史上前所未见的技术变革的尖端。技术进步要求更深入地关注人类固有的技能——批判性思维、情商和价值判断。”
因此,拥有正确的数据基础设施以及适当的组织技能可以帮助企业和组织以正确的方式利用人工智能工具和技术。
量子计算的需求、前景和现实
尽管给我们带来了人类历史上最壮观的技术创新浪潮,但数字革命似乎仍然无法解决某些计算问题。其中一些问题可能会阻碍关键的科学突破,甚至全球经济。尽管几十年来,传统计算机的能力和处理速度几乎每两年就翻一番,但它们似乎仍无法解决这些长期存在的问题。想知道为什么吗?问任何一个计算机科学家,他们可能会给你同样的答案:今天的数字,传统的计算机是建立在一个经典的,非常有限的计算模型上的。从长远来看,为了有效地解决世界上最持久的计算问题,我们将不得不转向一种全新的、更有能力的动物:量子计算机。
最终,经典计算机和量子计算机之间的区别不像旧车和新车之间的区别。相反,这就像马与鹰的区别:一个能跑,另一个能飞。经典计算机和量子计算机确实如此不同。在这里,我们好好看看关键的区别在哪里,并深入探究量子计算机的独特之处。然而,你在这里找不到关于量子计算机最终如何发挥其魔力的最终解释。因为没有人真正知道。
经典计算的硬性限制
摩尔定律,施莫尔定律
几十年来,传统计算机的速度和计算能力每两年翻一番(有些人认为仅仅是 18 个月)。这就是众所周知的摩尔定律。尽管飞速发展的步伐可能最终开始略微放缓,但今天充满房间的超级计算机是明天的廉价笔记本电脑这一点或多或少是真实的。因此,按照这种速度,似乎有理由假设,在可预见的未来,没有传统计算机最终无法处理的计算任务。尽管如此,除非我们谈论的是几万亿年(甚至更久),否则对于某些棘手的任务来说,这根本不是一个安全的假设。
传统计算机的致命弱点
事实是,像快速寻找非常大的整数的质因数这样的计算任务,即使是未来最快的传统计算机也可能无法完成。这背后的原因是,寻找一个数的质因数是一个具有指数增长的函数。什么是指数增长?让我们深入研究一下,因为这对于理解为什么量子计算机有如此大的潜力以及为什么经典计算机有所欠缺是非常重要的。
指数增长快速入门
随着你拥有的“东西”数量的增加,有些东西会以固定的速度增长,而有些东西会增长得更快。当增长相对于增长的总数变得更快(不恒定)时,那么它就是指数。
指数增长是极其强大的。指数增长的一个最重要的特征是,虽然它开始时很慢,但它可以相当快地产生巨大的数量——通常是以令人震惊的方式。
如果没有例子的话,这个定义可能有点难以理解,所以让我们深入一个小故事。
有一个传说,一位智者得到了国王的奖赏,他要求统治者在棋盘的第一格放一粒米,第二格放两粒米,第三格放四粒米,以此类推。每个方块都要有两倍于前一个方块的谷粒。国王同意了他的请求,但很快意识到填满棋盘所需的大米超过了整个王国的数量,并将花费他所有的资产。
水稻指数增长:
任何正方形上的颗粒数量反映了以下规则或公式:
在这个公式中, k 是方块的数目, N 是方块上的米粒数目。
- 如果 k = 1(第一个平方),那么 N = 2⁰,等于 1。
- 如果 k = 5(第五个平方),那么 N = 2⁴,等于 16。
这是指数增长,因为当我们从一个方块到另一个方块时,指数或幂会增加。
为了进一步概念化,我已经包括了一个关于指数函数的输入量的指数增长的图表。
如你所见,该函数开始时相对较慢,但很快就达到了传统计算机在输入足够大的情况下无法计算的数值。
实指数函数有实结果
好了,故事讲够了。让我们继续讨论现实世界中的指数问题,就像我们之前讨论的那样。质因数分解。
坐 51 号车。看看你需要多长时间找到两个唯一的质数,你可以乘在一起生成它。如果你熟悉这类问题,你可能只需要几秒钟就能发现 3 和 17 都是质数,都等于 51。事实证明,这个看似简单的过程是数字经济的核心,也是我们最安全的加密类型的基础。我们在加密中使用这种技术的原因是,随着质因数分解中使用的数字变得越来越大,传统计算机分解它们变得越来越困难。一旦你达到一定的位数,你会发现即使是最快的传统计算机也需要几个月、几年、几个世纪、几千年,甚至无数个世纪才能将它分解。
有了这种想法,即使在可预见的未来,计算机的处理能力继续每两年翻一倍(不要打赌),它们也将永远与质因数分解作斗争。现代科学和数学核心的其他同样顽固的问题包括某些分子建模和数学优化问题,这些问题可能会使任何敢于靠近它们的超级计算机崩溃。
下面是 IBM Research 的一个很好的例子,展示了我们可以在世界上最强大的超级计算机上模拟的最复杂的分子(F 团簇)。正如你所看到的(在图像的左下方),这种分子一点也不复杂,如果我们想要模拟更复杂的分子以发现更好的药物治疗并了解我们的生物学,那么我们将需要一种不同的方法!
Molecular Simulation Problem. Source: IBM Research
进入量子计算机
传统的计算机是严格数字化的,完全依赖于经典的计算原理和特性。另一方面,量子计算机是严格的量子。因此,他们依靠量子原理和特性——最重要的是叠加 和纠缠 ——这使得他们几乎不可思议的能力与众不同,以解决看似不可逾越的问题。****
叠加
为了让叠加的概念有意义,让我们考虑一个最简单的系统:一个双态系统。一个普通的、经典的双态系统就像一个开/关开关,总是处于一种状态(开)或另一种状态(关)。然而双态量子系统完全是另外一回事。当然,无论何时你测量它的状态,你都会发现它确实不是开就是关,就像一个经典系统一样。但是在测量之间,一个量子系统可以同时处于开态和关态的叠加,不管这是多么违背直觉,甚至是超自然的,这在我们看来可能是这样。
Superposition. Source: IBM Research
一般来说,物理学家认为在测量之前谈论量子系统的状态是没有意义的,比如它的自旋。一些人甚至认为测量一个量子系统的行为导致它从一个不确定的黑暗状态崩溃到你测量的值(开或关,升或降)。虽然可能无法想象,但无法回避的事实是,这一神秘现象不仅是真实的,而且带来了解决问题能力的新维度,为量子计算机铺平了道路。牢记叠加的思想。我们一会儿将回到如何在量子计算中使用它。
叠加是如何实现的已经超出了本文的范围,但是相信它已经被证明是正确的。如果你想理解是什么导致了叠加,那么你首先需要理解波粒二象性的概念。
纠缠
好的,接下来是量子力学的下一个特性,我们需要利用它来制造量子计算机。
众所周知,一旦两个量子系统相互作用,它们就变成无可救药的 纠缠 伙伴。从那时起,一个系统的状态将为您提供关于另一个系统状态的精确信息,无论这两个系统相距多远。说真的,这两个系统可能相距光年远,但仍能给你关于彼此的精确而即时的信息。让我们用一个具体的例子来说明这一点,因为这甚至引起了爱因斯坦对这怎么可能的困惑。(爱因斯坦将这种现象称为“幽灵般的超距作用”)
Quantum Entanglement. Source: IBM Research
假设你有两个电子,A 和 b。一旦你让它们以正确的方式相互作用,它们的自旋就会自动纠缠在一起。从那时起,如果 A 的自旋是向上,B 的自旋将是向下,就像跷跷板上的两个孩子,只不过即使你把 A 和 B 带到地球(或银河系,就此而言)的两端,这也是成立的。尽管它们之间相隔数千英里(或光年),但事实证明,如果你测量 A 的自旋向上,你会立刻知道 B 的自旋是向下*。但是等等:我们已经知道,这些系统没有自旋等状态的精确值,而是在测量之前以一种模糊的叠加状态存在。那么,我们测量的 A 实际上是不是导致 B 瞬间坍缩到相反的值,即使两者相距光年?如果是这样的话,那么我们还有另一个问题要解决,因为爱因斯坦告诉我们,两个系统之间的因果影响,比如光信号,都不会超过光速。那么是什么原因呢?总而言之,我们真的不知道。我们只知道量子纠缠是真实的,你可以利用它创造奇迹。*
量子位
量子位在量子计算中扮演的角色与位在经典计算中扮演的角色相同:它是信息的基本单位。然而,与一个量子位相比,比特是完全无聊的。尽管比特和量子位都产生两种状态之一(a 0 或 1 )作为计算结果,但在计算结果之前,一个量子位可以同时处于0 和 1 两种状态。如果这听起来像量子叠加,它就是。量子位是卓越的量子系统。
正如传统计算机是由位和位组成的量子位一样,量子计算机是由处于自旋状态的电子组成的,自旋状态要么是向上要么是向下(当然,一旦测量出来)。正如处于开/关状态的晶体管串在一起形成在数字计算机中执行经典计算的逻辑门,处于上/下自旋状态的电子串在一起形成在量子计算机中执行量子计算的量子 门。然而,将单个电子串在一起(同时保持它们的自旋状态)说起来远比做起来容易。
Quantum Algorithms. Source: IBM Research
我们今天在哪里?
当英特尔正忙于生产每片拥有数十亿个晶体管的传统芯片时,世界领先的实验计算机科学家们仍在努力建造拥有多种量子位的量子计算机“芯片”。为了让你知道我们在量子计算的历史上有多早,这是一件大事,最近 IBM 推出了世界上最大的量子计算机,它有一个惊人的……等等……50 个量子位。尽管如此,这只是一个开始,如果摩尔定律适用于量子计算机,我们应该在几年内达到数百台,几年后达到数千台。十亿?我不会屏住呼吸,但话又说回来,你不需要 10 亿个量子位就能在一些关键类别上胜过传统计算机,例如素数分类、分子建模和一系列优化问题,这些都是当今传统计算机无法解决的。
2018 年的量子计算机
尽管如此,截至目前,几乎每台量子计算机都是一个价值数百万美元的近乎疯狂的科学家项目,看起来也是其中的一部分。你通常会在 IBM 等大型 IT 公司的研发部门,或者麻省理工学院等大型研究型大学的实验物理学部门找到他们。它们必须被超冷到绝对零度以上(这比星系间空间还要冷),实验人员需要使用精确频率的微波与计算机中的每个量子位单独通信。不用说,这是不可扩展的。但最早的传统计算机的真空管也没有,所以我们不要太苛刻地判断这第一代。
等待突破的障碍
量子计算机尚未成为主流的主要原因是,世界上最优秀的头脑和发明家仍在与高错误率和低数量的量子位作斗争。当我们一起解决这两个问题时,我们将快速增加 IBM 所谓的每台计算机的“量子量”,这是一种可视化量子计算机可以执行的有用计算量的方式。
Quantum Volume. Source: IBM Research
简而言之,为了让量子计算起飞,让量子驱动的 Macbooks 开始从货架上飞起来,我们需要更多的量子位和更少的错误。这需要时间,但至少我们知道我们的目标是什么,我们面临的是什么。
神话 vs 解释
虽然我们知道量子计算机可以轻松地做任何常规计算机做梦都想不到的事情,但我们并不真正知道它们是如何做到的。如果这听起来令人惊讶,鉴于第一代量子计算机已经存在,请记住单词 quantum 。我们已经用量子力学解决问题一个世纪了,我们仍然不知道它是如何工作的。量子计算作为量子家族的一员,也是同病相怜。迈克尔·尼尔森(基本上是写了这本书)和令人信服地争辩说,任何关于量子计算的解释都注定会失之交臂。毕竟,根据尼尔森的说法,如果对量子计算机如何工作有一个简单明了的解释(也就是说,你可以将它可视化),那么它就可以在传统计算机上进行模拟。但是如果它可以在传统计算机上模拟,那么它不可能是量子计算机的精确模型,因为量子计算机按照定义做传统计算机做不到的事情。
根据尼尔森的说法,最流行的假装解释量子计算的神话叫做量子并行。因为你会经常听到量子并行性的故事,所以让我们来看一下。量子并行背后的基本思想是,量子计算机与传统计算机不同,它同时探索所有可能的计算结果/解决方案(即在一次操作中),而数字计算机必须缓慢前进,依次查看每个解决方案。根据尼尔森的说法,量子并行性故事的这一部分大致正确。然而,他尖锐地批评了故事的其余部分,它继续说,在调查了所有解决方案后,量子计算机挑选出了最好的一个。根据尼尔森的说法,现在那个是一个神话。他坚持认为,事实是,像所有量子系统一样,量子计算机在幕后真正做的事情完全超出了我们的能力范围。我们看到了输入和输出,其间发生了什么是神秘的。
如果你喜欢这篇文章,我会非常兴奋,如果你点击拍手按钮:)或与你好奇的朋友分享。我在我的个人博客(jasonroell.com)上有更多类似的东西,或者你可以订阅我的媒体简介,让我一写完文章就发给你!(多牛逼?!)
无论如何,再次感谢你的阅读祝你有美好的一天!
可靠性是精确的新定义
一个机器人写了这个标题。它是由递归神经网络生成的。我用互联网档案馆的回溯机抓取了 Medium 的头条页面上过去一个月所有热门内容的标题。关于 WaybackMachine 的 API 的更多信息可以在这里找到,我收集媒体标题的 Python 代码这里找到,生成标题的完整列表这里找到。(手指交叉这篇博文迅速走红🤞)
受一些 伟大的 例子的启发,我开始自己学习如何做这件事。这篇博客文章将详细介绍所需的软件,提供如何使用代码的说明,并展示一个使用来自 DBLP 的计算机科学出版物标题的例子,这是一个在线计算机科学参考书目。TL;DR —跳到“有趣的东西”来检查生成的标题。
本质的
如果你想在家里尝试这个,你需要安装 torch-rnn (改编自 char-rnn )。设置可能需要一些工作。我强烈推荐 Jeffrey Thompson 的教程在 Mac 上安装。torch-rnn 和 char-rnn 都实现了递归神经网络 (RNNs),给定训练数据(一组字符序列)学习生成文本,一个字符接一个字符。安德烈·卡帕西在这里有一篇非常详细的博客文章。
在设置好 torch-rnn(上面教程中的步骤 1-5)之后,我从 DBLP 出版物索引下载了最新的 dblp.xml.gz 文件。计算机科学出版物的这个数据集将用于训练我们的 rnn。DBLP 将其数据打包成一个巨大的 XML 文件。因为我们只需要这些出版物的原始标题,所以我们需要做一些数据预处理来抓取相关的标题。
在这里,我将从三个特定的计算机科学会议中选择会议录。通过这种方式,我们可以跨研究主题比较和对比生成的标题。我选择了知识发现与数据挖掘会议(KDD)神经信息处理系统会议(NIPS)计算系统中人的因素会议(池)。
为了得到这些会议记录的标题,我写了这个 Go 脚本。如果你想运行它,你需要安装 Go 和 go 获取在序言中的包。该脚本接受会议的命令行参数:
>>> go run dblp.go "chi"
2017/09/12 20:01:34 Reading in DBLP gzipped file
2017/09/12 20:01:34 Decoding all proceedings from file
2017/09/12 20:03:23 Done decoding
2017/09/12 20:03:23 Number of CHI titles: 13885 Average title length: 67.01498019445445
2017/09/12 20:03:23 Output data to chi.txt
现在,确保您的chi.txt
文件位于您的本地副本 torch-rnn 的数据文件夹中。(以下步骤对应于 Jeffrey Thompson 教程中的步骤 6–8。)要为 RNN 准备数据,请运行:
python scripts/preprocess.py \
--input_txt data/chi.txt \
--output_h5 data/chi.h5 \
--output_json data/chi.json
接下来,要训练您的神经网络,运行如下内容:
th train.lua -input_h5 data/chi.h5 -input_json data/chi.json -seq_length 60 -batch_size 1 -gpu -1
(还有更多可以指定的命令行标志。)这一步会花很长时间,而且“你的电脑会变得很热”但是一旦这些都完成了,你就可以从你的 RNN 取样了:
th sample.lua -checkpoint cv/checkpoint_581150.t7 -length 2000 -gpu -1 -temperature 0.1 > data/chi_sample.txt
length
标志对应于你想要输出多少字符,而temperature
标志指定了你希望你的神经网络输出在 0-1 范围内有多新颖。更高的温度会产生很多废话,更低的温度会产生很多重复。
有趣的东西
好了,现在让我们考虑一下我们貌似合理的 KDD,日本和中国的头衔。请记住,当从我们的递归神经网络中采样时,我们可以指定我们希望输出有多新颖。我将展示这里选择的三个会议的两个极端。
KDD 是关于知识发现和数据挖掘的会议,如果我们要求我们的 RNN 生成一个可预测的标题(temperature = 0.1
,那么结果是相当可预测的:
请注意许多对数据挖掘、分布式计算和顺序挖掘的引用,这是该研究领域的典型。如果我们给我们的 RNN 更多的创作自由,一些古怪的标题就会产生:
这里有一些看似可信的 KDD 头衔的大样本,分别是低创造力的 T8 和高创造力的 T10。
接下来,NIPS 上覆盖的研究主题,关于神经信息处理系统的会议,包括机器学习(特别是神经网络)和人工智能。以下是一些低创造力的标题:
正如我们所料,出现了许多对神经元和随机梯度下降的引用。同样,如果我们增加temperature
,我们可以产生一些非常古怪的标题:
点击这里查看貌似合理的 NIPS 头衔的完整样本:高创造力和低创造力。
最后,CHI,计算系统中人的因素会议,是一个关于人机交互的会议。第一,低创意标题:
同样,这些标题有一定的意义。注意互动的许多表象,“的研究”和“的效果”。(后两者仅从 CHI 2017 就返回了 18 个标题。)和现在更有创意的标题:
这里可以找到关于低创造力和高创造力似是而非的 CHI 标题的完整样本。
一般来说,这个练习证实了如果你给你的机器学习算法提供有偏见的数据,你会得到有偏见的结果。在这里,我们使用这些有偏见的结果来比较和对比不同会议的标题风格。我希望这个例子是有趣的,并且激励你去尝试 torch-rnn。
脚注
1:其他更合适的标题可能是:“数据科学家学会了一个很酷的技巧,”或者“内容战略家讨厌这个女人。”我曾经写过关于 clickbait 的文章;你可以在这里阅读《T4》。谁知道呢,你可能会用一个简单的技巧快速减肥。
2: 这个对于一台机器来说,独立编写是一个特别可怕的条目。
stackoverflow 上的 R/python 问题网络
当人们在 stackoverflow 上问编码问题时,R 和 Python 分别有哪些主题是相互关联的?
直到 10 月 16 日,我在 stackoverflow 上使用了两个带有完整 R 和 Python 问题的数据集。通过查看链接到不同问题的 240K R 标签和 1.8M Python 标签,我们可以基于标签的共现来检测主题集群。
大部分 R 题围绕 ggplot2,dataframe 和 shiny
network of tags on R questions with more than 150 co-occurence
我们可以看到 ggplot2 和 dataframe 这样的标签是如何分支到它们的子主题的:dataframe 与 csv(数据输入)、预处理库(reshape2、dplyr、data.table)以及条件和循环相关。ggplot2 与不同的图表元素、数据可视化和交互式闪亮仪表板相关。
为了更清楚地看到集群,我们可以给社区着色。
Clusters of R questions
通过统计单个标签的出现次数,我们可以知道 ggplot2 出现的次数最多,这表明 R 作为数据可视化工具的常见用法高于其他函数。
我们现在将研究 Python。
Python 问题主要围绕 django、熊猫和 numpy
接下来,我们来看看 Python 的问题。由于它的一般功能,它比 r 有更多的问题。
network of tags on Python questions with more than 800 co-occurrence
相似性我们可以快速浏览主题的主要社区。
clusters of python questions
这些话题在 Python 问题中出现得最多:django,pandas,numpy。
R/Python 问题的共性和差异
接下来,我研究了在不同场合与 R 和 Python 标签同时出现的标签。
Commonalities
我们可以观察共享主题,如数据帧、情节、循环和函数。那些特定于只在一种语言中可用的包的标签不会经常与 R 和 Python 标签同时出现。
我们还可以观察到只与 Python 或 R 标签一起出现的标签。
Differences
围捕
在这个分析中,我们分别可视化了 R 和 Python 问题中标签的共现,并比较了这两种语言中问题的共性和差异。
我今天学到的是如何计算和可视化共现。
获得共现的一种方法是计算二部图的关联矩阵,通过矩阵与其转置矩阵相乘将其转化为单模邻接矩阵。但是,这种方法可能会很慢。更好的方法是使用 join:
co_occurence = sqldf("SELECT a.Tag a, b.Tag b, COUNT(*) cnt
FROM df a
JOIN df b
ON b.Id = a.Id AND b.Tag > a.Tag
GROUP BY a.Tag, b.Tag")
这是我关于数据科学和视觉故事的# 100 日项目的第 37 天。完整代码在我的 github 上。感谢阅读。欢迎新主题的建议和反馈。
数据科学的新时代
GDPR 将如何改变数据科学,挑战公司的创造力和增长。
Big Data is Watching You, GDPR is Watching Big Data, but who is Watching GDPR?
随着 GDPR(通用数据保护法规)风暴逐渐平息,每个人都回到了工作中,我仍然花了大部分时间讨论数据科学在未来几年将受到怎样的影响。
如果你不熟悉 GDPR,欧洲议会和欧盟理事会在欧盟法律范围内对欧盟和欧洲经济区内所有个人的数据保护和隐私实施了一项法规。GDPR 的主要目标是让公民和居民控制他们的个人数据,并通过统一欧盟内部的法规来简化国际业务的监管环境。
数据科学家如何增加价值
在过去几年中,数据科学家的角色一直在快速增长。随着数据的爆炸式增长,基于云的技术以及机器学习和人工智能的应用,数据科学家增加价值的方式包括让管理层和官员能够做出更好的决策,挑战员工使用实验来测试假设和创建数据驱动的方法,以及为了营销和商业目的确定和细化目标受众。
GDPR 和数据科学有什么关系
随着越来越多的公司建立数据科学团队,GDPR 的引入将对数据科学的使用方式产生巨大影响。在大多数情况下,大量的数据被存储和处理,以提供对底层数据的洞察。但随着数据科学家正在建立能够自动决策的模型,公司将被要求考虑他们正在制定的流程,以及它们是否违反 GDPR。几个简单的概念可以对数据科学家的工作产生重大影响,例如假名化。
假名化 是指转换个人数据的过程,在不使用额外信息的情况下,所产生的数据无法归属于特定的数据主体。对于许多企业来说,收集姓名、地址、电子邮件和其他信息是构建为企业创造直接价值的模型的基础。从创建群组以确定生活在特定区域的哪一组用户将受益于即将到来的比萨饼促销,到阻止源自特定国家的与非传统名称或其他个人属性相结合的欺诈性卡交易。
除了担心处理数据的法律依据、证明符合 GDPR 法案并采取必要措施通过设计和默认来保护数据之外,数据科学家还必须开始构建非常有力的案例,说明他们为什么要访问和使用特定的用户数据,同时要记住,他们可能需要提供访问权限或删除数据,这可能会对他们的算法结果产生很大影响。
数据科学家将如何处理数据
不像许多人,我实际上拥抱 GDPR,因为。首先,因为作为许多数字服务的用户,我喜欢这样一个事实,即如果我决定离开一项服务,我可以对我的数据有更多的控制权,我可以删除(或请求删除)我的数据。
作为一名数据科学家,我实际上接受了挑战。首先,我将不得不考虑我想要建造什么,这将从法律角度受到挑战,这实际上是一件好事。对于经常想要“摆弄”数据或从各种来源导入数据的数据科学家来说,推出一项功能或产品最终会让他们的首席执行官在一群立法者面前为他们的行为辩护。
我喜欢它的另一部分是,GDPR 将挑战更多的数据科学家与开发和开发人员互动。仅仅考虑架构、处理服务器的位置以及如何实现假名化或完全匿名化,就需要数据科学家学习新概念,甚至可能找到新的做事方法。
您或您的组织可以做些什么来从数据科学中获益?
因此,您可能想知道,我能做些什么来确保我的数据科学家遵守 GDPR,但仍有自由开发数据驱动的功能,这些功能是使您的公司与众不同所必需的。
根据您所从事的业务类型,任命数据保护官是了解您的公司将受到的限制的最佳方式。
下一步是让数据科学家、首席技术官(或 IT 主管)和数据保护官聚在一起,讨论数据科学家目前正在进行的项目以及未来计划进行的项目。通过弄清楚将需要什么,您可以开始查看将涉及的过程和数据。
大多数公司会发现,如果他们雇佣了有能力的人,他们已经想好了大部分事情,只需要做一些小的改变。至于数据科学家,我会鼓励他们接受对法律方面的学习,以便这将成为他们自己思考和决策的一部分,并与你的技术团队和开发人员坐得更近一些,试图找出你可以做些什么来构建你心目中的惊人产品和功能。
感谢阅读;),如果你喜欢它,请点击下面的掌声按钮,这对我意义重大,也有助于其他人了解这个故事。让我知道你的想法,联系推特或 T2 的 Linkedin。或者关注我,阅读我关于数据科学、支付和产品管理的每周帖子。
新的权力集中
人们很容易认为权力是不会真正改变的东西,世界可能会改变,但支配、剥削和控制仍然不变。然而,正如过去十年令人不安的经济洪流一样,最近的社会、技术和政治动荡正在削弱我们对世界运行方式的许多既定观念。
在科技巨头、网络犯罪、算法、社交媒体、加密货币等不断变化的复杂背景下,权力的突变似乎超出了人们的理解。卡尔米勒这本可读性极强的新书正是潜入了如此深的水域。 《诸神之死:新的全球权力 Grab 这本书并没有试图在一个宏大的尺度上对权力进行理论化,它也不是一个自上而下的综合观点,相反,它提供了一系列关于权力如何在技术驱动的人际关系中运作的故事。
这本书让我们看到了幕后的种种景象。在一个引人注目的部分,我们发现使用现成的勒索软件是多么令人惊讶地容易——只需要很少的技术知识就可以发起攻击。正如米勒所言,“这是现成的、点击式的、下拉菜单式的按需网络犯罪”。甚至有一个帮助按钮,如果你需要一些进一步的指导你的攻击。可及性本身就令人不安。米勒在其他地方观察到,对于黑客来说,“现实已经成为一种游乐场”。他在这里的观点是,如果有人能够理解和操纵技术,他们也可以操纵,或者用他们自己令人不安的术语来说,“拥有”世界。另一方面,在与熟悉的科技巨头打交道时,米勒仍然能够提供惊人和不同寻常的一瞥。与一个编码者和他们的算法的相遇,对脸书校园的描述,对一个开源竞争者的讨论,以及对目标技术的阐述,都增加了新的视角,尽管这些巨石已经得到了深度的覆盖。
在这些见解的启发下,分散化的问题在整本书中再次出现。对米勒来说,这里的重要问题是分散的结构仍然会导致权力的集中或集中。回到这个话题,在他对区块链的讨论中,米勒指出,“仅仅因为一个系统是分散的,并不意味着权力是分散的”。因此,区块链的治理结构可能没有中心,但这并不意味着权力会随之而来。从这一点出发,米勒认为,只有那些拥有正确的“技术常识”的人,也就是一小群人,才能充分利用这一优势。米勒总结说,在“集中与分散”的战争中,技术的“架构”是至关重要的。
在媒体领域,也发现了类似的紧张局面。米勒再一次给我们熟悉的关于公民新闻的讨论带来了一种新的目的感,在这种情况下,他探索了这些激增的媒体渠道中的新守门人。认识到在一个任何人都可以创造内容的环境中,米勒探索了那些有权力操纵我们的反馈并让我们听到声音的人。这不可避免地引发了对定向广告的讨论,这种广告的基础是购买某些类型的人的注意力,而不是特定出版物中的空间,以及这种转变对媒体行业造成的损害。关于媒体变化的更大的故事通过采访一个自称“痛苦的黑客”和一个假新闻商人而进一步充实,他实际上看起来并不那么痛苦。米勒并不是说前数字媒体没有问题,而是说权力在媒体内部和通过媒体运作的方式正在发生变化。正如我们所看到的,公众辩论也随着它们而改变。
我们最终看到的是一种越来越分散的权力。这是一种分散在各种技术中的力量,由拥有正确技术知识的人所拥有。在这种视野中,意识形态和霸权的问题滑入社会生活的裂缝中,在米勒的描述中,这些权力的旧化身似乎从人们的视线中消失了。剩下的是精通技术的演员和他们新发现的突出。这告诉了我们一些关于新的可能性,但不太了解这些新的权力结构如何与旧的和更成熟的权力结构相结合。有时也不清楚我们所看到的实际上是权力本身,而是可以被认为是在社会生活的残骸中上演的影响、操纵、诈骗和胁迫的形式。对什么是权力(什么不是权力)缺乏认识,使得这些故事流传甚广。然而,米勒的目标并不是一种新的权力理论,这本书的价值在于它的见解可能如何困扰这些理论,并扩展我们对正在出现的错综复杂关系的理解。这就提出了一个问题,即权力理论如何应对米勒在书中巧妙阐释的权力基础的变化。
…
《数据凝视:资本主义,权力&感知 可供预购,将于 11 月出版。
我们时代的新闻
Photo by Roman Kraft on Unsplash
介绍
假新闻是 2016 年美国总统大选后这些天非常热门的话题。脸书和谷歌正在用自己的行动来减少假新闻的传播,包括降低搜索结果的排名和拉广告资金[ 1 , 2 ]。在没有彻底核对声明的情况下自动标记假新闻的技术挑战——目前只有人类才能完成这项任务——是防止假新闻传播的严重障碍。有机会解决这个独特而具有挑战性的(现实世界)问题让我兴奋不已,我找到了解决以下项目的灵感。
项目目标
我的项目分析了 2016 年 8 月 26 日至 2017 年 1 月 20 日期间脸书新闻页面的帖子,以探索选举对新闻类型的发布和参与的影响。其他支持项目目标包括:
- 调查一些可以唯一识别共享的脸书新闻帖子是否来自主流、虚假、阴谋或讽刺来源的因素。我怀疑假新闻、阴谋新闻和讽刺新闻来源之间的差异是微妙的,因此,它们之间潜在的细微差异需要更仔细地检查,而不仅仅是检查主流和假新闻之间的差异。因此,多类检查优于二类检查(即假新闻和非假新闻)。
- 利用新闻类型之间的差异来建立多类逻辑回归模型,该模型使用重要的一个或两个单词序列、也称为单字母组合和双字母组合、来自帖子消息的类型(例如“#neverhillary”、“follow american”)、参与活动的模式(例如,在帖子的脸书反应、分享和评论总数中喜欢的比例)、帖子附件的类型(例如,图像、视频、无等)来标记共享的脸书新闻帖子。),以及各种时间因素(即一周中的某一天、一天中的某个小时,以及选择的时间[即之前、当天或之后])。回归模型适用于本项目,通过检查哪些模型系数离零最远来确定最重要的模型特征。一个适当校准的模型的价值可以帮助脸书识别哪些帖子需要标记,以便采取行动阻止假新闻的传播,或者供计算记者用来跟踪与假新闻相关的问题,以履行未来的报道责任。
数据源
我的数据集是通过以下步骤组装的。2014 年 10 月 21 日,皮尤研究中心发布了一份主流新闻网站列表,名为《政治两极分化&媒体习惯:从福克斯新闻频道到脸书,自由派和保守派如何跟上政治。皮尤的研究发现,公众更信任的知名消息来源也在名单之列。
2。两个来源被用来生成虚假、阴谋和讽刺新闻网站的列表。梅里马克学院的 Melissa Zimdars 博士编制的一份虚假、阴谋和讽刺新闻来源列表,与 2016 年 10 月和 11 月编制的虚假新闻 Kaggle 数据集中相应目标类型和未知类型的新闻来源列表进行了交叉检查,使用了来自 Daniel Sieradski 的 BS(“胡说”)检测器 Chrome 扩展。在 Zimdars 博士的列表中被列为虚假、阴谋和讽刺的所有新闻源都被检查脸书页面,除非新闻标签与 Kaggle 数据集中源的新闻标签明显冲突。为了专注于美国媒体,各种已知的外国页面被排除在外,尽管所有的外国页面并没有完全消除。
3。所有的新闻发布都是通过脸书图表 API 从主流、虚假、阴谋和讽刺来源的脸书页面中检索的。
假设
- Melissa Zimdars 汇编的名单中有脸书的帖子,从整体上看,这些帖子与指定的类别一致。主流新闻报道包含准确的信息,旨在让读者了解时事。假新闻包含不准确的信息,旨在误导读者。共谋不包含可以通过未知或不明显的意图进行验证的信息。讽刺作品可能包含不准确的信息和/或未经证实的信息,目的是为了迎合或娱乐读者。
- 彻底交叉检查和验证声明/账户有效性的代理,即良好的新闻报道,并推断意图可以预测新闻的类型。
- 当对新闻类型的曝光率变化并且依赖于之前用户对脸书信息的参与度时,建立在偏斜样本上的模型可以用于准确地对现实世界中的新闻进行分类。
- 每一个脸书新闻邮报可以充分,适当地分配到一个独特的类别。
- 新闻类型的概率的对数相对于模型参数是线性的。
导入、清理和合并数据
在执行探索性数据分析(EDA)之前,采取了以下步骤来下载和清理数据。帖子信息通过脸书的 Graph API 编译到一个本地驱动器,通过修改另一个程序员提供的 Python 代码。从脸书提取的数据包括帖子信息、链接标题、链接类型、发布日期,以及评论、分享、喜欢、喜爱、wows、hahas、sads 和 angrys 的个人计数。
2。从现有数据集中生成额外的数据列,或者与已知信息合并以形成更详细的最终数据集,该数据集还显示脸书页面 id、新闻页面类型(即主流、虚假、阴谋或讽刺)、星期几、小时、选举时间以及所有用户参与活动的总和(即评论、分享、喜欢、喜爱、wows、hahas、sads 和 angrys 的总和)。
3。所有文本都从 unicode 格式转换为字符串格式。
4。99 个职位被确定为多余的(占总数的 0.04%),因此被删除。
5。从帖子中删除了所有 URL,以避免在从帖子中识别重要的字母组合和双字母组合时进行选择。
从脸书消息文本中生成重要的字母组合和二元组合是目标中描述的模型的关键部分。具体来说,从 post 消息中生成重要的字母组合和二元组合的列表遵循三个步骤。首先,使用计数矢量器生成每种新闻类型最常见的 6,000 个单词的四个列表。接下来,考虑到来自脸书帖子的消息集合,计算代表脸书消息中的单词的重要性的值(也称为单词的频率逆文档频率(TF-IDF )),并且选择具有最高 TF-IDF 分数的 6000 个单词。通过只选择经常使用的词,单词的数量再次减少,但在四种新闻类型中只有一种使用独特的词。结果列表只包含 793 个单词。该列表进一步缩减到 470 个单词,以删除无意义的单词或与单个页面密切相关的单词(例如,页面名称或特定新闻节目的主持人)。
探索性数据分析
以下部分探讨了数据集的特征,以更好地理解预测器在最终模型中的表现。
最终数据集包括来自 129 个脸书页面的超过 27.4 万篇帖子和超过 9 亿次参与活动。尽管数据集中主流站点的数量很少,但主流帖子是第二常见的帖子类型(图 1 和图 2)。
Figure 1
Figure 2
此外,无论新闻类型如何,只有少数页面发布并获得了大部分参与度(图 3)。基于这一观察,我预计一个建立在现有的倾斜数据集上的模型,对于拥有最多帖子和最高参与度的网站来说,会表现得更好。
Figure 3
现在,模型预测的具体特征是关于职位和参与活动的探讨。如果我观察到不同类型新闻的帖子模式在各种模型预测方面的差异,我希望它们在最终模型中反映为相对于零的高正或负模型系数。
为了开始评估模型预测值,我调查了不同新闻类型的帖子附件和参与度的频率。经过检查,所有类型的新闻都比任何其他类型的附件更频繁地包含带有链接的帖子,并且除了共谋之外,所有其他类型的附件都显示链接获得了最高的参与百分比(图 4)。然而,关于第二种最常见的附件类型,与所有其他类型的新闻相比,主流页面更频繁地将视频附加到帖子上。因此,与所有其他类型的新闻视频的系数相比,我预计该模型对于主流视频具有相对较高的系数。
Figure 4
接下来,我调查了与美国总统选举相关的帖子的频率和参与度。我观察到,帖子数量的最大变化发生在选举后假新闻的减少,这在很大程度上是由于前三个最多产页面的帖子数量减少(图 5 和图 6)。由于选举后假新闻帖子的百分比明显减少,我预计最终模型与总统选举后假新闻模型系数相比,总统选举前假新闻模型系数相对较高。然而,与假新闻相关的参与活动大幅增加,仅次于主流新闻的参与高峰,部分原因是主流帖子数量的增加(图 5)。主流新闻参与度的激增主要是由于 CNN、ABC News 和《今日美国》的帖子参与度相对较高(图 7)。
因此,我希望该模型能够显示出主流视频的系数与所有其他类型新闻的系数之间相对较大的差异。
Figure 5
Figure 6
Figure 7
对一周中各天的帖子频率和参与度的检查显示,无论新闻类型如何,周六和周日的帖子数量和参与活动相对于一周中的其他日子都有明显下降(图 8)。由于一周内不同类型的新闻发布频率的变化很小,我预计该模型会显示出相对于该预测值相对较低的系数。
Figure 8
关于一天中的时间,当考虑到横跨美国 48 个州的四个时区时,无论新闻类型如何,帖子都在工作时间出现峰值(图 9)。不同类型的新闻在发布时间上的差异相对较小,讽刺新闻除外,它在早上 6 点到晚上 12 点(太平洋标准时间)之间出现了相当大的高峰。除了讽刺新闻之外,不同类型的新闻在一天的几个小时中的帖子模式几乎没有差异,与讽刺新闻的一天几个小时的模型系数相比,主流、虚假和阴谋新闻的一天几个小时的模型系数预计更接近于零。有趣的是,与发布时间相比,一天中的几个小时的参与水平似乎相对一致,这表明全球用户和/或美国深夜用户的广泛参与。相对于其他类型的新闻,阴谋网站的参与度似乎在所有时间都是最一致的,而讽刺页面的参与度在帖子最多的时候达到峰值,即早上 6 点到 7 点之间。
Figure 9
该模型还包括每种参与活动的预测因素。为了比较不同类型的新闻之间参与活动模式的差异,这种模型预测值是特定参与活动在响应帖子的总参与活动中所占的比例。下面是按新闻类型和参与度最高的页面对参与度活动的调查。
“赞”之后是“分享”是对帖子最常见的参与行为(图 10),尽管所有类型的新闻参与行为相对于平均值都有很大的变化。有趣的是,在所有类型的新闻中,讽刺作品的平均参与度位居第二,但总参与度最低。或许并不令人惊讶的是,与其他类型的新闻相比,讽刺类文章的平均点击数明显更高。此外,哈哈是个人讽刺页面中第二或第三常见的参与度反应(图 11)。因此,我希望最终的模型显示讽刺的哈哈模型系数,与所有其他类型的新闻的哈哈系数相比,相对较高。然而,需要更多的讽刺文章来更好地理解和比较其他类型的新闻,因为相对于所有其他类型的新闻,项目数据集包含的讽刺文章要少得多(图 10)。
经过进一步检查,还出现了其他模式。分享和评论是讽刺新闻页面或高度参与的主流新闻页面(如福克斯新闻频道)中第二或第三常见的参与行为。和美国有线电视新闻网,但在其余主流来源中,作为其他参与行为的一部分,相对不太常见(图 11)。在虚假和阴谋新闻中,分享再次成为第二常见的参与类型(有时是最常见的),回应虚假和阴谋帖子的分享比例似乎比主流和讽刺新闻中的分享比例更大。基于这些观察,我预计最终模型的虚假和阴谋页面的份额系数要高于主流和讽刺页面的份额系数。
Figure 10
Figure 11
模型中包含的其余预测因子是从每种新闻类型的帖子中选择的重要字母组合和双字母组合。选择这些 n 元语法是为了提取帖子中使用的最大数量的不同单词,以及每种类型的新闻中唯一的最常用的单词。尽管如此,根据新闻的类型,只有 2%(主流)到 29%(讽刺)的帖子包含信息文本。因此,考虑到训练集远小于训练数据集中的帖子数量,在模型中包含单字母组合和双字母组合有增加大量噪声的风险。因此,与之前讨论的模型预测值相比,与最终模型中重要的单字母组合和双字母组合相关的系数受到了更大程度的质疑,并且没有在模型评估中进行讨论。
EDA 摘要
- 不管是什么类型的新闻,只有少数几个页面发布并获得了大部分参与度(图 3)。
- 关于帖子中第二常见的附件类型,主流页面发布视频的频率高于所有其他类型的新闻(图 4)。
- 发帖量的最大变化发生在选举后假新闻的减少,这在很大程度上是由于三大最多产来源的发帖量减少(图 5 和图 6)。
- 无论是哪种类型的新闻,相对于一周中的其他日子,周六和周日的帖子数量和参与活动水平都有明显下降(图 8)。
- 考虑到横跨美国 48 个州的四个时区,无论新闻类型如何,帖子在工作时间达到峰值(图 9)。
- 也许不出所料,与其他类型新闻的平均点击数相比,讽刺类文章的平均点击数明显更高(图 10)。
- 回应虚假和阴谋帖子的比例似乎比回应主流和讽刺新闻的比例更大(图 11)。
模型结构
检验主要定量预测因子的相关性,以确定最终模型中正则化的适当设置。当检查相关性热图时,无论新闻类型如何,参与活动之间和/或时间段之间(即一周中的小时或天)都没有出现强相关性(图 12)。因此,在最终的模型中,使用套索进行正则化似乎是一个合适的设置。
在评估每种类型新闻的相关性时,主流新闻在哈哈和评论之间具有相对较高的相关性(正相关[+])、生气和评论(+)、哇和分享(+)、喜欢和喜欢(+)、喜欢和评论(负相关[-])、喜欢和分享(-)、哇和喜欢(-)、哈哈和喜欢(-)、伤心和喜欢(-)、生气和喜欢(-)(图 13)。假新闻在愤怒和评论(+)以及喜欢和分享(-)之间具有相对较高的相关性。此外,讽刺新闻有相对较高的相关性,如和份额(-)。
Figure 12
Figure 13
在这个项目中选择了一个逻辑回归模型,以便使用分类和数字预测器按类型对新闻进行分类。与朴素贝叶斯等其他模型相比,回归模型生成的系数具有指示预测值相对重要性的量值。Scikit-Learn 中逻辑回归模型的所有默认设置都保持不变,除了 lasso 正则化的说明(如上所述)和模型收敛的最大迭代次数的增加。
模型结果和评估
最终的模型取得了很大的成功。在测试数据集上实现了 57%的平均准确率,测试训练分割为 30%-70%,这相当于比基线增加了 16%。受试者操作特征(ROC)曲线下的区域看起来也非常好,该曲线显示了代表每种类型新闻的个体准确性得分的区域。这些区域的范围从 74%(虚假和阴谋)到 86%(讽刺),当大于 50%时表示模型成功(图 14)。因此,当依靠由 Melissa Zimdars 博士编制的来源列表来从特定的帖子特征预测《脸书邮报》的新闻类型时,实现了可量化的成功程度。
Figure 14
尽管如此,这个模型还是显示出明显的弱点。精确度(即一种类型的新闻的正确预测占该类型新闻的总预测的百分比)和召回率(即一种类型的新闻的正确预测占真实存在的新闻的总类型的百分比)分别在 53%(讽刺)和 70%(阴谋)之间以及 8%(阴谋)和 77%(虚假)之间。如图 15 所示,低召回值是由于模型预测大多数阴谋和讽刺文章是主流和虚假的。
Figure 15
从页面级别的角度来看,当观察几乎所有高容量和低容量的阴谋和讽刺页面错误地预测正确预测数的数倍时,这些低召回率结果是明显的(图 16)。Fprnradio(阴谋)和 NewsThump(讽刺)是这种情况下的例外,不正确和正确的计数相对接近。Elmundotoday(讽刺)和 theunrealpage(讽刺)也是例外,正确的预测计数至少是错误计数的两倍。
尽管所有类型的新闻都只有少数来源发布了大部分总量并获得了大量参与(图 3),但该模型并没有过度适应最多产或参与最多的页面的特征。使用测试数据集,对按页面分类和错误分类的帖子的审查证实了这一观察。高容量和低容量的虚假和主流新闻页面被分类为真实类别的频率高于误分类(图 16),即分别占帖子的 77%和 70%(图 15)。《纽约客》(主流)是一个例外,错误分类略多一些(图 16)。此外,几乎所有高容量和低容量阴谋和讽刺页面的帖子都被错误分类,比正确分类的帖子多几倍。
Figure 16
总体而言,最高的模型系数在很大程度上与参与类型相关(前二十个系数中的 60%,即四种新闻类型中每一种的最高五个系数)(图 17)。下面列出了按新闻类型划分的最高模型系数。在为每一类新闻列出的系数中,最明显的是和||.指示该系数值在具有相同符号(+或-)的另一种类型的新闻的相应系数中是最高的。||表示与^相同的意思,但是不考虑这个符号。
- 主流新闻:喜欢(+2.141 |^|,即主流新闻的喜欢系数值的绝对值大于所有其他类型新闻的喜欢系数)、评论(+1.122 |^|)、sads (+1.064 |^|)、neverhillary (-0.772 |^|)、angrys (+0.622 ^,即主流新闻的 angrys 系数的正值大于任何其他类型新闻的任何正 angrys 系数的值)
- 假新闻:萨德(-0.528 ^),总统巴拉克(-0.344 ^),视频附件(-0.344 ^),喜欢(-0.339 ^),追随总统(+0.327 ^)
- 阴谋新闻:评论(-0.404 ^),哈哈斯(-0.307 ^),旅游门票(+0.294 |^|),巴拉克总统(-0.283),喜欢(-0.269)
- 讽刺新闻:安格里斯(-1.993 |^|),哈哈斯(+0.725 |^|),爱(-0.696 |^|),喜欢(+0.672),内韦尔希拉里(-0.549)
Figure 17
根据上述 EDA 中记录的观察结果评估模型系数值,以进一步评估模型的性能。这些评估总结如下:
- 如上所述,主流页面发布视频的频率高于所有其他类型的新闻(图 4)。在检查模型系数时,这一观察结果反映在主流视频的模型系数(0.403)相对较高,而其他类型新闻的视频系数(-0.344 至 0.032)(图 17)。
- 选举后,假新闻帖子的比例明显下降(图 5)。这一观察结果反映在总统选举前的假新闻系数比总统选举后的假新闻系数相对较高(反映为总统选举后假新闻系数下降了 4.5%)。
- 此外,正如预期的那样,由于一周中不同类型的新闻中的帖子频率变化很小(图 8),一周中各天的模型系数在不同类型的新闻中变化很小(即在-0.078 到 0.080 之间)。
- 正如所料,除了讽刺新闻(图 9)之外,不同类型的新闻在一天的几个小时内的帖子模式几乎没有差异,与讽刺新闻的模型系数(-0.138)相比,主流、虚假和阴谋新闻的一天几个小时的模型系数相对较低(-0.025 至 0.059)。
- 该模型还证实了或许是最不令人惊讶的观察结果。也就是说,与其他类型新闻的平均点击数相比,讽刺文章的平均点击数明显更高(图 10)。这一观察结果反映在讽刺的哈哈模型系数(0.725)相对于所有其他类型新闻的哈哈系数(-0.307 到 0.394)较高(图 17)。
- 在审查份额系数时,假新闻(0.036)和阴谋新闻(0.162)的数值实际上低于主流新闻(0.615)和讽刺新闻(0.183)。从页面层面来看,这一结果与预期相矛盾,预期是基于观察到高参与度虚假和阴谋帖子的份额比例高于高参与度主流和讽刺帖子的份额比例(图 11)。然而,在进一步检查后,主流和讽刺新闻的平均份额实际上高于虚假和阴谋新闻的平均份额(图 10),因此,最初的预期是相反的。
结论
- 当依靠由 Melissa Zimdars 博士编制的来源列表来从特定的帖子特征预测《脸书邮报》的新闻类型时,实现了可量化的成功程度。在测试数据集上实现了 57%的平均准确性,测试序列分割为 30%-70%,比基线增加了 16%,ROC 曲线下的区域表明测试数据集上的模型表现良好(图 14)。
- 测试数据集上的低召回值是由模型预测大多数阴谋和讽刺帖子为主流和虚假帖子造成的(图 15 和图 16)。
- 尽管所有类型的新闻只有少数来源发布了大部分总量并获得了大量参与(图 3),但该模型并没有过度拟合最多产或参与最多的页面的特征,这在测试数据集上按页面对分类和错误分类的帖子进行的审查中得到证实(图 16)。
- 总体而言,最高的模型系数主要与参与类型相关(图 17)。
- 模型系数的值证实了 EDA 中描述的许多观察结果,包括主流新闻更频繁地发布视频(图 4),总统选举前后假新闻发布的变化(图 5),一周内不同类型新闻发布的低变化(图 8),以及讽刺新闻的独特特征(即一天中几个小时的独特发布模式以及与其他类型新闻相比每个帖子的平均哈哈数较高)(图 9 和图 10)。
未来的工作
- 使用更多的帖子、消息和新闻页面来校准和验证模型,其中帖子数据集在新闻类型中的采样比当前数据集更均匀。校准和验证后,确认模型的重要预测因素是否发生了变化。
- 改变模型中使用的消息文本中单词的数量和类型。此外,可能包括脸书链接名称的 n 元语法。
- 检查数据集中预先分类的帖子的内容,如有必要,更正标签。
- 评估其他要素工程选项,以与套索正则化的性能进行比较。
- 使用 GridSearch 改变正则化程度(即 C 参数)。
更多信息
更多信息请参考我最近做的技术报告和 Python 代码或者演示。这部作品的延伸也可以在 Tableau Public 上看到。