机器学习
_大太阳_
有梦想就去追
展开
-
LR与SVM的区别
LR采用log损失,SVM采用合页损失。LR对异常值敏感,SVM对异常值不敏感。在训练集较小时,SVM较适用,而LR需要较多的样本。LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。对非线性问题的处理方式不同,LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,还可以通过kernel。svm 更多的属于非参数模型,而logistic regression 是参数模型,本质不同。其区别就可.转载 2020-09-15 11:36:56 · 675 阅读 · 0 评论 -
常见的损失函数
1. 损失函数、代价函数、目标函数损失函数(Loss Function)通常是针对单个训练样本而言,给定一个模型输出y^\hat{y}y^和一个真实yyy,损失函数输出一个实值损失L=f(yi,yi^)L=f(y_i,\hat{y_i})L=f(yi,yi^)。代价函数(Cost Function)通常是针对整个训练集(或者是mini-batch Gradient Descent时一个mini-batch)的总损失J=Σi=1Nf(yi,yi^)J=\Sigma^N_{i=1}f(y_i,\h转载 2020-09-15 10:30:29 · 870 阅读 · 0 评论 -
Pytorch与TensorFlow的区别
1. 实现方式:符号式编程和命令式编程TensorFlow是纯符号式编程,通常是在计算流程完全定义好后才执行,因此效率更高,但是实现比较复杂;pytorch是纯命令式编程,实现方便,但是运行效率低2. 图的定义:动态定义和静态定义两个框架都是在张量上运算,但是存在很大差别。TensorFlow遵循”数据即代码,代码即数据“的概念,可以再运行之前静态的定义图,然后调用session来执行图。pytorch中图的定义是动态变化的,可以随时定义、更改和执行节点。因此pytorch更加灵活,方便调转载 2020-09-14 10:09:31 · 6363 阅读 · 0 评论 -
优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam
1. SGDBGD(Batch Gradient Descent)在每一轮的训练过程中,使用所有的样本计算cost function的梯度,并用该梯度对模型参数进行更新。a) 优点如果cost function为凸函数,能够保证收敛到全局最优值;如果为非凸函数,能够收敛到局部最优值。b) 缺点由于每轮迭代都需要在整个数据集上计算一次,所以批量梯度下降可能非常慢训练数较多时,需要较大内存批量梯度下降不允许在线更新模型,例如新增实例。SGD(Stochastic Gradient De转载 2020-08-30 13:25:12 · 1755 阅读 · 0 评论 -
梯度消失和梯度爆炸
1. 问题简述1)梯度消失如下图,当梯度消失出现时,靠近输出层的hidden layer3权值更新相对正常,但是靠近输入层的hidden layer1权值更新变得很慢,导致靠近输入层的隐藏层权值几乎不变,仍接近于初始化的权值。这就导致hidden layer1相当于只是一个映射层,对所有的输入做了一个函数映射,该神经网络的学习等价于只有后几层的隐藏层在学习。2)梯度爆炸如下图,当初始的权值过大,靠近输入层的hidden layer1权值变化比靠近输出层的hidden layer3权值变化更快,就会引转载 2020-08-22 16:54:21 · 1570 阅读 · 0 评论 -
LSTM与RNN的区别
1. RNNRNN能够处理一定的短期依赖,但无法处理长期依赖问题。因为当序列较长时,序列后部的梯度很难反向传播到前面的序列,这就产生了梯度消失问题。当然,RNN也存在梯度爆炸问题,但这个问题一般可以通过梯度裁剪(gradient clipping)来解决。RNN网络结构如下:hth_tht为timestep t的隐藏层状态值,xtx_txt为输入,hth_tht实际上还要经过softmax或者别的函数处理得到输出y^t\widehat{y}_tyt。上图中RNN单元的计算公式为:ht=转载 2020-08-21 12:31:43 · 6608 阅读 · 0 评论 -
解决过拟合
获取和使用更多的数据集对于解决过拟合的办法就是给与足够多的数据集,让模型在更可能多的数据上进行“观察”和拟合,从而不断修正自己。然而事实上,收集无限多的数据集几乎是不可能的,因此一个常用的办法就是调整已有的数据,添加大量的“噪音”,或者对图像进行锐化、旋转、明暗度调整等优化。另外补充一句,CNN在图像识别的过程中有强大的“不变性”规则,即待辨识的物体在图像中的形状、姿势、位置、明暗度都不会影响分类结果。采用合适的模型目前来说,针对不同的情况和分类要求,对使用的模型也是千差万别。过于复杂的模型会带来过转载 2020-08-13 12:43:11 · 519 阅读 · 0 评论 -
机器学习——特征工程之特征选择
1. 特征选择1. 过滤法1)方差筛选方差越大的特征,我们认为一般比较有用,设定方差阈值,舍弃方差小于阈值的特征2)相关系数筛选主要用于输出连续值的监督学习算法中,计算所有训练集中各个特征与输出值之前的相关系数,设定阈值,选择相关系数较大的部分特征3)假设检验,如卡方检验、F检验和T检验。在sklearn中,可以使用chi2做卡方检验得到所有特征的卡方值与显著性水平P临界值,设定卡方阈值,选择卡方值较大的部分特征4)互信息参考决策树中互信息2. 包装法最常用的包装法是递归消除特征法(re原创 2020-07-05 19:13:47 · 318 阅读 · 0 评论 -
机器学习——交叉验证
交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。 那么什么时候才需要交叉验证呢?交叉验证用在数据不是很充足的时候。比如在我日常项目里面,...转载 2020-04-23 10:18:11 · 442 阅读 · 0 评论 -
机器学习——最小二乘法
最小二乘法是用来做函数拟合或者求函数极值的方法。最小二乘法的原理目标函数=∑(观测值−理论值)2目标函数=\sum(观测值-理论值)^2目标函数=∑(观测值−理论值)2观测值就是我们的多组样本,理论值就是我们的假设拟合函数,目标函数就是机器学习中的损失函数,我们的目标就是得到使目标函数最小时的拟合函数的模型。代数法求解对参数θiθ_iθi分别求偏导,令偏导数为0,求解方程组。矩阵法求...转载 2020-04-22 15:14:32 · 1767 阅读 · 0 评论 -
机器学习——梯度下降(Gradient Descent)
梯度下降算法调优算法的步长。步长的实际取值取决于数据样本,可以夺取一些值,从大到小,分别运行算法,看迭代效果。如果损失函数在变小,说明取值有效,否则就要增大步长。步长太大,会导致迭代过快,甚至会错过最优解;步长太小,迭代速度太慢,很长时间算法都不能结束,所以算法的步长需要多次运行后才能取一个较为优的值。算法参数的初始值选择。初始值不同,获取的最小值也有可能不同,因此梯度下降求得的只是...转载 2020-04-22 14:43:57 · 330 阅读 · 0 评论 -
机器学习——凸优化
在很多机器学习算法中,都会遇到最优化问题。因为我们机器学习算法,就是要在模型空间中找到这样一个模型,使得这个模型在一定范围内具有最优的性能表现。很多最优化问题都是在目标函数是凸函数或者凹函数的基础上进行的。原因很简单,凸函数的局部极小值就是其全局最小值,凹函数的局部极大值就是其全局最大值。因此,只要我们依据一个策略,一步步地逼近这个极值,最终肯定能够到达全局最值附近。凸函数与凹函数判断...转载 2020-04-18 20:34:14 · 784 阅读 · 0 评论 -
激活函数
什么是激活函数神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。为什么要用激活函数如果不用激励函数,在这种情况下每一层节点的输入都是上层输出的线性函数,很容易验证,无论神经...转载 2020-04-14 17:07:55 · 2597 阅读 · 2 评论 -
机器学习——L1与L2正则化
正则化机器学习中几乎都可以看到损失函数后边会添加一个额外项,常用的额外项一般有两种,L1正则化和L2正则化,或者L1范数和L2范数。L1正则化和L2正则化可以看成是损失函数的惩罚项,「惩罚」是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型叫做Lasso回归,使用L2正则化的模型叫做Ridge(岭)回归。1) L1正则化:L1正则化是指权重向量www中各个元素的...转载 2020-04-11 16:05:43 · 307 阅读 · 0 评论 -
机器学习——XGBoost
什么是XGBoost全称:eXtreme Gradient Boosting基础:GBDT所属:boosting迭代型、树类算法。适用范围:分类、回归优点:速度快、效果好、能处理大规模数据、支持多种语言、支持自定义损失函数等等。缺点:算法参数过多,调参负责,对原理不清楚的很难使用好XGBoost。不适合处理超高维特征数据。XGBoost原理XGBoost 所应用的算法就是GBDT...转载 2020-04-11 12:04:47 · 390 阅读 · 0 评论 -
机器学习——集成学习
集成学习概述集成学习本身不是一个机器学习算法,而是通过构建并结合多个机器学习器完成学习任务。集成学习可以用于分类问题集成、回归问题集成、特征选取集成、异常点检测集成等等。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,达到“博采众长”的效果。集成学习有两个主要的问题需要解决:1)如何得到若干个个体学习器2)如何选择一种结合策略将个体学习器...转载 2020-04-10 16:38:37 · 845 阅读 · 0 评论 -
机器学习——K近邻(KNN)
本文参考:https://www.cnblogs.com/pinard/p/6061661.htmlhttps://www.cnblogs.com/21207-iHome/p/6084670.htmlK近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用。比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就...转载 2020-03-27 17:26:21 · 637 阅读 · 0 评论 -
机器学习——决策树
决策树学习的关键就是如何选择最优划分属性信息增益——ID3算法1.1 信息论基础熵度量了事物的不确定性,越不确定的事物,它的熵就越大。具体的,随机变量X的熵的表达式如下:H(X)=−∑i=1npilogpiH(X)=-\sum^n_{i=1}p_i\log p_iH(X)=−i=1∑npilogpi其中nnn代表XXX的nnn种不同的离散取值。而pip_ipi代表了XXX取值为i...转载 2020-03-26 14:45:32 · 416 阅读 · 0 评论 -
机器学习——SVM支持向量机
重新学习一下机器学习十大经典算法,该文章参考https://zhuanlan.zhihu.com/p/77750026进行梳理支持向量1.1 线性可分在二维空间上,两类点被一条直线完全分开叫做线性可分。严格的数学定义:D1D_1D1和D2D_2D2是nnn维欧式空间中的两个点集。如果存在nnn维向量www和实数bbb,使得所有属于DiD_iDi的点xix_ixi都有wxi+...转载 2020-03-25 17:38:21 · 504 阅读 · 1 评论 -
CNN网络架构演进(LeNet—DenseNet)
声明:本篇文章参考https://www.cnblogs.com/skyfsm/p/8451834.html1.LeNetLeNet是LeCun在1998年提出,用于解决手写数字识别的视觉任务,自此,CNN的基本架构被定为:卷积层、池化层和全连接层LeNet详细流程如下:如上图所示,对LeNet深入分析:1)输入单通道图像矩阵[1,28,28];2)conv1的卷积核为...原创 2019-04-13 20:33:20 · 692 阅读 · 0 评论 -
决策树—连续值处理
因为连续属性的可取值数目不再有限,因此不能像前面处理离散属性枚举离散属性取值来对结点进行划分。因此需要连续属性离散化,常用的离散化策略是二分法,这个技术也是C4.5中采用的策略。下面来具体介绍下,如何采用二分法对连续属性离散化:下面举个具体的例子,来看看到底是怎样划分的。给定数据集如下(数据集来自周志华《机器学习》,我已经把数据集放到github上了,地址为:西瓜数据集3.0...转载 2018-09-22 10:35:16 · 9230 阅读 · 2 评论