泳鱼

Results 65 issues of 泳鱼

pandas、numpy是Python数据科学中非常常用的库,numpy是Python的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效。pandas是基于numpy的数据处理工具,能更方便的操作大型表格类型的数据集。 但是,随着数据量的剧增,有时numpy和pandas的速度就成瓶颈。如下我们会介绍一些优化秘籍:里面包含 代码上面的优化,以及可以无脑使用的性能优化扩展包。 ### 1、NumExpr NumExpr 是一个对NumPy计算式进行的性能优化。NumExpr的使用及其简单,只需要将原来的numpy语句使用双引号框起来,并使用numexpr中的evaluate方法调用即可。经验上看,数据有上万条+ 使用NumExpr才比较优效果,对于简单运算使用NumExpr可能会更慢。如下较复杂计算,速度差不多快了5倍。 ``` import numexpr as ne import numpy as np a = np.linspace(0,1000,1000) print('# numpy十次幂计算') %timeit a**10 print('# numexpr十次幂计算') %timeit ne.evaluate('a**10') ``` ![](https://upload-images.jianshu.io/upload_images/11682271-95211d181e0182b2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)...

## 前言 决策树模型因为其特征预处理简单、易于集成学习、良好的拟合能力及解释性,是应用最广泛的机器学习模型之一。 ![](https://upload-images.jianshu.io/upload_images/11682271-ca229cef16d7260d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 不同于线性模型【数学描述:f(W*X +b)】,是通过数据样本学习各个特征的合适权重,加权后做出决策。决策树会选择合适特征并先做特征划分后(这提高了模型的非线性能力),再做出决策。 ![](https://upload-images.jianshu.io/upload_images/11682271-51175299beda25ff.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 一、树模型的概括 决策树呈树形结构,更通俗来讲,树模型的数学描述就是**“分段函数”**。如下一个简单判别西瓜质量的决策树模型示例(注:以下西瓜示例,数据随机杜撰的,请忽略这么小的西瓜瓜~): ![](https://upload-images.jianshu.io/upload_images/11682271-778e69c330ee8c50.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 学习这样树模型的过程,简单来说就是从有监督的数据经验中学习**一个较优的树模型的结构:包含了依次地选择特征、确定特征阈值做划分的内部节点及最终输出叶子节点的数值或类别结果**。 ![](https://upload-images.jianshu.io/upload_images/11682271-d96f1602e153c4b0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 1、我们首先要拿到一些有关西瓜的**有监督数据**(这些西瓜样本已有标注高/低质量西瓜),并尝试选用决策树模型来学习这个划分西瓜的任务。 如下数据样本示例: ![](https://upload-images.jianshu.io/upload_images/11682271-d2df52bb03d8e423.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 2、后面也就是,凭着已知西瓜样本的特性/特征【如:西瓜重量、西瓜颜色】,学习如何正确地划分这些西瓜(归纳出本质规律)。开始学习之前,我们得确定一个树模型在生长的目标(**学习的目标**)。**简单来说,也就是在当前节点以什么为目标来指导怎么选择特征及分裂,而划分得好也就是要划分出的各组的准确率(纯度)都比较高**。 - 3、然后,根据学习目标,简单的我们可以通过遍历计算所有特征不同阈值的划分效果。选择各个的特征及尝试特征的所有实际取值,看以哪个特征阈值划分西瓜质量的效果较好。这个过程也就是确定**选择特征及特征阈值划分的优化算法**。 - 4、最终的,按照上面的步骤,我们逐个特征及取值试着去划分后发现,根据西瓜重量的特征 以300g作为划分出了两组,我们以**叶子节点的大多数类作为该节点的决策类别**。可能发现300 那组 高质量西瓜占比99%,整体分类效果是不错的,最终就确定下了这样的一个决策树模型。 ![](https://upload-images.jianshu.io/upload_images/11682271-823683438577d26a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 二、树模型的要素 从上述例子,我们可以将树模型的学习可以归到经典机器学习的4个要素:...

谷歌最近出品的82页论文《ON THE GENERALIZATION MYSTERY IN DEEP LEARNING》,在此我简单归纳下论文的思想,有兴趣的看看原论文。 >[论文链接:](https://github.com/aialgorithm/Blog)github.com/aialgorithm/Blog ## 一、DNN泛化能力的问题 论文主要探讨的是, 为什么过参数的神经网络模型还能有不错的泛化性?即并不是简单记忆训练集,而是从训练集中总结出一个通用的规律,从而可以适配于测试集(泛化能力)。 ![](https://upload-images.jianshu.io/upload_images/11682271-bebefaeb138630ae.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 以经典的决策树模型为例, 当树模型学习数据集的通用规律时:一种好的情况,假如树第一个分裂节点时,刚好就可以良好区分开不同标签的样本,深度很小,相应的各叶子上面的样本数是够的(即统计规律的数据量的依据也是比较多的),那这会得到的规律就更有可能泛化到其他数据。(即:拟合良好, 有泛化能力)。 ![](https://upload-images.jianshu.io/upload_images/11682271-f3133eaea6a5cace.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 另外一种较差的情况,如果树学习不好一些通用的规律,为了学习这个数据集,那树就会越来越深,可能每个叶子节点分别对应着少数样本(少数据带来统计信息可能只是噪音),最后,死记硬背地记住所有数据(即:过拟合 无泛化能力)。我们可以看到过深(depth)的树模型很容易过拟合。 **那么过参数化的神经网络如何达到良好的泛化性呢?** ## 二、 DNN泛化能力的原因 本文是从一个简单通用的角度解释——在神经网络的梯度下降优化过程上,探索泛化能力的原因: 我们总结了**梯度相干理论** :来自不同样本的梯度产生相干性,是神经网络能有良好的泛化能力原因。当不同样本的梯度在训练过程中对齐良好,即当它们相干时,梯度下降是稳定的,可以很快收敛,并且由此产生的模型可以有良好的泛化性。 否则,如果样本太少或训练时间过长,可能无法泛化。 ![](https://upload-images.jianshu.io/upload_images/11682271-099848fcedb31213.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **基于该理论,我们可以做出如下解释。** ###...

> 前言: 应出版社约稿,计划出个机器学习及深度学习通俗序列文章,不足之处还请多提建议。 ## **4.1 机器学习简介** 机器学习看似高深的术语,其实就在生活中,古语有云:“一叶落而知天下秋”,意思是从一片树叶的凋落,就可以知道秋天将要到来。这其中蕴含了朴素的机器学习的思想,揭示了可以通过学习对“落叶”特征的经验,预判秋天的到来。 ![](https://upload-images.jianshu.io/upload_images/11682271-aeeb09e0bc6039b7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 机器学习作为人工智能领域的核心组成,是非显式的计算机程序学习数据经验以优化自身算法,以学习处理任务的过程。一个经典的机器学习的定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P,...

## 一、推荐系统介绍 一句话介绍推荐系统的作用: **高效地达成用户与意向对象的匹配。** ![](https://upload-images.jianshu.io/upload_images/11682271-8b6f6ea0346ad95e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 1.1 推荐系统的应用 推荐系统是建立在海量数据挖掘基础上,高效地为用户提供个性化的决策支持和信息服务,以提高**用户体验及商业效益**。常见的推荐应用场景如: - 资讯类:今日头条、腾讯公众号等新闻、广告、文章等内容推荐; - 电商类:淘宝、京东、拼多多、亚马逊等商品推荐; - 娱乐类:抖音、快手、爱奇艺等视频推荐; - 生活服务类:美团、大众点评、携程等吃喝玩乐推荐; - 社交类:微信、陌陌等好友推荐; ### 1.2 推荐系统的目标 构建推荐系统前,首先要根据业务目标确定推荐系统的优化目标,对于不同的应用场景,推荐系统(模型学习)关注的是不同的业务指标,比如: - 对于电商推荐,不仅要预测用户的点击率(CTR),更重要的是预测用户的转化率(CVR); - 对于内容推荐,业务关心的除了CTR,还有阅读/观看时长、点赞、转发、评论等指标; 由于不同的业务指标可能存在一些联系,技术实现上,大多数时候都会设计一个多目标优化的框架(如:CTR和CVR模型进行Cotrain),共同进行模型的训练与预测,各个任务之间能够更好地共享信息。 ## 二、推荐系统的技术架构...

### 一、聚类简介 Clustering (聚类)是常见的unsupervised learning (无监督学习)方法,简单地说就是把相似的数据样本分到一组(簇),聚类的过程,我们并不清楚某一类是什么(通常无标签信息),需要实现的目标只是把相似的样本聚到一起,即只是利用样本数据本身的分布规律。 聚类算法可以大致分为传统聚类算法以及深度聚类算法: - 传统聚类算法主要是根据原特征+基于划分/密度/层次等方法。 ![](https://upload-images.jianshu.io/upload_images/11682271-0e38a702cec2e569.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 深度聚类方法主要是根据表征学习后的特征+传统聚类算法。 ![](https://upload-images.jianshu.io/upload_images/11682271-27edeeb5de2d7a8d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 二、kmeans聚类原理 kmeans聚类可以说是聚类算法中最为常见的,它是基于划分方法聚类的,原理是先初始化k个簇类中心,基于计算样本与中心点的距离归纳各簇类下的所属样本,迭代实现样本与其归属的簇类中心的距离为最小的目标(如下目标函数)。 ![](https://upload-images.jianshu.io/upload_images/11682271-505d51ed511d7ea2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 其优化算法步骤为: 1.随机选择 k 个样本作为初始簇类中心(k为超参,代表簇类的个数。可以凭先验知识、验证法确定取值); 2.针对数据集中每个样本 计算它到 k 个簇类中心的距离,并将其归属到距离最小的簇类中心所对应的类中; 3.针对每个簇类,重新计算它的簇类中心位置; 4.重复迭代上面 2 、3 两步操作,直到达到某个中止条件(如迭代次数,簇类中心位置不变等)。...

## 一、基础介绍 ### 1.1 神经网络模型 简单来说,常见的神经网络模型结构有前馈神经网络(DNN)、RNN(常用于文本 / 时间系列任务)、CNN(常用于图像任务)等等。具体可以看之前文章:[一文概览神经网络模型。](https://links.jianshu.com/go?to=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2Fovx_lj2rCrrTx8DeU03yjQ) 前馈神经网络是神经网络模型中最为常见的,信息从输入层开始输入,每层的神经元接收前一级输入,并输出到下一级,直至输出层。整个网络信息输入传输中无反馈(循环)。即任何层的输出都不会影响同级层,可用一个有向无环图表示。 ![](https://upload-images.jianshu.io/upload_images/11682271-c1eadd58c8a65f9b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 1.2 RNN 介绍 循环神经网络(RNN)是基于序列数据(如语言、语音、时间序列)的递归性质而设计的,是一种反馈类型的神经网络,它专门用于处理序列数据,如逐字生成文本或预测时间序列数据(例如股票价格、诗歌生成)。 ![](https://upload-images.jianshu.io/upload_images/11682271-1bf73110aeeb0f4d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) RNN和全连接神经网络的本质差异在于“输入是带有反馈信息的”,RNN除了接受每一步的输入x(t) ,同时还有输入上一步的历史反馈信息——隐藏状态h (t-1) ,也就是当前时刻的隐藏状态h(t) 或决策输出O(t) 由当前时刻的输入 x(t) 和上一时刻的隐藏状态h (t-1) 共同决定。从某种程度,RNN和大脑的决策很像,大脑接受当前时刻感官到的信息(外部的x(t) )和之前的想法(内部的h (t-1) )的输入一起决策。 ![](https://upload-images.jianshu.io/upload_images/11682271-73fbe8043d1c1044.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)...

## 一、样本不均衡的介绍 ### 1.1 样本不均衡现象 样本(类别)样本不平衡(class-imbalance)指的是分类任务中不同类别的训练样例数目差别很大的情况,一般地,样本类别比例(多数类vs少数类)明显大于1:1(如4:1)就可以归为样本不均衡的问题。现实中,样本不平衡是一种常见的现象,如:金融欺诈交易检测,欺诈交易的订单样本通常是占总交易数量的极少部分,而且对于有些任务而言少数样本更为重要。![](https://upload-images.jianshu.io/upload_images/11682271-8f01fa7bc63e641d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) >注:本文主要探讨分类任务的类别不均衡,回归任务的样本不均衡详见《**[Delving into Deep Imbalanced Regression](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2102.09554)**》 ### 1.2 不均衡的根本影响 很多时候我们遇到样本不均衡问题时,很直接的反应就是去“打破”这种不平衡。但是样本不均衡有什么影响?有必要去解决吗? 先具体举个例子,在一个欺诈识别的案例中,好坏样本的占比(Imbalance Ratio)是1000:1,而如果我们直接拿这个比例去学习模型的话,因为扔进去模型学习的样本大部分都是好的,就很容易学出一个把所有样本都预测为好的模型,而且这样预测的概率准确率还是非常高的。而模型最终学习的并不是如何分辨好坏,而是学习到了”好 远比 坏的多“这样的先验信息,凭着这个信息把所有样本都判定为“好”就可以了。这样就背离了模型学习去分辨好坏的初衷了。 所以,样本不均衡带来的根本影响是:模型会学习到训练集中样本比例的这种先验性信息,以致于实际预测时就会对多数类别有侧重(可能导致多数类精度更好,而少数类比较差)。如下图(示例代码请见github.com/aialgorithm),类别不均衡情况下的分类边界会“侵占”少数类的区域。更重要的一点,这会影响模型学习**更本质的特征**,影响模型的鲁棒性。 ![](https://upload-images.jianshu.io/upload_images/11682271-52e4d6ebec8ad68a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 总结一下也就是,**我们通过解决样本不均衡,可以减少模型学习样本比例的先验信息,以获得能学习到辨别好坏本质特征的模型**。 ### 1.3 判断解决不均衡的必要性 从分类效果出发,通过上面的例子可知,不均衡对于分类结果的影响不一定是不好的,那**什么时候需要解决样本不均衡**? - 学习任务的复杂度与样本不平衡的敏感度是成正比的(参见《Survey on deep...

>本文第一节源于周志华教授《关于深度学习的一点思考》提出深度森林的探索, 在此基础上对深度森林做了原理解析并实践。 周志华教授,毕业于南京大学,欧洲科学院外籍院士,国家杰出青年基金获得者,现任南京大学人工智能学院院长、南京大学计算机软件新技术国家重点实验室常务副主任、机器学习与数据挖掘研究所 (LAMDA)所长、人工智能教研室主任。 2021年8月1日,中国科学院公布2021年中国科学院院士增选初步候选人名单,周志华在列;11月3日,周志华凭借《面向多义性对象的新型机器学习理论与方法》获得2020年度国家自然科学奖二等奖。 ## 一、关于深度学习的一点思考 ![关于深度学习的一些思考_00.jpg](https://upload-images.jianshu.io/upload_images/11682271-cb1bef5daa677db4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_01.jpg](https://upload-images.jianshu.io/upload_images/11682271-2b91109624960952.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_02.jpg](https://upload-images.jianshu.io/upload_images/11682271-9c37087293c56d69.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_03.jpg](https://upload-images.jianshu.io/upload_images/11682271-bfd2ae0a60fd7155.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_04.jpg](https://upload-images.jianshu.io/upload_images/11682271-2ed8b1052a74fb18.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_05.jpg](https://upload-images.jianshu.io/upload_images/11682271-eda797cace1f80ab.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_06.jpg](https://upload-images.jianshu.io/upload_images/11682271-0cd6570d49713bae.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_07.jpg](https://upload-images.jianshu.io/upload_images/11682271-dafaeee7381b20d2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![关于深度学习的一些思考_08.jpg](https://upload-images.jianshu.io/upload_images/11682271-1a20f059f8d92330.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 二、深度森林的介绍 目前深度神经网络(DNN)做得好的几乎都是涉及图像视频(CV)、自然语言处理(NLP)等的任务,都是典型的数值建模任务(在表格数据tabular data的表现也是稍弱的),而在其他涉及符号建模、离散建 模、混合建模的任务上,深度神经网络的性能并没有那么好。 **深度森林(gcForest)**是深度神经网络(DNN)之外的探索的一种深度模型,原文:`it may open a door towards alternative to deep...

## 一、KNN(K最近邻算法)原理 一句话可以概括出KNN的算法原理:**综合k个“邻居”的标签值作为新样本的预测值。** 更具体来讲KNN分类,给定一个训练数据集,对新的样本Xu,在训练数据集中找到与该样本距离最邻近的K(下图k=5)个样本,以这K个样本的最多数所属类别(标签)作为新实例Xu的类别。 ![](https://upload-images.jianshu.io/upload_images/11682271-1bd0a58bbe6f3f90.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 由上,可以总结出KNN算法有K值的选择、距离度量和决策方法等三个基本要素,如下分别解析: ### 1.1 距离度量 KNN算法用距离去度量两两样本间的临近程度,最终为新实例样本确认出最临近的K个实例样本(这也是算法的关键步骤),常用的距离度量方法有曼哈顿距离、欧几里得距离: - 曼哈顿距离 公式: ![](https://upload-images.jianshu.io/upload_images/11682271-86f9852ba8ca496a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 欧几里得距离 公式: ![](https://upload-images.jianshu.io/upload_images/11682271-0d1161aa10669e59.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 曼哈顿、欧几里得距离的计算方法很简单,就是计算两样本(x,y)的各个特征i间的总距离。 如下图(二维特征的情况)蓝线的距离即是曼哈顿距离(想象你在曼哈顿要从一个十字路口开车到另外一个十字路口实际驾驶距离就是这个“曼哈顿距离”,也称为城市街区距离),红线为欧几里得距离: ![](https://upload-images.jianshu.io/upload_images/11682271-70fbf7d8b61024df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 曼哈顿距离 与 欧几里得距离 同属于闵氏距离的特例(p=1为曼哈顿距离;p=2为欧氏距离) ![](https://upload-images.jianshu.io/upload_images/11682271-c7249abf6d758618.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 在多数情况下,KNN使用两者的差异不大。在一些情况的差异如下: - 对于高维特征,曼哈顿距离(即p更低)更能避免维度灾难的影响,效果更优。(具体可见https://bib.dbvis.de/uploadedFiles/155.pdf) -...