神经协同过滤笔记

在解决在含有隐形反馈的基础上进行推荐的关键问题----协同过

协同过滤:对用户对项目的偏好进行建模,就是所谓的协同过滤
矩阵分解MF
论文贡献
  1、我们提出了一种神经网络结构来模拟用户和项目的潜在特征,并设计了基于神经网络的协同过滤的通用框架NCF。

2、我们表明MF可以被解释为NCF的特例,并利用多层感知器来赋予NCF高水平的非线性建模能力。

3、我们对两个现实世界的数据集进行广泛的实验,以证明我们的NCF方法的有效性和对使用深度学习进行协作过滤的承诺。
名词解释:

内积:点积,数量积

数学解释:两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为a·b=a1b1+a2b2+……+anbn。
通俗理解:使用矩阵乘法并把(纵列)向量当作n×1 矩阵,点积还可以写为a·b=aT*b,这里的aT指示矩阵a的转置。
矩阵的内积参照向量的内积的定义是 两个向量对应分量乘积之和.
比如: α=(1,2,3), β=(4,5,6)
则 α, β的内积等于 14 +25 + 36 = 32
α与α 的内积 = 1
1+22+33 = 14.

img

拓展资料:内积(inner product),又称数量积(scalar product)、点积(dot product)是一种向量运算,但其结果为某一数值,并非向量。其物理意义是质点在F的作用下产生位移S,力F所做的功,W=|F||S|cosθ。
在数学中,数量积(dot product; scalar product,也称为点积)是接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。 两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为: a·b=a1b1+a2b2+……+anbn。 使用矩阵乘法并把(纵列)向量当作n×1 矩阵,点积还可以写为: a·b=a*bT,这里的bT指示矩阵b的转置。

Jaccard相似系数

Jaccard index , 又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。

库与框架:

库和框架都是一种有别于软件、面向程序开发者的产品形式。正因为如此,也有很多人误以为库就是框架,或者认为指定语言的库就是框架。是将代码集合成的一个产品,供程序员调用。面向对象的代码组织形式而成的库也叫类库。面向过程的代码组织形式而成的库也叫函数库。在函数库中的可直接使用的函数叫函数。开发者在使用库的时候,只需要使用库的一部分类或函数,然后继续实现自己的功能。框架则是为解决一个(一类)问题而开发的产品,框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。可以说,框架是库的升级版。开发者在使用框架的时候,必须使用这个框架的全部代码。 框架和库的比较可以想像为:

假如我们要买一台电脑。框架为我们提供了已经装好的电脑,我们只要买回来就能用,但你必须把整个电脑买回来。这样用户自然轻松许多,但会导致很多人用一样的电脑,或你想自定义某个部件将需要修改这个框架。而库就如自己组装的电脑。库为我们提供了很多部件,我们需要自己组装,如果某个部件库未提供,我们也可以自己做。库的使用非灵活,但没有框架方便。

MF

img

协同过滤:

协同大家的反馈,评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程

利用相似函数,借鉴和用户相似的用户商品进行推荐:主要使用的是相似函数:sim(i,j),余弦相似度,皮尔逊相关系数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDTdMgF2-1682756429804)(E:\qq下载\2837683881\FileRecv\MobileFile\IMG_20230411_195444.jpg)]

矩阵分解:

用户和物品的隐向量是通过分解协同过滤生产的共现矩阵得到的;这也是’矩阵分解‘名字的由来。

将U*I矩阵进行矩阵分解,为M=m * k,N=n * k,k为自定义的维度,k越大表达能力越强,但是其泛化能力越弱。M,N矩阵的数为随机数,之后利用损失函数,看估计值与实际差距。之后再利用梯度下降进行更新参数。也是和协同过滤相同,利用户和物品的相似度进行推荐。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IUP5ZBhP-1682756429805)(E:\qq下载\2837683881\FileRecv\MobileFile\qq_pic_merged_1681214851791.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNKS3f9a-1682756429808)(E:\qq下载\2837683881\FileRecv\MobileFile\qq_pic_merged_1681214836621.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iw3nEPkd-1682756429810)(E:\qq下载\2837683881\FileRecv\MobileFile\qq_pic_merged_1681214820098.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSgyYoXU-1682756429812)(E:\qq下载\2837683881\FileRecv\MobileFile\IMG_20230411_200625.jpg)]

似然函数

似然函数在 推断统计学 (Statistical inference)中扮演重要角色,如在 最大似然估计 和费雪信息之中的应用等等。. “似然性"与"或然性"或” 概率 "意思相近,都是指某种事件发生的可能性,但是在 统计学 中,"似然性"和"或然性"或"概率"又有明确的区分。. 概率 用于在已知一些参数的情况下,预测接下来的观测所得到的结果,而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。.

偏执向量

首先从线性方程的角度来看,假设简单的线性方程y= wx,当权重w= 1,2,3时,图形如下:

img

不管权重怎么变换该方程所能拟合的场景都受制于原点(0,0)。当给这个方程加上截距后变成y= x + 1.方程的灵活性大大增加,拟合能力增强,所以提升了精度。

img

在神经网络中,以sigmoid函数为例,加入偏置后也是增加了函数的灵活性,提高了神经元的拟合能力。

img

在神经元中,output = sum (weights * inputs) + bias。偏置实际上是对神经元激活状态的控制。比如在上图中,当偏置为20时,x较小时y的值就可以很大,就可以较快的将该神经元激活。

二分类问题

拟合与过度拟合

1.什么是拟合?

拟合就是说这个曲线能不能很好的描述某些样本,并且有比较好的泛化能力,用形象的方式来说就是把平面上一系列的点,用一条光滑的曲线连接起来,并能很好的通过曲线走势预测点的位置。类似下图:

img

2.什么是过拟合?

在训练集中表现的特别优秀,贴合训练数据的特征,但是没有泛化能力,在新的数据集中无法做出准确的预测。

举个例子,如:我们提取一条狗的特征作为训练集,如下图。我们可以获取到的特征有:黄色,毛发微微卷曲,黑色眼睛,耳朵直立,耳朵小,尾巴短小,毛发长度,身高体重等等一系列特征。提取到的特征特别多,非常的契合这个训练集。

img

但是当我们进行泛化的时候我们根据这些特征不能准确判断。我们来看下面这个“玩意儿”,耳朵大,颜色不黄,毛发不长,尾巴不短,由特征可以判断,“它不是狗”。

img

3.什么是欠拟合?

由于训练模型过于简单没有提取到测试样本的特性,无法拟合被测样本。

比如,之前的例子中我们只简单提取一个特征:四条腿。那么下图中的动物也是狗了。

img

4.产生过拟合和欠拟合的原因

4.1.过拟合:由上面的例子我们不难总结出来,

   测试模型过于复杂

   测试集样本太少

4.1.欠拟合:

   测试模型过于简单

   测试样本之间的区别太大,无法找到有效的特征

   提取特征的维数太少

5.解决方法:

5.1.解决过拟合的方法:

(1)增加训练集

(2)使用合适复杂度的模型:选择合适神经网络的层数

(3)L1、L2正则化

5.2.解决欠拟合的方法:优化模型,一般是模型过于简单无法描述样本的特性。

(1)增加特征维度;

(2)选择合适的模型,适当增加网络层数,调整网络的容量;

(3)减少正则化参数;

(4)使用合适的数据训练。

6.如何判断

欠拟合和过拟合没有明确的定义分界。

从训练的过程来看:明显的未充分利用数据,拟合结果不符合预期,甚至不能有效拟合训练集,我们可以认为欠拟合。 考虑过多,超出自变量的一般含义维度,过多考虑噪声,会造成过拟合。

从训练的结果来看:在训练数据上的得分很高,在测试数据上得分相对比较低,是过拟合。在训练数据上得分比较低,在测试数据上得分相对低,是欠拟合。

激活函数

img

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。

在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以看作是根据输入得到开(1)或关(0)输出的数字电路激活函数。因此,激活函数是确定神经网络输出的数学方程式,本文概述了深度学习中常见的十种激活函数及其优缺点。

首先我们来了解一下人工神经元的工作原理,大致如下:

img

上述过程的数学可视化过程如下图所示:

img

1. Sigmoid激活函数

img

Sigmoid 函数的图像看起来像一个 S 形曲线。

函数表达式如下:

img

在什么情况下适合使用 Sigmoid激活函数呢?

  • Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化;
  • 用于将预测概率作为输出的模型。由于概率的取值范围是 0 到 1,因此 Sigmoid 函数非常合适;
  • 梯度平滑,避免「跳跃」的输出值;
  • 函数是可微的。这意味着可以找到任意两个点的 sigmoid 曲线的斜率;
  • 明确的预测,即非常接近 1 或 0。

Sigmoid激活函数有哪些缺点?

  • 倾向于梯度消失;
  • 函数输出不是以 0 为中心的,这会降低权重更新的效率;
  • Sigmoid 函数执行指数运算,计算机运行得较慢。

2. Tanh / 双曲正切激活函数

img

tanh激活函数的图像也是 S 形,表达式如下:

img

tanh 是一个双曲正切函数。tanh 函数和 sigmoid 函数的曲线相对相似。但是它比 sigmoid 函数更有一些优势。

img

  • 首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。二者的区别在于输出间隔,tanh 的输出间隔为 1,并且整个函数以 0 为中心,比 sigmoid 函数更好;
  • 在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。

注意:在一般的二元分类问题中,tanh 函数用于隐藏层,而 sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。

3. ReLU激活函数

img

ReLU激活函数图像如上图所示,函数表达式如下:

img

ReLU 函数是深度学习中较为流行的一种激活函数,相比于 sigmoid 函数和 tanh 函数,它具有如下优点:

  • 当输入为正时,不存在梯度饱和问题。
  • 计算速度快得多。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 更快。

当然,它也有缺点:

  1. Dead ReLU 问题。当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;

  2. 我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。

逻辑回归

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zxFcQhxO-1682756429846)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230410171641992.png)]

Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。

Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。

逻辑回归的数学形式是各特征的加权和,再施以sigmoid函数。

Embedding嵌入式

one-hot编码

假设,我们中文,一共只有10个字,那么我们用0-9就可以表示完。

比如,这十个字就是“小普喜欢星海湾的朋友”

其分别对应“0-9”,如下:

img

那么,其实我们只用一个列表就能表示所有的对话。

例如:

img

或者:

img

但是,经过one-hot编码把上面变成:

img

即:把每一个字都对应成一个十个(样本总数/字总数)元素的数组/列表,其中每一个字都用唯一对应的数组/列表对应,数组/列表的唯一性用1表示。

那问题来了,费老大劲整这个干嘛呢?有什么优势?

很明显,计算简单嘛,稀疏矩阵做矩阵计算的时候,只需要把1对应位置的数相乘求和就行,也许你心算都能算出来;而一维列表,你能很快算出来?

何况这个列表还是一行,如果是100行、1000行或1000列呢?所以,one-hot编码的优势就体现出来了,计算方便快捷、表达能力强。

然而,缺点也随着来了。

比如:中文大大小小简体繁体常用不常用有十几万,然后一篇文章100W字,你要表示成100W X 10W的矩阵???

这是它最明显的缺点:过于稀疏时,过度占用资源

比如:其实我们这篇文章,虽然100W字,但是其实我们整合起来,有99W字是重复的,只有1W字是完全不重复的。

那我们用100W X 10W的岂不是白白浪费了99W X 10W的矩阵存储空间。

Embedding

假设:我们有一个2 x 6的矩阵,然后乘上一个6 x 3的矩阵后,变成了一个2 x 3的矩阵。

img

先不管它什么意思,这个过程,我们把一个A中的12个元素的矩阵变成C中6个元素的矩阵,直观上,大小是不是缩小了一半?

对!!!Embedding层,在某种程度上,就是用来降维的,降维的原理就是矩阵乘法

假如我们有一个100W X10W的矩阵,用它乘上一个10W X 20的矩阵,我们可以把它降到100W X 20,瞬间量级降了10W/20=5000倍!!!

这就是嵌入层的一个作用——降维

接着,既然可以降维,当然也可以升维。

为什么要升维?

img

这张图,如果要你在10米开外找出四处不同!是不是太困难了!(小普这就叫复联的鹰眼来帮我!)当然,目测这是不可能完成的。

但是让你在一米外,也许你一瞬间就发现鼻子是不同的,然后再走近半米,你又发现右下角元宝也是不同的。再走近20厘米,又发现耳朵也不同,最后,在距离屏幕10厘米的地方,终于发现第四个不同的地方在眼睛的高光。

但是,其实无限靠近并不代表认知度就高了,比如,你只能距离屏幕1厘米远的地方找,找出四处不同,小普怕不是要被读者打死了。

由此可见,距离的远近会影响我们的观察效果

同理也是一样的,低维的数据可能包含的特征是非常笼统的,我们需要不停地拉近拉远来改变我们的感受,让我们对这幅图有不同的观察点,找出我们要的""。

Embedding的又一个作用体现了:对低维的数据进行升维时,可能把一些其他特征给放大了,或者把笼统的特征给分开了

同时,这个Embedding是一直在学习在优化的,就使得整个拉近拉远的过程慢慢形成一个良好的观察点。

比如:小普来回靠近和远离屏幕,发现45厘米是最佳观测点,这个距离能10秒就把4个不同点找出来了。

因此它就是作为这个桥梁的存在,让我们手头的东西可伸可缩,变成我们希望的样子。

语义理解中Embedding意义

理解了它是沟通两个世界的桥梁后,我们再看个例子,它是如何运用在文本数据中的?

如下图所示,我们可以通过将两个无法比较的文字映射成向量,接下来就能实现对他们的计算。

img

例如:

queen(皇后)= king(国王)- man(男人)+ woman(女人)

这样计算机能明白,“皇后啊,就是女性的国王呗!”

walked(过去式)= walking(进行时)- swimming(进行时)+ swam(过去式)

同理计算机也能明白,“walked,就是walking的过去式啦!”另外,向量间的距离也可能会建立联系,比方说“北京”是“中国”的首都,“巴黎”是“法国”的首都,那么向量:|中国|-|北京|=|法国|-|巴黎|

总结:

Embedding 的基本内容大概就是这么多啦,然而小普想说的是它的价值并不仅仅在于 word embedding 或者 entity embedding 再或者是多模态问答中涉及的 image embedding,而是这种能将某类数据随心所欲的操控且可自学习的思想

通过这种方式,我们可以将神经网络深度学习用于更广泛的领域,Embedding 可以表示更多的东西,而这其中的关键在于要想清楚我们需要解决的问题和应用 Embedding 表示我们期望的内容。

机器学习

训练

机器学习模型训练的目的,就是使得参数尽可能的与真实的模型逼近。具体做法是这样的。首先给所有参数赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本。样本的预测目标为yp,真实目标为y。那么,定义一个值loss,计算公式如下。

loss = (yp - y)2

这个值称之为损失(loss),我们的目标就是使对所有训练数据的损失和尽可能的小。

多层神经网络

多层神经网络==深度学习

进行预训练之后进行微调

更多层的神经网络使得更深入的表示特征,以及更强的函数模拟能力。

更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。在神经网络中,每一层神经元学习到的是前一层神经元值的更抽象的表示。例如第一个隐藏层学习到的是“边缘”的特征,第二个隐藏层学习到的是由“边缘”组成的“形状”的特征,第三个隐藏层学习到的是由“形状”组成的“图案”的特征,最后的隐藏层学习到的是由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力img

CNN(Conventional Neural Network,卷积神经网络)与RNN(Recurrent Neural Network,递归神经网络)

​ 在单层神经网络时,我们使用的激活函数是sgn函数。到了两层神经网络时,我们使用的最多的是sigmoid函数。而到了多层神经网络时,通过一系列的研究发现,ReLU函数在训练多层神经网络时,更容易收敛,并且预测性能更好。因此,目前在深度学习中,最流行的非线性函数是ReLU函数。ReLU函数不是传统的非线性函数,而是分段线性函数。其表达式非常简单,就是y=max(x,0)。简而言之,在x大于0,输出就是输入,而在x小于0时,输出就保持为0。这种函数的设计启发来自于生物神经元对于激励的线性响应,以及当低于某个阈值后就不再响应的模拟。

在多层神经网络中,训练的主题仍然是优化和泛化。当使用足够强的计算芯片(例如GPU图形加速卡)时,梯度下降算法以及反向传播算法在多层神经网络中的训练中仍然工作的很好。目前学术界主要的研究既在于开发新的算法,也在于对这两个算法进行不断的优化,例如,增加了一种带动量因子(momentum)的梯度下降算法。

在深度学习中,泛化技术变的比以往更加的重要。这主要是因为神经网络的层数增加了,参数也增加了,表示能力大幅度增强,很容易出现过拟合现象。因此正则化技术就显得十分重要。目前,Dropout技术,以及数据扩容(Data-Augmentation)技术是目前使用的最多的正则化技术。

img

决策分解

img

机器学习与深度学习

机器学习

(1)数据集准备

(2)探索性地对数据进行分析

(3)数据预处理

(4)数据分割

(5)机器学习算法建模

(6)选择机器学习任务

(7)最后就是评价机器学习算法对实际数据的应用情况如何

图片

1.1 数据集

首先我们要研究的是数据的问题,数据集是构建机器学习模型流程的起点。简单来说,数据集本质上是一个M×N矩阵,其中M代表列(特征),N代表行(样本)。

列可以分解为X和Y,X是可以指特征、独立变量或者是输入变量。Y也是可以指类别标签、因变量和输出变量。

图片

1.2 数据分析

进行探索性数据分析(Exploratorydata analysis, EDA)是为了获得对数据的初步了解。EDA主要的工作是:对数据进行清洗,对数据进行描述(描述统计量,图表),查看数据的分布,比较数据之间的关系,培养对数据的直觉,对数据进行总结等。

探索性数据分析方法简单来说就是去了解数据,分析数据,搞清楚数据的分布。主要注重数据的真实分布,强调数据的可视化,使分析者能一目了然看出数据中隐含的规律,从而得到启发,以此帮助分析者找到适合数据的模型。

在一个典型的机器学习算法流程和数据科学项目里面,我做的第一件事就是通过 “盯住数据”,以便更好地了解数据。个人通常使用的三大EDA方法包括:

描述性统计

平均数、中位数、模式、标准差。

图片

数据可视化

热力图(辨别特征内部相关性)、箱形图(可视化群体差异)、散点图(可视化特征之间的相关性)、主成分分析(可视化数据集中呈现的聚类分布)等。

图片

数据整形

对数据进行透视、分组、过滤等。

图片

1.3 数据预处理

数据预处理,其实就是对数据进行清理、数据整理或普通数据处理。指对数据进行各种检查和校正过程,以纠正缺失值、拼写错误、使数值正常化/标准化以使其具有可比性、转换数据(如对数转换)等问题。

例如对图像进行resize成统一的大小或者分辨率。

数据的质量将对机器学习算法模型的质量好坏产生很大的影响。因此,为了达到最好的机器学习模型质量,传统的机器学习算法流程中,其实很大一部分工作就是在对数据进行分析和处理。

一般来说,数据预处理可以轻松地占到机器学习项目流程中80%的时间,而实际的模型建立阶段和后续的模型分析大概仅占到剩余的20%。

1.4 数据分割
训练集 & 测试集

在机器学习模型的开发流程中,希望训练好的模型能在新的、未见过的数据上表现良好。为了模拟新的、未见过的数据,对可用数据进行数据分割,从而将已经处理好的数据集分割成2部分:训练集合测试集。

第一部分是较大的数据子集,用作训练集(如占原始数据的80%);第二部分通常是较小的子集,用作测试集(其余20%的数据)。

接下来,利用训练集建立预测模型,然后将这种训练好的模型应用于测试集(即作为新的、未见过的数据)上进行预测。根据模型在测试集上的表现来选择最佳模型,为了获得最佳模型,还可以进行超参数优化。

图片

训练集 & 验证集 & 测试集

另一种常见的数据分割方法是将数据分割成3部分:

(1)训练集

(2)验证集

(3) 测试集

训练集用于建立预测模型,同时对验证集进行评估,据此进行预测,可以进行模型调优(如超参数优化),并根据验证集的结果选择性能最好的模型。

验证集的操作方式跟训练集类似。不过值得注意的是,测试集不参与机器学习模型的建立和准备,是机器学习模型训练过程中单独留出的样本集,用于调整模型的超参数和对模型的能力进行初步评估。通常边训练边验证,这里的验证就是用验证集来检验模型的初步效果。

图片

交叉验证

实际上数据是机器学习流程中最宝贵的,为了更加经济地利用现有数据,通常使用N倍交叉验证,将数据集分割成N个。在这样的N倍数据集中,其中一个被留作测试数据,而其余的则被用作建立模型的训练数据。通过反复交叉迭代的方式来对机器学习流程进行验证。

这种交叉验证的方法在机器学习流程中被广泛的使用,但是深度学习中使用得比较少哈。

图片

1.5 机器学习算法建模

下面是最有趣的部分啦,数据筛选和处理过程其实都是很枯燥乏味的,现在可以使用精心准备的数据来建模。根据taget变量(通常称为Y变量)的数据类型,可以建立一个分类或回归模型。

机器学习算法

机器学习算法可以大致分为以下三种类型之一:

(1)监督学习

是一种机器学习任务,建立输入X和输出Y变量之间的数学(映射)关系。这样的(X、Y)对构成了用于建立模型的标签数据,以便学习如何从输入中预测输出。

(2)无监督学习

是一种只利用输入X变量的机器学习任务。X变量是未标记的数据,学习算法在建模时使用的是数据的固有结构。

(3)强化学习

是一种决定下一步行动方案的机器学习任务,它通过试错学习(trial and error learning)来实现这一目标,努力使reward回报最大化。

参数调优

传说中的调参侠主要干的就是这个工作啦。超参数本质上是机器学习算法的参数,直接影响学习过程和预测性能。由于没有万能的超参数设置,可以普遍适用于所有数据集,因此需要进行超参数优化。

以随机森林为例。在使用randomForest时,通常会对两个常见的超参数进行优化,其中包括mtry和ntree参数。mtry(maxfeatures)代表在每次分裂时作为候选变量随机采样的变量数量,而ntree(nestimators)代表要生长的树的数量。

另一种在10年前仍然非常主流的机器学习算法是支持向量机SVM。需要优化的超参数是径向基函数(RBF)内核的C参数和gamma参数。C参数是一个限制过拟合的惩罚项,而gamma参数则控制RBF核的宽度。

调优通常是为了得出超参数的较佳值集,很多时候不要去追求找到超参一个最优值,其实调参侠只是调侃调侃,真正需要理解掌握算法原理,找到适合数据和模型的参数就可以啦。

特征选择

特征选择从字面上看就是从最初的大量特征中选择一个特征子集的过程。除了实现高精度的模型外,机器学习模型构建最重要的一个方面是获得可操作的见解,为了实现这一目标,能够从大量的特征中选择出重要的特征子集非常重要。

特征选择的任务本身就可以构成一个全新的研究领域,在这个领域中,大量的努力都是为了设计新颖的算法和方法。从众多可用的特征选择算法中,一些经典的方法是基于模拟退火和遗传算法。除此之外,还有大量基于进化算法(如粒子群优化、蚁群优化等)和随机方法(如蒙特卡洛)的方法。

图片

1.6 机器学习任务

在监督学习中,两个常见的机器学习任务包括分类和回归。

分类

一个训练好的分类模型将一组变量作为输入,并预测输出的类标签。下图是由不同颜色和标签表示的三个类。每一个小的彩色球体代表一个数据样本。三类数据样本在二维中的显示,这种可视化图可以通过执行PCA分析并显示前两个主成分(PC)来创建;或者也可以选择两个变量的简单散点图可视化。

图片

性能指标

如何知道训练出来的机器学习模型表现好或坏?就是使用性能评价指标(metrics),一些常见的评估分类性能的指标包括准确率(AC)、灵敏度(SN)、特异性(SP)和马太相关系数(MCC)。

回归

最简单的回归模式,可以通过以下简单等式很好地总结:Y = f(X)。其中,Y对应量化输出变量,X指输入变量,f指计算输出值作为输入特征的映射函数(从机器学习模型中得到)。

图片

上面的回归例子公式的实质是,如果X已知,就可以推导出Y。一旦Y被计算(预测)出来,一个流行的可视化方式是将实际值与预测值做一个简单的散点图,如下图所示。

对回归模型的性能进行评估,以评估拟合模型可以准确预测输入数据值的程度。评估回归模型性能的常用指标是确定系数(R²)。此外,均方误差(MSE)以及均方根误差(RMSE)也是衡量残差或预测误差的常用指标。

深度学习

深度学习实际上是机器学习中的一种范式,所以他们的主要流程是差不多的。深度学习则是优化了数据分析,建模过程的流程也是缩短了,由神经网络统一了原来机器学习中百花齐放的算法。

在深度学习正式大规模使用之前呢,机器学习算法流程中要花费很多时间去收集数据,然后对数据进行筛选,尝试各种不同的特征提取机器学习算法,或者结合多种不同的特征对数据进行分类和回归。

图片

下面是机器学习算法的主要流程:主要从

(1)数据集准备

(2)数据预处理

(3)数据分割

(4)定义神经网络模型

(5)训练网络

深度学习不需要我们自己去提取特征,而是通过神经网络自动对数据进行高维抽象学习,减少了特征工程的构成,在这方面节约了很多时间。

机器学习和深度学习区别

都是人工智能领域的热门技术。虽然它们有一些共同点,但也存在一些重要的区别:

  1. 算法模型不同:机器学习算法模型相对简单,使用传统的统计学习方法,例如线性回归、逻辑回归、决策树、集成学习等;而深度学习算法模型相对复杂,使用多层神经网络,例如卷积神经网络、循环神经网络和递归神经网络等。
  2. 数据集规模不同:深度学习需要大量的样本数据、特征数据和标签数据来进行训练,而机器学习的训练样本数量要相对少一些。
  3. 特征工程不同:机器学习需要人工特征提取和选择,需要经验丰富的特定领域专家来进行数据预处理和特征工程。而深度学习具有端到端特征自动提取的能力,无需显式特征工程。
  4. 计算资源要求不同:深度学习需要大量的计算资源进行模型训练,例如GPU加速、分布式计算等,而机器学习相比之下计算资源要求较低。
  5. 应用场景不同:机器学习适用于大多数数据量较小、简单问题,例如图像分类、预测和推荐系统等。而深度学习适用于复杂的、大规模的数据,例如语音识别、自然语言处理、计算机视觉、自动驾驶等。

综上所述,机器学习和深度学习有不同的适用场合,选择哪个技术取决于数据类型、问题的复杂程度和可用的计算资源。

(5)训练网络

深度学习不需要我们自己去提取特征,而是通过神经网络自动对数据进行高维抽象学习,减少了特征工程的构成,在这方面节约了很多时间。

机器学习和深度学习区别

都是人工智能领域的热门技术。虽然它们有一些共同点,但也存在一些重要的区别:

  1. 算法模型不同:机器学习算法模型相对简单,使用传统的统计学习方法,例如线性回归、逻辑回归、决策树、集成学习等;而深度学习算法模型相对复杂,使用多层神经网络,例如卷积神经网络、循环神经网络和递归神经网络等。
  2. 数据集规模不同:深度学习需要大量的样本数据、特征数据和标签数据来进行训练,而机器学习的训练样本数量要相对少一些。
  3. 特征工程不同:机器学习需要人工特征提取和选择,需要经验丰富的特定领域专家来进行数据预处理和特征工程。而深度学习具有端到端特征自动提取的能力,无需显式特征工程。
  4. 计算资源要求不同:深度学习需要大量的计算资源进行模型训练,例如GPU加速、分布式计算等,而机器学习相比之下计算资源要求较低。
  5. 应用场景不同:机器学习适用于大多数数据量较小、简单问题,例如图像分类、预测和推荐系统等。而深度学习适用于复杂的、大规模的数据,例如语音识别、自然语言处理、计算机视觉、自动驾驶等。

综上所述,机器学习和深度学习有不同的适用场合,选择哪个技术取决于数据类型、问题的复杂程度和可用的计算资源。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值