卷积操作详解(填充、步长、高维卷积、卷积公式)

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

卷积

查看更多

损失函数和成本函数

损失函数针对的是单个样本,代价函数或者成本函数针对的是全体样本。


逻辑回归

Logistic 回归是一个用于二分分类的算法。

Logistic 回归中使用的参数如下:

  • 输入的特征向量:$x \in R^{n_x}$,其中 ${n_x}$ 是特征数量;
  • 用于训练的标签:$y \in 0,1$
  • 权重:$w \in R^{n_x}$
  • 偏置: $b \in R$
  • 输出:$\hat{y} = \sigma(w^Tx+b)$
  • Sigmoid 函数
    $$s = \sigma(w^Tx+b) = \sigma(z) = \frac{1}{1+e^{-z}}$$

查看更多

Batch Normalization 批标准化

简介

批标准化(Batch Normalization,经常简称为 BN)会使参数搜索问题变得很容易,使神经网络对超参数的选择更加稳定,超参数的范围会更庞大,工作效果也很好,也会使训练更容易。

之前,我们对输入特征 X 使用了标准化处理。我们也可以用同样的思路处理隐藏层的激活值 $a^{[l]}$,以加速 $W^{[l+1]}$和 $b^{[l+1]}$ 的训练。在实践中,经常选择标准化 $Z^{[l]}$:

查看更多

卷积网络的边缘检测

神经网络由浅层到深层,分别可以检测出图片的边缘特征、局部特征(例如眼睛、鼻子等),到后面的一层就可以根据前面检测的特征来识别整体面部轮廓。这些工作都是依托卷积神经网络来实现的。

卷积运算(Convolutional Operation)是卷积神经网络最基本的组成部分。我们以边缘检测为例,来解释卷积是怎样运算的。


边缘检测

图片最常做的边缘检测有两类:垂直边缘(Vertical Edges)检测和水平边缘(Horizontal Edges)检测。

Different-edges

查看更多

吴恩达2017深度学习课后作业笔记

持续整理中。。。

链接地址


课后作业目录

1_神经网络与深度学习
…………Week1 深度学习概论
……………………选择题
…………Week2 神经网络基础

查看更多

机器学习开发策略

吴大大结构化机器学习项目总结,完善中…

ML策略

假设你构建了一个喵咪分类器,训练之后准确率达到90%,但在测试集上还不够好。此时你可以想到的优化方法有哪些呢?总结后大致如下:

  • 收集更多的数据
  • 收集更多的多样化训练集,比如不同姿势的猫咪图片等
  • 用梯度下降法训练更长时间
  • 尝试Adam算法
  • 尝试更大的网路
  • 尝试小一点的网络
  • 尝试dropout随机失活算法
  • 加上L2正则项
  • 改善网络结构,如变更激活函数,变更隐藏层节点数量

优化的方法虽然很多,但如果方向错误,可能白费几个月时间。
那通过哪些策略可以减少错误发生的几率呢?怎么判断哪些方法可以尝试,哪些方法可以丢弃呢?

查看更多

机器学习(九):特征工程

特征工程是什么

数据和特征决定机器学习上限,而模型和算法只是逼近这个上限
特征工程目的:最大限度地从原始数据中提取特征以供算法和模型使用


数据清洗

数据清洗的结果直接关系到模型效果以及最终的结论。在实际的工作中,数据清洗通常占开发过程的 50%-80% 的时间。

在数据预处理过程主要考虑两个方面,如下:

  • 选择数据处理工具:关系型数据库戒者Python
  • 查看数据的元数据以及数据特征:一是查看元数据,包括字段解释、数据来源等一切可以描述数据的信息;另外是抽取一部分数据,通过人工查看的方式,对数据本身做一个比较直观的了解,并且初步发现一些问题,为之后的数据处理做准备。

缺省值清洗

缺省值是数据中最常见的一个问题,处理缺省值有很多方式,主要包括以下四个步骤进行缺省值处理:

  • 确定缺省值范围
  • 去除不需要的字段
  • 填充缺省值内容
  • 重新获取数据

注意:最重要的是 缺省值内容填充。

在进行确定缺省值范围的时候,对每个字段都计算其缺失比例,然后按照缺失比例和字段重要性分别指定不同的策略。

在进行去除不需要的字段的时候,需要注意的是:删除操作最好不要直接操作不原始数据上,最好的是抽取部分数据进行删除字段后的模型构建,查看模型效果,如果效果不错,那么再到全量数据上进行删除字段操作。总而言之:该过程简单但是必须慎用,不过一般效果不错,删除一些丢失率高以及重要性低的数据可以降低模型的训练复杂度,同时又不会降低模型的效果。

填充缺省值很重要,常用方法如下:

  • 以业务知识经验推测填充缺省值
  • 以同一字段指标的计算结果(均值、中位数、众数等)填充缺省值
  • 以不同字段指标的计算结果来推测性的填充缺省值,比如通过身仹证号码计算年龄、通过收货地址来推测家庭住址、通过访问的IP地址来推测家庭/公司/学校的家庭住址等等

如果某些指标非常重要,但是缺失率有比较高,而且通过其它字段没法比较精准的计算出指标值的情况下,那么就需要和数据产生方(业务人员、数据收集人员等)沟通协商,是否可以通过其它的渠道获取相关的数据,也就是进行重新获取数据的操作。

格式内容清洗

一般情况下,数据是由用户/访客产生的,也就有很大的可能性存在格式和内容上不一致的情况,所以在进行模型构建之前需要先进行数据的格式内容清洗操作。格式内容问题主要有以下几类:

  • 时间、日期、数值、半全角等显示格式不一致:直接将数据转换为一类格式即可,该问题一般出现在多个数据源整合的情况下。
  • 内容中有不该存在的字符:最典型的就是在头部、中间、尾部的空格等问题,这种
  • 情况下,需要以半自劢校验加半人工方式来找出问题,并去除不需要的字符。内容不该字段应有的内容不符:比如姓名写成了性别、身仹证号写成手机号等问题。

逻辑错误清洗

主要是通过简单的逻辑推理发现数据中的问题数据,防止分析结果走偏,主要包含以下几个步骤:

  • 数据去重
  • 去除/替换不合理的值
  • 去除/重构不可靠的字段值(修改矛盾的内容)

去除不需要的数据

一般情况下,我们会尽可能多的收集数据,但是不是所有的字段数据都是可以应用到模型构建过程的,也不是说将所有的字段属性都放到构建模型中,最终模型的效果就一定会好,实际上来讲,字段属性越多,模型的构建就会越慢,所以有时候可以考虑将不要的字段进行删除操作。在进行该过程的时候,要注意备仹原始数据。

关联性验证

如果数据有多个来源,那么有必要进行关联性验证,该过程常应用到多数据源合并的过程中,通过验证数据之间的关联性来选择比较正确的特征属性,比如:汽车的线下贩买信息和电话客服问卷信息,两者之间可以通过姓名和手机号进行关联操作,匹配两者之间的车辆信息是否是同一辆,如果不是,那么就需要进行数据调整。


特征转换

特征转换主要指将原始数据中的字段数据进行转换操作,从而得到适合进行算法模型构建的输入数据(数值型数据),在这个过程中主要包括但不限于以下几种数据的处理:

  • 文本数据转换为数值型数据
  • 缺省值填充
  • 定性特征属性哑编码
  • 定量特征属性二值化
  • 特征标准化不归一化

文本特征属性转换

机器学习的模型算法均要求输入的数据必须是数值型的,所以对于文本类型的特征属性,需要进行文本数据转换,也就是需要将文本数据转换为数值型数据。常用方式如下:

  • 词袋法(BOW/TF)
  • TF-IDF(Term frequency-inverse document frequency)
  • HashTF
  • Word2Vec

词袋法

词袋法(Bag of words, BOW)是最早应用于NLP和IR领域的一种文本处理模型,该模型忽略文本的语法和语序,用一组无序的单词(words)来表达一段文字戒者一个文档,词袋法中使用单词在文档中出现的次数(频数)来表示文档。

词集法(Set of words, SOW)是词袋法的一种变种,应用的比较多,和词袋法的原理一样,是以文档中的单词来表示文档的一种的模型,区别在于:词袋法使用的是单词的频数,而在词集法中使用的是单词是否出现,如果出现赋值为1,否则为0。

TF-IDF

词条的重要性随着它在文件中出现的次数正比增加,但同时会随着它在语料库中出现的频率反比下降;也就是说词条在文本中出现的次数越多,表示该词条对该文本的重要性越高,词条在所有文本中出现的次数越少,说明这个词条对文本的重要性越高。TF(词频)指某个词条在文本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量);IDF(逆向文件频率)指一个词条重要性的度量,一般计算方式为总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。TF-IDF实际上是:TF * IDF

假设单词用t表示,文档用d表示,语料库用D表示,那么N(t,D)表示包含单词t的文档数量,|D|表示文档数量,|d|表示文档d中的所有单词数量。N(t,d)表示在文档d中单词t出现的次数。

TF-IDF除了使用默认的tf和idf公式外,tf和idf公式还可以使用一些扩展之后公式来进行指标的计算,常用的公式有:

有两个文档,单词统计如下,请分别计算各个单词在文档中的TF-IDF值以及这些文档使用单词表示的特征向量。

HashTF-IDF

不管是前面的词袋法还是TF-IDF,都避免不了计算文档中单词的词频,当文档数量比较少、单词数量比较少的时候,我们的计算量不会太大,但是当这个数量上升到一定程度的时候,程序的计算效率就会降低下去,这个时候可以通过HashTF的形式来解决该问题。

HashTF的计算规则是:在计算过程中,不计算词频,而是计算单词进行hash后的hash值的数量(有的模型中可能存在正则化操作);

HashTF的特点:运行速度快,但是无法获取高频词,有可能存在单
词碰撞问题(hash值一样)

在scikit中,对于文本数据主要提供了三种方式将文本数据转换为数值型的特征向量,同时提供了一种对TF-IDF公式改版的公式。所有的转换方式均位于模块:sklearn.feature_extraction.text

Word2Vec

Word2Vec是Google于2013年开源推出的一个用户获取wordvector的工具包,具有简单、高效的特性;Word2Vec通过对文档中所有单词进行分析,获得单词之间的关联程度,从而获取词向量,最终形成一个词向量矩阵。对词向量矩阵的分析:分类、聚类、相似性计算等等;是一种在NLP和大数据机器学习中应用比较多的一种文本转换数值型向量的方式。

吴恩达word2vec视频讲解
吴恩达word2vec总结

无量纲化

无量纲化使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。区间缩放法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。

标准化

标准化:基于特征属性的数据(也就是特征矩阵的列),获取均值和方差,然后将特征值转换至服从标准正态分布。计算公式如下:

区间缩放法

区间缩放法的思路有多种,常见的一种为利用两个最值进行缩放,公式表达为:

归一化

简单来说,标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。规则为l2的归一化公式如下:

对定性特征哑编码

定性变量是反映”职业”、”教育程度”等现象属性特点的变量,只能反映现象的属性特点,而不能说明具体量的大小和差异。

哑编码(OneHotEncoder):对于定性的数据(也就是分类的数据),可以采用N位的状态寄存器来对N个状态进行编码,每个状态都有一个独立的寄存器位,并且在仸意状态下只有一位有效;是一种常用的将特征数字化的方式。比如有一个特征属性:[‘male’,’female’],那么male使用向量[1,0]表示,female使用[0,1]表示。

对定量特征二值化

定量变量是反映类似”天气温度”和”月收入”等属性的变量,可以用数值表示其观察结果,这些数值具有明确的数值含义,不仅能分类而且能测量出来具体大小和差异。这些变量就是定量变量也称数值变量,定量变量的观察结果成为定量数据。是说明事物数字特征的一个名称。

二值化(Binarizer):对于定量的数据根据给定的阈值,将其进行转换,如果大于阈值,那么赋值为1;否则赋值为0

缺省值填充

对于缺省的数据,在处理之前一定需要进行预处理操作,一般采用中位数、均值戒者众数来进行填充,在scikit中主要通过Imputer类来实现对缺省值的填充


数据多项式扩充变换

多项式数据变换主要是指基于输入的特征数据按照既定的多项式规则构建更多的输出特征属性,比如输入特征属性为[a,b],当设置degree为2的时候,那么输出的多项式特征为[1, a, b, a^2, ab, b^2]


特征选择

当做完特征转换后,实际上可能会存在很多的特征属性,比如:多项式扩展转换、文本数据转换等等,但是太多的特征属性的存在可能会导致模型构建效率降低,同时模型的效果有可能会变的不好,那么这个时候就需要从这些特征属性中选择出影响最大的特征属性作为最后构建模型的特征属性列表。

在选择模型的过程中,通常从两方面来选择特征

  • 特征是否发散:如果一个特征不发散,比如方差解决于0,也就是说这样的特征对于样本的区分没有什么作用。
  • 特征不目标的相关性:如果不目标相关性比较高,应当优先选择。

根据特征选择的形式又可以将特征选择方法分为3种:

  • Filter:过滤法,按照发散性戒者相关性对各个特征进行评分,设定阈值戒者待选择阈值的个数,从而选择特征;常用方法包括方差选择法、相关系数法、卡方检验、互信息法等。
  • Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征戒者排除若干特征;常用方法主要是递归特征消除法。
  • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权重系数,根据系数从大到小选择特征;常用方法主要是基于惩罚项的特征选择法。

Filter

方差选择法

方差选择法:先计算各个特征属性的方差值,然后根据阈值,获取方差大于阈值的特征。

相关系数法

相关系数法:先计算各个特征属性对于目标值的相关系数以及相关系数的P值,然后获取大于阈值的特征属性。

卡方检验

经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:


不难发现,这个统计量的含义简而言之就是自变量对因变量的相关性

互信息法

经典的互信息也是评价定性自变量对定性因变量的相关性的,互信息计算公式如下:

为了处理定量数据,最大信息系数法被提出

Wrapper

递归特征消除法

递归特征消除法:使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。

Embedded

基于惩罚项的特征选择法

在使用惩罚项的基模型,除了可以筛选出特征外,同时还可以进行降维操作。

基于树模型的特征选择法

树模型中GBDT在构建的过程会对特征属性进行权重的给定,所以GBDT也可以应用在基模型中进行特征选择。


降维

特征选择完成后,可以直接进行模型训练,但是可能由于特征矩阵过大,导致计算量大,为了节省训练时长,可以降低特征矩阵的维度。

常见的降维方法除了基于L1的惩罚模型外,还有主成分析法(PCA)和线性判别分析法(LDA),这两种方法的本质都是将原始数据映射到维度更低的样本空间中;但是采用的方式不同,PCA是为了让映射后的样本具有更大的发散性,LDA是为了让映射后的样本有最好的分类性能

主成分分析法 PCA

主成分析(PCA):将高纬的特征向量合并成低纬的特征属性,是一种无监督的降维方法。

吴恩达PCA算法讲解

线性判别分析法 LDA

线性判断分析(LDA):LDA是一种基于分类模型进行特征属性合并的操作,是一种有监督的降维方法。

异常检测

吴恩达异常检测讲解

机器学习(八):隐马尔科夫模型

持续更新中。。。

查看更多

机器学习(七):主题模型

持续更新中。。。

simhash与重复信息识别:
http://grunt1223.iteye.com/blog/964564

机器学习(六):EM

持续更新中。。。