![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
文章平均质量分 96
学吧学吧终成学霸
今天比昨天进步一点点
展开
-
多分类的梯度以及logsumexp
最近重新仔细推导了一番多分类的梯度,并且想用Python实现,所以涉及到代码中梯度的计算,遇到了一些小问题和小心得,这里稍稍整理一下。多分类的预测假设FFF表示一个二分类器,这个任务一共有KKK个类别,则一般可以用KKK个这样的二分类器经过一个softmax函数来求得预测为kkk类别的概率,即pk=eFk∑lKeFlp_k={e^{F_k}\over \sum_l^K e^{F_l}}pk=∑lKeFleFksoftmax的求导可以很分情况讨论得到,为pk′={pk(1−pk)k=l−p原创 2020-11-16 21:28:47 · 784 阅读 · 0 评论 -
Mac下安装graphviz以及XGBoost可视化决策树
最近做项目又需要用XGBoost画出决策树来解释,之前用花了大力气装了graphviz画决策树,后来重新安装了Anaconda后环境就没了,也忘了当时踩过的坑,在网上找到的都是千篇一律但是装不好的博客,所以又踩了一次坑,install uninstall了好几次,写一篇博客以免以后自己又忘了。。。1、Mac下安装graphviz我先在Anaconda的环境中尝试安装,apply了以下两个包,可是不能用,后面想要remove也操作不了,后来就没管了,继续下面的安装步骤了(不知道这一步有没有用)1、打开原创 2020-10-19 18:12:26 · 1586 阅读 · 0 评论 -
集成学习——NGBoost论文研读与原理理解
NGBoost是最新的Boosting方法,它是2019年10月斯坦福团队在arxiv上发表的,原创 2020-01-18 21:50:57 · 6748 阅读 · 4 评论 -
集成学习——LightGBM原理理解
LightGBM(Light Gradient Boosting Machine)是梯度提升框架下的适用于大规模数据的又一boosting学习框架,它由微软亚洲研究院分布式机器学习工具包(DMTK)团队以及北大的一个学者在2017年NIPS大会上正式发表,并由微软提供开源。本篇博客是在精读了原始论文《LightGBM: A Highly Efficient Gradient Boosting De...原创 2020-01-10 22:20:20 · 2125 阅读 · 2 评论 -
LightGBM源码如何计算增益
在之前的XGBoost原理理解中已经推导过XGBoost的决策树的分裂增益为Lsplit=12[(∑i∈ILgi)2∑i∈ILhi+λ+(∑i∈IRgi)2∑i∈IRhi+λ−(∑i∈Igi)2∑i∈Ihi+λ]−γ\mathcal{L}_{split}={1\over2}\bigg[{(\sum_{i\in I_L}g_i)^2\over \sum_{i\in I_L}h_i+\lambda}+...原创 2020-01-09 17:58:45 · 1424 阅读 · 1 评论 -
集成学习——XGBoost原理理解
XGBoost全称为Extreme Gradient Boosting,它是2016年陈天奇和Carlos Guestrin在国际AI顶会ACM SIGKDD(知识发现与数据挖掘会议)上的正式发布,论文详见《XGBoost: A Scalable Tree Boosting System》。在此之前,XGBoost的作者已经在各种国际数据竞赛网站例如kaggle等用该算法和这套系统取得了瞩目的成绩...原创 2020-01-02 18:40:10 · 696 阅读 · 0 评论 -
集成学习—SGBT随机梯度提升树
上一篇集成学习—GBDT原理理解中提到,由于GBDT的弱学习器之间存在依赖关系,难以并行训练数据,因此若数据量较大时程序运行太慢。这里可以通过加入了自采样的SGBT来达到部分并行,这是一个能改善GBDT的一种方法。SGBT全称Stochastic gradient boosting tree,也就是随机梯度提升树,它是在2002年Jerome H. Friedman的《Stochastic Gr...原创 2019-11-22 17:33:59 · 2637 阅读 · 0 评论 -
集成学习—GBDT原理理解
GBDT,全称为梯度提升决策树,即Gradient Boosting Decision Tree。上一篇博客:集成学习—GBDT(论文研读)中已经对GBDT原始论文——Jerome H. Friedman的《Greedy function approximation: A gradient boosting machine》进行了翻译和精读,这篇博客主要是对GBDT的原理再啃啃,梳理一下,原理理解...原创 2019-11-12 21:09:24 · 609 阅读 · 0 评论 -
集成学习—GBDT(论文研读)
GDBT是与Friedman等人的《Additive logistic regression: a statistical view of boosting》这篇文章有极大的联系,基本上可以说是由这篇文章发展而来的,但是由于GDBT自己有着很好的实践效果,因此对于学习集成学习来说读一读原本的论文也是很必要的。因此这篇博客主要是对GDBT的原论文进行精读和理解。《Greedy function a...原创 2019-10-31 21:08:21 · 7070 阅读 · 5 评论 -
集成学习—Adaboost加性模型(论文研读)
上一篇博客在理解Adaboost时涉及到了一篇经典的论文:Friedman等人的《Additive logistic regression: a statistical view of boosting》,原本不打算精读,但是由于这篇文章的重要性,以及对于之后的GBDT的发展有很大的帮助,因此还是认认真真的精读一下。这篇文章是Friedman等人在2000年于统计学领域的四大金刚——The An...原创 2019-09-27 17:34:43 · 2524 阅读 · 0 评论 -
集成学习—Adaboost(理解与应用)
在上一篇集成学习—Adaboost(论文研读)中已经将Adaboost的原始论文精读了一遍,这篇博客主要是对Adaboost算法进行更深入的理解和讨论,以及关于它的基于Python的代码的应用。模型回顾Adaboost算法,全称为the adaptive boosting algorithm,在原始的论文中,Freund和Schapire将二分类{0,1}\{0,1\}{0,1}问题的Adab...原创 2019-09-13 14:11:37 · 1353 阅读 · 1 评论 -
集成学习—Adaboost(论文研读)
Adaboost是Yoav Freund和Robert E. Schapire在1995年的the Second European Conference on Computational Learning Theory首次提出(详见Proceedings of the Second European Conference on Computational Learning Theory, Barc...原创 2019-09-09 20:12:36 · 8578 阅读 · 4 评论 -
集成学习—随机森林原理(理解与论文研读)
随机森林(Random forest,简称RF)是由Leo Breiman在2001年在《Machine Learning》(2018年影响因子2.809)正式发表提出。正如上一篇博客中写的,随机森林属于集成学习中Bagging的典型算法。总的来说,随机森林就是在随机子空间中随机组合的自由生长的CART决策树+Bagging得到的。这里在CART决策树前加入了三个描述词,一个是在随机子空间中,也...原创 2019-08-21 17:44:40 · 18060 阅读 · 4 评论 -
集成学习—决策树(CART)
集成学习:集成学习(Ensemble learning)是指通过构建并合并多个学习器(模型)来完成学习任务。它一般先产生一组个体学习器,再用某种策略将它们结合起来,常常可以获得比单一学习器显著优越的泛化性能(结合策略包括平均法、投票法和学习法等,具体可以参考周志华老师的西瓜书,这里就不详细讨论)。根据个体学习器的生成方式,目前集成学习方法大致可以分两大类:Boosting(个体学习器间存在...原创 2019-08-13 14:03:06 · 1560 阅读 · 0 评论 -
Kernel Method核方法—应用与理解
前一篇主要梳理了几个基本概念以及相关关系,这一篇主要针对核方法的应用进行讨论,并理解核方法的思想,了解为什么要引入核方法。核方法在机器学习中是一种灵活的技术,主要归结为两个方面:非线性问题转换为高维线性问题;只依赖于内积的问题。具体来说,核方法可扩展支持向量机(SVM)、主成分分析(PCA)等算法,用于处理数据在低维空间不是线性可分的,通过核变换在高维空间就可以变成线性可分得以求解的问...原创 2019-07-31 20:11:03 · 1417 阅读 · 0 评论 -
Kernel Method核方法—基本概念
这里只是简单叙述了核方法中运用到的几个概念和相互的关系,包括什么是核函数Kernel function、正定函数Positive definite function、再生核希尔伯特空间Reproducing Kernel Hilbert space (RKHS) 和再生核函数Repreducing kernel,以及他们之间的关系,下一篇再对其应用进行深入探讨定义:核函数(Kernel f...原创 2019-07-28 23:42:12 · 755 阅读 · 1 评论 -
吴恩达|机器学习作业目录
一个多月除了上课自习,就是在coursera和网易云课堂上学习吴恩达机器学习的课程,现在学完了,以下是一个多月来完成的作业目录,整理一下以便使用:1.0 单变量线性回归1.1 多变量线性回归2.0 Logistic 回归2.1 正则化的Logistic回归3.0 逻辑回归解决多元分类3.1 前馈神经网络4.0 神经网络反向传播(BP算法)5.0 偏差与方差6.0 支持向量机(SV...原创 2019-04-29 15:34:18 · 19247 阅读 · 7 评论 -
吴恩达|机器学习作业1.1多变量线性回归
1.1.多变量线性回归1)题目:在本部分的练习中,需要预测房价,输入变量有两个特征,一是房子的面积,二是房子卧室的数量;输出变量是房子的价格。2)知识点概括:特征缩放:因为对于大多数的机器学习算法和优化算法来说,将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言,例如有两个不同的特征,第一个特征的取值范围为1-10,第二个特征的取值范围为1-10000。在梯度下降算法...原创 2019-03-10 12:35:10 · 4254 阅读 · 0 评论 -
吴恩达|机器学习作业2.0Logistic 回归
2.0.Logistic 回归1)题目:在本部分的练习中,您将使用Logistic回归模型来预测一个学生是否被大学录取。假设你是大学某个院系的管理员,你想通过申请人在两门考试中的表现来决定每个人的录取率,你有来自以前申请人的历史数据,你可以用这些数据作为训练集建立Logistic回归,对每一个训练样本,你有申请人在两门考试中的分数和录取决定。你的任务是建立一个分类模型,基于这两门课的分数来估...原创 2019-03-10 13:02:52 · 4412 阅读 · 4 评论 -
吴恩达|机器学习作业2.1正则化的Logistic回归
2.1.正则化的Logistic 回归1)题目:在本部分的练习中,您将使用正则化的Logistic回归模型来预测一个制造工厂的微芯片是否通过质量保证(QA),在QA过程中,每个芯片都会经过各种测试来保证它可以正常运行。假设你是这个工厂的产品经理,你拥有一些芯片在两个不同测试下的测试结果,从这两个测试,你希望确定这些芯片是被接受还是拒绝,为了帮助你做这个决定,你有一些以前芯片的测试结果数据集,从...原创 2019-03-10 13:39:38 · 3733 阅读 · 1 评论 -
吴恩达|机器学习作业3.0.逻辑回归解决多元分类
1.0.逻辑回归解决多元分类1)题目:在本次练习中,你将使用逻辑回归和神经网络来识别手写数字(从0到9)。今天,自动手写数字识别被广泛使用,从识别信封上的邮政编码到识别银行支票上的金额。这个练习将向您展示如何将您所学的方法用于此分类任务。在第一部分中,将扩展以前的逻辑回归,并将其应用于one-vs-all分类。关于数据:本次的数据是以.mat格式储存的,mat格式是matlab的数据存储格式...原创 2019-03-16 19:07:12 · 3666 阅读 · 4 评论 -
吴恩达|机器学习作业3.1前馈神经网络
3.1.前馈神经网络1)题目:在本次练习中,你将使用前馈神经网络来识别手写数字(从0到9)。数据依然是MNIST手写体数据集,这里包含了5000个训练样本。之前用了逻辑回归进行多元分类,这次用前馈神经网络进行预测。此外作业中已经给出了训练好的权重,这部分数据可以在下次作业中自己训练出来,现在先用训练好的权重直接得出前馈神经网络的结果。数据集链接: https://pan.baidu.com...原创 2019-03-17 11:57:16 · 2976 阅读 · 2 评论 -
吴恩达|机器学习作业4.0神经网络反向传播(BP算法)
4.0.神经网络学习1)题目:在本练习中,您将实现神经网络的反向传播算法,并将其应用于手写数字识别任务。在之前的练习中,已经实现了神经网络的前馈传播,并使用Andrew Ng他们提供的权值来预测手写数字。在本练习中,将自己实现反向传播算法来学习神经网络的参数。本次的数据与上次作业是一样的,这里不再赘述。数据集链接: https://pan.baidu.com/s/1i_i77cVsa5Tt...原创 2019-03-21 12:44:26 · 8456 阅读 · 12 评论 -
吴恩达|机器学习作业5.0.偏差与方差
5.0.偏差与方差1)题目:在本练习中,您将实现正则化线性回归,并使用它来研究具有不同偏差-方差属性的模型。在练习的前半部分,您将使用水库水位的变化实现正则化线性回归来预测大坝的出水量。在下半部分中,您将对调试学习算法进行诊断,并检查偏差和方差的影响。关于数据:本次的数据是以.mat格式储存的,x表示水位的变化,y表示大坝的出水量。数据集共分为三部分:训练集(X, y)、交叉验证集(Xval...原创 2019-03-26 21:05:46 · 1353 阅读 · 4 评论 -
吴恩达|机器学习作业6.0支持向量机(SVM)
6.0.支持向量机1)题目:在本练习中,您将使用支持向量机来建立一个垃圾邮件分类器。在本练习的前半部分,您将使用支持向量机(SVM)处理各种两维的样本数据集。使用这些数据集进行实验将帮助您直观地了解支持向量机如何工作,以及如何使用带高斯核函数的SVM。在后半部分的练习中,您将使用支持向量机来构建垃圾邮件分类器。本次作业只包含前半部分。数据集链接: https://pan.baidu.com...原创 2019-04-04 15:33:37 · 3223 阅读 · 0 评论 -
吴恩达|机器学习作业6.1.SVM建立垃圾邮件分类器
6.1.SVM建立垃圾邮件分类器1)题目:如今,许多电子邮件服务提供垃圾邮件过滤器,能够将电子邮件精确地分类为垃圾邮件和非垃圾邮件。在本部分练习中,您将使用SVM构建自己的垃圾邮件过滤器。您将训练一个分类器来分类给定的电子邮件x是垃圾邮件(y = 1)还是非垃圾邮件(y = 0)。特别地,你需要将每封电子邮件转换成一个特征向量x∈Rnx\in R^nx∈Rn。本练习中包含的数据集是基于Sp...原创 2019-04-05 18:26:49 · 5687 阅读 · 2 评论 -
吴恩达|机器学习作业7.0.k-means聚类
7.0.k-means聚类以及图像压缩(颜色压缩)1)题目:在本练习中,您将使用k-means聚类算法并且将其应用于压缩图像。在第二部分中你将使用主成分分析来找到脸部图像的一个低维表示。第一部分为k-means聚类,你首先从一个2维的样本集开始,他可以帮助你对k-means算法有一个直观的感受。然后你将使用k-means算法对图像进行压缩,通过减少颜色数量,直到只出现在该图像中最常见的那些颜...原创 2019-04-12 19:42:40 · 2495 阅读 · 3 评论 -
吴恩达|机器学习作业8.1.推荐系统(协同过滤算法)
8.1.推荐系统(协同过滤算法)1)题目:在本次练习中,你将实现协同过滤算法并将它运用在电影评分的数据集上,最后根据新用户的评分来给新用户推荐10部电影。这个电影评分数据集由1到5的等级组成。数据集有nu=943n_u=943nu=943个用户和nm=1682n_m=1682nm=1682部电影。在计算完协同过滤的代价函数以及梯度后,将使用牛顿共轭梯度法求得参数。数据集中,Y是一个(16...原创 2019-04-21 15:25:52 · 2375 阅读 · 6 评论 -
吴恩达|机器学习作业7.1.主成分分析(PCA)
7.1.主成分分析对人脸图像降维1)题目:在这个练习中,你将运用主成分分析(PCA)来实现降维。首先,你将用一个二维的样本集来实验,从而对PCA如何运行的有一个直观的感受,然后再在一个更大的由5000个人脸图像组成的数据集上实现PCA。数据集链接: https://pan.baidu.com/s/1cEgQIvehUcLxZ0WVhxcPuQ 提取码: xejn2)知识点概括:降维(...原创 2019-04-14 12:12:02 · 2685 阅读 · 6 评论 -
吴恩达|机器学习作业8.0.异常检测
8.0.异常检测1)题目:在本练习中,您将实现异常检测算法,并将其应用于检测网络中的故障服务器。在第二部分中,您将使用协同过滤来构建电影推荐系统。在本练习中,您将实现一个异常检测算法来检测服务器计算机中的异常行为。这些特性度量每个服务器的吞吐量(mb/s)和响应的延迟(ms)。在服务器运行时,您收集了m = 307个关于它们行为的样本,因此有一个未标记的数据集{x(1),…,x(m)}。您怀...原创 2019-04-19 17:03:58 · 1202 阅读 · 6 评论 -
吴恩达|机器学习作业1.0单变量线性回归
1.0.单变量线性回归1)题目:在本部分的练习中,您将使用一个变量实现线性回归,以预测食品卡车的利润。假设你是一家餐馆的首席执行官,正在考虑不同的城市开设一个新的分店。该连锁店已经在各个城市拥有卡车,而且你有来自城市的利润和人口数据。您希望使用这些数据来帮助您选择将哪个城市扩展到下一个城市。x表示人口数据,y表示利润,一共97行数据。注意:Python中可以用numpy的load函数读取...原创 2019-03-10 12:06:25 · 9395 阅读 · 3 评论