从本系列文章开始,作者正式开始研究Python深度学习、神经网络及人工智能相关知识。前五篇文章讲解了神经网络基础概念、Theano库的安装过程及基础用法、theano实现回归神经网络、theano实现分类神经网络、theano正规化处理,这篇文章讲解神经网络的评价指标、特征标准化和特征选择,均是基础性知识。主要是学习'莫烦大神' 网易云视频的在线笔记,后面随着深入会讲解具体的项目及应用。基础性文章和在线笔记,希望对您有所帮助,本系列作者采用一篇基础一篇代码的形式讲解,也建议大家一步步跟着学习,同时文章中存在错误或不足之处,还请海涵~ 前文参考: [Python人工智能] 一.神经网络入门及theano基础代码讲解 [Python人工智能] 五.theano实现神经网络正规化Regularization处理 一. 神经网络评价指标
1.误差(Error) 先用误差评价神经网络,如下图所示,随着训练时间增长,预测误差会不断减小,得到更为准确的答案,最后误差会趋近于水平。 2.精准度(Accuracy) 精准度是指预测结果与真实结果的准确率,接近100%是最好的结果。例如,神经网络中分类问题,100个样本中有90个分类正确,则其预测精准度为90%。通过可以使用精准度预测分类问题,那么,如果是回归问题呢?如何评价连续值的精准度呢?我们使用R2 Score值来进行。 3.R2 Score 在评价回归模型时,sklearn中提供了四种评价尺度,分别为mean_squared_error、mean_absolute_error、explained_variance_score 和 r2_score。 (1) 均方差(mean_squared_error) (2) 平均绝对值误差(mean_absolute_error) (3) 可释方差得分(explained_variance_score) (4) 中值绝对误差(Median absolute error) (5) R2 决定系数(拟合优度) 模型越好:r2→1,模型越差:r2→0。Sklearn代码调用如下:
如F1 Score值,用于测量不均衡数据的精度。 过拟合问题: 有时候意外猝不及防,作业题明明会做,但是考试却不理想,因为我们只复习了作业题,而没有深入拓展作业反映的知识。这样的问题也会发生在机器学习中,我们称为过拟合。简言之,过拟合就是训练样本得到的输出和期望输出基本一致,但是测试样本的输出和测试样本的期望输出相差却很大 。当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了。这意味着训练数据中的噪音或者随机波动也被当做概念被模型学习了。而问题就在于这些概念不适用于新的数据,从而导致模型泛化性能的变差。 下图是经典的误差曲线,红色曲线为训练误差,黑色曲线为测试误差,训练误差校友测试误差,但由于过于依赖平时作业,考试成绩不理想,没把知识拓展开来。 机器学习中解决过拟合方法有很多,常用的包括L1/L2 Regularization(正规化)、Dropout等。
二. 特征标准化特征标准化(Feature Normalization)又称为正常化或归一化。为什么需要进行特征标准化呢? 为了让机器学习更好地消化,我们需要对数据动些手脚,这就包括特征标准化。现实中,数据来自不同的地方,有不同的规格,被不同人采集。比如房价预测数据,房屋特征可能包括:离市中心距离、楼层数目、房屋面积、所在城市等。
接着需要对误差进行数据处理,使之变成进步的阶梯,然后反向传递a、b、c,提升下一次的精确度。 那么,这些概念和标准化又有什么关系呢? 我们可以把 a、b、c 想象成三个人,他们共同努力解决一个问题。在该问题中,a工作时总是不知道发生了什么,b的能力适中,c的能力最强。老板看了以后,说你们的结果和我期望的还有些差距,你们快去缩小差距。老板给出的要求是缩小差距,可是a、b、c不知道如何缩小差距,不知道差距在哪?他们只好平分任务,c很快就完成了,b要慢点,a最慢,但总时间很长,c、b需要等a把工作完成才给老板看结果。
minmax normalization标准化方法代码如下(参考前文):
三. 特征选择这里使用机器学习的分类器作为贯穿特征选择的例子,分类器只有你在提供好特征时,才能发挥出最好效果,这也意味着找到好的特征,才是机器学习能学好的重要前提。那么,如何区分哪些是好的特征(good feature)?你怎么知道特征是好还是坏呢? 我们在用特征描述一个物体,比如A和B两种物体中,包括两个属性长度和颜色。然后用这些属性描述类别,好的特征能够让我们更轻松的辨别出相应特征所代表的类别,而不好的特征会混乱我们的感官,带来一些没用的信息,浪费计算资源。 避免无意义的信息:
然后我们将它们用数据形式展现出来,假设只有两种颜色(偏黄、偏白),用红色表示金毛,蓝色表示吉娃娃,两种狗所占比例各为一半。该数据说明:给你一只毛色偏黄的特征,你是无法判断这只狗是金毛还是吉娃娃的,这就意味着通过毛色判断两种狗的品种是不恰当的,这个特征在区分品种上没有起到作用,我们要避免这种无意义的特征信息。
import matplotlib.pyplot as plt gold_height = 40 + 10 * np.random.randn(gold) 如下图所示,高度为50的红色这组数据中,基本上判断这只狗就是金毛,同样高度大于50的也是金毛;而当数据为20时,我们能够说它很可能就是吉娃娃;而高度为30的范围,我们很难判断它是金毛还是吉娃娃,因为两种狗都存在而且数量差别不大。
有时候,我们会有很多特征信息数据,而有些特征虽然名字不同,但描述的意义却相似,比如描述距离的公里和里两种单位,虽然它们在数值上并不重复,但都表示同一个意思。在机器学习中,特征越多越好,但是把这两种信息都放入机器学习中,它并没有更多的帮助。 避免复杂性特征: |
|
来自: LibraryPKU > 《机器学习》