自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 Python3入门机器学习之11.5 Ada Boosting 和 Gradient Boosting

Python3入门机器学习11.5 Ada Boosting 和 Gradient BoostingBoosting概述:集成多个模型,每个模型都在尝试增强(Boosting)整体的效果。1.Ada Boosting:Ada Boosting是这样的一个思路,以简单的回归问题为例:首先我们有原始的数据集,我们可以用某一种学习方法对原始的数据集进行学习,学习完成之后,显然所有的算法都会犯错误,相应的我们得到将数据点分成深色、浅色的结果。其中浅色的点就是被我们的模型近乎毫无差别的预测成功的点,而深

2020-07-22 16:33:52 333

原创 Python3入门机器学习之11.4随机森林和Extra-Trees

Python3入门机器学习11.4 随机森林和Extra-Trees1.随机森林:from sklearn.ensemble import RandomForestClassifierrf_clf = RandomForestClassifier(n_estimators=500, random_state=666, oob_score=True)rf_clf.fit(X, y)rf_clf.oob_score_2.Extra-Trees:from sklearn.ensemble

2020-07-22 15:40:32 1017

原创 Python3入门机器学习之11.3 oob(Out-of-Bag)和关于Bagging的更多讨论

Python3入门机器学习11.3 oob(Out-of-Bag)和关于Bagging的更多讨论1.oob:对应的代码:oob_score=True从而知道哪些样本没有被取到而被用作测试数据集。2.关于Bagging的更多讨论:Bagging的思路极易并行化处理。因为是独立的训练若干子模型,所以可以很方便的进行并行处理。scikit-learn中可以传入参数“n_jobs”来完成并行处理。针对特征进行随机取样:Random Subspaces。既针对样本,又针对特征进行随机采样:Ran

2020-07-22 14:44:48 1204

原创 Python3入门机器学习之11.2 Bagging和Pasting

Python3入门机器学习11.2 Bagging和Pasting集成学习就是集成多个算法,让不同的算法对同一组数据进行分析得到结果,最终投票来看哪个结果是大家公认的更好的、更正确的结果。但是这样进行集成学习还是有问题,最大的问题就是:虽然有很多机器学习方法,但是从投票的角度看,仍然不够多。如果我们想保证有一个好的结果,我们希望有更多的投票者才能保证结果可信,类似于概率论里的大数定理。所以,我们要创建更多的子模型,集成更多子模型的意见。更加重要的是子模型之间不能一致,也就是说子模型之间要有差异性。怎

2020-07-22 10:34:29 272

原创 Python3入门机器学习之11.1什么是集成学习

Python3入门机器学习11.1 什么是集成学习1.什么是集成学习?用少数服从多数的方式集成多个模型算法进行数据处理,这种少数服从多数的方式称为hard voting。相应的,还有一种更重要的方式叫做soft voting。2.soft voting:将所有模型预测样本为某一类别的概率的平均值作为标准,概率最高的对应的类型为最终的预测结果。hard voting 与 soft voting的对比:如下图:模型 1:A - 99%、B - 1%,表示模型 1 认为该样本是 A 类型的概率为

2020-07-22 09:45:27 173

原创 Python3入门机器学习之10.3CART与决策树中的超参数

Python3入门机器学习10.3 CART与决策树中的超参数1.什么是CART?CART的全称为Classification And Regression Tree,是根据某一个维度d和某一阈值v进行二分。scikit-learn的决策树实现:CART。2.决策树中的超参数:...

2020-07-20 20:36:28 339

原创 Python3入门机器学习之10.2基尼系数

Python3入门机器学习10.2 基尼系数1.基尼系数:由以上例子可以看出:基尼系数越高意味着数据整体随机性越强,也就是不确定性越强;而基尼系数越低,意味着数据整体确定性越强。可以看出,基尼系数和信息熵一样,可以作为数据不确定性的度量。2.信息熵 vs 基尼系数:...

2020-07-20 20:06:43 1610

原创 Python3入门机器学习之10.1决策树和信息熵

Python3入门机器学习之10.1 决策树1.什么是决策树?通过以上的例子,我们会提出如何构造决策树的问题:①.每个节点在哪个维度做划分?②.某个维度在哪个值上做划分?2.信息熵:熵在信息论中代表随机变量不确定度的度量。熵越大,数据的不确定性越高;熵越小,数据的不确定性越低。公式如下:对于一个系统中,可能有k类的信息,每一类信息所占的比例就叫做pi。举个例子来理解这个公式,如下:右边的计算结果比左边的小,也就是右边的数据比左边的数据更确定。由于右边的数据中的第三类数据占很大

2020-07-18 18:11:17 317

原创 Python3入门机器学习之9.5 SVM思想解决回归问题

Python3入门机器学习9.5 SVM思想解决回归问题SVM思想解决回归问题:我们要指定一个margin值,在这个margin范围里,我们期望包含进来的样本数据点越多越好。如果在这个margin范围里样本数据点越多就代表我们这个范围能够比较好的表达我们的样本数据点。在这种情况下,我们取中间的直线作为回归的结果,用它来预测其它的未知点的相应的y的值。在我们具体训练这个SVM回归问题的结果的时候,我们是对margin的范围进行指定的,所以在这里就引入了一个超参数,通常用ε来表示。ε来指定任意一根mar

2020-07-17 22:27:37 391

原创 Python3入门机器学习之9.4RBF核函数

Python3入门机器学习9.4 RBF核函数1.什么是高斯核函数:2.多项式特征为什么可以处理非线性的问题?添加多项式的特征使得原本线性不可分的数据变成线性可分,其实是依靠升维使得原本线性不可分的数据变成线性可分。如下图,比如原本的数据就是一维数据,很显然这组数据是线性不可分的。但是,我们添加上多项式特征的话,相当于是在升维,不但让这个数据点有一个横轴x值,还有第二个维度的值,我们假设为x的平方。如下图,这些数据点在x轴上的位置是不变的,不过在y轴上也相应的有一个取值了,这个取值就是x的

2020-07-17 16:53:14 2974

原创 Python3入门机器学习之9.3核函数

Python3入门机器学习9.3 核函数首先回顾一下SVM算法的本质,就是求解以下最优化问题:在求解这个最优化问题的过程中,我们需要将其变形,变成在数学上更好解的形式(不进行推导过程的介绍):在我们转变的这个式子中,对于样本数据集任意的两个向量都要进行向量间的点乘。如果我们想使用多项式特征的话,方块中的式子就变为如下:而核函数是这样的思想:有没有可能不将这两个样本点xi和xj先分别转换成xi‘ 和xj’,再做乘法,而是设置一个函数,直接对原来的样本进行数学运算,直接计算出xi‘ 和xj’。如

2020-07-17 15:09:27 1074

原创 深度学习之四 卷积神经网络进阶(alexnet)

深度学习之四卷积神经网络进阶(alexnet)为什么要有不同的网络结构?不同的网络结构解决的问题不同。不同的网络结构使用的技巧不同。不同的网络结构应用的场景不同。每次的dropout都是随机的,所以结果相当于是很多子网络的组合,在机器学习中模型组合一般是能提升最后的模型效果。神经元之间的依赖关系被消除,就降低了过拟合的风险。过拟合是神经元记住了所有的数据,而一个神经元是记不住的,而是需要多个神经元去组合与配合。而dropout每次都去随机删掉一些神经元,使得神经元之间去组合

2020-07-15 16:07:23 227

原创 深度学习之三 卷积神经网络

深度学习之三 卷积神经网络1.问题引入。普通的神经网络在处理图像时遇到的问题:参数过多。参数过多引来的问题有:①.容易过拟合,导致模型的泛化能力非常差。②.收敛到较差的局部极值。解决问题–卷积。2.卷积。对于一个图像数据来说,它具有非常强的区域性。基于这样的图像性质,我们可以做一定的筛减,将全连接变成局部连接,从而降低它的参数量。①.局部连接由于图像的特征和它的位置无关,我们强制使得每一个神经元和局部连接都使用同样的参数,即参数共享。②.参数共享卷积计算中还有一个重要的

2020-07-14 21:24:25 569

原创 深度学习之二 神经网络进阶

深度学习之二神经网络进阶1.神经元:2.神经网络结构:多个神经元组合在一起就会形成一个神经网络,下图是具有一个隐藏层的神经网络。3.正向传播:为了从数据中计算出它的预测值。4.反向传播:为了求解参数,是梯度下降算法在神经网络上的具体的计算过程。如上图:如果给定了损失函数,我们可以直接运用梯度下降法(对损失函数求偏导)求出W3的值,那么对于W1和W2如何计算损失函数对于它们的导数呢?答案是用链式法则:5.神经网络训练优化:以上是反向传播的概念,它是帮助神经网络去求解所有参数的

2020-07-14 11:38:56 258

原创 Python3入门机器学习之9.2Soft Margin SVM和SVM的正则化

Python3入门机器学习9.2 Soft Margin SVM和SVM的正则化一个一般的例子,如下图,此时我们的数据是线性不可分的,hard Margin SVM无法应用。这时我们需要一个具有容错能力的SVM,这种SVM就叫做Soft Margin SVM。注意:ζ它不是一个固定的值,而是对于每一个样本数据 i 都有一个相应的 ζi 。只有ζi >= 0是不够的,如果它取正无穷,很显然对于所有的数据点都将满足这样的条件,此时容错的范围就太大了。ζ要做的事情是,希望它有一定的容错空间,但是容

2020-07-11 15:30:01 423

原创 Python3入门机器学习之9.1SVM及SVM背后的最优化问题

Python3入门机器学习9.1 SVM及SVM背后的最优化问题1.什么是SVM(Support Vector Machine)?找到一个决策边界,这个决策边界不仅要很好的将训练数据集的样本做很好的划分,同时泛化能力还要好。这个决策边界离我们的分类样本都要尽可能的远,如上图所示,最近的三个点(红、红、蓝)离决策边界(中间的线)要尽可能的大。线性可分:对于所有的样本点来说,首先要存在一根直线或者一个平面可以将这些点划分。如果解决的是线性可分的问题,这样的算法通常称之为“Hard Margin SV

2020-07-11 14:50:29 282

原创 Python3入门机器学习之8.4ROC曲线

Python3入门机器学习8.4 ROC曲线ROC曲线(Receiver Operation Characteristic Curve):描述TPR和FPR之间的关系。一般来说,FPR值越大,TPR值越大;FPR值越小,TPR值越小对于ROC曲线来说,我们通常关注的是这条曲线下面的面积的大小,面积越大代表我们训练出的模型它的分类效果越好。这是因为在ROC曲线上,在x越小的时候就是FPR越低的时候,也就是我们犯false-positive越少的时候,相应的曲线的值越高,也就是TPR越大,也就是我

2020-07-11 09:01:39 356

原创 Python3入门机器学习之8.3精准率和召回率的平衡

Python3入门机器学习8.3 精准率和召回率的平衡精准率和召回率是互相牵制、互相平衡的一对变量。一个高一些另一个就会低一些,一个低一些另一个就会高一些。横轴代表取不同的阈值thresholds,图代表随着thresholds的改变,精准率和召回率的变化趋势。x轴是精准率,y轴是召回率,这个图反映了精准率和召回率它们之间的一个平衡。对于这样的图,通常都会有一个急剧下降的点,而这个点通常为精准率和召回率达到平衡的点。如果我们有一个模型,它的PR曲线更靠外的话(如上图的L1曲

2020-07-10 20:49:11 267

原创 Python3入门机器学习之8.2F1 Score

Python3入门机器学习8.2 F1 Score有时候我们注重精准率。如股票预测。有时候我们注重召回率。如病人诊断。不过还有一些情况,我们希望获得这两个指标之间的平衡,也就是同时关注精准率和召回率,在这种情况下我们使用一种新的指标,叫做F1 Score。它的目的就是兼顾精准率和召回率这两个指标。F1 Score是precision和recall的调和平均值。F1的取值范围在(0,1)之间。为什么要取精准率和召回率的调和平均值呢?调和平均值一个非常重要的特点就是:如果这二者极度不平衡的话,

2020-07-10 19:41:32 627

原创 Python3入门机器学习之8.1精准率和召回率

Python3入门机器学习8.1 精准率和召回率1.分类准确度的问题:例子:如果有一个癌症预测系统,输入体检信息便可以判断是否有癌症,假设它的预测准确度是99.9%,那这个预测系统是好是坏?如果癌症产生的概率只有0.1%,那意味着根本不需要任何机器学习的算法,对于任何输入的体检信息,只要都预测是健康的,即可达到99.9%的准确率。这样一来近乎我们的系统什么都没有做。所以,对于极度偏斜(Skewed Data)的数据,只使用分类准确度是远远不够的。2.混淆矩阵:3.精准率和召回率:(1).精

2020-07-10 19:16:44 584

原创 深度学习之一 神经网络入门

深度学习之神经网络(CNN/RNN/GAN)算法原理之一 神经网络入门1.神经元–逻辑斯底回归模型:2.神经元多输出:以上是二分类的逻辑斯蒂回归模型,那么如果我们想要多分类的逻辑斯蒂回归模型,应该怎么做呢?显然我们在有一个神经单元的时候我们可以做二分类的逻辑斯蒂回归模型,我们想要多分类,只需加神经元。如下图所示,多加了一个神经元,就可以得到两个输出,可以去做三分类的逻辑斯蒂回归模型。因为:输出一个值的时候,比如值是a,我们认为a是某个类的概率,那么1-a就是另一个类的概率,所以输出一个值的

2020-07-10 08:42:30 178

转载 Python3入门机器学习之7.6OvR与OvO

Python3入门机器学习7.6 OvR与OvO

2020-07-09 14:03:58 572

原创 Python3入门机器学习之7.5在逻辑回归中使用多项式特征

Python3入门机器学习7.5 在逻辑回归中使用多项式特征我们也可以在逻辑回归中添加多项式项,使得可以生成不规则的决策边界,进而对非线性的数据进行很好的分类,如下:既然我们引入多项式项,我们的模型就会变得很复杂,可能产生过拟合的情况。为了解决过拟合,常规的手段就是为我们的模型添加正则化:...

2020-07-09 10:26:26 321

原创 Python3入门机器学习之7.4决策边界

Python3入门机器学习7.4 决策边界1.逻辑回归中中的决策边界:以鸢尾花数据集为例,决策边界的几何意义:2.不规则的决策边界的绘制方法:def plot_decision_boundary(model, axis): x0, x1 = np.meshgrid( np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1), np.linspace(ax

2020-07-09 08:35:26 334

原创 Python3入门机器学习之7.3逻辑回归损失函数的梯度

Python3入门机器学习7.3 逻辑回归损失函数的梯度前半部分的导数为:后半部分的导数为:于是:回忆线性回归:

2020-07-08 16:04:27 165

原创 Python3入门机器学习之7.2逻辑回归的损失函数

Python3入门机器学习7.2 逻辑回归的损失函数

2020-07-08 12:47:43 478

原创 Python3入门机器学习之7.1什么是逻辑回归

Python3入门机器学习7.1 什么是逻辑回归逻辑回归:解决分类问题。回归问题怎么解决分类问题呢?将样本的特征和样本发生的概率联系起来,概率是一个数。

2020-07-08 12:25:31 117

原创 Python3入门机器学习之5.5高维数据映射为低维数据

Python3入门机器学习5.5 高维数据映射为低维数据1.高维数据向低维数据的映射:2.低维数据向高维数据的恢复:3.封装自己的PCA方法:import numpy as npclass PCA: def __init__(self, n_components): """初始化PCA""" assert n_components >= 1, "n_components must be valid" self.n_compon

2020-07-05 14:52:49 604

原创 Python3入门机器学习之5.4求数据的前n个主成分

Python3入门机器学习5.4 求数据的前n个主成分求出第一主成分以后,如何求出下一个主成分?数据进行改变,将数据在第一个主成分上的分量去掉,在新的数据上求第一主成分,也就是相应的原来数据的第二主成分,这个过程以此类推,便可以求出第三主成分、第四主成分等。求一组数据的前n个主成分:(1).数据的准备,这组数据是二维数据:(2).求这组数据的第一主成分:(3).求解这组数据的第二主成分:(4).整理一个求前n个主成分的函数:...

2020-07-05 10:22:24 169

原创 Python3入门机器学习之5.3求数据的主成分PCA

Python3入门机器学习5.3 求数据的主成分PCA使用梯度上升法求解主成分:1.准备数据:2.进行均值归零(demean)操作:3.梯度上升法求解主成分:

2020-07-05 09:31:50 103

原创 Python3入门机器学习之5.2使用梯度上升法求解PCA问题

Python3入门机器学习5.2 使用梯度上升法求解PCA问题

2020-07-02 17:40:57 112

原创 Python3入门机器学习之5.1什么是PCA

Python3入门机器学习5.1 什么是PCA主成分分析(Principal Component Analysis)一个非监督的机器学习算法主要用于数据的降维通过降维,可以发现更便于人类理解的特征其他应用:可视化;去躁所谓的均值归零(demean)就是所有的样本都减去这批样本整体的均值,变成如下的样子,样本的分布没有改变,只是坐标轴进行了移动,使得样本在每一个维度均值都是零:此时方差的公式:注意此时的xi是所有的样本点已经映射在了新的坐标轴上得到的新的样本。总结主成分分

2020-07-02 17:18:43 183

原创 Python3入门机器学习之4.8如何确定梯度计算的准确性?调试梯度下降法

Python3入门机器学习4.8 如何确定梯度计算的准确性?调试梯度下降法梯度的调试用来验证我们数学求解梯度的准确性。调试梯度下降法:(1).准备模拟数据:(2).准备损失函数、数学推导方式求梯度的函数和用调试的方式求梯度的函数:(3).梯度下降的过程:(4).分别运用数学推导方式求梯度和调试的方式求梯度的方法求得结果,并进行比较:...

2020-07-01 17:46:09 144

原创 Python3入门机器学习之4.7scikit-learn中的随机梯度下降法

Python3入门机器学习4.7 scikit-learn中的随机梯度下降法1.封装我们自己的随机梯度下降法: def fit_sgd(self, X_train, y_train, n_iters=5, t0=5, t1=50): """根据训练数据集X_train,y_train,使用随机梯度下降法训练Linear Regression模型""" assert X_train.shape[0] == y_train.shape[0], \

2020-07-01 17:03:15 205

原创 Python3入门机器学习之4.6随机梯度下降法

Python3入门机器学习4.6 随机梯度下降法通过我们推导的如下求梯度的公式,要想准确地求出梯度,每一项都要对所有的样本进行计算,这样的梯度下降法通常又叫做批量梯度下降法(Batch Gradient Descent)。显然,这样带来一个问题:如果我们的样本量m非常大,计算梯度本身也是非常耗时的。基于这个问题,我们有这样的改进方案。在之前的式子中,由于对于每一项都对m个样本进行了计算,之后为了取平均,还除以了m。所以一个自然的想法就是:我们可不可以每一次只对一个样本计算呢?基于这样的想法,之前的

2020-07-01 15:16:12 436

原创 Python3入门机器学习之4.5梯度下降法的向量化和数据标准化

Python3入门机器学习4.5 梯度下降法的向量化和数据标准化1.向量化:在上一节中,我们推导出求解梯度的公式如下:继续变形,使其可以向量化,如下:于是求梯度的函数的实现方式也相应的改变,如下: def dJ(theta, X_b, y): # res = np.empty(len(theta)) # res[0] = np.sum(X_b.dot(theta) - y) # for i in range(1, len

2020-07-01 14:23:52 231

原创 Python3入门机器学习之4.4实现线性回归中的梯度下降法

Python3入门机器学习4.4 实现线性回归中的梯度下降法1.在线性回归模型中使用梯度下降法:(1).首先准备我们的模拟数据:(2).使用梯度下降法训练:损失函数:求解梯度的函数:梯度下降法求解参数θ的过程:2.封装用梯度下降解决线性回归问题的算法: def fit_gd(self, X_train, y_train, eta=0.01, n_iters=1e4): """根据训练数据集X_train,y_train,使用梯度下降法训练Linear Re

2020-07-01 10:17:26 141

空空如也

空空如也

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

TA关注的人

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