A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【郑州校区】机器学习第六天笔记分享
机器学习第六天:
        主要内容:决策树算法
回顾机器学习第五天内容:
        Pandas:Series一维数据
                                import pandas as pd
                                pd.Series(可迭代对象-list、tuple、dict、set不可行,index=[])
                                series1.索引
                                print S.index S.values
                                print head
                   Dataframe二维数据:
                                数据要求是二维矩阵
                                import pandas as pd
                                pd.Dataframe(矩阵数据,index=,colume=)
                                print dataframe1["列"]
                                print dataframe1.ix["行","列"]
                                isnull fill_na drop_na(axis=0,axis=1)
                                describe()---四分位数
        Matplotlib:
                import matplotlib.pyplot as plt
                plt.plot(X,y)
                #面向过程
                plt.figure()
                plt.sca()
                plt.scatter()
                plt.title()
                plt.xlabel()
                plt.legend()
                plt.grid()
                plt.show()
                #面向对象
                fig=plt.figure()
                ax1=fig.add_subplot(221)
                ax2=fig.add_subplot(222)
                ax3=fig.add_subplot(223)
                ax4=fig.add_subplot(224)
                ax1.plot(X,y)
                ax2.scatter(X,y)
                ax3.hist()
                ax4.boxplot()
                ax1.set_title()
                ax1.set_xlable()
                ax1.set_ylabel()
                ax1.legend()
                plt.show()
        Scipy:数值计算、物理应用、线性代数运算、信号的运算
机器学习:
        概念:通过CPU或GPU计算利用经验改善计算机系统自身的性能。
        机器学习任务分类:
                是否有类标签:监督学习和非监督学习
                监督学习:是否类标签是连续值的问题,分为回归和分类
                        分类:2分类(西瓜好坏)、3分类、多分类(手写体识别)
                非监督学习:聚类:
                                                根据特征之间的相似性或相异性将数据划分为不同的组,组内的相似性高,
                                        组间的相异性高。
                                        降维:主成分分析法(特征值和特征向量部分)、SVD奇异值分解法
                半监督学习:基于聚类的假设,属性或特征相似的部分会通过距离聚类聚集在一起,不相似
                的或者差异性比较大的会分成不同的组。
                        纯半监督学习、直推学习
                强化学习:解决连续型决策的问题
                迁移学习:
        机器学习的处理问题的流程:
                1.数据角度---有标签数据(无监督、有监督)
                2.业务角度---是否有预测---有预测--->监督学习-->根据预测值是否连续或离散--->分类或回归
                                                                没有预测--->非监督学习
        构建机器学习问题的流程:
                准备数据,导入数据集
                特征工程(数据预处理--对数据清洗或数据归一化(去量纲)、特征处理)
                数据切分---训练集和测试集
                模型训练(训练集+机器学习算法)
                类标签预测--通过测试数据X灌入训练好的模型中得到一个预测值Y1
                形成误差|Y-Y1|
                模型训练的过程中使得模型误差变小
                评价指标:误差--训练误差、测试误差、泛化误差、准确率、错误率
决策树算法学习:       
        监督学习模型----分类
        树---树根、树枝和树叶
        决策树算法的思路:
                利用树的结构,将数据集中的特征(属性)划分为树中的分支节点
                而数据集中类别标签对应的就是树的叶子节点。
        电商数据案例:
                数据集:电商数据集
                样本:1024个样本
                特征:机器学习的LabelEncoder编码
                        年龄:青年0,中年1,老年2
                        收入:高0、中1、低2
                        学生:是0、否1
                        信誉:良0、优1
                                机器学习中one-hot编码(独热编码)
                                        青年 中年 老年
                                        0     0     1
                                        0     1     0
                                        1     0     0
                类别标签:
                        用户是否购买0or不购买1
                提出需求:
                        如何对客户进行分类?-----用户是否购买or不购买---基于规则建树
                        通过分析给出销售人员一些建议--------通过定量的方法给出树中每个节点的数值,通过比例关系给出销售人员意见
                解决需求:
                        数据+算法(分类)---->模型----->预测---->模型泛化性能更佳
                第一种方法:基于规则的就建树
                        1.明确的是那个属性或特征是根节点或叶子节点----根据顺序选取
                        2.随机选择根节点的特征或叶子结点的特征
                        3.选择--年龄(Age)---中年1--得到叶子结点的特征
                                                                青年0--收入---学生--叶子结点
                                                                老年2--收入---学生--信誉--叶子节点
               
构建决策树的三要素:
                1.特征选择----信息熵或信息增益gini系数来选择特征
                2.决策树的生成---ID3算法(信息增益) C4.5算法(gini系数)
                3.决策树的剪枝---如果决策树产生了过拟合
                                                 过拟合:数据对训练集效果好,对未知数据效果很差
                                          ---先剪枝、后剪枝
        信息熵:信息的不确定性度量,熵越大不确定性越大,通常每种可能性相同的时候,熵最大的
                结论:在构建决策树的过程中,希望选择信息熵比较小的,因为信息熵小对应的信息纯度越高
                信息的不确定性越小,确定性越大。
        第二种建树的方法:基于信息熵和信息增益建立决策树
                信息熵:对信息的不确定性度量
                如果每一事件发生的概率都相等(均匀分布),此时熵最大
                熵最大,不确定性越大,确定性越小,信息纯度越低
                熵越小,不确定性越小,确定性越大,信息纯度越高
                如何根据熵建立一颗决策树?
                        ---选择熵比较小的特征或者属性作为分支节点
                        ---原因:因为熵小,信息纯度越高
                        ---定义:H(x)=-sum(pilog(pi))
                ID3算法:
                        信息增益:总体的信息熵-以某一个特征作为划分标准的信息熵
                        计算公式:Gain(A)=I(parent)-H(A)
                                          总体信息熵不会改变的
                                          H(age)代表的是以年龄为节点的信息熵的值
                                          H(income)代表的是以收入作为划分节点的信息熵
                        目的:选择特征或属性进行节点划分
                                  选取方式:选择信息增益比较大的作为分支节点
                        作用:通过节点来划分树结构获取信息量
                        假设:Gain(age)>Gian(income)>Gain("sex")
                                  选择方式:优先选择年龄、收入、性别
                ID3算法原理:
                        输入:数据集
                        输出:决策树
                        算法:
                                1.计算信息增益,选择信息增益比较大的特征作为当前的划分节点
                                2.在已有的特征集合中去掉已经选择过的特征
                                AT={A}-{a}
                                2.继续在剩余的节点中计算信息增益比较大的,作为下一个划分节点
                                4.直到所有的节点都划分为叶子节点
                        注意:计算信息增益时候,将所有特征或属性的信息增益计算出来了,只需要排序和选择就可以。
                迭代建树的停止条件:
                        1.给定节点所有的样本属于同一个类别
                        2.没有剩余的属性用于划分,只需要通过多数表决的方法决定剩余节点
                        3.给定一个信息增益的阈值,通过该阈值判断是否迭代停止
                        给定迭代次数:在python的sklearn中下属三种情况都是参数,可以动态调整
                                max_depth 树的深度
                                min_sample_leaf根据叶子结点所包含的元素个数决定是否迭代停止
                                min_sample_split根据分支节点含有的样本数决定是否迭代停止
                C4.5算法:
                        在ID3算法的基础上增加了信息增益率作为划分节点的依据
                        优势:规避掉信息增益比较大或小的时候会倾向于属性多的情形
                                  对连续值处理非常好的
                                  对决策树通过剪枝减小复杂度(过拟合)
                                  能够对不完整数据进行处理
                CART树算法:选择划分的节点是根据gini系数划分
                                        在Python的sklearn中默认使用gini系数作为划分的准则
                                        属于一种贪心算法
        决策树算法极易产生过拟合的情况:
                过拟合:数据在训练数据集上的表现比较好,但是在新数据或测试数据上表现比较差或一般的情况,称之为过拟合
                解决办法:剪枝技术
                                  分类技术:先剪枝(预剪枝)和后剪枝
                                为什么需要进行剪枝?
                                        答:决策树很容易产生过拟合,需要进行剪枝降低决策树的复杂程度
                                        根据剪枝前后的分类误差率的变化决定是否进行剪枝
                                先剪枝:
                                        在实际生产中,确是比较常见的一种手段
                                        预剪枝,在建立决策树的过程中进行剪枝
                                        通过选择不同的信息不纯度的阈值(信息增益)
                                                (1)如果阈值设置的过大,容易产生欠拟合(决策树没有生产完全)
                                                (2)如果阈值设置的过小,容易产生过拟合(近似于未剪枝技术)
                                                上述给定的a值选取的过程更多的是靠经验
                                后剪枝:
                                        决策树已经形成之后,进行剪枝的一种技术
                                        如果一个节点能够替换一颗子树,根据分类的误差率时候减少来进行评判
                                        通过充分生长的一棵树中自底向上的进行树的剪枝
                                                (1)用新的叶子结点替换原来的子树
                                                新的叶子节点的类别根据数据集中少数服从多数的原则选取
                                                (2)用子树中最常见的分支节点代替子树
                                                **如何评判剪枝效果?MEP最小错误率剪枝技术
                                                **选择子树或节点的时候,需要产生若干颗子树或节点计算所有子树或节点
                                                        的错误率,从中选择错误率较小的那个量
                                        了解剪枝对应的数学原理---剪枝系数
                                两种剪枝技术的选择?
                                        现在工业界中通常选择先剪枝技术,计算复杂度较小,容易实现
                                        在理论上如果模型的泛化性能好的话,建议采用后剪枝技术,但是会带来复杂度的提升
                        决策树的特点:
                                优点:直观、便于理解
                                          执行效率高,执行一次可以多次使用
                                缺点:对连续值处理不好(Cart树中提供了二分的方法)
                                          实际分类中往往只能处理一个字段
        利用电商数据集巩固ID3算法的流程
                1.计算总体的信息熵
                2.计算分支节点的信息熵
                3.分支节点的信息增益=总体的信息熵-分支节点的信息熵
                4.根据分支节点的信息增益进行大小排序,选择较大的信息增益值作为分支节点,依次递归选择分支节点
                可以对不之前基于规则的建树,利用信息增益更加准确和高效


决策树实战:
                1.手写体识别实战
                        构建机器学习处理问题的流程:
                                1.准备数据,导入数据集
                                2.数据探索性分析,EDA分析
                                3.特征工程(数据处理、特征的预处理)
                                4.数据切分:训练集+测试集,训练集占比例高的
                                5.模型训练(训练集+机器学习算法---决策树算法)
                                6.利用测试数据进行预测---通过测试数据X灌入算法中得到一个预测值Y1
                                7.|Y-Y1|误差,模型训练过程中使得模型的误差变小
                                8.模型评价:准确率、错误率、误差
                        准备手写体0,1,2----灰度化和二值化处理----32*32矩阵
                        转化为1*1024像素矩阵----灌入机器学习算法中---模型
                        ---形成模型从而可以预测其他手写体数字
                        注意:在Python对应的机器学习库sklearn中已经集成好了手写体数据,只需要
                        导入对应库中的手写体数据即可。
                2.相亲数据集实战
                3.iris鸢尾花数据分类实战
                4.泰坦尼克号问题实战
                        需要结合sklearn和pandas的内容
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马