Shervin Minaee作者安可编译

给机器学习面试者的十项建议

在过去的一年里,我采访了一些在Expedia Group担任数据科学职位的人,职位从入门级到高级的都有。我想分享我的经验,这些经验适用于对申请数据科学职位的人。在这篇文章里,我还会给出关于你可能在面试中会遇到的问题的一些提示。

面试候选人帮助我认识了一些有广泛背景和技能的人。从CS / ECE,统计/数学到土木/机械工程,这些领域的人我都接触过。所幸我有机会能在这里与这些出色的人交谈。

在我讲更多细节之前,我想提一下,近年来,业界把“数据科学家”也叫做“机器学习科学家”或“应用科学家”。虽然在一些公司中这些职位有着略有着不同的任务或者需要具备不同的技能,但对于大多数公司来说,这三个职位或多或少都指的是同一个东西。所以在这篇文章中,我提到的“数据科学”,跟上面的“机器学习”“应用科学”是一样的。

虽然每个人都有一套自己解决问题的技能,但是大多数公司都会要求数据科学候选人具备一些特定的基本技能。我将这些基本技能大概分为以下几类,然后再讨论这些技能具体是什么。根据公司和职位级别的不同,你可能会被问到以下提到的一个或多个相关问题:

1、关于你的简历和之前工作相关的问题

2、通用机器学习(和深度学习)知识

3、通用统计和数学知识

4、编程和软件工程技能

5、统计建模技巧

6、计算机视觉(CV),自然语言处理(NLP)和定价策略(Pricing Topics)

7、面试中沟通和表达能力

8、行为问题

9、系统设计技巧(取决于职位级别)

10、管理和领导技能(取决于职位级别)

1. 关于你的简历和之前工作相关的问题

你的简历在你面试时会被问到的那类问题中起着至关重要的作用。因此,请确保你对自己在简历中提到的任何内容有足够的了解,内容包括从课程和研究项目到编程语言。如果被问到诸如“介绍一下你自己”,或者“介绍一下你现公司的工作” 的一般性问题是很常见的,不仅如此,你还会被问到关于你简历的问题。

例如,如果你在简历中提到几个以前的与NLP相关的项目,那么你应该对NLP有一个很好的理解,并且你很可能会在NLP上被问到一些技术问题,来评估你的技术含量。因此,如果你在一个项目上跟别人做了一些合作的东西,但对这项工作的贡献很小,我建议你让自己更熟悉该项目的技术方面。

或者,如果你提到Python或Scala作为你最喜欢的编程语言,请确保你足够了解这些语言(至少在数据科学职位所需的范围内),以及每个语言中的一些机器学习相关库。我看过很多候选人在他们的简历中提到了Scala / Python,但当我问他们关于这些语言的一个简单问题时,他们根本不知道它,这会给我一个负面信号。如果你使用这些语言的经历非常有限,那么最好是诚实地告诉面试官,并且我相信大多数面试官都不会因为在你没有丰富经验的事情上对你进行评判。

2. 通用机器学习(和深度学习)知识

虽然不同公司的数据科学工作可能涉及广泛的问题和技能(包括数据提取和预处理,运行SQL查询,简单数据分析深度学习,NLP和CV),但机器学习是一个基础,现在大多数顶级公司都希望这些“数据科学候选人”懂得这一概念。因此,如果你正在申请数据科学职位,请确保你对以下机器学习概念有充分的了解。诸如“统计学习要素”[1]和“模式识别机器学习”[2]等书籍对这些主题非常有用。

  • 监督和无监督算法

  • 经典分类算法,如SVM,逻辑回归,决策树,随机森林,XGboost

  • 经典回归算法:线性回归,LASSO,随机森林前馈神经网络,XGboost

  • 聚类算法,例如K-means和Spectral聚类

  • 降维技术,如PCA,LDA和自动编码器

  • 偏差 - 方差均衡

  • 过拟合以及如何避免过拟合(例如正则化特征选择,dropout(用于神经网络))

  • 有名的深度学习模型,如卷积神经网络(CNN),递归神经网络(RNN)和长短期记忆网络(LSTM),自动编码器,残差结构,序列到序列模型,生成对抗网络(GAN)

  • 评估指标,例如分类准确度,精确度,召回率,F1分数,均方误差,平均绝对偏差

  • 流行的损失函数,如交叉熵,MSE,三元组损失,对抗性损失,边际最大化损失等

  • 反向传播

  • 强化学习深度Q学习(对于偏研究类型的职位)

  • 离线和在线(A / B)指标的比较?

上面列出的问题涵盖了一些与数据科学职位相关的高级机器学习概念,但你可能会被问到有关上述某些主题的更详细问题,例如你可能会被问到:

  • 分类算法中SVM和逻辑回归的比较

  • 生成模型判别模型之间的差异

  • 梯度消失问题背后的根本原因和一些避免这种情况的常见做法

  • 在进行批量梯度下降时使用动量梯度下降法的优点

3. 通用统计和数学知识

今天的许多数据科学家曾经是统计学家和分析人员,许多机器学习的模型就是(重新包装为)统计学习模型(如线性回归,岭回归,LASSO,逻辑回归)。因此,许多面试官喜欢在统计学或数学方面提出一些问题也就不足为奇了。

对于统计学和概率学,如果你熟悉以下概念,那将是很好的:

  • 模型的偏差和方差以及如何计算它们

  • 分布抽样

  • 置信度和给定置信度所需的样本数量

  • 均值,方差,相关性(统计意义上和经验意义上)

  • 随机过程,随机游动(金融公司的数据科学职位需要)

  • 如何找到某些事件的概率

对于数学问题,你可能会被问到以下问题:

  • 一些需要一些思考的脑筋急转弯问题

  • 如何计算特定损失函数的梯度

  • 关于损失函数或优化算法的一些详细问题

4. 编程和软件工程技能

任何数据科学家都需要会编程。在创业公司(员工人数较少)中,数据科学家可能需要自己做很多软件工程,例如数据提取和清理以及模型部署。相比之下,在大公司中,还有其他人负责数据工程和模型部署,数据科学家主要负责培训和测试特定产品的模型。作为数据科学家,你还需要了解数据工程角色所需的一些术语和任务,例如ETL(提取,转换,加载)。在这里,我将介绍数据科学家使用的一些最广泛使用的编程语言,库和软件。

Gayle Laakmann McDowell [3]的“Cracking the Coding Interview”等书籍让你在解决软件工程和算法问题上做好准备非常有帮助。这里还有几个很棒的网站,它们有一个很好的软件工程问题数据库,比如leetcode,hackerrank和geeksforgeeks。

4.1 编程语言

在编程语言方面,PythonScalaSQLR似乎是人们使用的最流行的语言,但我也看到人们使用其他语言,如JavaC ++Matlab(尽管它不是一种编程语言))。

4.2 有用的Python

在这里,我将提到一些与数据科学职位最相关的Python包:

  • 对于机器学习和数值计算,Scikit-learn,XGboost,LIB-SVM,Numpy,Scipy是使用最广泛的软件包。

  • 对于深度学习,Tensorflow,PyTorch,Keras被广泛使用。

  • 对于数据可视化,Matplotlib,Seaborn,ggplot是最受欢迎的(尽管还有大量其他有用的软件包)。

  • 对于CV,OpenCV和PIL很有用。

  • 对于NLP,NLTK,GENSIM,Spacy,Torchtext等软件包非常棒。

  • 对于使用数据库,Pandas和PySpark是Python中的两个流行的库,我个人认为它非常有用。

4.3 云服务

根据你要处理的数据规模,你可能需要在云服务上运行代码,例如AWS,Azure或Google Cloud。因此,拥有在云环境中运行代码的经验可能是一个加分项。你绝对不需要了解所有不同的云服务,但熟悉AWS中的EC2等计算服务可能是一个优势。

有些公司也可能在AWS或Azure之上使用其他大数据服务,例如Databricks和Qubole,但我认为不需要事先体验它们,因为这些很容易学习。

4.4 部署工具

在为任务训练模型(例如推荐系统或适度模型)之后,理想情况下,你希望在实际生产中使用它。因此,某人(可能是你,或你正在使用的工程团队)需要将你的模型部署到生产环境中。为此,熟悉Docker和Python中的Flask可能会有所帮助。如果你想在AWS等云服务上部署模型,那么熟悉Sagemaker可能会有所帮助。我个人并不认为熟悉部署工具对于入门级数据科学职位是必要的。

5. 统计建模技巧    

作为数据科学家,你需要为各种产品/问题构建数学和ML模型,因此在面试过程中可能会遇到一些建模问题。这些问题通常与公司的域名有关。目标是看看你是否可以将你在概念上理解的内容应用于特定问题。你可能会遇到的一些示例问题可能是:

  • 你将如何构建机器学习模型来检测我们网站上的欺诈交易?

  • 你将如何构建机器学习模型以向我们的客户推荐个性化项目?

  • 你将如何建立一个模型来检测我们网站上产品的假评论(类似淘宝刷的评论)

  • 你如何使用ML模型检测敏感评论/推文?

  • 你如何建立模型来预测我们产品的价格?

  • 如何构建模型以自动标记社交网络中用户上传的图像?

  • 运行A / B测试时的在线指标?

根据你的答案,你可能还会被问到一些跟进问题,包括你需要的数据类型,评估模型的方式以及如何随着时间的推移改进模型。如果你想查看更多问题,https://medium.com/acing-ai/acing-ai-interviews/等网站非常有用。

在面试过程中,重要的是你的思维过程以及你能想到为产品构建ML模型的各个方面的能力。你绝对不需要给出最好或最完美的答案; 只要你对问题的高层次理解是合理的,你就是很棒的。

6. 关于CV,NLP和定价策略的问题

根据你申请的团队的重点产品,你可能还会被问到有关CV,NLP或产品定价的一些问题。因此,在面试之前,请确保对你申请的团队进行一些研究,以便更好地了解他们的重点。面试官可能会问你关于NLP或视觉中非常高级的概念,一些其他面试官可能会提出更具挑战性的问题。

以下是你可能获得的一些与  NLP  相关的问题:

  • 什么是词干提取和词形还原?

  • 什么是词袋模型?TF-IDF怎么样?

  • 你怎么能找到两个单词之间的距离?有哪些有名的字符串距离指标?

  • 什么是命名实体识别,你将如何评估NER系统的性能?

  • CRF模型如何针对词性标注进行训练?

  • 什么是公报特征,什么时候它们有用?

  • 你将如何构建神经机器翻译模型?你会如何评价其表现?

  • word2vec对于经典的one-hot编码有什么优势?

  • 你会如何建立一个Q&A问答系统

  • 你如何检测一系列文档中的主题?

  • 你如何找到客户评价的情绪(极性)?

  • 正则表达式的一些问题

以下是你可能会被问到的一些计算机视觉相关问题:

  • 你如何将网站上的图像分组为不同的类别(如电子,服装等)?

  • 如何构建一个模型来自动地标记一张图像中的不同人脸?

  • 如何检测图像/视频的质量并过滤模糊的图像/视频?

  • 什么是超分辨率,你如何评估超分辨率模型的性能?

  • 如何检测图像中的不同对象?

  • 你如何检测图像中的文本区域?

  • 你将如何创建自动图像标记系统?

7. 沟通和表达能力

数据科学职位通常涉及大量的沟通和演示。这可以用于与产品经理讨论新项目,或向你的团队展示你的模型。因此,能够与其他人(技术人员和非技术人员)交流关于你的工作和想法是非常重要的。

有时你可能需要以非常技术性的方式向同事或经理传达你的新发现,有时你可能需要说服产品经理你的模型对他们有用,不用描述太多的技术细节。

面试官通常不需要问你一个具体的问题来评估你的沟通和表达能力,他们可以在面试过程中了解面试者的这些能力。我的建议是:

  • 尝试首先向面试官提供你的解决方案的高级图片,然后讲解其中的细节。通过这样做,如果你的高级方法是正确的,你可以获得反馈。

  • 你可以专门询问面试官你的答案是否是他们想要的。如果不是他们想要的,你可以请他们给你一些提示。

  • 尝试将建模问题分解为几个部分,然后对每个部分分别进行阐述。对于许多ML建模问题,你可以将它们分解为相关的数据提取,数据清理,特征提取,预测建模,评估和可能的改进。

8. 行为问题

有些人在面试时也可能会问行为问题。这些问题可能包括你过去的工作经历(为了了解你是否具备工作所需的技能),以及你的个人兴趣。这些问题也可以集中在你过去如何处理各种工作情况上。你对这些问题的回答可以展示你的技能,能力和个性。以下是你可能会被问到的一些示例问题:

  • 你喜欢什么样的职位,一个涉及研究和研发的职位,还是更倾向于把现有模型应用于公司内部数据并围绕它构建数据驱动的解决方案的职位?

  • 你是喜欢单独工作,还是与一群人合作解决一个问题?

  • 举一个你达到的目标的例子,告诉我你是如何实现它的,以及你面临的挑战是什么?

  • 举一个你没有遇到的目标以及你如何处理它的例子?

  • 如果你需要在deadline交付模型,请告诉我你将如何在压力下工作?

9. 系统设计技巧(取决于职位级别)

根据你申请的职位级别,你可能还会被闻到一些系统设计面试(SDI)问题,这些问题主要是关于“设计大规模分布式系统”的问题。

由于缺乏足够的开发大规模系统的经验,以及没有标准答案的设计问题的开放性,这些问题可能具有挑战性。

我不打算在这里谈论SDI问题太多,因为它不是这篇文章的重点,但我会提供一些示例问题,以及一些有用的资源,如果你想在这方面得到更多的练习。

以下是一些示例系统设计问题:

  • 你将如何设计Youtube或Netflix等视频流服务?

  • 你会如何设计Facebook Messenger或WhatsApp?

  • 你如何为客户服务设计聊天机器人

  • 设计Quara或Reddit?

  • 设计像Snapchat这样的应用程序?

  • 你将如何设计Dropbox或GoogleDrive或Google Photos等全球存储和共享服务?

  • 你会如何设计像Twitter或Facebook这样的服务?

  • 你将如何为Google或Expedia设计预先输入系统?

以下是面试中,关于设计问题的一些有用资源:

  • https://github.com/checkcheckzz/system-design-interview

  • http://blog.gainlo.co/index.php/category/system-design-interview-questions/

  • https://hackernoon.com/top-10-system-design-interview-questions-for-software-engineers-8561290f0444

10. 管理和领导技能(取决于职位级别)

如果你正在申请数据科学经理职位(有时甚至是高级或主要职位),面试官将需要评估你的管理和领导技能,并了解你之前的管理经验。

这个候选人的理想背景是在机器学习和预测建模等领域具有强大理论背景的人,以及良好的软件工程技能。要成为有效的领导者,候选人还需要具备良好的沟通技巧和良好的规划技能,以便能够以考虑构建数据驱动产品所带来的许多风险的方式进行优先排序和规划

我不会谈到太深入到管理技能的方面,但我将在这里提供一些示例问题:

  • 你所管理的最大团队是什么?你面临的挑战是什么?

  • 假设你的团队已经构建了一个模型,可以在测试集上实现90%的准确率。为了确定模型性能是否可靠,你需要了解什么?

  • 讨论一个可能影响我们公司的数据驱动产品

  • 当你想为你的团队招聘员工时,你会考虑哪些问题?

  • 你如何吸引顶尖人才加入你的团队?

  • 你认为对数据科学家至关重要的技能是什么?

  • 什么是大数据,你熟悉大数据架构吗?

  • 你如何在工作中保持与时俱进?

  • 你如何判断与其他团队的合作是否成功?

在这篇文章中,我尝试提供一些提示,以及你在DS面试期间可能遇到的一些高级问题。鉴于数据科学角色的范围不断扩大,当然有一些主题和问题在此未讨论。但我试图涵盖一些对数据科学面试中非常重要的一般性主题。

我的最终建议是对你申请的团队/公司进行更多研究,并更好地了解他们正在处理的问题。然后,你可以将主要重点放在为与该团队相关的主题做好准备。

参考链接

[1] https://web.stanford.edu/~hastie/ElemStatLearn/

[2] https://www.microsoft.com/en-us/research/uploads/prod/2006/01/Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf

[3] http://www.crackingthecodinginterview.com/

文章来源:https://towardsdatascience.com/giving-some-tips-for-data-science-interviews-after-interviewing-60-candidates-at-expedia-395fff7e073b

磐创AI
磐创AI

AI行业最新动态,机器学习干货文章,深度学习原创博客,深度学习实战项目,Tensorflow中文原创教程,国外最新论文翻译。欢迎喜欢AI、关注深度学习的小伙伴加入我们。

http://www.panchuang.net/
入门技术面试面试人工智能机器学习
11
相关数据
AWS机构

亚马逊网络服务系统(英语:Amazon Web Services,缩写为AWS),由亚马逊公司所创建的云计算平台,提供许多远程Web服务。Amazon EC2与Amazon S3都架构在这个平台上。在2002年7月首次公开运作,提供其他网站及客户端(client-side)的服务。截至2007年7月,亚马逊公司宣称已经有330,000名开发者,曾经登录过这项服务。

相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

自动编码器技术

自动编码器是用于无监督学习高效编码的人工神经网络。 自动编码器的目的是学习一组数据的表示(编码),通常用于降维。 最近,自动编码器已经越来越广泛地用于生成模型的训练。

数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

逻辑回归技术

逻辑回归(英语:Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作“评定模型”、“分类评定模型”)是离散选择法模型之一,属于多重变量分析范畴,是社会学、生物统计学、临床、数量心理学、计量经济学、市场营销等统计实证分析的常用方法。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

判别模型技术

在机器学习领域,有一种分类方法将模型分为判别模型和生成模型(generative model)两种。 判别模型是一种对未知数据y与已知数据x之间关系进行建模的方法,是一种基于概率理论的方法。已知输入变量x,判别模型通过构建条件概率P(y|x)分布预测结果,或试图直接从输入x的空间学习映射到标签{0,1}(如感知器算法)的函数。生成模型则是考虑x与y之间的联合分布。 在实际应用中判别模型非常常见,如:逻辑回归(logistic regression),支持向量机(support vector machine), 提升方法(Boosting),条件随机场(conditional random fields),神经网络(neural network),随机森林(random forests)典型的生成模型则包括:高斯混合模型(Gaussian Mixture Model),隐马尔科夫模型(hidden markov model),简单贝叶斯(naive Bayes)等。不难看出两者的区别。

神经机器翻译技术

2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一种用于机器翻译的新型端到端编码器-解码器结构 [4]。该模型可以使用卷积神经网络(CNN)将给定的一段源文本编码成一个连续的向量,然后再使用循环神经网络(RNN)作为解码器将该状态向量转换成目标语言。他们的研究成果可以说是神经机器翻译(NMT)的诞生;神经机器翻译是一种使用深度学习神经网络获取自然语言之间的映射关系的方法。NMT 的非线性映射不同于线性的 SMT 模型,而且是使用了连接编码器和解码器的状态向量来描述语义的等价关系。此外,RNN 应该还能得到无限长句子背后的信息,从而解决所谓的「长距离重新排序(long distance reordering)」问题。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

规划技术

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

数据清理技术

数据清理(data cleansing)指删除、更正数据库中错误、不完整、格式有误或多余的数据。数据清理不仅仅更正错误,同样加强来自各个单独信息系统不同数据间的一致性。专门的数据清理软件能够自动检测数据文件,更正错误数据,并用全企业一致的格式整合数据。

模式识别技术

模式识别(英语:Pattern recognition),就是通过计算机用数学技术方法来研究模式的自动处理和判读。 我们把环境与客体统称为“模式”。 随着计算机技术的发展,人类有可能研究复杂的信息处理过程。 信息处理过程的一个重要形式是生命体对环境及客体的识别。其概念与数据挖掘、机器学习类似。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

随机过程技术

在概率论概念中,随机过程是随机变量的集合。若一随机系统的样本点是随机函数,则称此函数为样本函数,这一随机系统全部样本函数的集合是一个随机过程。实际应用中,样本函数的一般定义在时间域或者空间域。随机过程的实例如股票和汇率的波动、语音信号、视频信号、体温的变化,反对法随机运动如布朗运动、随机徘徊等等。

词性标注技术

词性标注是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词、动词、形容词或其他词性的过程。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

深度Q学习技术

Q学习是一种无模型(model-free)的强化学习方法,学习如何在给定(有限)马尔可夫决策过程(MDP)找到最优的动作选择策略。Q学习算法的核心是根据旧的Q值和新的Q值估计进行权重平均的一个值迭代更新(value iteration update)迭代更新的Q函数最终给出了主体在给定状态下采取给定行动的预期效用,当这种行动价值函数被学习时,主体可通过简单地选择在每个状态中具有最高价值的行为来构建最优策略(optimal policy)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

随机森林技术

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而"Random Forests"是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合Breimans的"Bootstrap aggregating"想法和Ho的"random subspace method" 以建造决策树的集合。

线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

词袋模型技术

词袋模型(英语:Bag-of-words model)是个在自然语言处理和信息检索(IR)下被简化的表达模型。此模型下,像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。最近词袋模型也被应用在电脑视觉领域。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

命名实体识别技术

命名实体识别(NER)是信息提取(Information Extraction)的一个子任务,主要涉及如何从文本中提取命名实体并将其分类至事先划定好的类别,如在招聘信息中提取具体招聘公司、岗位和工作地点的信息,并将其分别归纳至公司、岗位和地点的类别下。命名实体识别往往先将整句拆解为词语并对每个词语进行此行标注,根据习得的规则对词语进行判别。这项任务的关键在于对未知实体的识别。基于此,命名实体识别的主要思想在于根据现有实例的特征总结识别和分类规则。这些方法可以被分为有监督(supervised)、半监督(semi-supervised)和无监督(unsupervised)三类。有监督学习包括隐形马科夫模型(HMM)、决策树、最大熵模型(ME)、支持向量机(SVM)和条件随机场(CRF)。这些方法主要是读取注释语料库,记忆实例并进行学习,根据这些例子的特征生成针对某一种实例的识别规则。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

OpenCV技术

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。

聊天机器人技术

聊天机器人是经由对话或文字进行交谈的计算机程序。能够模拟人类对话,通过图灵测试。 聊天机器人可用于实用的目的,如客户服务或资讯获取。有些聊天机器人会搭载自然语言处理系统,但大多简单的系统只会撷取输入的关键字,再从数据库中找寻最合适的应答句。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

降维技术

降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

前馈神经网络技术

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。FNN由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

word2vec技术

Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

梯度消失问题技术

梯度消失指的是随着网络深度增加,参数的梯度范数指数式减小的现象。梯度很小,意味着参数的变化很缓慢,从而使得学习过程停滞,直到梯度变得足够大,而这通常需要指数量级的时间。这种思想至少可以追溯到 Bengio 等人 1994 年的论文:「Learning long-term dependencies with gradient descent is difficult」,目前似乎仍然是人们对深度神经网络的训练困难的偏好解释。

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

动量技术

优化器的一种,是模拟物理里动量的概念,其在相关方向可以加速SGD,抑制振荡,从而加快收敛

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

序列到序列技术

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

词干提取技术

在词法学和信息检索里,词干提取是去除词缀得到词根的过程─—得到单词最一般的写法。对于一个词的形态词根,词干并不需要完全相同;相关的词映射到同一个词干一般能得到满意的结果,即使该词干不是词的有效根。从1968年开始在计算机科学领域出现了词干提取的相应算法。很多搜索引擎在处理词汇时,对同义词采用相同的词干作为查询拓展,该过程叫做归并。

长短期记忆网络技术

长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network)。 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成。它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的随时间反向传播中权重消失的问题(vanishing gradient problem over backpropagation-through-time),重要组成部分包括Forget Gate, Input Gate, 和 Output Gate, 分别负责决定当前输入是否被采纳,是否被长期记忆以及决定在记忆中的输入是否在当前被输出。Gated Recurrent Unit 是 LSTM 众多版本中典型的一个。因为它具有记忆性的功能,LSTM经常被用在具有时间序列特性的数据和场景中。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

问答系统技术

问答系统是未来自然语言处理的明日之星。问答系统外部的行为上来看,其与目前主流资讯检索技术有两点不同:首先是查询方式为完整而口语化的问句,再来则是其回传的为高精准度网页结果或明确的答案字串。以Ask Jeeves为例,使用者不需要思考该使用什么样的问法才能够得到理想的答案,只需要用口语化的方式直接提问如“请问谁是美国总统?”即可。而系统在了解使用者问句后,会非常清楚地回答“奥巴马是美国总统”。面对这种系统,使用者不需要费心去一一检视搜索引擎回传的网页,对于资讯检索的效率与资讯的普及都有很大帮助。从系统内部来看,问答系统使用了大量有别于传统资讯检索系统自然语言处理技术,如自然语言剖析(Natural Language Parsing)、问题分类(Question Classification)、专名辨识(Named Entity Recognition)等等。少数系统甚至会使用复杂的逻辑推理机制,来区隔出需要推理机制才能够区隔出来的答案。在系统所使用的资料上,除了传统资讯检索会使用到的资料外(如字典),问答系统还会使用本体论等语义资料,或者利用网页来增加资料的丰富性。

聚类技术

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。

数据可视化技术

数据可视化被许多学科视为现代视觉传达的等价物。为了清晰有效地传递信息,数据可视化使用统计图形、图表、信息图和其他工具。数字数据可以使用点、线或条编码,以视觉传达定量消息。有效的可视化帮助用户对数据进行分析和推理。它使复杂的数据更容易理解和使用。用户可以根据特定的分析任务进行数据可视化,例如进行比较或理解因果关系,并且图形的设计原则(即,显示比较或显示因果关系)来进行可视化。表通常用于用户查找特定测量的地方,而各种类型的图表用于显示一个或多个变量的数据中的模式或关系。

推荐文章
暂无评论
暂无评论~