【面试复习系列】常用机器学习算法知识点及其解析,面试官会考的几乎都有,欢迎补充
- 引入sigmoid函数以刻画y属于某个类的概率
如果σ1=σ0σ1=σ0,二次项会抵消,我们得到一个简单的线性关系:
由上式进一步可以得到:
- 求二分类通用的log-loss函数(只要带入任意y=g(x)函数就可以求出对应log-loss函数)
- P(y=1|x)=g(x)
- P(y=0|x)=1-g(x)
然后就对3求log,获得:
- 优化求最小值
求最小值的方法:牛顿法
牛顿法指出,求使f(θ)=0的θ,只需要一开始先固定一个θ,比如说θ=0,然后输入其他值使得
- 其他优化方法
- BFGS
- L-BFGS
- 优缺点:无需选择学习率α,更快,但是更复杂
- 特征空间非线性的情况
通过特征组合进行升维。
后的空间是线性可分的,对应的原始空间中分类边界为一条类椭圆曲线。
- 正则化
可以引入权重的n阶模进行正则化,防止过拟合,并加入先验知识,去除野点和噪声:
- 多分类softmax【类别互斥的时候使用】
error = train_y - output
weights = weights + alpha * train_x.transpose() * error
- 优缺点:
Logistic回归优点:
- 实现简单;
- 分类时计算量非常小,速度很快,存储资源低;
缺点:
- 容易欠拟合,一般准确度不太高
- 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;
LWLR线性回归:linear regression 就是最小二乘法
线性回归才是真正用于回归的,而不像logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数J进行最小化:
【前面的1/2只是为了求导的时候更简单而加上的】
当然也可以由已经推导出的公式直接求得参数的解,对于多变量数据集X,如果XTX是满秩的,结果为:
多数情况XTX并不是满秩的正定矩阵,所以会有多个可行解,所以一般会在J中引入正则项以进一步选择输出的模型(L1=稀疏的(特征大于样本常用),L2=防止过拟合的)。
而其优化算法为:
由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。
线性回归优点:
实现简单,计算简单;
缺点:
不能拟合非线性数据;
SVM:
- 找到分割两个样本“正中间”的超平面,几何间隔与样本的误分次数间存在关系:其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值
- C表现离群点的重要性(可以理解为权重),越大离群点越重要
- gamma是你选择径向基函数作为kernel后,该函数自带的一个参数。隐含地决定了数据映射到新的特征空间后的分布
是单位向量(一个向量除以它的模称之为单位向量),所以几何间隔不会因为参数比例的改变而改变。
因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。在一定的约束条件下可解。
此外,由于这个问题的特殊结构,还可以通过求解与原问题等价的对偶问题得到原始问题的最优解
【通过拉格朗日对偶性变换到对偶变量的优化问题】
这就是线性可分条件下支持向量机的对偶算法
【这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。】
3.采用拉格朗日对偶性转移到对偶问题
通过给每一个约束条件加上一个拉格朗日乘子,定义拉格朗日函数(即通过拉格朗日函数将约束条件融合到目标函数里去,从而我们的问题变成):
然后令
【 容易验证,当某个约束条件不满足时,例如
,那么显然有(只要令即可)。而当所有约束条件都满足时,则最优值为,亦即最初要最小化的量。】
因此,在要求约束条件得到满足的情况下最小化,实际上等价于直接最小化(当然,这里也有约束条件,就是≥0,i=1,…,n),因为如果约束条件没有得到满足
4.转移到对偶问题
如果直接求解,那么一上来便得面对w和b两个参数,而又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下,变成:
换言之,之所以从minmax的原始问题p*,转化为maxmin的对偶问题d*,一者因为d*是p*的近似解,二者,转化为对偶问题后,更容易求解。
下面可以先求L对w、b的极小,再求L对α的极大。
5.d*≤p*的条件——KKT条件(使得非线性规划有最优解的必要条件)
对于一个一般的非线性规划问题,其中,f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,p和q分别为等式约束和不等式约束
一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用
也就是说,如果我们做一个映射就能把样本映射到新的线性可分的空间中。
- 首先使用一个非线性映射将数据变换到一个特征空间F,
- 然后在特征空间使用线性学习器分类。
适合处理维度爆炸问题,需要的参数比较多
Sigmoid核函数
K(x,xi)=tanh(κ(x,xi)−δ)
采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络,应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。
11.松弛变量处理 outliers
更严重的情况是,如果这个 outlier 再往右上移动一些距离的话,我们将无法构造出能将数据分开的超平面来。
它选择凸二次规划的两个变量,其他的变量保持不变,然后根据这两个变量构建一个二次规划问题,这个二次规划关于这两个变量解会更加的接近原始二次规划的解,通过这样的子问题划分可以大大增加整个算法的计算速度,关于这两个变量:
- 其中一个是严重违反KKT条件的一个变量
- 另一个变量是根据自由约束确定,好像是求剩余变量的最大化来确定的。
- 直接修改目标函数法
直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该优化就可以实现多分类(计算复杂度很高,实现起来较为困难)
- One vs Rest
其中某个类为一类,其余n-1个类为另一个类,比如A,B,C,D四个类,第一次A为一个类,{B,C,D}为一个类训练一个分类器,第二次B为一个类,{A,C,D}为另一个类,按这方式共需要训练4个分类器,最后在测试的时候将测试样本经过这4个分类器f_1(x),f_2(x),f_3(x)和f_4(x),取其最大值为分类器
- One vs One(libsvm实现的方式)
任意两个类都训练一个分类器,那么n个类就需要n*(n-1)/2个svm分类器。
还是以A,B,C,D为例,那么需要{A,B},{A,C},{A,D},{B,C},{B,D},{C,D}为目标共6个分类器,然后在预测的将测试样本通过这6个分类器之后进行投票选择最终结果。
优点:
可用于线性/非线性分类,也可以用于回归;
低泛化误差;
容易解释;
计算复杂度较低;
缺点:
对参数和核函数的选择比较敏感;
KMeans
- E步(求期望):一开始选k个类中心,更新类中心
- M步(求极大):对于每个样本点,分配到离他最近的类中心
- 平均类中心
- Minkovski
- 欧氏
- CityBlock
- 最关键的就是注意不要选中离群点
- 常用技术是:多次运行,每次使用一组不同的随机初始质心,然后选取具有最小SSE(误差的平方和)的簇集。
- 选择批次距离尽可能远的K个点
- 层次聚类,有效但是适用数据量小
- Canopy算法进行聚类
- 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。
- 当簇是密集的且簇与簇之间区别明显时,聚类效果较好。算法尝试找出使平方误差函数值最小的k个划分。
- k-平均方法只有在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合。
- 要求用户必须事先给出要生成的簇的数目k。
- 对初值敏感,对于不同的初始值,可能会导致不同的聚类结果。
- 不适合于发现非凸面形状的簇,或者大小差别很大的簇。
- 对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。
EM
EM用于隐含变量的概率模型的极大似然估计,它一般分为两步:
- 求根据极大似然函数的参数求出后验概率的值(E)
- 根据后验概率的值求极大似然的参数(M)
如果概率模型的变量都是观测变量,那么给定数据之后就可以直接使用极大似然法或者贝叶斯估计模型参数。
但是当模型含有隐含变量的时候就不能简单的用这些方法来估计,EM就是一种含有隐含变量的概率模型参数的极大似然估计法。
应用到的地方:混合高斯模型、K-means
GMM
每个样本都有可能由k个高斯产生,只不过由每个高斯产生的概率不同而已,因此每个样本都有对应的高斯分布(k个中的某一个),此时的隐含变量就是每个样本对应的某个高斯分布。
- E步公式:
更具体的计算公式为:
- M步公式
根据样本的分布,计算每个高斯的比重,均值,方差这3个参数
Naive Bayes:
- 对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率。
- 哪个最大,就认为此待分类项属于哪个类别。
- 你在街上看到一个黑人(对于黑人这个分类)
- 我问你你猜这哥们哪里来的,你十有八九猜非洲。
- 设为一个样本集,而每个a为x的一个特征属性。
- 有类别集合(即label)
- 计算
- 如果,则。(对每个类别的样本,把这些类别归咎到最常带有条件概率最大的特征上)
- 通过贝叶斯公式,把P(y|x)转化为P(x|y):,变成在y条件下关于样本的条件概率的问题
- 这个关于样本的条件概率通过统计可以得到:对于每一个类,计算导致这个类的最频繁的特征的次数
- 比如,把所有的1类找出来,然后看在这些1类中,最经常带有的特征是哪个,然后第二经常带有的特征是哪个...
1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
2、统计得到在各类别下各个特征属性的条件概率估计。即。
3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:
当特征为连续值的时候:
把特征假定为服从高斯分布:
而
因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。
当出现了概率为0的情况使得样本最大似然=0怎么办:
Laplace平滑:给分子和分母同时加上一个常数:
可以证明Laplace光滑是满足凸优化的,于是得到最大似然的近似
平滑因子λ=0即为最大似然估计,这时会出现在本节开始时提到的0概率问题
而λ=1则避免了0概率问题
朴素贝叶斯的优缺点:
对小规模的数据表现很好,适合多分类任务,适合增量式训练。
缺点:
对输入数据的表达形式很敏感。
树模型
- ID3算法:
- 选择最高信息熵增益的自变量作为树枝
- 信息熵的计算,对于二分类系统:
- 处理离散值的量,比较全面,对噪声鲁棒,但是只是对整个系统的衡量,一般用来做全局特征选择,容易过拟合
- C45算法:
- 采用信息熵的增益比例来划分
- 处理连续值的量
- Cart算法:
- 离散和连续 两者都合适
- Gini指标,描述数据的不纯度其实就是信息熵在x=1处的一阶泰勒展开
- 选择不纯度变化最大那个
- C4.5先剪枝,用一个阈值停止树的构建,但是选择这个阈值是困难的
- CART后剪枝,把被剪掉的子树中最频繁的类标记作为树叶的值
决策树的优点:
计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;
缺点:
容易过拟合(后续出现了随机森林,减小了过拟合现象);
XGBoost:
实际上xgb一切都是围绕构造loss function来的,一切都是为了替代GBDT使用的,很难并行化的残差计算
改进的地方:
(也可以说是:如何建立一套不基于上一棵树的残差的cost function——通过建立基于复杂度的loss function来实现)
(一部为了达到分布式的优点而进行社会主义大改造而且还顺便优化了性能的史诗)
- 二阶泰勒展开来近似cost(不是loss)
- 通过L2和树模型复杂度衡量项正则化
- 从cost产生了一个近似的loss function
- 通过简单的二项式最优化获得权值
- 并根据loss funtion来分裂子叶(而不是信息熵之类的)
- 最吼的一点:简化cost function,并实现并行化
- 从数学的角度,相当于把树的整个树模型的参数包含了进去loss funtion里,而不是传统中把sigmoid函数跟信息熵两种不同类别的函数进行分而治之
- 从优化的角度,可以看成使用了二阶特性进行求解
- 针对cpu和内存的优化
- 通过MPI等进行分布式调度(因为有loss funtion所以才可以进行这样分布式)
- 实现了基于目标函数的分裂点判别算法。
- 利用了特征的稀疏性。
- 数据事先排序并且以block形式存储,有利于并行计算
感知机Percepton:
(2).去掉,我们得到的lost function是关于w,b的连续可导线性函数,可以用梯度下降法轻松地进行优化。
SVM就像是原始的感知机的孙子(不是儿子)
我认为实际上区别在于:
衡量分界面的时候原始的感知机用L1范数(函数距离),SVM用L2范数(几何距离)
由L2范数对分界面的限制带了稳定的分界面,带来的拉格朗日对偶性,核方法,非线性分界面的处理,各种防止过拟合的性能,甚至支持向量的概念都是从这个改动而来的。
L1范数(函数距离)
L2范数(几何距离)
BP神经网络:
- ReLU,不用乘法,在0保持很高,稀疏性
- Xavier
为了让输出值在很多层之后依然保持着良好的分布,需要保证前向传播和反向传播时每一层的方差一致,应满足:
- batch normalization让每一层网络的输入保持相同的分布
这样就可以恢复原来的特征每一步进去的时候用Batch的E和Var作为总体的估计,并进行计算,启发我们大Batch可以带来更精确的BatchNorm跟更好的全局最优解整个算法就是对mini-batch求均值和方差并进行scale
- Dropout
- 不用均方误差MSE而用交叉熵(其中y为期望的输出,a为神经元实际输出)
因其导数只跟误差的一次方有关,不跟其导数有关
- 用更换误差函数的方法,使得求导的目标改变,不再以误差的导数而是以误差本身进行Loss的BP传递
- 一般用softmax做最后一层而用log-likelihood作为误差函数,log误差就是交叉熵的二类别分类情况
- Batch:
大batch size在显存能允许的情况下收敛速度是比较快的但有时的确会有陷入局部最小的情况,达到相同精度需要更多epoch
KNN算法的优点:
1、思想简单,理论成熟,既可以用来做分类也可以用来做回归;
2、可用于非线性分类;
3、训练时间复杂度为O(n);
4、准确度高,对数据没有假设,对outlier不敏感;
缺点:
1、计算量大;
2、样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);
3、需要大量的内存;
Adaboost
1、训练第一个分类器,样本的权值D为相同的均值。通过一个弱分类器,得到这5个样本(请对应书中的例子来看,依旧是machine learning in action)的分类预测标签。与给出的样本真实标签对比,就可能出现误差(即错误)。如果某个样本预测错误,则它对应的错误值为该样本的权重,如果分类正确,则错误值为0.最后累加5个样本的错误率之和,记为ε。
4、循环步骤1,2,3来继续训练多个分类器,只是其D值不同而已。
测试过程如下:
输入一个样本到训练好的每个弱分类中,则每个弱分类都对应一个输出标签,然后该标签乘以对应的α,最后求和得到值的符号即为预测标签值。
Boosting算法的优点:
低泛化误差;
容易实现,分类准确率较高,没有太多参数可以调;
缺点:
对outlier比较敏感;
FM(因式分解机)和FFM(领域感知因式分解机)
FFM:
FTRL:
UBM
通用背景模型
群体/个体 | 计算代价 | 适用场景 | 冷启动 | 可解释性 | 实时性 | |
---|---|---|---|---|---|---|
user-based | 更依赖于当前用户相近的用户群体的社会化行为 | 适用于用户数较少的场合 | 时效性强,用户个性化兴趣不太显著的场合 | 新加入的物品能很快进入推荐列表 | 弱 | 用户新的行为不一定导致推荐结果的变化 |
item-based | 更侧重用户自身的个体行为 | 适用于物品数较少的场合 | 长尾物品丰富,用户个性化需求强烈的场合 | 新加入的用户能很快得到推荐 | 强 | 用户新的行为一定导致推荐结果的变化 |
清除作弊、刷单、代购等噪声数据。这些数据的存在会严重影响算法的效果,因此要在第一步的数据清洗中就将这些数据剔除。
合理选取训练数据。选取的训练数据的时间窗口不宜过长,当然也不能过短。具体的窗口期数值需要经过多次的实验来确定。同时可以考虑引入时间衰减,因为近期的用户行为更能反映用户接下来的行为动作。
尝试不同的相似度计算方法。在实践中,我们采用了一种称作loglikelihood
location-based,query(搜索请求)-based,graph-based,实时用户行为
优化器的选择:
{
对数据集中每个样本
计算该样本的梯度
使用alpha xgradient来更新回归系数
}
可以随机选择样本降低波动
Momentum
为了克服SGD振荡比较严重的问题,Momentum将物理中的动量概念引入到SGD当中,通过积累之前的动量来替代梯度。即:
相较于SGD,Momentum就相当于在从山坡上不停的向下走,当没有阻力的话,它的动量会越来越大,但是如果遇到了阻力,速度就会变小。也就是说,在训练的时候,在梯度方向不变的维度上,训练速度变快,梯度方向有所改变的维度上,更新速度变慢,这样就可以加快收敛并减小振荡。
Adagrad
相较于SGD,Adagrad相当于对学习率多加了一个约束,即:
Adagrad的优点是,在训练初期,由于gt较小,所以约束项能够加速训练。而在后期,随着gt的变大,会导致分母不断变大,最终训练提前结束。
Adam
Adam是一个结合了Momentum与Adagrad的产物,它既考虑到了利用动量项来加速训练过程,又考虑到对于学习率的约束。利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。其公式为:
其中:
小结
通过实践证明,Adam结合了Adagrad善于处理稀疏梯度和Momentum善于处理非平稳目标的优点,相较于其他几种优化器效果更好。同时,我们也注意到很多论文中都会引用SGD,Adagrad作为优化函数。但相较于其他方法,在实践中,SGD需要更多的训练时间以及可能会被困到鞍点的缺点,都制约了它在很多真实数据上的表现。
损失函数的选择
我们发现Cross Entropy相比于在线性模型中表现比较好的平方差函数有着比较明显的优势。
其主要原因是在深度学习通过反向传递更新W和b的同时,激活函数Sigmoid的导数在取大部分值时会落入左、右两个饱和区间,造成参数的更新非常缓慢。具体的推导公式如下:
一般的MSE被定义为:
其中y是我们期望的输出,a为神经元的实际输出a=σ(Wx+b)。由于深度学习反向传递的机制,权值W与偏移量b的修正公式被定义为:
因为Sigmoid函数的性质,导致σ′(z)在z取大部分值时会造成饱和现象。
Cross Entropy的公式为:
如果有多个样本,则整个样本集的平均交叉熵为:
其中n表示样本编号,i表示类别编号。 如果用于Logistic分类,则上式可以简化成:
与平方损失函数相比,交叉熵函数有个非常好的特质:
可以看到,由于没有了σ′这一项,这样一来在更新w和b就不会受到饱和性的影响。当误差大的时候,权重更新就快,当误差小的时候,权重的更新就慢。
Wide&Deep Learning
性质 | 需要的能力 | 实现方式 | 算法 | 例子 |
Memorization | 从现有的训练数据item或者特征的共现或者相关性 | 共性,局部性 | LR | 炸鸡跟啤酒经常一起使用(是热门CP) |
Generalization | 相关性的传递 | 新特征组合,多样性 | DNN+embedding | 吃炸鸡的人也会喜欢汉堡(类似) |
- 数据生成:用户浏览的app,如果安装了1,否则就是0.一些基本的特征处理,也在这里做了,比如将app映射到id,将实数特征离散化到0-1.
- 模型训练:详细的模型如下图所示。wide部分是包括用户安装的app和浏览过的app特征组合,而deep部分 使用了32维的向量来表达各个categorical特征,之后组合得到了1200维向量,最后使用logistic回归。模型使用了5000亿样本,每次新来了一组训练数据,模型都要被重新训练,但是都是在上一个模型基础上训练(FTRL)。模型上线之前还会和之前的模型做个对比,保证安全
- 模型服务:模型训练并且验证完了之后,就放到model servers上。每次请求来了,都会从数据库中获取一堆app并获取用户的特征,之后用模型进行排序。为了快速响应,使用分布式的预估。
LSTM:
特长是记忆长期信息【横向那条C的黑线就是一直传递的长程记忆】
行为 | 实现方法 | 图例 | 对长程记忆的影响 | 例子 | |
忘记门 | 用从上一次的输出和本次的记忆的组合控制久远的记忆中要保留什么 | sigmoid 变换后点乘 | 忘却 |
根据新的主语的性别来替代旧的需要忘记的主语 【选择主语】 |
|
输入门 | 决定要输入哪些新的值 |
Sigmund变换 后 tanh进行选择 |
添加 |
丢弃旧代词的性别信息并添加新的信息 【替代主语】 |
|
输出门 | 通过现有的状态选择长程记忆里要输出的东西 |
Sigmund变换 后继续tanh变换以进行选择 |
瞒报 |
可能这此输入是一个新主语,输出却要求是一个动词,因此要根据主语做词性变化 【根据新的主语输出相关信息】 |
- 将忘记门和输入门合成了一个单一的更新门
- 同样还混合了细胞状态和隐藏状态
- 其他一些改动
- 最终的模型比标准的 LSTM 模型要简单
主题模型:
TFIDF:
词频
(term frequency,TF)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。)对于在某一特定文件里的词语 来说,它的重要性可表示为:
其中, 是该词 在文件中的出现次数,而分母则是在文件中所有字词的出现次数之和。
逆向文件频率
(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到:
其中
- |D|:语料库中的文件总数
- :包含词语的文件数目(即的文件数目)如果该词语不在语料库中,就会导致被除数为零,因此一般情况下使用
然后
含义
关键词只在很少的网页中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量网页中出现,我们看到它仍然不很清楚要找什么内容,因此它应该小
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
根据每一个词在指定文本中的分数,可以进行排序,得分最高的词就成为文本的主题词
停用词的权重应该是0
文本距离:
获取关键词的TF-IDF权重后,取出top 20个关键词,计算词频【词出现次数/文章长度】,然后计算两个参数的余弦距离【点乘/两个向量长度的积】
时域TF-IDF:
把TF-IDF的时域权重对应起来,处理突发词并进行过滤
Word2VEC
把词映射到向量空间也是一种对文本进行编码的方式,但比onehot更能表现词之间的关系
king is to queen as father is to ?
这样的问题
映射到向量空间有两种:
- LSA等统计模型
- Word2Vec等预测模型
Word2Vec有两种模式:
- 适用于小数据集的CBOW
- 适用于大数据集的skip-gram
一些优化的trick
转化为onehot这件事,在gpu中没有很好的实现,所以用:
with tf.device("/cpu:0"):
to_one_hot这样的把这件事限定在cpu上
- 因为分词的过程一般都会去掉停用词,所以不用在意the之类的词语生成大量的数据对
- injective(单射函数,X跟Y一一对应)
- structure-preserving(保形性)
CountVectorizer
降维:
ICA
【面试复习系列】常用机器学习算法知识点及其解析,面试官会考的几乎都有,欢迎补充相关推荐
- 常用机器学习算法汇总(中)
机器学习入门系列(2)–如何构建一个完整的机器学习项目,第八篇! 该系列的前七篇文章: 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一) 机器学习数据集的获取和测试集的构建方法 特征工程之 ...
- 常用机器学习算法汇总比较(完)
机器学习入门系列(2)–如何构建一个完整的机器学习项目,第九篇! 该系列的前八篇文章: 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一) 机器学习数据集的获取和测试集的构建方法 特征工程之 ...
- 常用机器学习算法汇总
常用机器学习算法汇总 从一个项目的终极目标.寻找和获取数据,到数据预处理,做特征工程,接下来就需要开始选择合适的算法模型,进行训练评估和测试了. 所以接下来会整理下比较常用的机器学习算法的汇总比较,包 ...
- 腾讯社招面试复习系列之一,C++篇
腾讯社招面试复习系列之一,C++语言篇 最近在准备复习面试腾讯游戏开发,接下来会出一系列复习文章,总结一些他人的面试题与经验,以及之前自己面试时经验,并给出一些自己的见解,供大家一起学习. C++语言 ...
- 想要挑战高薪,不懂算法怎么能行??10 大常用机器学习算法
点击上方"java大数据修炼之道",选择"设为星标" 优质文章和精品资源, 第一时间送达 来源:机器之心 作者:garvitanand2 参与:Geek ...
- 常用机器学习算法原理及推导
周末花半天多的时间整理了一下常用机器学习算法的原理及推导,分享出来给大家. 线性回归和逻辑回归 支持向量机(这个貌似工作中不怎么用,就用了之前的笔记) 决策树和随机森林 GBDT Xgboost和Li ...
- AI:人工智能实践六大场景(金融信用违约、反欺诈模型、客户偏好洞察、智能推荐、精准营销、客户流失管理)及其对应常用机器学习算法经验总结(不断更新)
AI:人工智能实践六大场景(金融信用违约.反欺诈模型.客户偏好洞察.智能推荐.精准营销.客户流失管理)及其对应常用机器学习算法经验总结(不断更新) 目录
- Interview:算法岗位面试—10.23下午—上海某科技公司算法岗位(偏机器学习算法,上市)技术面试之比赛积累、项目经验、个人未来发展
Interview:算法岗位面试-10.23下午-上海某科技公司算法岗位(偏机器学习算法,上市)技术面试之比赛积累.项目经验.个人未来发展 导读:该面试,是线上笔试通过之后,邀约的面试.整个面试过程比 ...
- 机器学习算法岗:常见面试问题及解答整理,持续更新
机器学习算法岗:常见面试问题及解答整理,持续更新 一.决策树ID3和C4.5的差别?各自优点? ID3算法: C4.5算法: 差异: 二.过拟合的原因及如何防止 三.几种模型( SVM,LR,GBDT ...
最新文章
- 编译安装linux内核步骤
- UI培训教程之系统图标如何设计?
- io读取一个文件再写入socket技术_JAVA中IO与NIO面试题
- python使用方法-python中dict使用方法详解
- 关于若干数据库数据插入性能的对比
- sqoop 增量导入,不重复
- 互联网1分钟 |1210
- 拥抱.NET Core,如何开发一个跨平台类库
- Spring 3 MVC and JSR303 @Valid example
- mapper mysl实现批量插入 更新
- 轻量级网页安全漏洞扫描工具-Wapiti
- [新整理] CAD高级模拟考题
- 管家婆仓库管理软件到底选哪个好?
- python随机密码生成
- linux top交叉编译_Linux 交叉编译工具链
- ecu的c语言编程,ecu中的程序是如何编写的
- 王者荣耀游戏高清壁纸(手机|电脑),来袭
- 一、pytorch环境配置
- 计算机配置更新很长时间没反应,电脑安装更新时间过长怎么办
- 用java实现一个算术测试软件,最新Java算术测试