版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章关联规则本章目录01
关联规则概述02Apriori算法03FP-Growth算法1.关联规则概述01
关联规则概述02Apriori算法03FP-Growth算法1.关联规则概述关联规则关联规则(AssociationRules)反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。关联规则可以看作是一种IF-THEN关系。假设商品A被客户购买,那么在相同的交易ID下,商品B也被客户挑选的机会就被发现了。1.关联规则概述有没有发生过这样的事:你出去买东西,结果却买了比你计划的多得多的东西?这是一种被称为冲动购买的现象,大型零售商利用机器学习和Apriori算法,让我们倾向于购买更多的商品。1.关联规则概述购物车分析是大型超市用来揭示商品之间关联的关键技术之一。他们试图找出不同物品和产品之间的关联,这些物品和产品可以一起销售,这有助于正确的产品放置。买面包的人通常也买黄油。零售店的营销团队应该瞄准那些购买面包和黄油的顾客,向他们提供报价,以便他们购买第三种商品,比如鸡蛋。因此,如果顾客买了面包和黄油,看到鸡蛋有折扣或优惠,他们就会倾向于多花些钱买鸡蛋。这就是购物车分析的意义所在。1.关联规则概述置信度:
表示你购买了A商品后,你还会有多大的概率购买B商品。支持度:
指某个商品组合出现的次数与总次数之间的比例,支持度越高表示该组合出现的几率越大。提升度:
提升度代表商品A的出现,对商品B的出现概率提升了多少,即“商品A的出现,对商品B的出现概率提升的”程度。
1.关联规则概述
=3/42.Apriori算法01
关联规则概述02Apriori算法03FP-Growth算法2.Apriori算法Apriori算法利用频繁项集生成关联规则。它基于频繁项集的子集也必须是频繁项集的概念。频繁项集是支持值大于阈值(support)的项集。Apriori算法就是基于一个先验:如果某个项集是频繁的,那么它的所有子集也是频繁的。2.Apriori算法
2.Apriori算法算法案例
第一次迭代:假设支持度阈值为2,创建大小为1的项集并计算它们的支持度。订单编号项目T1134T2235T31235T425T5135项集支持度{1}3{2}3{3}4{4}1{5}4C12.Apriori算法算法案例
可以看到,第4项的支持度为1,小于最小支持度2。所以我们将在接下来的迭代中丢弃{4}。我们得到最终表F1。项集支持度{1}3{2}3{3}4{4}1{5}4C1项集支持度{1}3{2}3{3}4{5}4F12.Apriori算法算法案例
第2次迭代:接下来我们将创建大小为2的项集,并计算它们的支持度。F1中设置的所有项项集支持度{1,2}1{1,3}3{1,5}2{2,3}2{2,5}3{3,5}3F2项集支持度{1,3}3{1,5}2{2,3}2{2,5}3{3,5}3C2订单编号项目T1134T2235T31235T425T51352.Apriori算法算法案例
项集支持度{1,2}1{1,3}3{1,5}2{2,3}2{2,5}3{3,5}3F2项集支持度{1,3}3{1,5}2{2,3}2{2,5}3{3,5}3C2再次消除支持度小于2的项集。在这个例子中{1,2}。现在,让我们了解什么是剪枝,以及它如何使Apriori成为查找频繁项集的最佳算法之一。订单编号项目T1134T2235T31235T425T51352.Apriori算法算法案例
剪枝:我们将C3中的项集划分为子集,并消除支持值小于2的子集。项集在F2里?{1,2,3},{1,2},{1,3},{2,3}否{1,2,5},{1,2},{1,5},{2,5}否{1,3,5},{1,5},{1,3},{3,5}是{2,3,5},{2,3},{2,5},{3,5}是C3订单编号项目T1134T2235T31235T425T51352.Apriori算法算法案例
第三次迭代:我们将丢弃{1,2,3}和{1,2,5},因为它们都包含{1,2}。F3项集支持度{1,3,5}2{2,3,5}2订单编号项目T1134T2235T31235T425T51352.Apriori算法算法案例
第四次迭代:使用F3的集合,我们将创建C4。F3项集支持度{1,3,5}2{2,3,5}2C4项集支持度{1,2,3,5}1订单编号项目T1134T2235T31235T425T51352.Apriori算法算法案例
因为这个项集的支持度小于2,所以我们就到此为止,最后一个项集是F3。注:到目前为止,我们还没有计算出置信度。使用F3,我们得到以下项集:对于I={1,3,5},子集是{1,3},{1,5},{3,5},{1},{3},{5}对于I={2,3,5},子集是{2,3},{2,5},{3,5},{2},{3},{5}项集支持度{1,3,5}2{2,3,5}22.Apriori算法算法案例
应用规则:我们将创建规则并将它们应用于项集F3。现在假设最小置信值是60%。对于I的每个子集S,输出规则S–>(I-S)(表示S推荐I-S)如果:支持度(l)/支持度(S)>=最小配置值2.Apriori算法算法案例
{1,3,5}规则1:{1,3}–>({1,3,5}–{1,3})表示1&3–>5置信度=支持度(1,3,5)/支持度(1,3)=2/3=66.66%>60%因此选择了规则1规则2:{1,5}–>({1,3,5}–{1,5})表示1&5–>3置信度=支持度(1,3,5)/支持度(1,5)=2/2=100%>60%因此选择了规则2项集支持度{1,3,5}2{2,3,5}22.Apriori算法算法案例
规则3:{3,5}–>({1,3,5}–{3,5})表示3&5–>1置信度=支持度(1,3,5)/支持度(3,5)=2/3=66.66%>60%因此选择规则3规则4:{1}–>({1,3,5}–{1})表示1–>3&5置信度=支持度(1,3,5)/支持度(1)=2/3=66.66%>60%因此选择规则4这就是在Apriori算法中创建规则的方法。可以为项集{2,3,5}实现相同的步骤。2.Apriori算法算法案例
规则5:{3}–>({1,3,5}–{3})表示3–>1和5置信度=支持度(1,3,5)/支持度(3)=2/4=50%<60%规则5被拒绝规则6:{5}–>({1,3,5}–{5})表示5–>1和3置信度=支持度(1,3,5)/支持度(5)=2/4=50%<60%规则6被拒绝2.Apriori算法Apriori算法缺点
Apriori在计算的过程中有以下几个缺点:可能产生大量的候选集。因为采用排列组合的方式,把可能的项集都组合出来了;每次计算都需要重新扫描数据集,来计算每个项集的支持度。3.FP-Growth算法01
关联规则概述02Apriori算法03FP-Growth算法3.FP-Growth算法FP-growth(FrequentPatternGrowth)算法思想
FP-growth(频繁模式增长)算法是韩家炜老师在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-Tree),但仍保留项集关联信息。该算法是对Apriori方法的改进。生成一个频繁模式而不需要生成候选模式。FP-growth算法以树的形式表示数据库,称为频繁模式树或FP-tree。此树结构将保持项集之间的关联。数据库使用一个频繁项进行分段。这个片段被称为“模式片段”。分析了这些碎片模式的项集。因此,该方法相对减少了频繁项集的搜索。3.FP-Growth算法FP-growth算法思想
FP-growth算法是基于Apriori原理的,通过将数据集存储在FP(FrequentPattern)树上发现频繁项集,但不能发现数据之间的关联规则。FP-growth算法只需要对数据库进行两次扫描,而Apriori算法在求每个潜在的频繁项集时都需要扫描一次数据集,所以说Apriori算法是高效的。其中算法发现频繁项集的过程是:(1)构建FP树;(2)从FP树中挖掘频繁项集。3.FP-Growth算法FP-growth算法思想
该算法和Apriori算法最大的不同有两点:第一,不产生候选集第二,只需要两次遍历数据库,大大提高了效率。3.FP-Growth算法FP-Tree(FrequentPatternTree)FP树(FP-Tree)是由数据库的初始项集组成的树状结构。FP树的目的是挖掘最频繁的模式。FP树的每个节点表示项集的一个项。根节点表示null,而较低的节点表示项集。在形成树的同时,保持节点与较低节点(即项集与其他项集)的关联。3.FP-Growth算法算法步骤FP-growth算法的流程为:首先构造FP树,然后利用它来挖掘频繁项集。在构造FP树时,需要对数据集扫描两遍,第一遍扫描用来统计频率,第二遍扫描至考虑频繁项集。3.FP-Growth算法FP-Tree(FrequentPatternTree)FP树(FP-Tree)是由数据库的初始项集组成的树状结构。FP树的目的是挖掘最频繁的模式。FP树的每个节点表示项集的一个项。根节点表示null,而较低的节点表示项集。在形成树的同时,保持节点与较低节点(即项集与其他项集)的关联。3.FP-Growth算法算法案例设置支持度阈值为50%,置信度阈值为60%交易编号项目T1I1,I2,I3T2I2,I3,I4T3I4,I5T4I1,I2,I4T5I1,I2,I3,I5T6I1,I2,I3,I4项目数量I14I25I34I44I52项目数量I25I14I34I44项集数量排序统计每个项目的数量支持度阈值=50%=>0.5*6=3=>最小子项目数量=33.FP-Growth算法构建FP树1.考虑到根节点为空(null)。Null①创建树的根。根由null表示。3.FP-Growth算法构建FP树1.考虑到根节点为空(null)。2.T1:I1、I2、I3的第一次扫描包含三个项目{I1:1}、{I2:1}、{I3:1},其中I2作为子级链接到根,I1链接到I2,I3链接到I1。(这里根据项集的数量排序成I2、I1、I3)Nulll2:1l1:1l3:1②再次扫描数据库并检查事务。检查第一个事务并找出其中的项集。计数最大的项集在顶部,计数较低的下一个项集,以此类推。这意味着树的分支是由事务项集按计数降序构造的。3.FP-Growth算法构建FP树1.考虑到根节点为空(null)。2.T1:I1、I2、I3的第一次扫描包含三个项目{I1:1}、{I2:1}、{I3:1},其中I2作为子级链接到根,I1链接到I2,I3链接到I1。3.T2:包含I2、I3和I4,其中I2链接到根,I3链接到I2,I4链接到I3。但是这个分支将共享I2节点,就像它已经在T1中使用一样。将I2的计数增加1,I3作为子级链接到I2,I4作为子级链接到I3。计数是{I2:2},{I3:1},{I4:1}。Nulll2:2l1:1l3:1l3:1l4:1③3.FP-Growth算法构建FP树4.T3:I4、I5。类似地,在创建子级时,一个带有I5的新分支链接到I4。5.T4:I1、I2、I4。顺序为I2、I1和I4。I2已经链接到根节点,因此它将递增1。同样地,I1将递增1,因为它已经链接到T1中的I2,因此{I2:3},{I1:2},{I4:1}。6.T5:I1、I2、I3、I5。顺序为I2、I1、I3和I5。因此{I2:4},{I1:3},{I3:2},{I5:1}。7.T6:I1、I2、I3、I4。顺序为I2、I1、I3和I4。因此{I2:5},{I1:4},{I3:3},{I41}。Nulll4:1l2:5l1:4l3:1l5:1l3:3l4:1l5:1l4:13.FP-Growth算法FP-tree的挖掘总结如下:1.不考虑最低节点项I5,因为它没有达到最小支持计数,因此将其删除。2.下一个较低的节点是I4。I4出现在两个分支中,{I2,I1,I3,I4:1},{I2,I3,I4:1}。因此,将I4作为后缀,前缀路径将是{I2,I1,I3:1},{I2,I3:1}。这形成了条件模式基。3.将条件模式基视为事务数据库,构造FP树。这将包含{I2:2,I3:2},不考虑I1,因为它不满足最小支持计数。Nulll4:1l2:5l1:4l3:1l5:1l3:3l4:1l5:1l4:1“条件模式基”指的是以要挖掘的节点为叶子节点,自底向上求出FP子树,然后将FP子树的祖先节点设置为叶子节点之和。3.FP-Growth算法4.此路径将生成所有频繁模式的组合:{I2,I4:2},{I3,I4:2},{I2,I3,I4:2}5.对于I3,前缀路径将是:{I2,I1:3},{I2:1},这将生成一个2节点FP树:{I2:4,I1:3},并生成频繁模式:{I2,I3:4},{I1:I3:3},{I2,I1,I3:3}。6.对于I1,前缀路径是:{I2:4}这将生成一个单节点FP树:{I2:4},并生成频繁模式:{I2,I1:4}。Nulll4:1l2:5l1:4l3:1l5:1l3:3l4:1l5:1l4:13.FP-Growth算法项目条件模式基条件FP树生成的频繁集I4{I2,I1,I3:1},{I2,I3:1}{I2:2,I3:2}{I2,I4:2},{I3,I4:2},{I2,I3,I4:2}I3{I2,I1:3},{I2:1}{I2:4,I1:3}{I2,I3:4},{I1:I3:3},{I2,I1,I3:3}I1{I2:4}{I2:4}{I2,I1:4}下面给出的图描绘了与条件节点l3相关联的条件FP树。项目支持度链表l24l13Nulll1:3l2:3,1根据条件FP树,我们可以进行全排列组合,得到挖掘出来的频繁模式(这里要将商品本身,如I4也算进去,每个商品挖掘出来的频繁模式必然包括这商品本身)3.FP-Growth算法FP-Growth算法的优点1.与Apriori算法相比,该算法只需对数据库进行两次扫描2.该算法不需要对项目进行配对,因此速度更快。3.数据库存储在内存中的压缩版本中。4.对长、短频繁模式的挖掘具有高效性和可扩展性。FP-Growth算法的缺点1.FP-Tree比Apriori更麻烦,更难构建。2.可能很耗资源。3.当数据库较大时,算法可能不适合共享内存1FP-Growth算法演示二-------构造FP树TidItems1I1,I2.I52I2,I43I2,I34I1,I2,I45I1,I36I2,I37I1,I38I1,I2,I3,I59I1,I2,I3事务数据库的建立扫描事务数据库得到频繁项目集FI1I2I3I4I567622定义minsup=20%,即最小支持度为2,重新排列FI2I1I3I4I5766223.FP-Growth算法TidItems1I2,I1,I52I2,I43I2,I34I2,I1,I45I1,I36I2,I37I1,I38I2,I1,I3,I59I2,I1,I3重新调整事务数据库3.FP-Growth算法构建FP树
TidItems1I2,I1,I52I2,I43I2,I34I2,I1,I45I1,I36I2,I37I1,I38I2,I1,I3,I59I2,I1,I3rootI2:1I1:2I5:11I4:13I3:142I4:1I1:1I3:1522263I3:1I5:17423.FP-Growth算法rootI2:I1:I5:14I4:1I3:2I4:1I1:2I3:2I3:2I5:17FP树1FP-Growth算法演示----FP-树挖掘挖掘从表头header的最后一个项开始I2I1I3I4I5766223.FP-Growth算法rootI2:I1:I5:14I4:1I3:2I4:1I1:2I3:2I3:2I5:17挖掘I5FP树在FP树中可以看到,从根节点到I5:1的路径有两条:I2:7-->I1:4-->I5:1I2:7-->I14-->I3:2-->I5:1I2:7-->I1:4和I2:7-->I14-->I3:2因为最终到达的节点肯定是I5,所以将i5省略就是i5的条件模式基,记为{I2,I1:1}{I2,I1,I3:1}为什么每个条件模式基的计数为1呢?虽然I2和I1的计数都很大,但是由于I5的计数为1,最终到达I5的重复次数也只能为1。所以条件模式基的计数是根据路径中节点的最小计数来决定的。3.FP-Growth算法rootI2:I1:2I3:2挖掘I5条件FP树1条件模式基:{I2,i1:1}{I2,I1,I3:1}根据条件模式基,我们可以得到该商品的条件FP树因为I3:1小于最小支持度2,所以讲I3:1省略不计,I5的条件FP树记为 {I2:2,I1:2}3.FP-Growth算法项条件模式基条件FP树产生的频繁模式I5{{I2,I1:1},{I2,I1,I3:1}}<I2:2,I1:2>{I2,I5:2},{I1,I5:2},{I2,I1,I5:2}I4{{I2,I1:1},{I2:1}}<I2:2>{I2,I4:2}I3{{I2,I1:2},{I2:2},{I1:2}}<I2:4,I1:2>,<I1:2>{I2,I3:4},{I1,I3:4},{I2,I1,I3:2}I1{{I2:4}}<I2:4>{I2,I1:4}根据条件FP树,我们可以进行全排列组合,得到挖掘出来的频繁模式(这里要将商品本身,如I5也算进去,每个商品挖掘出来的频繁模式必然包括这商品本身)3.FP-Growth算法参考文献
《统计学习方法》,清华大学出版社,李航著,2019年出版《机器学习》,清华大学出版社,周志华著,2016年出版ChristopherM.Bishop,PatternRecognitionandMachineLearning,Springer-Verlag,2006第八章回归本章目录01
线性回归02梯度下降03正则化04回归的评价指标1.线性回归01认识Python01
线性回归02梯度下降03正则化04回归的评价指标监督学习分为回归和分类回归(Regression、Prediction)如何预测上海浦东的房价?未来的股票市场走向?分类(Classification)身高1.85m,体重100kg的男人穿什么尺码的T恤?根据肿瘤的体积、患者的年龄来判断良性或恶性?回归的概念标签连续标签离散线性回归-概念线性回归(LinearRegression)是一种通过属性的线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小化。线性回归-符号约定建筑面积总层数楼层实用面积房价143.7311010536200162.231811837000199.510101704250096.531137431200…………………………
线性回归-算法流程
模型机器学习算法训练数据特征预测结果线性回归-算法流程
损失函数(LossFunction)度量单样本预测的错误程度,损失函数值越小,模型就越好。常用的损失函数包括:0-1损失函数、平方损失函数、绝对损失函数、对数损失函数等。
代价函数(CostFunction)度量全部样本集的平均误差。常用的代价函数包括均方误差、均方根误差、平均绝对误差等。
目标函数(ObjectFunction)代价函数和正则化函数,最终要优化的函数。备注:损失函数的系数1/2是为了便于计算,使对平方项求导后的常数系数为1,这样在形式上稍微简单一些。有些教科书把系数设为1/2,有些设置为1,这些都不影响结果。
线性回归-最小二乘法(LSM)
需要用到向量平方的性质:
线性回归-最小二乘法(LSM)需要用到以下几个矩阵的求导法则:
由于中间两项互为转置:
1.线性回归01
线性回归02梯度下降03正则化04回归的评价指标梯度下降
学习率步长梯度下降的三种形式批量梯度下降(BatchGradientDescent,BGD)梯度下降的每一步中,都用到了所有的训练样本随机梯度下降(StochasticGradientDescent,SGD)梯度下降的每一步中,用到一个样本,在每一次计算之后便更新参数,而不需要首先将所有的训练集求和小批量梯度下降(Mini-BatchGradientDescent,MBGD)梯度下降的每一步中,用到了一定批量的训练样本梯度下降的三种形式批量梯度下降(BatchGradientDescent)梯度下降的每一步中,都用到了所有的训练样本
梯度学习率梯度下降的三种形式随机梯度下降(StochasticGradientDescent)
推导
梯度下降的三种形式随机梯度下降(StochasticGradientDescent)梯度下降的每一步中,用到一个样本,在每一次计算之后便更新参数,而不需要首先将所有的训练集求和
梯度下降的三种形式小批量梯度下降(Mini-BatchGradientDescent)
梯度下降与最小二乘法比较
数据归一化/标准化
梯度
梯度为什么要标准化/归一化?提升模型精度:不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。加速模型收敛:最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。数据归一化/标准化归一化(最大-最小规范化)
将数据映射到[0,1]区间Z-Score标准化
处理后的数据均值为0,方差为1数据归一化的目的是使得各特征对目标变量的影响一致,会将特征数据进行伸缩变化,所以数据归一化是会改变特征数据分布的。数据标准化为了不同特征之间具备可比性,经过标准化变换之后的特征数据分布没有发生改变。就是当数据特征取值范围或单位差异较大时,最好是做一下标准化处理。数据归一化/标准化需要做数据归一化/标准化线性模型,如基于距离度量的模型包括KNN(K近邻)、K-means聚类、感知机和SVM。另外,线性回归类的几个模型一般情况下也是需要做数据归一化/标准化处理的。不需要做数据归一化/标准化决策树、基于决策树的Boosting和Bagging等集成学习模型对于特征取值大小并不敏感,如随机森林、XGBoost、LightGBM等树模型,以及朴素贝叶斯,以上这些模型一般不需要做数据归一化/标准化处理。3.正则化01
线性回归02梯度下降03正则化04回归的评价指标过拟合和欠拟合欠拟合过拟合正合适过拟合的处理1.获得更多的训练数据使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。2.降维即丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)。3.正则化正则化(regularization)的技术,保留所有的特征,但是减少参数的大小(magnitude),它可以改善或者减少过拟合问题。4.集成学习方法集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。通过这张图可以看出,各种不同算法在输入的数据量达到一定级数后,都有相近的高准确度。于是诞生了机器学习界的名言:成功的机器学习应用不是拥有最好的算法,而是拥有最多的数据!
数据决定一切
数据大小准确率欠拟合的处理1.添加新特征当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘组合特征等新的特征,往往能够取得更好的效果。2.增加模型复杂度简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。3.减小正则化系数正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。
正则化(弹性网络)L2正则化可以防止过拟合正则化L1正则化可以产生稀疏模型图上面中的蓝色轮廓线是没有正则化损失函数的等高线,中心的蓝色点为最优解,左图、右图分别为L1、L2正则化给出的限制。
L1正则化是指在损失函数中加入权值向量w的绝对值之和,L1的功能是使权重稀疏在损失函数中加入权值向量w的平方和,L2的功能是使权重平滑。4.回归的评价指标01
线性回归02梯度下降03正则化04回归的评价指标回归的评价指标
回归的评价指标
越接近于1,说明模型拟合得越好参考文献
[1]AndrewNg.MachineLearning[EB/OL].StanfordUniversity,2014./course/ml[2]李航.统计学习方法[M].北京:清华大学出版社,2019.[3]周志华.机器学习[M].北京:清华大学出版社,2016.[4]WEINBERGERK.Distancemetriclearningforlargemarginnearestneighborclassification[J].AdvancesinNeuralInformationProcessingSystems,2006,18.[5]HOERLAE,KENNARDRW.Ridgeregression:applicationstononorthogonalproblems[J].Technometrics,1970,12(1):69–82.[6]TIBSHIRANIR.Regressionselectionandshrinkageviathelasso[J].JournaloftheRoyalStatisticalSocietySeriesB,1996,58(1):267–288.[7]TIBSHIRANIR,BICKELP,RITOVY,etal.Leastabsoluteshrinkageandselectionoperator[J].Software:/tibs/lasso.html,1996.第八章回归-逻辑回归
本章目录01
分类问题02Sigmoid函数03逻辑回归求解04逻辑回归代码实现1.分类问题01
分类问题02Sigmoid函数03逻辑回归求解04逻辑回归代码实现监督学习的最主要类型分类(Classification)身高1.85m,体重100kg的男人穿什么尺码的T恤?根据肿瘤的体积、患者的年龄来判断良性或恶性?根据用户的年龄、职业、存款数量来判断信用卡是否会违约?分类问题标签离散输入变量可以是离散的,也可以是连续的。二分类分类问题12我们先从用蓝色圆形数据定义为类型1,其余数据为类型2;只需要分类1次步骤:①->②①②二分类多分类分类问题1rest12restOne-vs-All(One-vs-Rest)
①②③一对多(一对余)2.Sigmoid函数01
分类问题02Sigmoid函数03逻辑回归求解04逻辑回归代码实现
Sigmoid函数
2.Sigmoid函数
2.Sigmoid函数
2.Sigmoid函数
3.逻辑回归求解01
分类问题02Sigmoid函数03逻辑回归求解04逻辑回归代码实现3.逻辑回归求解
损失函数
代价函数
表示真实值3.逻辑回归求解3.逻辑回归求解
3.逻辑回归求解梯度下降求解过程:
3.逻辑回归求解求解过程:
3.逻辑回归求解求解过程:
没有正则化,过拟合正则化过度,欠拟合适当的正则化正则化:目的是为了防止过拟合
正则化项当λ的值开始上升时,降低了方差。3.逻辑回归求解4.逻辑回归代码实现01
分类问题02Sigmoid函数03逻辑回归求解04逻辑回归代码实现4.逻辑回归代码实现
Sigmoid函数代价函数
4.逻辑回归代码实现正则化
参考文献
[1]HOSMERDW,LEMESHOWS,STURDIVANTRX.Appliedlogisticregression[M].NewJersey:WileyNewYork.2000.[2]AndrewNg.MachineLearning[EB/OL].StanfordUniversity,2014./course/ml[3]李航.统计学习方法[M].北京:清华大学出版社,2019.[4]HastieT.,TibshiraniR.,FriedmanJ.TheElementsofStatisticalLearning[M].NewYork:Springer,2001.[5]CHRISTOPHERM.BISHOP.PatternRecognitionandMachineLearning[M].NewYork:Springer,2006.[6]StephenBoyd,LievenVandenberghe,ConvexOptimization[M].Cambridge:CambridgeUniversityPress,2004.[7]TIBSHIRANIR.Regressionselectionandshrinkageviathelasso[J].JournaloftheRoyalStatisticalSocietySeriesB,1996,58(1):267–288.第八章回归
本章目录01
线性回归02梯度下降03正则化04回归的评价指标1.线性回归01认识Python01
线性回归02梯度下降03正则化04回归的评价指标监督学习分为回归和分类回归(Regression、Prediction)如何预测上海浦东的房价?未来的股票市场走向?分类(Classification)身高1.85m,体重100kg的男人穿什么尺码的T恤?根据肿瘤的体积、患者的年龄来判断良性或恶性?回归的概念标签连续标签离散线性回归-概念线性回归(LinearRegression)是一种通过属性的线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小化。线性回归-符号约定建筑面积总层数楼层实用面积房价143.7311010536200162.231811837000199.510101704250096.531137431200…………………………
线性回归-算法流程
模型机器学习算法训练数据特征预测结果线性回归-算法流程
损失函数(LossFunction)度量单样本预测的错误程度,损失函数值越小,模型就越好。常用的损失函数包括:0-1损失函数、平方损失函数、绝对损失函数、对数损失函数等。
代价函数(CostFunction)度量全部样本集的平均误差。常用的代价函数包括均方误差、均方根误差、平均绝对误差等。
目标函数(ObjectFunction)代价函数和正则化函数,最终要优化的函数。备注:损失函数的系数1/2是为了便于计算,使对平方项求导后的常数系数为1,这样在形式上稍微简单一些。有些教科书把系数设为1/2,有些设置为1,这些都不影响结果。
线性回归-最小二乘法(LSM)
需要用到向量平方的性质:
线性回归-最小二乘法(LSM)需要用到以下几个矩阵的求导法则:
由于中间两项互为转置:
1.线性回归01
线性回归02梯度下降03正则化04回归的评价指标梯度下降
学习率步长梯度下降的三种形式批量梯度下降(BatchGradientDescent,BGD)梯度下降的每一步中,都用到了所有的训练样本随机梯度下降(StochasticGradientDescent,SGD)梯度下降的每一步中,用到一个样本,在每一次计算之后便更新参数,而不需要首先将所有的训练集求和小批量梯度下降(Mini-BatchGradientDescent,MBGD)梯度下降的每一步中,用到了一定批量的训练样本梯度下降的三种形式批量梯度下降(BatchGradientDescent)梯度下降的每一步中,都用到了所有的训练样本
梯度学习率梯度下降的三种形式随机梯度下降(StochasticGradientDescent)
推导
梯度下降的三种形式随机梯度下降(StochasticGradientDescent)梯度下降的每一步中,用到一个样本,在每一次计算之后便更新参数,而不需要首先将所有的训练集求和
梯度下降的三种形式小批量梯度下降(Mini-BatchGradientDescent)
梯度下降与最小二乘法比较
数据归一化/标准化
梯度
梯度为什么要标准化/归一化?提升模型精度:不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。加速模型收敛:最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。数据归一化/标准化归一化(最大-最小规范化)
将数据映射到[0,1]区间Z-Score标准化
处理后的数据均值为0,方差为1数据归一化的目的是使得各特征对目标变量的影响一致,会将特征数据进行伸缩变化,所以数据归一化是会改变特征数据分布的。数据标准化为了不同特征之间具备可比性,经过标准化变换之后的特征数据分布没有发生改变。就是当数据特征取值范围或单位差异较大时,最好是做一下标准化处理。数据归一化/标准化需要做数据归一化/标准化线性模型,如基于距离度量的模型包括KNN(K近邻)、K-means聚类、感知机和SVM。另外,线性回归类的几个模型一般情况下也是需要做数据归一化/标准化处理的。不需要做数据归一化/标准化决策树、基于决策树的Boosting和Bagging等集成学习模型对于特征取值大小并不敏感,如随机森林、XGBoost、LightGBM等树模型,以及朴素贝叶斯,以上这些模型一般不需要做数据归一化/标准化处理。3.正则化01
线性回归02梯度下降03正则化04回归的评价指标过拟合和欠拟合欠拟合过拟合正合适过拟合的处理1.获得更多的训练数据使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。2.降维即丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)。3.正则化正则化(regularization)的技术,保留所有的特征,但是减少参数的大小(magnitude),它可以改善或者减少过拟合问题。4.集成学习方法集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。通过这张图可以看出,各种不同算法在输入的数据量达到一定级数后,都有相近的高准确度。于是诞生了机器学习界的名言:成功的机器学习应用不是拥有最好的算法,而是拥有最多的数据!
数据决定一切
数据大小准确率欠拟合的处理1.添加新特征当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘组合特征等新的特征,往往能够取得更好的效果。2.增加模型复杂度简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。3.减小正则化系数正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。
正则化(弹性网络)L2正则化可以防止过拟合正则化L1正则化可以产生稀疏模型图上面中的蓝色轮廓线是没有正则化损失函数的等高线,中心的蓝色点为最优解,左图、右图分别为L1、L2正则化给出的限制。
L1正则化是指在损失函数中加入权值向量w的绝对值之和,L1的功能是使权重稀疏在损失函数中加入权值向量w的平方和,L2的功能是使权重平滑。4.回归的评价指标01
线性回归02梯度下降03正则化04回归的评价指标回归的评价指标
回归的评价指标
越接近于1,说明模型拟合得越好参考文献
[1]AndrewNg.MachineLearning[EB/OL].StanfordUniversity,2014./course/ml[2]李航.统计学习方法[M].北京:清华大学出版社,2019.[3]周志华.机器学习[M].北京:清华大学出版社,2016.[4]WEINBERGERK.Distancemetriclearningforlargemarginnearestneighborclassification[J].AdvancesinNeuralInformationProcessingSystems,2006,18.[5]HOERLAE,KENNARDRW.Ridgeregression:applicationstononorthogonalproblems[J].Technometrics,1970,12(1):69–82.[6]TIBSHIRANIR.Regressionselectionandshrinkageviathelasso[J].JournaloftheRoyalStatisticalSocietySeriesB,1996,58(1):267–288.[7]TIBSHIRANIR,BICKELP,RITOVY,etal.Leastabsoluteshrinkageandselectionoperator[J].Software:/tibs/lasso.html,1996.第九章-人工神经网络
本章目录01
发展历史02感知机算法03BP算法1.人工神经网络发展历史01
发展历史02感知机算法03BP算法1.人工神经网络发展历史发展历史1943年,心理学家McCulloch和逻辑学家Pitts建立神经网络的数学模型,MP模型神经元数学模型神经元生理结构输入层输出层隐藏层1.人工神经网络发展历史1960年代,人工网络得到了进一步地发展感知机和自适应线性元件等被提出。M.Minsky仔细分析了以感知机为代表的神经网络的局限性,指出了感知机不能解决非线性问题,这极大影响了神经网络的研究。单层感知机的数学模型......
1.人工神经网络发展历史1982年,加州理工学院J.J.Hopfield教授提出了Hopfield神经网络模型,引入了计算能量概念,给出了网络稳定性判断。离散Hopfield神经网络模型……1.人工神经网络发展历史1986年,Rumelhart和McClelland为首的科学家提出了BP(BackPropagation)神经网络的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,目前是应用最广泛的神经网络。BP神经网络模型输入层输出层隐层..................1.人工神经网络发展历史极限学习机(ExtremeLearningMachine,ELM),是由黄广斌提出的用于处理单隐层神经网络的算法优点:1.学习精度有保证2.学习速度快
11
1个输出层神经元
2.感知器算法01
发展历史02感知机算法03BP算法2.感知机算法
需要学习的目标函数是
......输入权重偏置求和求和输出
2.感知机算法
2.感知机算法算法演示分类问题
单层感知机只能处理线性问题,无法处理非线性问题!!2.感知器算法01
发展历史02感知机算法03BP算法3.BP算法输入层输出层隐层..................
隐层神经元激活函数神经网络模型3.BP算法常见激活函数选择:Sigmoid函数Tanh函数ReLU函数LeakyReLU函数激活函数3.BP算法最常用Sigmoid函数的优缺点:优点:1.函数处处连续,便于求导2.可将函数值的范围压缩至[0,1],可用于压缩数据,且幅度不变3.便于前向传输缺点:1.在趋向无穷的地方,函数值变化很小,容易出现梯度消失,不利于深层神经
的反馈传输2.幂函数的梯度计算复杂3.收敛速度比较慢3.BP算法主要步骤
第一步,对样本明确预测输出值与损失函数第二步,明确参数调整策略第三步,计算输出层阈值的梯度第四步,计算隐层到输出层连接权值的梯度第五步,计算隐层阈值的梯度第六步,计算输入层到隐层连接权值的梯度第七步,引出归纳结论3.BP算法第一步,明确损失函数
输入层输出层隐层..................
预测均方误差
3.BP算法算法步骤
第二步,明确参数调整策略输入层输出层隐层..................3.BP算法
利用链式法则,可得
其中,所以,更新公式
输入层输出层隐层..................
对阈值求导
3.BP算法
利用链式法则,可得
其中,可得综上可得
输入层输出层隐层............
......
对权重求导误差
3.BP算法
利用链式法则,可得
其中,所以有令更新公式输入层输出层隐层..................
对阈值求导
误差
3.BP算法
输入层输出层隐层..................
对权重求导
误差
3.BP算法第七步,引出结论
3.BP算法第七步,引出结论只要知道上一层神经元的阈值梯度,即可计算当前层神经元阈值梯度和连接权值梯度。随后可以计算输出层神经元阈值梯度,从而计算出全网络的神经元阈值和连接权值梯度。最终达到训练网络的目的。3.BP算法算法流程回顾:1.将输入样本提供给输入层神经元2.逐层将信号前传至隐层、输出层,产生输出层的结果3.计算输出层误差4.将误差反向传播至隐藏层神经元5.根据隐层神经元对连接权重和阈值进行调整6.上述过程循环进行,直至达到某些停止条件为止输入层输出层隐层..................信号前传误差后传3.BP算法优点:1.能够自适应、自主学习。BP可以根据预设参数更新规则,通过不断调整神经网络中的参数,已达到最符合期望的输出。2.拥有很强的非线性映射能力。3.误差的反向传播采用的是成熟的链式法则,推导过程严谨且科学。4.算法泛化能力很强。缺点:1.BP神经网络参数众多,每次迭代需要更新较多数量的阈值和权值,故收敛速度比较慢。2.网络中隐层含有的节点数目没有明确的准则,需要不断设置节点数字试凑,根据网络误差结果最终确定隐层节点个数3.BP算法是一种速度较快的梯度下降算法,容易陷入局部极小值的问题。参考文献
[1]李航.统计学习方法[M].北京:清华大学出版社,2019.[2]周志华.机器学习[M].北京:清华大学出版社,2016.[3]AndrewNg.MachineLearning[EB/OL].StanfordUniversity,2014./course/ml[4]CHRISTOPHERM.BISHOP.PatternRecognitionandMachineLearning[M].NewYork:Springer,2006.[5]MINSKY,MARVIN,PAPERT,etal.Perceptrons :AnIntroductiontoComputationalGeometry[J].TheMITPress,1969.[6]DERumelhart,HintonGE,WilliamsRJ.LearningRepresentationsbyBackPropagatingErrors[J].Nature,1986,323(6088):533-536.[7]BishopCM.NeuralNetworksforPatternRecognition[J].AdvancesinComputers,1993,37:119-166.[8]LeCunY,BengioY.Convolutionalnetworksforimages,speech,andtimeseries[J].Thehandbookofbraintheoryandneuralnetworks,1995,3361(10):1995.第十章TensorFlow基础框架机器学习主流框架TensorFlowTensorFlow是什么TensorFlow架构TensorFlow基本使用TensorFlow机器学习例子---一元线性回归TensorFlowforAndroidDemo本章目录主流机器学习框架库名发布者支持语言支持系统TensorFlowGooglePython/C++/Java/GoLinux/Mac
OS/Android/iOSCaffeUCBerkeleyPython/C++/MatlabLinux/Mac
OS/WindowsCNTKMicrosoftPython/C++/BrainScriptLinux/WindowsMXNetDMLC(分布式机器学习社区)Python/C++/Matlab/Julia/Go/R/ScalaLinux/Mac
OS/Windows/Android/iOSTorchFacebookC/Lua/Linux/Mac
OS/Windows/Android/iOSTheano蒙特利尔大学PythonLinux/Mac
OS/WindowsNeonIntelPythonLinux主流机器学习框架库名学习材料丰富程度CNN建模能力RNN建模能力易用程度运行速度多GPU支持程度TensorFlow★★★★★★★★★★★★★★★Caffe★★★★★★★CNTK★★★★★★★★★★★MXNet★★★★★★★★★★★★Torch★★★★★★★★★★★★★Theano★★★★★★★★★★★Neon★★★★★★★★★主流机器学习框架TensorFlow是什么?一个采用数据流图(dataflowgraphs),用于数值计算的开源软件库。最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究。也广泛用于其他计算领域。TensorFlow是什么?TensorFlow™是一个采用计算图的形式表述数值计算的编程系统,本身是一个开源软件库。TensorFlow计算图中每一个节点表示一次数学计算,每一条边表示计算之间的依赖关系。张量(tensor)是计算图的基本数据结构,可以理解为多维数据,流(Flow)表达了张量之间通过计算互相转化的过程。它灵活的架构可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。TensorFlow特性PythonAPI高度的灵活性可移植性(Portability),Tensorflow在CPU和GPU上运行,比如可以运行在台式机、服务器、手机移动设备等等。自动求微分性能最优化庞大的社群支持TensorFlow架构TensorFlow的系统结构以CAPI为界,将整个系统分为「前端」和「后端」两个子系统
前端系统(FrontEnd)提供多语言编程环境,提供统一的编程模型支撑用户构造计算图通过Session的形式,连接TensorFlow后端的「运行时」,启动计算图的执行过程后端系统(ExecSystem)提供运行时环境,负责执行计算图安装(Ubuntu
16.04
64bit)1、安装Anaconda官网下载对应版本在下载目录下执行:bash
Anaconda3-4.4.0-Linux-x86_64.sh安装Spyder
,sudoapt
install
spyder2
、安装TensorFlow
CPU版本方法一:pip
install
tensorflow方法二:下载源码安装(可对配置进行修改)TensorFlow基本使用使用tensor表示数据通过变量(Variable)输入训练数据,维护状态使用计算图(computational
graph)来表示计算任务在会话(Session)的上下文(context)中执行计算图基本概念
TensorFlow核心程序由2个独立部分组成:a:Buildingthecomputationalgraph构建计算图b:Runningthecomputationalgraph运行计算图计算图是一系列的TensorFlow操作排列成一个有向无环图。TensorFlow基本使用---TensorTensor是TensorFlow中的核心单元,TensorFlow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递的数据都是tensor.你可以把TensorFlowtensor看作是一个n维的数组或列表,如同矩阵一样导入tensorflow使用Tensorimporttensorflowastfnode1=tf.constant(3.0,tf.float32)
node2=tf.constant([1.0,2.0])
#alsotf.float32implicitly
node3=tf.constant([[1,2],[3,4],[5,6]],name="node3")printnode1,'\n',node2,'\n',node3Tensor("Const:0",shape=(),dtype=float32)Tensor("Const_1:0",shape=(2,),dtype=float32)Tensor(”node3:0",shape=(3,2),dtype=int32)变量
Variable当训练模型时,用变量来
存储和更新参数。建模时它们需要被明确地
初始化,当创建一个变量时,你将一个
张量
作为初始值传入构造函数Variable()。TensorFlow提供了一系列操作符来初始化张量。weights=tf.Variable(tf.random_normal([2,3],stddev=
2),name="weights")这里生成
2×3
的矩阵,元素的均值为0,标准差为2(可用mean指定均值,默认值为0)。随机数生成函数:tf.truncated_normal() 正太分布,偏离平均值超过两个偏差,重新选择tf.random_uniform(最小值,最大值)
平均分布
(控制字符中可加入种子,seed
=n
)常数生成函数:全零数组
tf.zeros([2,3],int32) 全一数组 tf.ones() 全为给定的某数(例如9):tf.fill([2,3],9)产生给定值得常量
tf.cinstant([1,2,3])withtf.Session()assess:sess.run(weights.initializer)init=tf.initialize_all_variables()withtf.Session()assess:sess.run(init)初始化方式基本概念TensorFlow
的
数据模型
为
tensor(张量),可简单理解为类型化的多维数组。0
维张量是一个数字,也叫标量,s=11维张量称为“向量”,v=[1,2,3]2维张量称为矩阵,m=[[1,2,3],[4,5,6],[7,8,9]]n维......但和Numpy
中的数组不同是,一个张量中主要保留了三个属性:name,shape,typeimporttensorflowastfa=
tf.constant([1,2,3])b=
tf.constant([2,3,5])result=tf.add(a,b,name=
“add”)print(result)tensor(“add:0",shape=(3,),
dtype=int32)add:0
表示result这个张量是计算节点“add”输出的第一个结果shape
=
(3,)表示张量是一个一维数组,这个数组的长度是3dtype=int32
是数据类型,TensorFlow会对参与运算的所有张量进行类型的检查,当类型不匹配时会报错。运行结果TensorFlow是什么?张量(Tensor)是一个物理量,对高维(维数≥2)的物理量进行“量纲分析”的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量…计算图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算的图像。“节点”一般用来表示施加的数学操作,但也可以表示数据输入(feedin)的起点/输出(pushout)的终点,或者是读取/写入持久变量(persistentvariable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)基本概念TensorFlow
的
计算模型
为
graph(计算图),一个
TensorFlow图描述了计算的过程.为了进行计算,
图必须在
会话
里被启动.
会话
将图的
op
(节点)
分发到诸如
CPU
或
GPU
之类的
设备
上,
同时提供执行
op
的方法.
这些方法执行后,
将产生的
tensor
返回.
TensorFlow
中的每一个计算都是图上的一个节点,而节点之间的边描述了计算之间的依赖关系基本概念TensorFlow
的
运行模型
为
session(会话),通过会话来执行计算图,当计算完TensorFlow
使用会话的方式主要有如下两种模式:sess
=tf.Session()#创建一个会话sess.run(result) #运行此会话Sess.close() #运行完毕关闭此会话运行结果withtf.Session()as
sess:sess.run(result)#通过python的上下文管理器来使用会话,当上下文退出时会话管理和资源释放也自动完成Placeholder&Feed一个计算图可以参数化的接收外部的输入,作为一个placeholder(占位符),在计算时需要提供一个字典feed_dict来指定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学五年级数学《整数乘法运算定律推广到小数》精讲知识清单
- 相纸行业发展分析及投资风险与发展前景预测研究报告
- 2026年营口市鲅鱼圈区网格员招聘笔试参考题库及答案详解
- 捷克共和国机械装备行业市场机遇合作分析及投资评估绿色经济研究报告
- 2026年天津市武清区事业编单位人员招聘笔试模拟试题及答案详解
- 2026年厦门市湖里区社区工作者招聘考试备考试题及答案详解
- 2026年宁夏回族自治区固原市社区工作者招聘考试模拟试题及答案详解
- 小学数学一年级下册《寒假里的数学密码》教学设计
- 小学五年级数学下册 复式折线统计图练习课 教案
- 初中物理八年级下册(人教版)期末复习全册知识点梳理教学设计
- 2026中国长纤维增强塑料市场行情监测与经营前景趋势调研研究报告
- 四川省水电集团笔试题库
- 放射科影像诊断质控流程
- 2025年北京市初二地生会考真题试卷(含答案)
- 2025年贵州特岗教师招聘考试真题及答案
- 部编版四年级上册语文必背内容与默写
- 苏州城市学院招聘真题
- 120个文言实词小故事全文翻译
- 2026年表土剥离合同
- 2026青岛能源集团有限公司招聘笔试参考题库及答案解析
- 蒙阴县公费师范生招聘真题2025
评论
0/150
提交评论