机器学习中比较重要的几个概念

一、Python
1、Numpy
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

2、Pandas
pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。Series 和 DataFrame 分别对应于一维的序列和二维的表结构。

3、Matplotlib
Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

4、Sklearn
Sklearn是机器学习中一个常用的python第三方模块,对一些常用的机器学习方法进行了封装,在进行机器学习任务时,并不需要每个人都实现所有的算法,只需要简单的调用sklearn里的模块就可以实现大多数机器学习任务。
机器学习任务通常包括分类(Classification)和回归(Regression),常用的分类器包括SVM、KNN、贝叶斯、线性回归、逻辑回归、决策树、随机森林、xgboost、GBDT、boosting、神经网络NN。常见的降维方法包括TF-IDF、主题模型LDA、主成分分析PCA等等。

二、机器学习

1、one-hot
独热编码即 One-Hot 编码,又称一位有效编码,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。
直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。

2、监督学习
训练样本数据中,每个样本都带有正确答案。
例如:预测数值型数据的回归、预测分类标签的分类、预测顺序的排列。

3、无监督学习
训练数据中,每个样本都没有正确答案。
例如:聚类(相似点)、异常检测(异常点)。

4、N-gram
N-gram模型是一种语言模型(Language Model,LM),语言模型是一个基于概率的判别模型,它的输入是一句话(单词的顺序序列),输出是这句话的概率,即这些单词的联合概率(joint probability)。
例如:我说“上火”、“金罐”这两个词,你能想到的下一个词应该更可能“加多宝”,而不是“可口可乐”。N-gram正是基于这样的想法,它的第一个特点是某个词的出现依赖于其他若干个词,第二个特点是我们获得的信息越多,预测越准确。
这就好像,我们每个人的大脑中都有一个N-gram模型,而且是在不断完善和训练的。我们的见识与经历,都在丰富着我们的阅历,增强着我们的联想能力。

5、激活函数
它们将非线性特性引入到我们的网络中。
举例:如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

6、Sigmoid函数(最常用的激活函数)
Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到[0,1]之间。

7、Softmax
或称归一化指数函数。他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。
softmax由两个单词组成,其中一个是max,max即最大值;另一个单词soft,即最后的输出是每个分类被取到的概率。

8、归一化
归一化(标准化)方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理。

模型归一化后的好处:
  1、提升模型的收敛速度。
  2、提升模型的精度。

9、损失函数
损失函数的定义是什么:衡量模型模型预测的好坏。
在解释下,损失函数就是用来表现预测与实际数据的差距程度。
例如:你做一个线性回归,实际值和你的预测值肯定会有误差,那么我们找到一个函数表达这个误差就是损失函数。

10、梯度下降/上升
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。
在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。

11、学习率(Learning rate)
监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。
以梯度下降为例,为了使梯度下降法有较好的性能,我们需要把学习率的值设定在合适的范围内。学习率决定了参数移动到最优值的速度快慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。所以学习率对于算法性能的表现至关重要。

12、负采样
自然语言处理领域中,判断两个单词是不是一对上下文词(context)与目标词(target),如果是一对,则是正样本,如果不是一对,则是负样本。

13、哈夫曼树
给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

14、MapReduce之Combiner
  1、Combiner是MR程序中Mapper和Reduce之外的一种组件。
  2、Combiner组件的父类就是Reducer。
  3、Combiner和Reducer之间的区别在于运行的位置。
  4、Reducer是每一个接收全局的MapTask 所输出的结果。
  5、Combiner是在MapTask的节点中运行。
  6、每一个map都会产生大量的本地输出,Combiner的作用就是对map输出的结果先做一次合并,以较少的map和reduce节点中的数据传输量。
  7、Combiner的存在就是提高当前网络IO传输的性能,也是MapReduce的一种优化手段。
  8、Combiner就是一次Reducer类中reduce方法的实现,所以这里的KV需要和Reducer的KV是一致的实际开发一定是先实现Mapper之后,知道了KV,然后再根据需要实现自定义的Combiner中的KV。

15、Hadoop之Shuffle过程
Shuffle过程是MapReduce的核心,描述着数据从map task输出到reduce task输入的这段过程。
Hadoop的集群环境,大部分的map task和reduce task是执行在不同的节点上的,那么reduce就要取map的输出结果。那么集群中运行多个Job时,task的正常执行会对集群内部的网络资源消耗严重。虽说这种消耗是正常的,是不可避免的,但是,我们可以采取措施尽可能的减少不必要的网络资源消耗。另一方面,每个节点的内部,相比于内存,磁盘IO对Job完成时间的影响相当的大。

从以上分析,shuffle过程的基本要求:
  1、完整地从map task端拉取数据到reduce task端
  2、在拉取数据的过程中,尽可能地减少网络资源的消耗
  3、尽可能地减少磁盘IO对task执行效率的影响

16、Word2vec中的CBOW与Skip-Gram模型
先验概率:是指根据以往经验和分析得到的概率,如全概率公式,它往往作为"由因求果"问题中的"因"出现的概率。
后验概率:是指在得到“结果”的信息后重新修正的概率,是“执果寻因”问题中的"果"。

N-gram:
先验概率和后验概率已经知道了,但是一个句子很长,对每个词进行概率计算会很麻烦,于是有了n-gram模型。
该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。
一般情况下我们只计算一个单词前后各两个词的概率,即n取2, 计算n-2,.n-1,n+1,n+2的概率。
如果n=3,计算效果会更好;n=4,计算量会变得很大。

Cbow:
cbow输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量,即先验概率。
训练的过程如下图所示,主要有输入层(input),映射层(projection)和输出层(output)三个阶段。

Skip-gram:
Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量,即后验概率。

17、Word2vec中的Negative Sampling模型
word2vec训练方法和传统的神经网络有所区别,主要解决的是softmax计算量太大的问题,采用Hierarchical Softmax和Negative Sampling模型。
word2vec中cbow,skip-gram都是基于huffman树然后进行训练,左子树为1右子树为0,同时约定左子树权重不小于右子树。
其中,根节点的词向量对应我们的投影后的词向量,而所有叶子节点就类似于之前神经网络softmax输出层的神经元,叶子节点的个数就是词汇表的大小。在霍夫曼树中,隐藏层到输出层的softmax映射不是一下子完成的,而是沿着霍夫曼树一步步完成的,因此这种softmax取名为"Hierarchical Softmax"。

三、Spark
1、Sprak中的RDD
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。

2、RDD、DataFrame、Dataset的共性和区别:
共性:
  1、RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利
  2、三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运算,极端情况下,如果代码里面有创建、转换,但是后面没有在Action中使用对应的结果,在执行时会被直接跳过。
  3、三者都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出
  4、三者都有partition的概念,这样对每一个分区进行操作时,就跟在操作数组一样,不但数据量比较小,而且可以方便的将map中的运算结果拿出来,如果直接用map,map中对外面的操作是无效的。
  5、三者有许多共同的函数,如filter,排序等
  6、在对DataFrame和Dataset进行操作许多操作都需要这个包进行支持
  7、DataFrame和Dataset均可使用模式匹配获取各个字段的值和类型

区别:
RDD:
  1、RDD一般和spark mlib同时使用
  2、RDD不支持sparksql操作

DataFrame:
  1、与RDD和Dataset不同,DataFrame每一行的类型固定为Row,只有通过解析才能获取各个字段的值。
  2、DataFrame与Dataset一般与spark ml同时使用
  3、DataFrame与Dataset均支持sparksql的操作,比如select,groupby之类,还能注册临时表/视窗,进行sql语句操作。
  4、DataFrame与Dataset支持一些特别方便的保存方式,比如保存成csv,可以带上表头,这样每一列的字段名一目了然。

Dataset:
这里主要对比Dataset和DataFrame,因为Dataset和DataFrame拥有完全相同的成员函数,区别只是每一行的数据类型不同。
DataFrame也可以叫Dataset[Row],每一行的类型是Row,不解析,每一行究竟有哪些字段,各个字段又是什么类型都无从得知,只能用上面提到的getAS方法或者共性中的第七条提到的模式匹配拿出特定字段。而Dataset中,每一行是什么类型是不一定的,在自定义了case class之后可以很自由的获得每一行的信息。

(待续整理)

原文地址:https://www.cnblogs.com/hunttown/p/10449672.html

时间: 2024-11-05 15:53:14

机器学习中比较重要的几个概念的相关文章

(转)机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在verycd可下载,可惜没有翻译.不过还是可以看.另外一个是prml-pattern recogni

机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

机器学习中的数学(1)-回归(regression).梯度下降(gradient descent) 版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在

机器学习中的数学-回归(regression)、梯度下降(gradient descent)<1>

机器学习中的数学(1)-回归(regression).梯度下降(gradient descent) 版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在

机器学习中复杂概念的理解

平均值和数学期望的区别? 均值(mean value)是针对既有的数值(简称母体)全部一个不漏个别都总加起来,做平均值(除以总母体个数),就叫做均值. 但是当这个数群(data group)的数量(numbers)很大很多时,我们只好做个抽样(sampling),并"期望"透过抽样所得到的均值,去预测整个群体的"期望值(expectation value)". 当抽样的数量很大时候,我们认为抽样得到的均值接近于期望值. 机器学习中概念都有哪些? 损失函数是度量模型一

机器学习中的数据清洗与特征处理综述

背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富.通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向.目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐.筛选排序.搜索排序.用户建模等等,为公司创造了巨大的价值.本文主要介绍在美团的推荐与个性化团队实践中的数据清洗与特征挖掘方法.主要内容已经在内部公开课"机器学习InAction系列"讲过,本博客的内容主要是

【转载】机器学习中的相似性度量,方法汇总对比

机器学习中的相似性度量,方法汇总对比 人工智能  林  1周前 (01-10)  876℃  0评论 作者:苍梧 在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance).采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否. 本文的目的就是对常用的相似性度量作一个总结. 本文目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马

机器学习中的矩阵方法02:正交

机器学习中的矩阵方法02:正交 说明:Matrix Methods in Data Mining and Pattern Recognition 读书笔记 1. 正交的一些概念和性质 在前一章的最小二乘的问题中,我们知道不恰当的基向量会出现条件数过大,系统防干扰能力差的现象,这实际上和基向量的正交性有关. 两个向量的内积如果是零, 那么就说这两个向量是正交的,在三维空间中,正交的两个向量相互垂直.如果相互正交的向量长度均为 1, 那么他们又叫做标准正交基. 正交矩阵则是指列向量相互正交的方阵.标

机器学习中有关概率论知识的小结

一.引言 最近写了许多关于机器学习的学习笔记,里面经常涉及概率论的知识,这里对所有概率论知识做一个总结和复习,方便自己查阅,与广大博友共享,所谓磨刀不误砍柴工,希望博友们在这篇博文的帮助下,阅读机器学习的相关文献时能够更加得心应手!这里只对本人觉得经常用到的概率论知识点做一次小结,主要是基本概念,因为机器学习中涉及概率论的地方,往往知道基本概念就不难理解,后面会不定期更新,希望博友们多留言补充. 二.贝叶斯(Bayes)公式 通常把事件 A 的概率 P(A)叫做实验前的假设概率,即先验概率(pr

机器学习中的学习方式-Types of learning

Types of learning 根据个人理解,机器学习中的学习方式的分类有利于我们在面对一个具体的问题时,能够根据要达到的目标选择合适的机器学习算法来得到想要的结果.比如,判断一封电子邮件是否是垃圾邮件,就要使用分类(classification),那要达到分类的效果就要使机器学会怎么样去分类,这就是学习的过程.在学习的过程在又分为四大类: 1)监督学习    (supervised learning) 2)无监督学习(unsupervised learning) 3)半监督学习(semi-