
机器学习基础
文章平均质量分 74
分享一些机器学习的基础知识
Mr.Wiggles
一个只会发干到不能再干的干货AI科普博主
展开
-
AB test 之 广告投放(二)
广告投放A/B的坑?原创 2023-06-19 14:14:25 · 647 阅读 · 0 评论 -
欧氏距离 VS 余弦距离
xx场景应该用欧氏距离还是余弦距离?有啥区别?原创 2023-03-22 17:50:10 · 3511 阅读 · 0 评论 -
机器学习之避坑指南
机器学习入坑指南原创 2023-02-08 11:11:53 · 453 阅读 · 0 评论 -
三大集成学习之万金油 - Catboost
Catboost是何方神仙?转载 2022-07-04 15:51:41 · 832 阅读 · 0 评论 -
如何解释模型预测?常用4种可解释性分析方法~
#模型可解释性原创 2022-06-24 11:34:23 · 7439 阅读 · 3 评论 -
训练集(离线)与测试集(上线)效果差距很大怎么办?
相信各位童鞋在跑模型的时候时不时会遇到一个尴尬的现象,就是你在训练集或者验证集的模型效果好到令人发指,一时间以为“哼~就这?🤨游戏结束”,结果当你在测试集或者上线后发现真的就游戏结束了,指标低的没眼看。本人还是一个算法菜鸟时就遇到过这种情况,以致我后面看到指标上到80以上的模型都发怵…🙄下面我会为大家列举一些常见的原因和解决方法,给予大家一点思路参考。比如,离线特征的计算过程一般是使用SQL语言在大数据平台上完成。这样就存在相同的逻辑需要实现两次,而且可能是不同的人来实现,如果不仔细测试,出现不一致的原创 2022-06-01 18:09:52 · 6522 阅读 · 2 评论 -
机器学习基础-模型调参
模型调参大多数据科学家或算法工程师会在模型调参上面花费很多时间,时间的花费和你模型的参数成正比关系,所以,我们的模型想在一个数据集上获得一个好的结果是一个非常花费时间的过程。一般来讲,大家在模型调参之初,都会有官方模型设定的一系列默认超参数,它会给予你一个不错的初始点,然后在其上面慢慢地作调整。另一方面,我们可以通过读取论文,看看大神面对类似问题会使用哪些范围的超参数。在每次调整过一个超参数后,你需要重新训练一下你的模型,观察它在你的验证集有什么或坏或好的变化。之所以这样操作,是因为你可以从中知道每原创 2022-01-03 11:57:40 · 2734 阅读 · 1 评论 -
机器学习基础-Boosting
Boosting所谓Boosting,它的主要思想是说将多个弱模型组合在一起,从而形成一个比较强的模型。他的主要目的是为了降低数据拟合的偏差。需要注意的是,相较于之前提到的bagging,这里的组合是串行组合,而不是bagging的并行组合;Boosting降低的是偏差,而Bagging降低的是方差。(具体可以参考下图) 具体点来说,当处于时间i步时,我会训练我的第i个弱模型hih_ihi,紧接着,我们会根据模型hih_ihi所得到的误差ϵt\epsilon_{t}ϵt,再把数据重新采原创 2021-12-25 16:38:58 · 1048 阅读 · 1 评论 -
机器学习基础-Stacking
StackingStacking是通过多个基学习器集成学习从而降低了方差。这里跟Bagging的思想有点类似,但是还是有点小不一样,因为我们的基学习器不仅仅仅限于一颗颗单独的树模型,而是多个不同类别的模型,如随机森林,GBDT,MLP等。对于输入,Stacking和Bagging一样,同样的数据输入进来,然后每个模型都在原始的数据上进行训练。Bagging因为有Bootstrap的存在,所以每个基模型都是在不同采样的数据集上做训练;而对于Stacking来说,是在同一份数据集训练不一样的模型。对原创 2021-12-18 11:06:44 · 2601 阅读 · 0 评论 -
机器学习基础-方差 & 偏差
偏差&方差在统计学里面有两个衡量模型的重要指标,分别是偏差Bias 和 方差Variance。偏差:表示每次模型学习到的数据跟真实数据之间的差距。方差:表示每次模型学习到的数据之间的差距。以下我们通过以下几幅图来讲解这两个指标的含义。 首先我们给定一个模型,训练5次,每次的结果分布我们这里表示为上图的黑色五角星。如果5次的结果都在我们可容忍的结果范围内(上图的圆圈中),那么就说明结果的偏差bias比较低(如第1个圆圈,第3个圆圈);如果结果数据大多脱离了真实数据的范围,则其偏差比原创 2021-11-17 16:24:49 · 1586 阅读 · 0 评论 -
机器学习基础-特征工程简析
在开始训练模型之前,我们需要对数据进行特征工程的操作,一个好的数据质量决定预测结果的上限,而好的模型只是无限逼近这个上限。一个好的数据质量,应该满足“完全合一”完整性:数据是否存在空值,字段feature是否完善,是否有漏掉全面性:观察某一列的全部数值和特征值,是否存在单位、字段名与数值不匹配合法性:数据的类型、内容、大小的合法性唯一性:数据是否存在重复记录以下是特征工程操作的一些常见步骤:建议将训练集和测试集concat到一起,方便后续操作。数据探索,观测数据与label之间的原创 2021-04-28 15:27:14 · 527 阅读 · 0 评论 -
机器学习基础-过拟合&欠拟合
对于一个模型,我们有许多指标对其泛化能力进行评测,其中有两个指标是亘古不变的,那就是欠拟合UNDERFITTING和过拟合OVERFITTING。1. 欠拟合在训练集上通过机器学习算法模型对其进行拟合,但是效果并不好,损失函数loss值很大,如果训练集效果不好,那测试集的效果自然就不言而知。例如说:我想让机器通过照片的识别猫。如果机器的学习模型比较low,复杂度比较低,有很多特征没学到,像猫的耳朵,猫的毛发等等。那么其在训练集的效果自然就很差。2.过拟合而对于过拟合,在训练集上的表现和欠拟合刚好相原创 2021-04-26 18:12:55 · 330 阅读 · 0 评论 -
机器学习基础-时间序列之模型策略
所谓时间序列模型就是利用过去一段时间的序列信息去预测未来一天或多天的信息。通常对于时间序列的预测策略都是单步预测,时间序列预测描述了预测下一个时间步长的观测值。如下图所示,某航空公司的客运流量。 time passengers0 1949-01 1121 1949-02 1182 1949-03 1323 1949-04 1294 1949-05 1215原创 2021-11-08 11:50:20 · 2020 阅读 · 0 评论 -
机器学习基础-循环神经网络RNN
Recurrent networks继多层感知机面世后,在语言模型方面诞生了RNN模型。该模型所做的事情其实很简单:输入:句子中前面出现过的词输出:预测下一个新的词是什么比如说:输入:Hello输出:预测==>World简而言之,就是在已有的一条时序信息中,预测下一个时刻的信息是什么。当然,我们也可以通过MLP来做这件事情,即通过输入已有的语言信息,把所有词元进行one-hot处理,每个词元(样本)就有得到一个输出,在下一个词元(样本)又会得到另外一个输出。如下图所示~原创 2021-11-04 15:46:28 · 192 阅读 · 0 评论 -
机器学习基础-多层感知机
Neural Networks对于一些传统机器学习模型,需要我们手动完成一些特征工程,从而让模型更清楚地学习到数据的信息。而对于神经网络而言,它就是把原来手工提取特征工程的过程变成了一个深度网络,从而不断地拟合原数据。Tips:神经网络往往对数据量有比较大的要求,因为神经网络并不会有先验知识,它需要通过学习大量的数据,伴随着梯度下降和模型收敛,这样才能获得一个较好的结果。可以选择不同的架构来学习特征数据,常见有:MLP/CNN/RNN/Transformer等等。Linear-Methods原创 2021-10-27 16:30:48 · 696 阅读 · 0 评论 -
机器学习基础篇-机器学习模型前瞻-part1
Type of machine learning - 机器学习类别TypeIntroductionSupervised Learning监督学习,即在有label的前提下训练模型并预测Semi-Supervised Learning半监督学习,同时在有label和无label的数据之间进行训练并预测Unsupervised Learning无监督学习,在无label的前提下训练模型并预测Reinforcement强化学习,与实际环境进行交互式训练并旨在最大化奖原创 2021-10-20 15:05:11 · 139 阅读 · 0 评论 -
机器学习基础-特征工程
Capture 1对于机器学习来说,每个模型都比较喜欢定义比较好的数据源。在深度学习浪潮之前,基本都是传统机器学习模型作为AI界的主导地位,比如SVM,Linear Regression等等,模型的选择并不多,所以对于一个问题,我们更加注重说把特征工程作为整个workflow里面最重要的部分,即把原始的数据源转换成不同模型喜欢的数据形式,从而拟合出更好的效果。而对于深度学习里面的神经网络来说,同样是一个数据集,并不需要手动去make特征工程,它只需要通过不同的线性层+非线性层不断地去训练拟合我们的目标值原创 2021-10-15 16:30:20 · 221 阅读 · 0 评论 -
机器学习基础篇-数据转换
Capture 1紧接着数据清洗那一篇文章,下个环节就是数据的转换,先让我们看一下机器学习的work flow数据的采集数据标注+数据清洗数据转换特征工程机器学习Capture 2数据需要被转换成合适机器学习的形式,当然,这其中包括数据清洗+特征工程,我们需要针对不同的变量形式进行不同地transform,主要包含以下几种形式:针对结构化数据。Normalization for Real Value Columnsmethodprinciple归一化,将数值归原创 2021-10-11 16:26:03 · 968 阅读 · 0 评论 -
机器学习基础篇-数据清洗
Capture 1在机器学习的工作流中,数据清洗环节尤为重要。接下来首先让我们看一下数据预处理的流程图。总的来说,主要包含下面三大块:收集数据标注数据提升数据质量Capture 2Data Errors所谓数据错误,就是你收集到的数据和实际的数据之间存在不一致。数据实际上是存在的,但是在数据表里是missing了数据的极值超出其所属的范围,例如房价不能小于0,但是在数据表却存在负数。虽然数据存在存在错误无可避免,但是一个好的机器学习模型能够容忍这些错误的存在,同样能够训练+收原创 2021-10-07 14:37:37 · 1919 阅读 · 0 评论 -
机器学习基础篇-集成学习
什么是集成学习集成学习是传统机器学习的基础上运用了一个重要思想:将多个弱分类器按照某种方法组合在一起,形成一个强分类器。(三个臭皮匠赛过诸葛亮)Bagging:把数据集通过有放回的抽样,划分为多个数据集,然后分别训练多个模型。针对分类问题,按照少数服从多数的原则进行投票,针对回归问题,求多个预测结果的平均值。Stacking:通常是不同的模型,而且每个分类器都用了全部的训练数据,得到预测结果y1,y2,...,yny_1,y_2,...,y_ny1,y2,...,yn,然后在训练一个分原创 2021-08-24 10:41:38 · 429 阅读 · 0 评论 -
机器学习基础篇-迁移学习+多任务学习
迁移学习-Transfer Learning如果我们拥有大量的训练数据,或者神经网络特别的大,我们训练这样的一个模型是非常耗时的。幸运的是,有一些模型已经开源并可以公开使用的。通常,这些模型是在大量数据上进行训练的。迁移学习的思想就是我们可以使用这些预先训练好的模型,并不断调整这个模型,使得它适应我们的问题。如下图所示:如果我们拥有大量的训练数据,我们可以重新训练整个神经网络。如果我们只有少量的训练数据,我们可以在预训练模型基础上,重新训练最后几层。Q:在哪种场景可以使用预训练模型?假设:原创 2021-07-04 13:03:53 · 936 阅读 · 0 评论 -
机器学习基础篇-逻辑回归和多分类问题
Logistic Regression定义:给定样本x的特征向量,输出为正样本时的概率p(y=1∣x)p(y=1|x)p(y=1∣x),同时有负样本的概率为p(y=0∣x)=1−p(y=1∣x)p(y=0|x) = 1-p(y=1|x)p(y=0∣x)=1−p(y=1∣x)。在逻辑回归中,可学习的参数为W和b。公式:p(y=1∣x)=σ(WTx+b)=(1+e−WTx−b)−1p(y=1|x)=\sigma(W^Tx+b)=(1+e^{-W^Tx-b})^{-1}p(y=1∣x)=σ(WTx+b)原创 2021-07-03 18:35:01 · 285 阅读 · 0 评论 -
机器学习基础篇-Dropout + Early Stopping
DropoutDropout是为了让监督学习模型变得更具有鲁棒性,更强壮。在训练过程中,部分由激活函数得到输出值会被忽略,所以,当做预测时,这个模型将不会依赖到某些特征。除了dropout超参数以外,还有一个超参数“keep probability”,它是用于描述激活神经元的概率。所以,如果一个隐层拥有n个神经元,然后激活概率为p,那么将会有p*n个神经元会被激活,(1-p)*n个神经元会被暂时关掉。Example:在上示两张图片中,第二张图片,在第二层隐层的一个神经元被dropout了,进而第原创 2021-07-02 09:08:21 · 499 阅读 · 0 评论 -
机器学习基础篇-正则化
正则化项正则化是一种防止模型过拟合的方法,它常被添加在损失函数中。L2正则化项minJ(W,b)=1m∑i=1mL(y^i,yi)+λ2m∣∣W∣∣22minJ(W,b)=\frac{1}{m}\sum^m_{i=1}L(\widehat{y}^i,{y}^i)+\frac{\lambda}{2m}||W||^2_2minJ(W,b)=m1i=1∑mL(yi,yi)+2mλ∣∣W∣∣22在上式公式中,λ2m∣∣W∣∣22就是正则化项,λ表示正则化项的超参数,可以理解为学习率在上式公式原创 2021-07-01 14:50:54 · 295 阅读 · 0 评论 -
机器学习基础篇-参数的初始化
参数的初始化在通用的机器学习框架中,已经提供了许多参数初始化的功能。在我们初始化参数时,通常会确保参数W比较小。这样做的原因是,如果你使用sigmoid函数,而且你的参数初始值比较大,那么你的梯度就会变得很小,收敛比较慢。在NN训练过程中,神经元个数越多,权重应该更小。我们用如下图方式进行表达:这样做的原因是如果隐藏神经元的数量较大,我们更愿意为参数分配较小的值,以防止训练梯度消失或梯度爆炸。...原创 2021-07-01 13:51:00 · 1034 阅读 · 0 评论 -
机器学习基础篇-Batch Normalization
Batch Normalization在神经网络训练过程中,使用Batch Normalization能够加快训练速度。BN算法过程如下:首先输入值是每一个mini-batch的值,这里用Z表示该layer的值:Z={x1,x2,..,xn}Z = \{x_1,x_2,..,x_n\}Z={x1,x2,..,xn}首先求出这个layer的均值:μ=1m∑Zi\mu=\frac{1}{m}\sum Z^{i}μ=m1∑Zi接着layer的每一个值减去均值:δ2=1m∑(Zi−原创 2021-06-30 12:19:46 · 276 阅读 · 0 评论 -
机器学习基础篇-学习率衰减
学习率衰减的方法如果在模型训练期间学习率是固定的,则loss可能会如下图所示波动。所以如何找到使学习率自适应的方法显得至关重要。在实际训练中,根据epoch的次数降低学习率是一种比较直接的方法,下面是衰减的公式:α=11+DecayRate∗EpochNumber∗α0\alpha= \frac{1}{1+DecayRate*EpochNumber}*\alpha_0α=1+DecayRate∗EpochNumber1∗α0根据以上公式,下面举个例子,假设初始学习率α_0,衰减率为1,那么原创 2021-06-29 12:55:05 · 1056 阅读 · 0 评论 -
机器学习基础篇-梯度优化方法2
动量梯度下降Gradient Descent with Momentum先上公式:在每一个时刻t的mini−batch迭代中1)计算dW,db2)VdW=βVdW+(1−β)dW3)Vdb=βVdb+(1−β)db4)W:=W−αVdW5)b:=b−αVdb\begin{aligned}&在每一个时刻t的mini-batch迭代中\\&1)计算dW,db\\&2)V_{dW} = \beta V_{dW}+(1-\beta)dW\\&3)V_{db} = \b原创 2021-06-29 12:29:58 · 192 阅读 · 0 评论 -
机器学习基础篇-梯度优化方法1
Mini-Batch Gradient Descent小批量梯度下降如果我们拥有海量的训练数据,那么在每一轮epoch训练时就会花费很长的时间,很难追踪其训练的情况。在小批量梯度下降中,训练的损失和梯度都是根据当前batch进行计算的。示例:假设当前有m个样本的数据集X,在mini-batch方法中会将其划分为多个batch,如下图所示小批量梯度下降的程序说明如下:For t= (1, ... , #Batches): 对t个批次的样本进行前向传播; 计算t个批次的样本的损失; 对t个批原创 2021-06-27 11:11:20 · 256 阅读 · 0 评论 -
机器学习基础篇-梯度消失or梯度爆炸
在深度学习中,如果神经网络的深度比较深,或者没有正确地初始化权重矩阵,则有可能发生梯度爆炸(Exploding Gradient)或者梯度消失(Vanishing Gradient)。下面举个例子分别解释一下梯度爆炸/消失的原因。梯度消失假设一个神经网络的Layer比较深,并且采用Sigmoid作为激活函数。由于Sigmoid函数的特性,其偏导值的范围在[0,0.25],如下图所示。经过链式求导后,即y=dW1∗dW2∗dW3..dWnW为权重矩阵dW为矩阵梯度求导y = dW_1*dW_2*原创 2021-06-26 13:25:29 · 226 阅读 · 0 评论 -
机器学习基础篇-NN反向传播
在深度学习的神经网络中,可以通过Computation Graph建立每层函数之间的关系。下面开始举例。前向传播首先我们有三个参数a,b,c,其损失函数为J(w) = 3(a+b*c),然后计算每个参数的梯度:dJda;dJdb;dJdc\frac{dJ}{da};\frac{dJ}{db};\frac{dJ}{dc}dadJ;dbdJ;dcdJ然后我们可以通过拆解损失函数,并通过中间参数进行传递:u=bcv=a+uJ=3vu = bc\\v = a + u\\J = 3vu=bcv原创 2021-06-25 14:54:34 · 389 阅读 · 0 评论