自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大风车

无畏韶华,岁月可期。

  • 博客(34)
  • 收藏
  • 关注

原创 梯度下降法和牛顿法

梯度下降法和牛顿法都是优化方法。

2023-07-27 22:00:39 291

原创 概率论:方差、标准差、协方差、皮尔逊相关系数、线性相关

协方差和皮尔逊相关系数都可以衡量两个随机变量的线性相关性(注意只是线性相关性),协方差受随机变量数值大小的影响,而皮尔逊相关系数不受随机变量数值大小的影响。所以两随机变量的协方差越大并不代表这两个变量越线性相关,两随机变量的皮尔逊相关系数绝对值越大越线性相关。

2023-06-09 09:33:53 2676

原创 线性代数:线性方程求解、矩阵的逆、线性组合、线性独立

线性代数:线性方程求解、矩阵的逆、线性组合、线性独立

2023-05-27 22:41:52 2333

原创 驻点以及二阶导对驻点的判断

当一阶导数为 0 或者梯度向量为零向量时,该点为驻点,如何判断该驻点是局部最小值点还是局部最大值点还是鞍点呢?我们可以利用二阶导数判断。

2022-03-12 22:14:42 13505

原创 导数、偏导数、梯度、方向导数、梯度下降、二阶导数、二阶方向导数

导数:函数(因变量对应实数值)偏导数:函数(因变量对应实数值)梯度:向量(向量的每一维对应偏导数)方向导数:函数(因变量对应实数值)梯度下降:一种优化方法二阶导数:函数(因变量对应实数值)二阶方向导数:函数(因变量对应实数值)

2022-01-07 18:40:17 7660 1

原创 隐马尔可夫模型(HMM)

本文不是HMM的详细推导文章,是对HMM的一个小总结。详细的推导可参考李航统计学习方法第10章。本文目录如下:隐马尔可夫模型简介HMM可用于标注问题。隐马尔可夫模型是关于时序的概率模型,由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列;每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列。序列的每个位置可以看作是一个时刻。隐马尔可夫模型两个特点:1、引入了隐状态;2、是时序的。

2021-10-30 13:39:51 1577

原创 潜在狄利克雷分配(LDA)(latent Dirichlet allocation)

多项分布:假设重复进行 次独立随机试验,每次实验可能出现的结果有 种,第种结果出现的次数为,第种 结果出现的概率为。如果用随机变量 表示实验所有可能出现结果的次数,其中表示第种结果出现的次数,那么随机变量服从多项分布。具体的数学定义如下:若多元离散随机变量的概率质量函数为 :其中,,。则称随机变量服从参数为 的多项分布,计做。多项分布的两个特例,二项分布和类别分布多项分布有两个特例,一个是二项分布,一个是类别分布。二项分布:当实验可...

2021-10-25 15:57:55 3104

原创 pLSA参数估计的EM算法推导

pLSA 可参考概率潜在语义分析(PLSA)(probabilistic latent semantic analysis)EM算法可参考​​​​​​EM(期望最大)算法推导以及实例计算拉格朗日乘子法可参考如何理解拉格朗日乘子法?好啦,下面开始做一个简单的推导。首先我们先回顾一个 pLSA,以生成模型为例。生成模型假设在话题给定条件下,单词和文本条件独立,即:设单词集合为,文本集合为,话题集合为。给定单词-文本共现数据,,。为单词在文本中...

2021-10-23 22:04:20 645

原创 EM(期望最大)算法推导以及实例计算

EM算法是一种优化算法。它应用的场景是含有隐变量的概率模型的极大似然估计或极大后验概率估计,它是极大似然估计或极大后验概率估计的具体实现方法。这篇文章我们仅讨论极大似然估计,极大后验概率估计与其类似。1、含有隐变量的概率模型隐:观测不到。我们以三硬币模型为例。假设有3枚硬币,分别记做,,。这些硬币正面出现的概率分别是,,。进行如下掷硬币实验:先掷硬币,根据其结果选出硬币或硬币;然后掷选出的硬币,出现正面记做1,出现反面记做0;独立重复次实验,假设观测结果如下:1,1,...

2021-10-21 15:44:03 1279

原创 极大似然估计、贝叶斯估计、极大后验概率估计

在概率论里,经常能听到极大似然估计和贝叶斯估计这两个词,今天打算好好理解一下。首先我问了自己两个问题。1、‘极大似然估计’ 、‘贝叶斯估计’ 和 '极大后验概率估计',这三个词里,都有 ‘估计‘ 两字 ,听起来像是用来估计某个我们不知道的未知的东西,那么是用来估计啥呢?2、‘极大似然’ 和 ‘贝叶斯’ 到底有什么不同呢?首先可以回答第一个问题,这两方法用来估计未知的 ‘概率分布的参数’。对于第二个问题,极大似然估计和贝叶斯估计是概率论中两大派的产物,分别是频率学派和贝叶斯学派。..

2021-10-17 00:29:05 1413 1

原创 Jensen不等式证明

凸函数(Convex Functions)凸函数的定义1如下:如下图所示:严格凸函数:函数曲线位于由点和连接而成的直线下方。凸函数:函数曲线不超过由点和连接而成的直线。定理1:如果某函数在某个区间二阶可导且二阶导数非负,那么这个函数在该区间是凸的。其中 twice differentiable 指的是二阶可导。关于这个定理的证明如下:推论1:-ln(x) 在 (0,∞) 上是严格凸函数。证明如下:其中的 Definition 2是凹...

2021-10-14 15:54:28 8076

原创 概率潜在语义分析(PLSA)(probabilistic latent semantic analysis)

概率潜在语义分析,听名字里边的‘概率’一词,就知道这和一般的统计(频数统计/tfidf 统计)不一样。我们知道LSA是对单词-文本矩阵(频数或tfidf组成的矩阵)进行奇异值分解,LSA的最重要的中心思想就是引入话题维度,将一个文本的单词向量降维转化为话题向量,一是解决了稀疏矩阵中很多 0 值带来的计算文本相似度不准确的问题,二是解决了单词的多词一义性和一词多义性的问题。LSA可以参考之前写过的一篇 :潜在语义分析(LSA)(latent semantic analysis)那LSA的缺点是什么?在P.

2021-10-07 17:22:12 1403

原创 奇异值分解SVD、PCA主成分分析降维、潜在语义分析LSA之间的关系

奇异值分解SVD是一种矩阵分解也是数据压缩的方法,是在 Frobenius norm (也就是平方损失)意义下的对矩阵的最优近似。具体可以参考奇异值分解(SVD)(Singular Value Decomposition)完全奇异值分解如下:一般矩阵的完全奇异值分解如下:紧奇异值分解如下:若一般矩阵,其秩为 rank() = r , r <=min(m,n),那么的紧奇异值分解就是:这里的就是将 原来的的前 r 行前 r 列,其是的前 r 列,其...

2021-10-05 17:18:25 633

原创 潜在语义分析(LSA)(latent semantic analysis)

本文参考李航统计学习方法第17章 潜在语义分析~文本信息处理的一个核心问题是对文本内容进行数字表示,并进行文本之间的语义相似度的计算。传统的方法以单词向量表示文本的语义内容,以单词向量空间的度量(内积或标准化内积)表示文本之间的语义相似度。潜在语义分析试图发现潜在的话题,以话题向量表示文本的语义内容,以话题向量空间的度量(内积或标准化内积)表示文本之间的语义相似度。单词向量空间给定一个文本,用一个向量表示该文本的 ‘语义’ ,向量的每一维对应一个单词,其数值为该单词在该文本中出现的频数或

2021-10-04 15:36:38 1437

原创 主成分分析(PCA)(principal component analysis)

本文主要讲PCA的相关数学推导。PCA的数学推导用线性代数的知识就可以完成。参考deeplearningbook.org一书2.12 Example: Principal Components Analysis我们先讲两个用到的线性代数知识点:用到的知识点1、矩阵对角线元素之和(the trace operator)矩阵对角线元素之和(the trace operator),记做 Tr ,定义如下:它有如下的性质:1一个矩阵的trace等于它的转置的trace2循环.

2021-10-03 17:12:13 2965

原创 奇异值分解(SVD)(Singular Value Decomposition)

奇异值分解在机器学习中经常碰到,今天详细讲讲。本文章中说的"矩阵" / "向量" 都指的是实数矩阵/实数向量,我们只说实数域内的情况。整数有质因子分解,比如12=2*2*3。分解成2*2*3后,比单单研究12这个数,我们会容易得到一些信息,比如,12这个数不能整除5;一个数 n 乘12后,会整除 2 和 3;等等。那么矩阵呢,我们是否可以对矩阵进行分解以获取一些有用的信息呢?答案是任何一个矩阵都可以进行奇异值分解。我们在说奇异值分解之前,需要先说说特征值分解。特征分解(Eigendecom.

2021-10-01 20:16:19 22786 1

原创 Word2vec 论文推荐

word2vec 相关原理以及推导,推荐下边论文:(PDF) word2vec Parameter Learning Explained下载PDF版 看 就好了!

2021-09-27 15:22:01 163

原创 (二)RNN 的 反向传播算法详细推导

在反向传播算法理解一文中,大体讲了反向传播算法的大体思想和优势,这篇文章拿最简单的RNN网络推导反向传播算法。计算图和计算公式我们拿最具代表性的如下RNN网络图简单推导。上图是一张计算图。为方便公式推导,我们把公式写出来。对于每一步 t ,都是如下的计算过程。每一步的损失函数,总的损失函数 L 如下:在每一步 t 中,是向量形式变量,是向量形式变量,是向量形式变量,是向量形式变量,是向量形式变量;W 是矩阵形式变量,V 是矩阵形式变量,U 是矩阵形式变量(注...

2021-09-27 14:01:23 6062 9

原创 (一)反向传播算法理解 (Back-Propagation)

本文参考deeplearningbook.org一书第六章 6.5 Back-Propagation and Other DifferentiationAlgorithms首先明确反向传播算法用来做什么:求梯度。一、前向传播 foward propagation“反向传播算法”,其中反向 两个字顾名思义,先有一个前向的过程,才有反向一说。所以要搞懂反向传播之前,需先把前向传播弄清楚。简易地画了一个流程图如下:(图中的LOSS是一个实数值)。上图中,前向传播路径是从输入到LOSS...

2021-09-16 15:14:32 3916

原创 xgboost 实现多分类问题demo以及原理

本文先把xgboost支持的多分类问题的demo写起来,打印出生成的树结构,然后理解xgboost实现多分类问题的原理。这个顺序比较好理解一些。xgboost 多分类问题 demo这个demo从xgboost的源代码中就可以看到。在/demo/multiclass_classification/train.py。py文件里的数据(dermatology.data)可以在https://archive.ics.uci.edu/ml/machine-learning-databases/dermat..

2021-05-13 14:46:08 3596 3

原创 多分类问题的softmax函数交叉熵损失函数推导

二分类与多分类多分类问题的交叉熵损失函数推导与二分类交叉熵损失函数推导的思想是一致的。可以先参考 二分类问题的交叉熵损失函数推导可参考二分类问题的交叉熵损失函数推导。本文参考deeplearning 一书 6.2.2.3 Softmax Units for Multinoulli Output Distributions好啦,开始步入正题啦~首先要明确一点的是,为多分类问题和二分类问题设计的模型 在 最后一层直接输出的东西那里有比较大的不同。假设模型的输出层是全连接层,我们可以画出...

2021-05-11 18:26:01 6155

原创 二分类问题的sigmoid交叉熵损失函数推导

本文章参考deeplearning 一书第六章6.2.2.2 Sigmoid Units for Bernoulli Output Distributions要建立一个模型,不可或缺的有:1、数据,2、损失函数,3、模型算法,4、优化算法。今天我们讨论下损失函数这块。损失函数的设计,与模型最后输出的内容是有一定关联的。对于大部分的任务(回归 or 分类),最大似然估计的应用比较常见。最大似然估计是点估计的一种。「最大化 log likelihood」 可以间接理解为 「最小化交叉熵」。(...

2020-09-23 18:43:06 9382

原创 hive left join 丢失数据

最近在写hql取数据的时候,发现不同的写法会模糊left join 和 join,使得得出的结果不是预期的。分别列出三段hql供参考:1、下面是第一段hql,将相关联的两张表(or 多张表)的条件都写在最后的where下:select a.cola1,a.cola2,b.colb1from tablea aleft join tableb b on a.id=b.id whereand a.dt='20200826'and b.dt='20200826';结果:这样的写法会使

2020-08-30 12:09:00 6684 6

原创 xgboost + Focal Loss实现

xgboost+local fosslocal foss的主要思想就是改变损失函数。可以参考https://www.cnblogs.com/king-lps/p/9497836.htmlxgboost如果想应用focal loss可以使用自定义损失函数来实现。首先介绍一个比较好用的求导的python包 sympy。用这个包来求导,可以比较轻松求出一阶导和二阶导。from sympy import *import numpy as np# y指的是true label# p指的是预测.

2020-08-25 14:07:25 5096 33

原创 加了权重样本的AUC如何计算

加了权重的样本的AUC如何计算?roc_auc_score函数里sample_weight参数以及xgb模型赋予样本权重再评估都有用到哦~一、roc_auc_score函数中有个参数是sample_weight,可以给样本设置权重。一直不太理解加上weight怎么来计算AUC,先放个可选参数插图康康。二、直到有一天,我不得不面对这个问题。起因竟然是比较熟悉的xgboost(硬往自己脸上贴金的小白酱,在前面加了个比较也是罪过罪过)。在训练xgboost的时候,xgb.DMatrix()

2020-08-06 11:42:36 3237

原创 不平衡处理:xgboost 中scale_pos_weight、给样本设置权重weight、 自定义损失函数 和 简单复制正样本的区别

在对不平衡数据进行训练时,通常会考虑一下怎么处理不平衡数据能使训练出来的结果较好。能想到的比较基础的方法是过采样和下采样来缓解数据中的正负样本比。在用xgboost训练二分类模型时,除了过采样和下采样,xgboost接口还提供一些处理不平衡数据的方法,有scale_pos_weight参数的设置,还有给样本赋予一定的权重。接下来让我们仔细看一下吧~参数scale_pos_weight:官方的解释是这样的,scale_pos_weight可以设置为数据中负样本数量/正样本数量设置样本的权重,在

2020-06-10 14:40:43 32107 15

原创 感知机——统计学习方法

一、感知机适用问题以及它的输入,输出,求解方法(1)感知机(perceptron)适用于二类分类问题(该分类问题是线性可分问题)(2)感知机模型是线性分类模型(3)感知机的几何解释,感知机对应的是一个超平面(4)输入:实例的特征向量(5)输出:实例的类别,取+1和-1二值(6)求解方法(有监督学习):给定N个已知分类类别的实例;设置参数初始值,在损失函数上应用随机梯度下降算...

2019-06-25 14:29:45 296

原创 c++函数的参数传递

继前边已经写过的 指针的 相关内容(点击理解指针参考),这篇文章写写函数的参数传递~~~因为二者分不开的搜 “函数的参数传递”, 很多时候看到的是函数的三种传递方式~~~那么这三种参数传递方式有没有什么共同点呢?或者说它们的实质到底是怎样的呢?(1)、写一个带有参数的函数返回值类型 函数名(形参列表){//参数列表之间用 , 隔开 ....//操作代码 return 返回值类型的变...

2018-05-09 19:57:04 426

原创 c++指针(六)——指针与引用

(1)、引用的定义int a=1;int &amp;b=a;//同样有没有空格都可以,没有固定的格式要求首先我们要明白的一点就是,对于定义一个变量来讲,等号右边的内容要赋值给等号左边的 变量,所以等号右边的内容要和等号左边的变量具有相同的类型,其实仅此条件就可以进行赋值操作,而与左边添加的各种符号如 * 和 &amp; 等无关然而,为什么还要加 * 和 &amp; 这些符号呢?这是为了限制想要定...

2018-05-08 08:57:45 1796 4

原创 c++指针(五)——指针的指针

int **p;这定义了一个什么指针呢?不急不急,慢慢来分析~~~int a;上条语句我们定义了一个整型变量 a首先,我们不妨把 **p 和 a 类比一下,那么 ** p 就是一个整型变量,我们不妨叫这个整型变量 target(按照地址找下去,最终找到的实实在在的int型变量)由于 &amp;**p = &amp;target,同时 &amp;**p = *p, 所以 *p 就是存储 tatget...

2018-05-08 08:54:19 1373

原创 c++指针(四)——指针常量和常量指针

(1)、常量的定义,const的使用int const a=10;//定义一个int型的常量a,以后不能修改a的值const int b=20;//定义一个int型的常量b,以后不能修改b的值const 和 int 的位置可以互换,都表达的是相同的意思。以下是不正确的定义const int c;//错误,系统不会对c进行初始化为0,所以此语句没有对 c 进行初始化,不正确const int d;...

2018-05-08 08:50:54 1883 1

原创 c++指针(三)——指针和数组名的关系

这一篇文章揭秘指针和数组名的关系~~~(1)、数组的定义int array[10];//定义了一个数组array,并且初始化都为0,数组为{0,0,0,0,0}int array[10]={1,2};//定义了一个数组array,并且初始化都为0,但是第一,第二个元素又被改写为1和2,最后数组为{1,2,0,0,0}int array[];//该定义错误,没有指定需要多少的内存空间,系统无法分配...

2018-05-08 08:46:26 3016 1

原创 c++指针(二)——定义变量时的内存分配

为什么要讲内存分配呢,因为要理解指针的实质,就必须得从理解内存开始~(1)、计算机中内存编址内存是一个存放数据的空间,进行编址之后可以对数据空间进行合理的利用和管理。内存编址的基本单位是字节。(2)、变量的定义,背后的内存分配int a;当我们定义一个int类型的变量 a 时,系统就开始准备一定的内存空间,这个内存空间的大小是int类型数据所需的内存大小(这个大小和具体的编译器有关,现在的编译器基...

2018-05-08 08:37:02 7695 2

原创 c++指针(一)——指针的定义以及写法

本系列讲述指针的文章一共分为六篇文章目录如下:一、c++中指针的定义以及写法二、定义变量时的内存分配三、指针与数组名的关系四、常量指针与常量指针五、指针的指针六、指针和引用好了,按照这个顺序开启探索c++指针之旅~一、c++中指针的定义int *p; //*号前有空格,可以是任意个空格int* p; //*号后有空格,可以是任意个空格int*p; //*号前后都没有空格int * p; //...

2018-05-08 08:26:31 28673 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除