下面图片是借用网友做的,很好的总结了机器学习的算法分类:
答:相关性是协方差的标准化格式。协方差本身很难做比较。例如:如果我们计算工资(¥)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们会得到不能做比较的不同的协方差。为了解决这个问题,我们计算相关性来得到一个介于-1和1之间的值,就可以忽略它们各自不同的度量。
答:为了得到更好的预测,只有在分类变量在本质上是有序的情况下才可以被当做连续型变量来处理。
答:这种推荐引擎的基本想法来源于协同过滤。协同过滤算法考虑用于推荐项目的“用户行为”。他们利用的是其他用户的购物行为和针对商品的交易历史记录,评分,选择和购物信息。针对商品的其他用户的行为和偏好用来推荐项目(商品)给新用户。在这中情况下,项目(商品)的特征是未知的。
答:我们不用曼哈顿距离,因为它只计算水平或者垂直距离,有维度的限制。另一方面,欧氏距离可以用于任何空间的距离计算问题。因为,数据点可以存在于任何空间,欧式距离是更可行的选择。例如:想象一下国际象棋棋盘,象或者车所有的移动的由曼哈顿距离计算的,因为他们是在各自的水平和垂直方向做的运动。
答:因为它假定所有的特征在数据集中的作用是同样重要和独立的。正如我们所知,这个假设在现实世界中是很不真实的,因此说朴素贝叶斯真的很“朴素”。
答:我们可以使用以下方法:
1,由于逻辑回归是用来预测概率的,我们可以用AUC-ROC曲线以及混淆矩阵来确定其性能。
2,此外,在逻辑回归中类似于校正R2 的指标是AIC。AIC是对模型系数数量惩罚模型的拟合度量。因此,我们更偏爱有最小的AIC的模型。
3,空偏差指的是只有截距项的模型预测的响应。数值越低,模型越好。残余偏差表示由添加自变量的模型预测的响应。数值越低,模型越好。
答:真阳性率 == 召回 他们有共同的公式(TP/(TP+FN))
答:从数学的角度来看,任何模型出现的误差可以分为三个部分。分别是:
偏差误差在量化平均水平之上,预测值跟实际值相差多远时有用。高偏差误差意味着我们的模型表现不太好,因为没有抓到重要的趋势。而另一方面,方差量化了在同一个观察上进行的预测是如何彼此不同的。高方差模型会过度拟合你的训练集,而在训练集以外的数据上表现很差。
答:你的面试官应该非常了解很难在有限的内存上处理高纬的数据,以下是你可以使用到的方法:
1,由于我们的RAM很小,首先要关闭机器上正在运行的其他程序,包括网页浏览器等,以确保大部分内存可以使用。
2,我们可以随机采样数据集。这意味着,我们可以创建一个较小的数据集,比如有1000个变量和30万行,然后做计算。
3,为了降低维度,我们可以吧数值变量和分类变量分开,同时删掉相关联的变量,对于数据变量,我们将使用相关性分析;对于分类变量,我们可以用卡方检验。
4,另外,我们还可以使用PAC,并挑选可以解释在数据集中有最大偏差的成分。
5,利用在线学习算法,如VowpalWabbit(在Python中可用)是一个不错的选择。
6,利用Stochastic GradientDescent(随机梯度下降法)建立线性模型也很有帮助。
7,我们也可以用我们对业务的理解来估计个预测变量对响应变量的影响的大小。但是,这是一个主观的方法,如果没有找到有用的预测变量可能会导致信息的显著丢失。
答:不能够这样说,这是一个“因果关系和相关性”的经典案例。全球平均温度和海盗数量之间有可能有相关性,但基于这些信息,我们不能说因为全球平均气温的上升而导致了海盗的消失。我们不能断定海盗的数量减少是引起气候变化的原因,因为可能有其他因素(潜伏或混杂因素)影响这一现象。
答:大约有32%的数据将不会受到缺失值的影响。因为,由于数据分布在中位数附近,让我们先假设这是一个正态分布。我们知道,在一个正态分布中,约有68%的数据位于跟平均值(或者众数,中位数)1个标准差范围内,那么剩下的约32%的数据是不受影响的。因此,约有32%的数据将不受缺失值的影响。
有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。(LR,SVM,BP,RF,GBDT)
无监督学习:对未标记的样本进行训练学习,比发现这些样本中的结构知识。(KMeans,DL)
答:正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加上模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度比以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。
奥卡姆剃刀原理:能够很好的解释已知数据并且十分简单才是最好的模型。
答:如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,负责不是。 常用的线性分类器有:LR ,贝叶斯分类,单层感知器,线性回归
常见的非线性分类器:决策树,RF,GBDT,多层感知机
SVM两种都有(看线性核还是高斯核)
线性分类器速度快,编程方便,但是可能拟合效果不会很好
非线性分类器编程复杂,但是效果拟合能力强
卷积神经网络的特点是卷积核,CNN中使用了权共享,通过不断的上采用和卷积得到不同的特征表示,采样层又称为pooling层,基于局部相关性原理进行亚采样,在减少数据量的同时保持有用的信息。DBN是深度信念网络,每一层是一个RBM,整个网络可以视为RBM堆叠得到,通常使用无监督逐层训练,从第一层开始,每一层利用上一层的输入进行训练,等各层训练结束之后再利用BP算法对整个网络进行训练。
用EM算法求解的模型一般有GMM或者协同过滤,k-means其实也属于EM。EM算法一定会收敛,但是可能收敛到局部最优。由于求和的项数将随着隐变量的数目指数上升,会给梯度计算带来麻烦。
k-means算法是高斯混合聚类在混合成分方差相等,且每个样本仅指派一个混合成分时候的特例。注意k-means在运行之前需要进行归一化处理,不然可能会因为样本在某些维度上过大导致距离计算失效。k-means中每个样本所属的类就可以看成是一个隐变量,在E步中,我们固定每个类的中心,通过对每一个样本选择最近的类优化目标函数,在M步,重新更新每个类的中心点,该步骤可以通过对目标函数求导实现,最终可得新的类中心就是类中样本的均值。
k-means算法,聚类性能的度量一般分为两类,一类是聚类结果与某个参考模型比较(外部指标),另外是直接考察聚类结果(内部指标)。后者通常有DB指数和DI,DB指数是对每个类,找出类内平均距离/类间中心距离最大的类,然后计算上述值,并对所有的类求和,越小越好。类似k-means的算法仅在类中数据构成簇的情况下表现较好,密度聚类算法从样本密度的角度考察样本之间的可连接性,并基于可连接样本不断扩展聚类蔟得到最终结果。
DBSCAN(density-based spatial clustering of applications with noise)是一种著名的密度聚类算法,基于一组邻域参数进行刻画,包括邻域,核心对象(邻域内至少包含个对象),密度直达(j由i密度直达,表示j在i的邻域内,且i是一个核心对象),密度可达(j由i密度可达,存在样本序列使得每一对都密度直达),密度相连(xi,xj存在k,i,j均有k可达),先找出样本中所有的核心对象,然后以任一核心对象作为出发点,找出由其密度可达的样本生成聚类蔟,直到所有核心对象被访问过为止。
聚类算法中的距离度量一般用闽科夫斯基距离,在p取不同的值下对应不同的距离,例如p=1的时候对应曼哈顿距离,p=2的情况下对应欧式距离,p=inf的情况下变为切比雪夫距离,还有jaccard距离,幂距离(闽科夫斯基的更一般形式),余弦相似度,加权的距离,马氏距离(类似加权)作为距离度量需要满足非负性,同一性,对称性和直递性,闽科夫斯基在p>=1的时候满足读来那个性质,对于一些离散属性例如{飞机,火车,轮船}则不能直接在属性值上计算距离,这些称为无序属性,可以用VDM(Value Diffrence Metrix),属性u上两个离散值a,b之间的VDM距离定义为
其中表示在第i个簇中属性u上a的样本数,样本空间中不同属性的重要性不同的时候可以采用加权距离,一般如果认为所有属性重要性相同则要对特征进行归一化。一般来说距离需要的是相似性度量,距离越大,相似度越小,用于相似性度量的距离未必一定要满足距离度量的所有性质,例如直递性。比如人马和人,人马和马的距离较近,然后人和马的距离可能就很远。
最小化分类错误的贝叶斯最优分类器等价于最大化后验概率。
基于贝叶斯公式来估计后验概率的主要困难在于,条件概率是所有属性上的联合概率,难以从有限的训练样本直接估计得到。朴素贝叶斯分类器采用了属性条件独立性假设,对于已知的类别,假设所有属性相互独立。这样,朴素贝叶斯分类则定义为
如果有足够多的独立同分布样本,那么可以根据每个类中的样本数量直接估计出来。在离散情况下先验概率可以利用样本数量估计或者离散情况下根据假设的概率密度函数进行最大似然估计。朴素贝叶斯可以用于同时包含连续变量和离散变量的情况。如果直接基于出现的次数进行估计,会出现一项为0而乘积为0的情况,所以一般会用一些平滑的方法,例如拉普拉斯修正,
TF指Term frequecy,代表词频,IDF代表inverse document frequency,叫做逆文档频率,这个算法可以用来提取文档的关键词,首先一般认为在文章中出现次数较多的词是关键词,词频就代表了这一项,然而有些词是停用词,例如的,是,有这种大量出现的词,首先需要进行过滤,比如过滤之后再统计词频出现了中国,蜜蜂,养殖且三个词的词频几乎一致,但是中国这个词出现在其他文章的概率比其他两个词要高不少,因此我们应该认为后两个词更能表现文章的主题,IDF就代表了这样的信息,计算该值需要一个语料库,如果一个词在语料库中出现的概率越小,那么该词的IDF应该越大,一般来说TF计算公式为(某个词在文章中出现次数/文章的总词数),这样消除长文章中词出现次数多的影响,IDF计算公式为log(语料库文章总数/(包含该词的文章数)+1)。将两者乘乘起来就得到了词的TF-IDF。传统的TF-IDF对词出现的位置没有进行考虑,可以针对不同位置赋予不同的权重进行修正,注意这些修正之所以是有效的,正是因为人观测过了大量的信息,因此建议了一个先验估计,人将这个先验估计融合到了算法里面,所以使算法更加的有效。
余弦距离是两个向量的距离的一种度量方式,其值在-1~1之间,如果为1表示两个向量同相,0表示两个向量正交,-1表示两个向量反向。使用TF-IDF和余弦距离可以寻找内容相似的文章,例如首先用TF-IDF找出两篇文章的关键词,然后每个文章分别取出k个关键词(10-20个),统计这些关键词的词频,生成两篇文章的词频向量,然后用余弦距离计算其相似度。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
如果一味的去提高训练数据的预测能力,所选模型的复杂度往往会很高,这种现象称为过拟合,所表现的就是模型训练时候的误差很小,但在测试的时候误差很大。
1 2 3 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
当你使用较小的数据集进行机器学习时,容易产生过度拟合,因此使用较大的数据量能避免过度拟合现象。但是当你不得不使用小型数据集进行建模时候,可以使用被称为交叉验证的技术。在这种方法中数据集被分为两节,测试和训练数据集,测试数据集只测试模型,而在训练数据集中,数据点被用来建模。
在该技术中,一个模型通常是被给定有先验知识的数据集(训练数据集)进行训练,没有先验知识的数据集进行测试,交叉验证的思想是:在训练阶段,定义一个数据集用来测试模型。
1 2 3 4 5 6 |
|
1 |
|
1 2 3 4 5 |
|
1 2 3 4 |
|
1 2 3 |
|
1 |
|
1 2 3 |
|
1 2 3 4 5 6 7 |
|
1 |
|
1 2 3 4 5 |
|
1 |
|
1 |
|
1 2 |
|
1 |
|
1 2 |
|
1 2 3 |
|
1 2 |
|
1 |
|
1 2 |
|
1 2 3 4 |
|
1 |
|
1 2 |
|
1 |
|
1 2 |
|
1 |
|
1 |
|
1 2 3 |
|
1 2 |
|
1 |
|
1 |
|
1 2 3 4 |
|
1 2 3 |
|
1 2 |
|
1 |
|
1 2 |
|
1 2 |
|
1 |
|
1 2 3 |
|
1 2 3 4 5 6 7 8 |
|
1 2 3 |
|
1 2 |
|
1 |
|
1 |
|
1 |
|
1 2 3 |
|
1 |
|