机器学习
guofei_fly
这个作者很懒,什么都没留下…
展开
-
不均衡样本权重的计算
数据挖掘中有时候会遇到不均衡样本,一种常用的方法是通过根据样本个数进行统计计算,或者根据业务场景人工计算权重。诸如sklearn的DT、RF等模型都设置了class_weight参数进行快速balanced;而XGB的fit中也有sampe_weight参数,只是需要手动提供每个样本对应权重的array,这里提供了一段简单的计算样本权重的代码。"""根据labels序列进行统计,生成对应的sa...原创 2019-07-30 18:01:33 · 1298 阅读 · 0 评论 -
sklearn中的SVM模型
支持向量机(SVM)是一种强大的可用于监督式学习分类问题和回归问题,以及非监督式异常检测问题等的常见算法。针对该算法,sklearn中提供了比较丰富的实现模型,其主要种类和主要差别见下表: 模型类型 主要特点 LinearSVC 基于liblinear库的SVM分类模型,仅支持线性核,可调节损失函数和惩罚项。多分类问题采用'ovr'策略。不支...原创 2020-01-15 17:18:10 · 3423 阅读 · 2 评论 -
sklearn中的PCA模型
sklearn中提供了较为丰富的PCA模型来解决数据的降维问题,其包括:(1)PCA:最原始的PCA算法;(2)TruncatedSVD:原始数据不做中心化处理的PCA算法,可用于文本数据(TF-IDF处理后)的隐藏语义分析(LSA);(3)SparsePCA:添加L1正则化处理后的PCA算法,用最小角回归算法求解,可在一定程度上解决数据噪声的问题,进一步降低分解后的数据维度;(4)Min...原创 2020-01-13 15:01:19 · 2669 阅读 · 0 评论 -
梯度下降法的优化算法
如前文梯度下降法中所介绍的,梯度下降法存在如下问题导致其迭代的可行性和效率大打折扣:(1)梯度不存在;(2)非凸函数的鞍点和局部最优解;(3)函数的信息利用率不高;(4)学习率需预设且取值固定。本文提到的梯度下降法的优化算法指:针对问题(2)、(3)和(4)提出的基于梯度下降法的Moment、AdaGrad和Adam等一系列算法。而这系列算法的核心改良思路包括两点:(1)通过引入历史迭...原创 2020-01-11 18:58:09 · 997 阅读 · 0 评论 -
梯度下降法(一)从导数到梯度下降法的基本逻辑
梯度下降法是机器学习算法中最常用的迭代优化数值算法,尤其是在深度学习神经网络的BP算法中扮演者重要作用。理解其基本原理是每个MLer的基础能力。本文从一元函数的导数出发,不加详细证明的给出梯度下降法背后的基本数据逻辑。1. 从导数到梯度(1) 一元函数的导数:自变量变化无穷小引起的因变量改变值的极限f′(x)=limΔx→0f(x+Δx)−f(x)Δxf'(x)=\lim\limits_...原创 2019-12-30 16:34:29 · 719 阅读 · 0 评论 -
sklearn中的LogisticRegression模型
LogisticRegression是一种广义线性分类模型,其可通过模拟数据的伯努利分布(对于二分类问题)和多项式分布(对于多分类问题)参数,对样本所属各分类的概率值进行预测。1. 模型的主要参数在sklearn中, LogisticRegression模型的主要参数包括: 模型参数 Parameter含义 备注 penalty ...原创 2019-12-24 15:58:00 · 3844 阅读 · 2 评论 -
Xgboost库的使用
使用Xgboost模型需使用单独的Xgboost库,该库提供了两种Python接口风格。一种是XGBoost自带的原生Python API接口,另一种是sklearn风格的API接口,两者的实现方案基本一致,仅有细微的API使用的不同(此外,部分原生的参数并未在sklearn风格的API接口中实现),在执行效率上原生接口往往更胜一筹,但sklearn风格更容易与其它sklearn中的算法模型进行比...原创 2019-12-16 23:33:07 · 2924 阅读 · 0 评论 -
sklearn中的Adaboost模型
Adaboost算法是基于样本权重调整的集成模型框架。该框架可分别作用于不同的基学习器上(当然必须满足一定的要求)来解决分类和回归问题。1. 模型的主要参数与Bagging和GBM等集成算法一样,Adaboost算法存在两大类型的参数,分别为框架参数和基学习器参数。1.1 框架参数框架参数用于限定各子学习器间的迭代和组合关系。主要包括: 模型参数 Paramete...原创 2019-12-16 19:00:51 · 1177 阅读 · 0 评论 -
sklearn中的GBDT模型
和随机森林模型类似,scikit-learn中的GBDT模型也是基于决策树模型的集成算法,区别在于前者基于并行的bagging框架,而后者基于串行的boosting框架。将boosting框架作用于CART树上,分别有适用于分类问题的GBDTClassifier和适用于回归问题的GBDTRegressor。两者在参数设定、调参等方面均极为类似。1. 模型的主要参数在GBDT中,存在两大类型...原创 2019-12-16 15:37:16 · 2517 阅读 · 0 评论 -
scikit-learn中的随机森林模型
和决策树模型类似,scikit-learn中的随机森林模型也提供了基于普通Decision Tree的Random Forest学习器和基于随机化Extra Tree的ExtraTrees学习器。鉴于Decision Tree和Extra Tree差别甚小,本文以Random Forest为例进行介绍。1. 模型的主要参数在Random Forest中,存在两大类型的参数,分别为框架参数和...原创 2019-12-12 16:08:33 · 520 阅读 · 0 评论 -
scikit-learn中的决策树模型
scikit-learn决策树算法类库采用优化的CART树算法用来解决分类和回归问题,其具体实现类包括DecisionTreeClassifier、DecisionTreeRegressor、ExtraTreeClassifier和ExtraTreeRegressor。其中,DecisionTreeClassifier和ExtraTreeClassifier用于解决分类问题,而DecisionTr...原创 2019-12-11 10:51:31 · 1711 阅读 · 0 评论 -
从决策树到XgBoost(四)XgBoost算法
XgBoost算法同样是以CART树为基学习器,运用Gradient Boosting理念的一种集成算法,在各类数据挖掘比赛中表现突出。一、XgBoost算法的推导为了保证符号定义与原论文的一致性,同时与本博客【从决策树到XgBoost】系列文章的风格相仿,就部分符号做特别声明:ftf_tft:第ttt轮采用的子学习器y^i(t)\hat y_i^{(t)}y^i(t): 第ttt轮...原创 2019-11-30 22:52:06 · 311 阅读 · 0 评论 -
从决策树到XgBoost(三)梯度提升树GBDT
1原创 2019-11-30 16:29:02 · 302 阅读 · 0 评论 -
从决策树到XgBoost(二)随机森林
前文详细介绍了利用决策树模型解决分类和回归问题的基本思路。决策树作为一种被广泛采用的机器学习模型,不仅因为其在可解释性、可视化和特征兼容性等方面的优势外,更因为其是一种被各种集成算法所广泛采用的基学习器。那么,为什么决策树在集成学习中在受到青睐呢?除开前文提到的优势,可能还包括以下因素:(1)单棵树的能力具有较大弹性。通过简单的设置树深、叶子节点样本数等参数,可以保证单棵树在强、弱学习器间调节...原创 2019-11-26 23:28:49 · 827 阅读 · 0 评论 -
集成学习(三)Gradient Boosting算法
一、算法的引出在集成学习框架中,机器学习模型可写成各子学习器的组合:G(x)=∑m=1Mαmgm(x)G(x)=\sum\limits_{m=1}^M\alpha _mg_m(x)G(x)=m=1∑Mαmgm(x)在AdaBoost算法中提供了一种解读Boosting框架的视角,即每一轮子学习器基于上一轮子学习器的表现来调节样本权重,实现模型效果的提升。但实质上,由于相邻两个子学习器...原创 2019-11-24 19:25:39 · 791 阅读 · 0 评论 -
集成学习(二)AdaBoost算法
在 集成学习(一)概述中,我们简要介绍了集成学习的核心思想的三大主流框架。本文重点介绍boosting框架中,基于样本权值调整的一种算法:AdaBoost。AdaBoost(Adaptive Boosting),顾名思义,是一种自适应式的boosting算法,即每轮按照预测的规则,自动调整子学习器中训练样本的权重和子学习器的线性权重。一、正、负样本权重的平衡...原创 2019-11-24 15:46:49 · 318 阅读 · 0 评论 -
集成学习(一)概述
stacking原创 2019-11-03 17:33:21 · 967 阅读 · 0 评论 -
从决策树到XgBoost(一)决策树模型
一、模型的引入决策树,顾名思义,是一种用于决策的树模型,其通过迭代式的特征判断和结果决策来模拟人类“If-Then”(如果-就)的思维过程。比如,我们在求职就业时的常见思考过程就可以用如下的决策树过程如下。求职中,我们会考虑各种因素(即特征,比如发展前景、薪资待遇、通勤时间、环境氛围、)...原创 2019-11-23 23:31:12 · 900 阅读 · 0 评论 -
样本不均衡问题
在分类问题中,经常会遇到训练数据类别不均衡的情况。比如在安防监测问题中,绝大部分的样本均为正常人群,可用的坏人样本相当稀少。如果拿全量样本去训练一个简单的高准确率的二分类模型,那结果毫无疑问会严重偏向于正常人群,从而导致模型的失效。本文从改善采样方式、模型和评价指标等角度出发,来介绍适用于各种场景下的解决样本不均衡问题的方法。一、 采样采样的目的就是使得各类样本均衡。这里称数据充分的类为丰富...原创 2019-11-03 23:30:29 · 1475 阅读 · 0 评论 -
机器学习中常见的模型评估
在前文机器学习中常见的损失函数中,介绍了回归和分类等问题中常用的损失函数。通过设计合适、易求解的损失函数,可以帮助我们确定问题的解决目标,进而使用解析或者数值方法进行求解。在将训练的若干组模型进行横向对比(即validation),或者表征某模型在测试集上的表现时,往往也需要设计一个指标进行衡量。这个指标有时与损失函数相一致(如很多回归模型),但很多时候需要重新定义(尤其对分类、聚类等问题)。...原创 2019-11-01 21:30:15 · 860 阅读 · 0 评论 -
机器学习中常见的损失函数
非原创 2019-10-29 11:14:41 · 755 阅读 · 0 评论 -
SVM算法(十)将SVM推广到单分类问题
在实际场景中,我们可能遇到这样的问题:已知所有的训练样本均属于一类,要求挖掘出其中的潜在模式,并将这种模式来判断测试样本是否属于同类。当然,我们可以通过基于显式的距离计算来判断新样本与已知样本簇的匹配与否。这里介绍两种基于SVM的单分类模型,来解决此类问题。一、OCSVM该算法来源于Schölkopf。尽管名为One-Class-SVM,其实模型除了训练样本所属的类外,隐藏了另外一个类——数...原创 2019-11-02 08:08:38 · 1235 阅读 · 0 评论 -
SVM算法(九)将SVM推广到回归问题
如前文SVM算法的正则化损失函数视角中提及的,SVM可以理解为“广义线性损失函数+L2正则化”在损失函数为Hinge Loss下特例。即minλNw2+1N∑i=1Nerr(yi,g(wxi))\min \frac{\lambda}{N} w^2+\frac{1}{N}\sum_{i=1}^Nerr(y_i,g(wx_i))minNλw2+N1i=1∑Nerr(yi,g(wxi))式中...原创 2019-10-27 18:20:29 · 1094 阅读 · 0 评论 -
SVM算法(八)将SVM推广到多分类问题
SVM算法本质上是基于正、负样本推导得到的二分类模型。通过一些手段,可将其推广到多分类问题中:一、使用多类SVM损失函数在原始的二分类SVM算法中,模型可看做对Hinge损失函数的L2正则化,即:minλNw2+∑i=0Nmax(0,1−yi(wxi+b))\min \frac{\lambda}{N} w^2+\sum_{i=0}^Nmax(0, 1-y_i(wx_i+b))minNλw...原创 2019-10-26 14:16:47 · 1360 阅读 · 0 评论 -
SVM算法(七)将SVM推广到分类概率问题
根据前文对SVM算法的推导,可以给出样本点的预测值:sign(∑i=1nαiyiK(xi,x)+b)sign(\sum\limits_{i=1}^n \alpha_iy_iK(x_i,x)+b)sign(i=1∑nαiyiK(xi,x)+b)但一些情况下,我们不仅希望模型能输出表示分类的符号,也希望能得到某个分类的置信概率,正如逻辑回归得到的P(y∣x)=11+e−(wx+b)P(y|x...原创 2019-10-26 11:21:15 · 1927 阅读 · 0 评论 -
SVM算法(六)SVM算法的正则化损失函数视角
一、用“损失函数+正则项”理解SVM最优化目标如近似线性可分问题所述,SVM算法的目标是求得如下目标函数的最小值:min12w2+C∑i=1nξis.t. yi(wxi+b)≥1−ξiξi≥0\begin{aligned}&\min\frac{1}{2}w^2+C\sum\limits_{i=1}^n \xi_i \\&s.t.\space \space ...原创 2019-10-26 09:21:52 · 1894 阅读 · 0 评论 -
SVM算法(五)SMO算法
根据前文SVM算法(四)接近线性可分的SVM求解,通过软边界的设定以及拉格朗日函数对偶问题的求解,同时引入核函数,最终的分隔面求解问题变成了如下拉格朗日乘子α\alphaα的二次规划问题:minα12∑i=1n∑j=1nαiαjyiyjK(xi,xj)−∑i=1nαis.t.0≤α≤C∑i=1nαiyi=0\begin{aligned}&\min_\alpha \frac{1}{2}\...原创 2019-10-25 22:17:24 · 528 阅读 · 0 评论 -
SVM算法(四)接近线性可分的SVM求解
一、接近线性可分的SVM问题的提出在前文SVM算法(二)线性可分的SVM求解中,详细推导了对线性可分数据的超平面划分原理,同时也抛出了一个问题:若数据线性不可分,该如何处理?本文将该问题进行一定程度的弱化,若数据接近线性可分,该如何求得合适的分隔面?一种直观上的想法是:尽量保证原始线性可分数据的正确性,对分隔错误的样本点进行惩罚,即:min12w2+C[[yi(wxi+b)<1]]s...原创 2019-10-23 16:55:23 · 545 阅读 · 0 评论 -
SVM算法(三)核技巧
在前文SVM算法(二)线性可分的SVM求解中,详细推导了对线性可分数据的超平面划分原理,同时也抛出了一个问题:若数据非线性,该如何处理?这也是本文需要解决的问题。一、非线性特征的线性求解在线性模型wx+b\boldsymbol {wx+b}wx+b中,可对原始线性特征x\boldsymbol xx进行各类非线性转换ϕ(x)=xixj,exi,xi2\boldsymbol {\phi(x)}=x...原创 2019-10-22 19:39:29 · 1410 阅读 · 0 评论 -
SVM算法(二)线性可分的SVM求解
回忆前文提到的感知机模型:对于线性可分的二分类问题,通过不断迭代错误分类样本点,直至最终的分割面。感知机是错误样本驱动的分类器,显然对于线性可分的数据,这样的分类器有无数个(见下图),那究竟哪一个更好呢?直觉上,在下图给出的三个分割面上,绿色的分割面更佳。因为其离正、负样本更远,这意味着模型更能够忍受数据误差(测量或采样等导致),即模型更健壮。而这就是线性可分的SVM推导的切入点。一、线性...原创 2019-10-13 14:47:29 · 2003 阅读 · 0 评论 -
SVM算法(一)预备知识
SVM(支持向量机)是一种强大的机器学习算法,被广泛用于分类和回归问题。本系列将简要介绍SVM的推导过程和基本应用。考虑到SVM涉及到繁杂的数学推导,第一篇先介绍下前置的数学知识。一、感知机感知机是SVM的基础,也蕴含了早期神经网络NN的思想。感知机是一种用于求解二分类的判别式线性模型,其假设输入数据{(x1,y1),(x2,y2),...(xi,yi)...(xN,yN)}\{(x_1,y...原创 2019-10-07 16:38:29 · 363 阅读 · 0 评论 -
线性回归(一)基础理论
一、基本概念策略一:样本点距超平面的距离之和最小。这是PCA的依据。策略二:样本点拟合值与真实值的均方差最小。这也是线性回归采用的度量方式。二、线性回归与仿射变换三、线性回归的两种求解思路3.1 矩阵直接求解即求min∣∣XΘ−Y∣∣2\min{||X\Theta-Y||_2}min∣∣XΘ−Y∣∣2损失函数L(Θ)=(XΘ−Y)T(XΘ−Y)L(\Theta)=(X\Th...原创 2019-09-06 17:46:04 · 1138 阅读 · 0 评论 -
L1正则化和L2正则化
L0正则化L1正则化L2正则化原创 2019-09-07 14:55:41 · 333 阅读 · 0 评论 -
逻辑回归(一)基础理论
一、从线性回归到线性分类在先前的线性回归(一)基础理论中详细介绍过线性回归,现在思考一个问题:能否用这个模型解决离散标签的预测?虽然这个问题是显然的分类问题。但从模型的可行性角度来看,当然是可以的。下图给出了一个案例的拟合结果:模型在一堆离散点中找到了一条使得MSE最小的直线,从而可以对位置数据进行yyy的预测,通过设置一个合理的biasbiasbias即可完成分类预测。但这个模型存在如下问题...原创 2019-09-08 11:53:12 · 1190 阅读 · 0 评论 -
矩阵理论(三)向量矩阵的求导
在各类机器学习和深度学习算法的推导过程中,尤其是通过损失函数求解参数最优解过程中,经常用到向量矩阵的求导。从本质上讲,向量矩阵求导就是将多元标量函数求导按照一定的布局排列为向量或矩阵。按照求导中自变量和因变量的关系,标量、向量、矩阵可排列组合为9种组合(见下表)。本文仅涉及标量与向量和矩阵,向量与向量的五种求导。而矩阵和向量间的混合求导不做涉及。自变量/因变量标量y向量????矩阵????...原创 2019-09-29 15:01:53 · 3134 阅读 · 1 评论 -
矩阵理论(二)特征值分解和SVD分解
矩阵的SVD分解在机器学习的各类算法中被广泛使用(如文本LSI、推荐算法等等),而PCA降维作为SVD分解的直接使用,是最基础和最常用的降维算法。一、向量矩阵运算的理解SVD分解涉及到不少向量矩阵知识,在正式介绍前先简要介绍下向量矩阵的基本知识。为方便解释,这里设矩阵AAA,矩阵元素为aij,i=a_{ij},i=aij,i=,列向量a\boldsymbol aa、b\boldsymbol ...原创 2019-09-22 19:50:35 · 3452 阅读 · 0 评论 -
矩阵理论(一)基本概念的个人理解
在机器学习中,各个特征代表着高维度空间的信息。因此在数据的处理和算法的推导上,往往借助于矩阵和线性代数的基本理论。该系列希望通过对相关概念和公式的推导,加深对矩阵和线性代数的理解。在这篇文章中,通过问答的形式阐述基本概念。1. 向量和矩阵的意义?就像数字1、2一样,向量和矩阵是人为设计的用来记录数据载体。从不同的角度来看,其存在不同的解释。从计算机工作者的眼中,其可以用来记录有序的数据(列表)...原创 2019-09-22 11:45:09 · 11140 阅读 · 0 评论 -
PCA降维(一)基础理论
PCA(主成分分析,principal components analysis)是最常用的无监督式降维方法,其核心思想是寻找一组低维空间的正交基来投影原始空间数据,在保证尽可能保留原始数据信息的同时,降低数据特征空间。一、几何解释在二维几何空间内来理解PCA的大致思路:即对于二维空间内的一堆散点,寻找一条直线,使得各点在直线上进行表示的某种度量能够尽可能的体现散点在二维空间内的分布情况。推广...原创 2019-10-06 15:10:36 · 543 阅读 · 0 评论 -
理解机器学习中的熵
1. 信息量和信息熵熵是表征系统混乱度/不确定度的物理量,在热力学、信息学中都有其各自的含义,而在机器学习更多沿用了信息熵的概念,即解释随机变量分布所需要的信息量(下文给出数学定义),或者从信息编码的角度来说,用某种方式对随机变量分布进行编码所需要的编码信息长度。假设一个离散型随机变量xxx,其分布为p(x)p(x)p(x),如何计算其熵呢,我们先引入信息量的概念:事件发生所蕴含的信息。比如对...原创 2019-09-01 11:29:59 · 621 阅读 · 0 评论