Ⅰ 怎么凸显pdf中的黑字
凸显PDF中的黑字的方法如下:
1、首先,选择需要进行高亮的文字。
2、接着,右键,出现腊纯新的选项卡,光标移动到“高亮”项目上。
3、最后,高亮项目右侧有个“添返配加”点击此选项漏局指即可实现文字高亮。
Ⅱ 深度机器学习中的batch的大小对学习效果有何影响
深度机器学习中的batch的大小对学习效果有何影响?
如题,在深度学习中,刚入门的小弟一直听闻一个batch中同时训练多个数据可以得到较好的效果,于是小弟在caffe上跑deepID的网络时对如何选取batchsize颇具困惑。恳求万能的知友给予指点~~
14 个回答
谈谈深度学习中的 Batch_Size Batch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开。 首先,为什么需要有 Batch_Size 这个参数? Batch 的选择,首先决定的是下降的方向。如果数据集比较小,完全可以采用全数据集 ( Full Batch Lea… 显示全部
谈谈深度学习中的 Batch_Size
Batch_Size(批尺寸)是机器学习中一个重要参数,涉及诸多矛盾,下面逐一展开。
首先,为什么需要有 Batch_Size 这个参数?
Batch 的选择,首先决定的是下降的方向。如果数据集比较小,完全可以采用全数据集 ( Full Batch Learning)的形式,这样做至少有 2 个好处:其一,由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。其二,由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。 Full Batch Learning 可以使用Rprop 只基于梯度符号并且针对性单独更新各权值。
对于更大的数据集,以上 2 个好处又变成了 2 个坏处:让大其一,随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。其二,以 Rprop 的方式迭代,会由于各个 Batch 之间的采样差异性,各次梯度修正值相互抵消,无法修正。这才有了后来 RMSProp 的妥协方案。
既然 Full Batch Learning 并不适用大数据集,那么走向另一个极端怎么样?
所谓另一个极端,就是每次只训练一个样本,即 Batch_Size = 1。这就是在线学习(Online Learning)。线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。对于多层神经元、非线性网络,在局部依然近似是抛物面。使用在线学习,每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。
可不可以选择一个适中的 Batch_Size 值呢?
当然可以,这就是批梯度下降法(Mini-batches Learning)。因为如果数据集足够充分,那么用一半(甚至少得多)的数据训练算出来的梯度与用全部数据训练出来的梯度是几乎一样的。
在合理范围内,增大 Batch_Size 有何好处?
内存利用率提高了,大矩阵乘法的并行化效率提高。
跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
盲目增大 Batch_Size 有何坏处?
内存利用率提高了,但是内存容量可能撑不住了。
跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
调节 Batch_Size 对训练效果影响到底如何?
这里跑一个 LeNet 在 MNIST 数据集上的效果。MNIST 是一个手写体标准库,我使用的是 Theano 框架。这是一个 python 的深度学习库。安装方便(几行命令而已),调试简单(自带 Profile),GPU / CPU 通吃,官方教程相当完备雹滑辩,支持模块十分丰富(除了 CNNs,更是支持 RBM / DBN / LSTM / RBM-RNN / SdA / MLPs)。在其上层有Keras 封装,支持 GRU / JZS1, JZS2, JZS3 等较新结构,支持 Adagrad / Adadelta / RMSprop / Adam 等优化算法。
运行结果如上图所示,其中绝对时间做了标幺化处理。运行结果与上文分析相印证:
Batch_Size 太小,算源缺法在 200 epoches 内不收敛。
随着 Batch_Size 增大,处理相同数据量的速度越快。
随着 Batch_Size 增大,达到相同精度所需要的 epoch 数量越来越多。
由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。
由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。
欢迎一起讨论。
知乎用户 理论物理跳深度学习...60%概率失业
20 人赞同
批训练的引入最大好处是针对非凸损失函数来做的, 毕竟非凸的情况下, 全样本就算工程上算的动, 也会卡在局部优上, 批表示了全样本的部分抽样实现, 相当于人为引入修正梯度上的采样噪声,使“一路不通找别路”更有可能搜索最优值。 楼上很多说到随机梯度… 显示全部
批训练的引入最大好处是针对非凸损失函数来做的, 毕竟非凸的情况下, 全样本就算工程上算的动, 也会卡在局部优上, 批表示了全样本的部分抽样实现, 相当于人为引入修正梯度上的采样噪声,使“一路不通找别路”更有可能搜索最优值。
楼上很多说到随机梯度收敛问题,物理上是这样的理解,
增加噪音扩大了你的行动范围,不会受限于局部。
然而过大的行动范围使得你的选择过多而”迷茫“。
这是一个损失函数局部优有“多坑人”和局部优“数目太多好难选”之间的竞争,竞争平衡点才是你最终的训练值。故此,最终的训练值是一个分布,大伙们一般取平均来证明自己的模型多牛逼。
物理上,就是能量(坑好深)和熵(选择多)的竞争结果,而且复杂系统中,能量和熵一辈子都在竞争,讨论自由能最小值在非凸问题上的意义,比直接讨论损失函数的最小值更有意义。
然而,这种牛逼,不仅依赖模型,而且依赖数据本身。调参需要预先建立竞争平衡的理论模型,单纯用软件刷指标只能用在某个数据集上,不具有转移性。纯浪费电!
这些观点在大部分复杂物理系统的采样,自旋玻璃的研究,蛋白质折叠构象搜索上,都有广泛的认识。但是工业界被凸优化影响过多了,除了特征选择和防止过拟合外可以通过直觉建立,遇到非凸优化问题,基本不可能拍脑袋调出一个通用的(如果数学上可以,物理上应该最先发现,然而并没有)。于是,即便在物理上遇到这种问题,目前很low,而且节省成本的方法就是烧钱增加计算蛮力点。矛盾到我笑尿了。
关于深度学习中的非凸优化,可以参考LeCun今年来对深度学习和自旋玻璃之间的联系,以及随机微分方程同增强采样之间的研究。
Yinghong li 重新出发干实事
caffe小菜鸟也来答一下,感觉就是大batch size在显存能允许的情况下收敛速度是比较快的但有时的确会有陷入局部最小的情况,小batch size引入的随机性会更大些,有时候能有更好的效果,但是就是收敛速度慢一些…… 还有就是除了batch size这个参数外,如果在… 显示全部
caffe小菜鸟也来答一下,感觉就是大batch size在显存能允许的情况下收敛速度是比较快的但有时的确会有陷入局部最小的情况,小batch size引入的随机性会更大些,有时候能有更好的效果,但是就是收敛速度慢一些……
还有就是除了batch size这个参数外,如果在solver setting中有momentum这个参数的话也要注意batch size的选取,具体参考一下caffe的tutorial
关于训练参数怎么选取可以参考以下一些文章:
Bengio的 Practical recommendations for gradient-based learning
Lecun 和 Bottou的 Efficient Backprop
还有一个代码上的细节,就是caffe的代码实现上选取一个batch的时候似乎是按着数据库的图片顺序选取输入图片的,所以在生成数据库的时候切记要shuffle一下图片顺序~
供题主参考,求大神指正~
匿名用户
4 人赞同
搞机器学习大忌就是不做实验想当然,话说这种问题题主跑几组不同的batch不就知道了...调参调参不调哪来的参~ 另外,运用在不同的领域,不同的网络结构,不同的训练方法,batch的取法,用法和影响也不一样。不知道题主问的是哪种batch? 显示全部
搞机器学习大忌就是不做实验想当然,话说这种问题题主跑几组不同的batch不就知道了...调参调参不调哪来的参~
另外,运用在不同的领域,不同的网络结构,不同的训练方法,batch的取法,用法和影响也不一样。不知道题主问的是哪种batch?
知乎用户 我是认真的
我也看到过说理论上batchsize=1是最好的,不过实际上调的时候,可能因为我调参的能力比较有限,确实batchsize太小会出现网络收敛不稳定,最后结果比较差的情况,这个在ImageNet和其他数据库上都遇到过,而batchsize太大确实也会影响随机性的引入。目前一般… 显示全部
我也看到过说理论上batchsize=1是最好的,不过实际上调的时候,可能因为我调参的能力比较有限,确实batchsize太小会出现网络收敛不稳定,最后结果比较差的情况,这个在ImageNet和其他数据库上都遇到过,而batchsize太大确实也会影响随机性的引入。目前一般调ImageNet的时候,大家都喜欢把显存占满,不过小一些的库,个人感觉还是应该大大小小都尝试一下。不知道各路大神有没有什么好办法指点一下。。
匿名用户
23 人赞同
看你GPU显存,显存大就把batch size设大点,反之亦然。一般情况下对学习效果没影响。 补充点细节: 事实上从优化的角度来说最快的是纯stochastic,即batch size为1。 关于这一点参见Leon Bottou的分析:http://leon.bottou.org/publications/pdf/compstat-2010.pdf。当然,文中的分析适用于large … 显示全部
看你GPU显存,显存大就把batch size设大点,反之亦然。一般情况下对学习效果没影响。
补充点细节:
事实上从优化的角度来说最快的是纯stochastic,即batch size为1。
关于这一点参见Leon Bottou的分析:http://leon.bottou.org/publications/pdf/compstat-2010.pdf。当然,文中的分析适用于large scale的情况下,但deep neural net适用的条件之一就是有大量数据。另外http://cilvr.nyu.e/lib/exe/fetch.php?media=deeplearning:dl-optimization.pdf 的第11页也有比较stochastic和batch的优劣。
拿Yann Lecun在上述第二个链接第10页中举的toy example来说,如果事实上只有100个数据点,但有人各复制了10遍拿给你,你不知道。这时候你如果做batch gradient descent,更只用了100个点效果一样;而做stochastic gradient descent则相当于做了10个epoch。相近的计算量后者效果显然更好。至于mini batch,要你取的每个mini batch都很diverse的情况才会效果好。
当然你会说,现实中哪会有100个数据各重复10遍就直接拿来用的?没错,是不会,但现实中的数据,尤其是large scale的数据中,必然有大量的rendancy,不然你也很难学出有较好泛化性的model。因此stochastic在large scale总是优于batch。
那为什么还要用mini batch呢?这是由于GPU并行运算的性质,同时把多组数据传过去一起运算比一条一条运算来的快,因而mini batch只是为了充分利用GPU memory而做出的妥协。既然如此,batch size也调到刚好能塞进显存就差不多了。
司徒功源 非典型程序猿
2 人赞同
简而言之,步子太大容易扯着蛋... 显示全部
简而言之,步子太大容易扯着蛋...
发布于 2016-01-14 1 条评论 感谢
匿名用户
9 人赞同
其实是有影响的。batch数太小,而类别又比较多的时候,真的可能会导致loss函数震荡而不收敛,尤其是在你的网络比较复杂的时候。这个做过几个实验,但是没有详细的做,主要是针对googlenet,alexnet以及vgg几个模型(实验结果就是batch为32的时候,alex开始… 显示全部
其实是有影响的。batch数太小,而类别又比较多的时候,真的可能会导致loss函数震荡而不收敛,尤其是在你的网络比较复杂的时候。这个做过几个实验,但是没有详细的做,主要是针对googlenet,alexnet以及vgg几个模型(实验结果就是batch为32的时候,alex开始收敛,但是googlenet不收敛;提高batch size,googlenet开始收敛)。
就像lecun[note]里说的一样,随机梯度下降不能像full batch那样明显的保证收敛。一般而言,根据你的GPU显存,设置为最大,而且一般要求是8的倍数(比如32,128),这样,GPU内部的并行运算效率最高。
那么怎么选择batch number呢?就像刚才说的,8的倍数,然后是稍微大一点(一般而言)。另外一个方法,就是选择一部分数据,跑几个batch看看你的loss是不是在变小,选择一个合适的就可以了。
Ⅲ 南科大商学院招收博士研究生,研究助理,以及博士后是哪个老师
南方科技大学商学院(信息系统与管理工程系)长期招收博士研究生,研究助理,以及博士后。请仔细阅读以下信息,如感兴趣按照要求发简历以及邮件联系。有意向者请将申请意愿(注明到岗时间)pdf格式详细简历邮件发送到:heqc_at_sustech.e.cn招聘信息
(一)博士生
A.招收香港四校联合培养博士生(颁发合作大学博士学位)
南科大为以上项目提供最高4年的奖助学金资助,其中在境外学习期间(一般第一和第四年),南科大按合作大学博士生标准提供奖助学金。
注意:联合培养不要求数学背景。
本课题组现招收攻读联培项目博士学位的研究生。申请人需符合以下条件:
1. 理工、计算机、管理科学、工业工程等跨学科背景硕士学历或即将硕士毕业(或非常优秀的本科生);
2. 具有优秀的英文文献阅读能力与英文论文写作能力;
3. 具有较强的学习能力和端正的学习态度,动手能力较强;
4. 热爱学术研究,有志从事科研工作。
B.本校(硕)博士生推免以及统招(南科大“商务智能与大数据分析”学位)
申请条件
1、已在本科院校获得推荐免试资格的优秀应届本科毕业生。
2、具有概率统计、数学优化等理科背景,即将本科毕业的学生悄好。
3. 报考统招博士需要硕士的学历(学籍)认证报告。
3、学术研究兴趣浓厚,有较强的分析问题、解决问题的能力和较强的创新意识。
4、诚实守信,学风端正,无未解除的处分记录。
5、对信息管理,商务智能,大数据分析,智能管理与发展创新,智能制造与供应链管理与决策,大数据金融智能管理,工商管理等有兴趣,为人认真负责,数学基础扎实。
申请程序
根据教育部的统一安排,2020年推免生的正式报名和录取工作需通过“全国推免服务系统”进行。 我院接收推免生的复试以面试为主,复试时申请人应提供相关材料,详情请查询南方科技大学接收2020年推荐免试研究生(含直博生)预报名通知。
(二)科研助理:如果无法立刻录取南科大博士,可以申请科研助理。要求本科以上学位, 提供有竞争力的工资,提供五险一金(12%),过节费、餐补等福利待遇丰厚
(三)研究助理教授/青年会士/博士后
研究助理教授薪资面议。博士后聘期两年,年薪33.5万元起(含广东省补贴税前15万、深圳市补贴税后6万),并按深圳市有关规定参加社保及住房公积金(用人单位缴纳五险一金、租房补贴、餐补、高温补贴、过节费和计生奖)。特别优秀者可申请校长卓越博士后,年薪约41.5万元。博士后在站期间提供2.5万学术交流经费。课题组提供充足科研支持,协助博士后本人作为课题负责人申请国家、地方各级基金项目。
课题组协助符合条件的博士后申请“广东省海外青年博士后引进项目”。世界排名(不含境内)前200名的高校博士生,申请成功后省财政每名进站博士后资助60万元生活补贴;出站后,与广东省用人单位签订工作协议额外补贴40万元。博士后出站选择留深工作(3年以上合同),可申请启孙铅深圳市博士后留深科研资助,每年10万,共资助3年。落户深圳可申请一次性补贴3万元。
附:指导教师简介
Qiaochu He, 2019年加入南方科技大学商学院。他的主要研究方向是运营管理(Operations Management)、特别是服务系统和信息系统。有近30多篇国际一流期刊论文已发表或在返修、其中多篇运营管理国际顶级期刊。已累计为相关领域顶级期刊或者会议(如POM,MSOM,EJOR等)审稿近30次,在国际知名学术会议或机构受邀报告近30次。曾工作于斯伦贝谢凯锋波士顿研究所、沃尔玛电子(硅谷)商务部,香港科技大学、北卡州立大学夏洛特分校(助理教授),并先后指导10多名硕士和博士生,及本科毕业设计项目(CSI-Ametek生产过程流程优化)。曾在加州大学,北卡州立大学以及香港科技大学教授供应链管理、生产制造系统、数据分析、系统仿真、编程算法、随机过程、凸优化、排队论、概率论、动态规划等10多门课程。曾得到中国国家自然科学基金(NSFC)面上项目(主持)、深圳市科创委项目(主持)、香港基础研究基金General Research Fund的项目资助(联合主持)、北卡州立大学FRG项目资助等。曾获IEEE CASE 最佳医疗自动化奖, IISE Annual Conference 最佳医疗论文奖(指导学生),POMS-HK 最佳学生论文奖第一名,Katta G. Murty Prize最佳优化论文奖等。
Ⅳ 统计学经典教材推荐
威廉·G·科克伦《抽样调查》
逻辑思路特别清晰,同时对提升统计思想能力很有帮助。
PDF版:抽样技术(经典译本)[美]科克伦着 统计1985.pdf
习题解答:美国着名的统计学家威廉·G·科克伦的《抽样技术》习题解答 - 计量经济学与统计软件 - 经管之家(原人大经济论坛)
当代市场调研(原书第8版) 小卡尔•麦克丹尼尔 (Carl Mcdaniel Jr.) (作者), 罗杰•盖茨 (Roger Gates) (作者), 李桂华 (译者), 等 (译者)
本书是国外最为流行的市场调研教科之一,两位作者均为国际知名的市场调研专家,既有很高的理论水平,又有丰富的实践经验。本书特色鲜明,语言生动,以“集中于调研客户”为宗旨,从管理者使用或购买市场调研信息的角度介绍市场调研的思想,内容涵盖市场调研在管理决策中的作用、调研方案的设计、利用统计工具对数据资料进行分析,以及市场调研的实际应用等诸多方面。 本书适用于营销学专业本科生、研究生及MBA的教学,也可供企业营销管理人员参考之用。
亚马逊:《当代市场调研(原书第8版)》 小卡尔•麦克丹尼尔 (Carl Mcdaniel Jr.), 罗杰•盖茨 (Roger Gates), 李桂华, 等【摘要 书评 试读】图书
软件类:
Introction to Statistical Learning
R语言的重要性就不用赘述了....而且这本书还给你讲了很多统计工具...作为实践入门非常够用。
如果你是第一种...那我把我们学校的本科生培养计划放出来给你参考吧~每本书都有仔细看过....虽然没学好.....
你唯一需要注意的是,开始学习的时候,数理基础很重要!但到后来,统计思想方法更重要。
数学类:
103315 数学分析I 103316 数学分析Ⅱ 105309 数学分析III
简单:《面向21世纪课程教材:数学分析(上册)(第四版)》 华东师范大学数学系【摘要 书评 试读】图书
难:《面向21世纪课程教材:数学分析(上册)(第二版)》 陈纪修, 于崇华, 金路【摘要 书评 试读】图书
100399 概率论
《华章教育·华章数学译丛:概率论基础教程(原书第9版)》 罗斯 (Sheldon M. Ross), 童行伟, 梁宝生【摘要 书评 试读】图书
103246 数理统计【超级重要】
简单:《概率论与数理统计教程(第2版)》 茆诗松、程依明、濮晓龙【摘要 书评 试读】图书
推荐1:《21世纪统计学系列教材:数理统计学(第2版)》 茆诗松, 吕晓玲【摘要 书评 试读】图书
推荐2:《数理统计学导论(英文版•第7版)》 霍格(Robert V.Hogg), Joseoh W.McKean, Allen T.Craig【摘要 书评 试读】图书
翻译版:《统计学精品译丛:数理统计学导论(原书第7版)》 霍格 (Robert V.Hogg), Joseph W.McKean, Allen T.Craig, 王忠玉, 卜长江【摘要 书评 试读】图书
推荐3(我们学校研究生高等数理统计学教材):《时代教育•国外高校优秀教材精选•统计推断(翻译版•原书第2版)》 George Casella, Roger L.Berger, 张忠占, 傅莺莺【摘要 书评 试读】图书
推荐4(保研复习的时候看的,结构比较好,内容精简,适合复习):《"十二五"普通高等教育本科国家级规划教材:数理统计学讲义(第3版)》 陈家鼎, 孙山泽, 李东风, 刘力平【摘要 书评 试读】图书
101375 运筹学、高级运筹学
简单:《面向21世纪课程教材•信息管理与信息系统专业教材系列:运筹学(第4版)》 《运筹学》教材编写组【摘要 书评 试读】图书
参考书(Youtube上有Boyd的授课视频,听完觉得不错):《凸优化(英文)》 鲍迪 (Stephen Boyd)【摘要 书评 试读】图书
103298 高等代数I 103299 高等代数Ⅱ
强烈推荐:《高等代数(上册):大学高等代数课程创新教材》 丘维声【摘要 书评 试读】图书《高等代数(下册):大学高等代数课程创新教材》 丘维声【摘要 书评 试读】图书《高等代数学习指导书(上)》 丘维声【摘要 书评 试读】图书
102110 数理综合课(常微分方程&复变函数)
100982 实变函数
101658 泛函分析
Ⅳ 销售量服从泊松分布,怎样获取最大利润
如何实现大数据利润最大利润化
制定合适的价格很重要,再怎么夸大都不过分。价格提高1%意味着经营利润平均可以增长8.7%(当然,假设销量没有损失)。不过我们估计,在许多公司每年制定的成千上万个定价决策中,多达30%未能给出最合适的价格——这意味着收入大量流失。而且考虑到如今海量数据为公司提供了难得的机会,可以做出合理得多的定价决策,这种现状尤其令人不安。对那些能够井然有序地应对复杂的大数据的公司而言,这蕴含着巨大价值。
将数据转化为利润的四个步骤
想制定更合适的价格,关键是完全明白现在可供公司使用的数据。这就需要放大目标,而不是缩小目标。正如综合性能源和化工企业沙索(Sasol)集团副总裁兼营销和销售总经理汤姆·奥布赖恩(Tom O’Brien)提及这种做法时说:“销售团队知道价格,还可能知道销量,但这种做法需要了解更多信息:极其精细的数据,实际上来自每一张发票,按产品、客户和包装分门别类。”
事实上,将大数据成功应用于B2B环境方面最激动人心的一些例子实际上不仅仅着眼于定价,还涉及一家公司的商业引擎的其他方面。比如说,“动态交易评分”(dynamic deal scoring)提供了单笔交易层面的价格指导,还提供了决策逐级上报点、激励机制、绩效评分及更多方面,立足于一系列相似的盈/亏交易。使用较小的、相关的交易样本很有必要,因为与任何一笔交易息息相关的因素会有变化,这导致一系列总体交易成为毫无用处的衡量基准。我们已见过这种方法应用于技术行业,取得了巨大成功。将销售利润率提高了4到8个百分点(相对于同一家公司的对照组)。
想获得足够精细的数据,公司就要做好这四项工作
倾听数据。制定最合理的价格不是牵涉数据的挑战(公司通常已经坐拥庞大的数据宝库),而是牵涉分析的挑战。最出色的B2C公司知道如何解释自己拥有的海量数据,并见机行事,但B2B公司往往一味管理数据,而不是利用数据推动决策。优秀的分析工具可以帮助公司确定经常被忽视的因素(比如更宏观的经济形势、产品偏好以及销售代表的洽谈),揭示什么因素左右针对每个客户群和产品的价格。
提高自动化。人工分析数千种孝顷产品太耗费时间和财力。自动化系统可以识别狭小的客户群,确定什么因素左右每个客户群的价值,并且拿来与历史交易数据进行比较。这样一来,公司就可以根据数据,为产品群和客户群制定有针对性的价格。自动化还大大简化了复制和调整分析的工作,因此没必要每次都从头开始分析。
培养技能、树立信心。实施新价格既在运营方面带来了挑战,又在沟通携族方面带来了挑战。成功的公司非常注重深思熟虑的变革计划,帮助销售队伍了解并接受新的定价方法。公司需要与销售代表们齐心协力,解释为什么实行建议价,这巧隐陆套价格体系是如何运作的,那样销售代表就会非常信任价格,从而竭力说服顾客。同样重要的是制定一套明确清晰的沟通方法,为价格给出一个理由,从而着重突出价值,然后针对具体顾客给出相应的理由。全面的洽谈培训也至关重要,以便让销售代表获得信心和工具,那样与客户面对面交流时,能拿出颇有说服力的理由。最优秀的领导陪同销售代表会见最难拿下的客户,专注于迅速见效,那样销售代表就能树立起信心,积极奉行新的定价方法。林德集团旗下瑞士PanGas AG公司的总经理罗伯特·克里格(Robert Krieger)说:“表明领导层支持这种新的定价方法这个立场,至关重要。为此,我们采取的做法就是领导层与销售代表一起拜见难缠的客户。我们不仅能够帮助销售代表,还能够阐明为什么制定新价格。”
积极管理绩效。想改善绩效管理,公司就需要借助实用的绩效指标支持销售队伍。最大的影响来自确保销售一线对于客户带来的利润了然于胸;销售和营销部门拥有合适的分析技能,得以发现机会,并牢牢抓住机会。还需要将权力下放给销售队伍,让他们自行调整价格,而不是依赖集中式团队。这不仅需要创业理念,还需要在针对特定的客户制定价格策略时有一定的创造力。在改变定价策略和绩效衡量标准的同时,可能还要改变激励机制。
我们已经看到了这一幕:软件、化工、建材和电信等众多行业的公司利用大数据,帮助制定更合理的定价决策,因而收到显着成效。这些公司都有数量众多的库存单位(SKU)和交易,还有一大批高度分散的客户;重新制定价格后,都发现利润率提高了3%到8%,这些价格是在极其精细的产品数据层面制定的。仅举一例,一家欧洲建材公司为几种有所选择的产品制定合适的价格后,利润增幅高达20%。如果公司想制定合适的价格,就应该充分利用大数据,并投入足够的资源来支持销售代表,否则它们会发现自己在为此付出高昂的代价:利润流失。
转载请注明:数据分析 » 如何实现大数据利润最大利润化
量化分析师的Python_python 金融量化分析_python金融大数据分析
量化分析师的Python_python 金融量化分析_python金融大数据分析
一、SciPy概述
前篇已经大致介绍了NumPy,接下来让我们看看SciPy能做些什么。NumPy替我们搞定了向量和矩阵的相关操作,基本上算是一个高级的科学计算器。SciPy基于NumPy提供了更为丰富和高级的功能扩展,在统计、优化、插值、数值积分、时频转换等方面提供了大量的可用函数,基本覆盖了基础科学计算相关的问题。
在量化分析中,运用最广泛的是统计和优化的相关技术,本篇重点介绍SciPy中的统计和优化模块,其他模块在随后系列文章中用到时再做详述。
本篇会涉及到一些矩阵代数,如若感觉不适,可考虑跳过第三部分或者在理解时简单采用一维的标量代替高维的向量。
首先还是导入相关的模块,我们使用的是SciPy里面的统计和优化部分:
In[1]:
import numpy as npimport scipy.stats as statsimport scipy.optimize as opt
二、统计部分2.1 生成随机数
我们从生成随机数开始,这样方便后面的介绍。生成n个随机数可用rv_continuous.rvs(size=n)或rv_discrete.rvs(size=n),其中rv_continuous表示连续型的随机分布,如均匀分布(uniform)、正态分布(norm)、贝塔分布(beta)等;rv_discrete表示离散型的随机分布,如伯努利分布(bernoulli)、几何分布(geom)、泊松分布(poisson)等。我们生成10个[0, 1]区间上的随机数和10个服从参数$a = 4$,$b = 2$的贝塔分布随机数:
In[2]:
rv_unif = stats.uniform.rvs(size=10)print rv_unifrv_beta = stats.beta.rvs(size=10, a=4, b=2)print rv_beta
[ 0.20630272 0.25929204 0.16859206 0.92573462 0.16383319 0.3475617 0.83792048 0.79574153 0.37945051 0.23439682][ 0.71216492 0.85688464 0.70310131 0.3783662 0.69507561 0.78626586 0.54529967 0.4261079 0.26646767 0.8519046 ]
在每个随机分布的生成函数里,都内置了默认的参数,如均匀分布的上下界默认是0和1。可是一旦需要修改这些参数,每次生成随机都要敲这么老长一串有点麻烦,能不能简单点?SciPy里头有一个Freezing的功能,可以提供简便版本的命令。SciPy.stats支持定义出某个具体的分布的对象,我们可以做如下的定义,让beta直接指代具体参数$a = 4$和$b = 2$的贝塔分布。为让结果具有可比性,这里指定了随机数的生成种子,由NumPy提供。
In[3]:
np.random.seed(seed=2015)rv_beta = stats.beta.rvs(size=10, a=4, b=2)print "method 1:"print rv_betanp.random.seed(seed=2015)beta = stats.beta(a=4, b=2)print "method 2:"print beta.rvs(size=10)
method 1:[ 0.43857338 0.9411551 0.75116671 0.92002864 0.62030521 0.56585548 0.41843548 0.5953096 0.88983036 0.94675351]method 2:[ 0.43857338 0.9411551 0.75116671 0.92002864 0.62030521 0.56585548 0.41843548 0.5953096 0.88983036 0.94675351]
2.2 假设检验
好了,现在我们生成一组数据,并查看相关的统计量(相关分布的参数可以在这里查到:http://docs.scipy.org/doc/scipy/reference/stats.html):
In[4]:
norm_dist = stats.norm(loc=0.5, scale=2)n = 200dat = norm_dist.rvs(size=n)print "mean of data is: " + str(np.mean(dat))print "median of data is: " + str(np.median(dat))print "standard deviation of data is: " + str(np.std(dat))
mean of data is: 0.705195138069median of data is: 0.658167882933standard deviation of data is: 2.08967006905
假设这个数据是我们获取到的实际的某些数据,如股票日涨跌幅,我们对数据进行简单的分析。最简单的是检验这一组数据是否服从假设的分布,如正态分布。这个问题是典型的单样本假设检验问题,最为常见的解决方案是采用K-S检验( Kolmogorov-Smirnov test)。单样本K-S检验的原假设是给定的数据来自和原假设分布相同的分布,在SciPy中提供了kstest函数,参数分别是数据、拟检验的分布名称和对应的参数:
In[5]:
mu = np.mean(dat)sigma = np.std(dat)stat_val, p_val = stats.kstest(dat, 'norm', (mu, sigma))print 'KS-statistic D = %6.3f p-value = %6.4f' % (stat_val, p_val)
KS-statistic D = 0.045 p-value = 0.8195
假设检验的$p$-value值很大(在原假设下,$p$-value是服从[0, 1]区间上的均匀分布的随机变量,可参考http://en.wikipedia.org/wiki/P-value ),因此我们接受原假设,即该数据通过了正态性的检验。在正态性的前提下,我们可进一步检验这组数据的均值是不是0。典型的方法是$t$检验($t$-test),其中单样本的$t$检验函数为ttest_1samp:
In[6]:
stat_val, p_val = stats.ttest_1samp(dat, 0)print 'One-sample t-statistic D = %6.3f, p-value = %6.4f' % (stat_val, p_val)
One-sample t-statistic D = 4.761, p-value = 0.0000
我们看到$p$-value$ < 0.05$,即给定显着性水平0.05的前提下,我们应拒绝原假设:数据的均值为0。我们再生成一组数据,尝试一下双样本的$t$检验(ttest_ind):
In[7]:
norm_dist2 = stats.norm(loc=-0.2, scale=1.2)dat2 = norm_dist2.rvs(size=n/2)stat_val, p_val = stats.ttest_ind(dat, dat2, equal_var=False)print 'Two-sample t-statistic D = %6.3f, p-value = %6.4f' % (stat_val, p_val)
Two-sample t-statistic D = 5.565, p-value = 0.0000
注意,这里我们生成的第二组数据样本大小、方差和第一组均不相等,在运用$t$检验时需要使用Welch’s $t$-test,即指定ttest_ind中的equal_var=False。我们同样得到了比较小的$p$-value$,在显着性水平0.05的前提下拒绝原假设,即认为两组数据均值不等。
stats还提供其他大量的假设检验函数,如bartlett和levene用于检验方差是否相等;anderson_ksamp用于进行Anderson-Darling的K-样本检验等。
2.3 其他函数
有时需要知道某数值在一个分布中的分位,或者给定了一个分布,求某分位上的数值。这可以通过cdf和ppf函数完成:
In[8]:
g_dist = stats.gamma(a=2)print "quantiles of 2, 4 and 5:"print g_dist.cdf([2, 4, 5])print "Values of 25%, 50% and 90%:"print g_dist.pdf([0.25, 0.5, 0.95])
quantiles of 2, 4 and 5:[ 0.59399415 0.90842181 0.95957232]Values of 25%, 50% and 90%:[ 0.1947002 0.30326533 0.36740397]
对于一个给定的分布,可以用moment很方便的查看分布的矩信息,例如我们查看$N(0, 1)$的六阶原点矩:
In[9]:
stats.norm.moment(6, loc=0, scale=1)
Out[9]:
15.000000000895332
describe函数提供对数据集的统计描述分析,包括数据样本大小,极值,均值,方差,偏度和峰度:
In[10]:
norm_dist = stats.norm(loc=0, scale=1.8)dat = norm_dist.rvs(size=100)info = stats.describe(dat)print "Data size is: " + str(info[0])print "Minimum value is: " + str(info[1][0])print "Maximum value is: " + str(info[1][1])print "Arithmetic mean is: " + str(info[2])print "Unbiased variance is: " + str(info[3])print "Biased skewness is: " + str(info[4])print "Biased kurtosis is: " + str(info[5])
Data size is: 100Minimum value is: -4.12414564687Maximum value is: 4.82577602489Arithmetic mean is: 0.0962913592209Unbiased variance is: 2.88719292463Biased skewness is: -0.00256548794681Biased kurtosis is: -0.317463421177
当我们知道一组数据服从某些分布的时候,可以调用fit函数来得到对应分布参数的极大似然估计(MLE, maximum-likelihood estimation)。以下代码示例了假设数据服从正态分布,用极大似然估计分布参数:
In[11]:
norm_dist = stats.norm(loc=0, scale=1.8)dat = norm_dist.rvs(size=100)mu, sigma = stats.norm.fit(dat)print "MLE of data mean:" + str(mu)print "MLE of data standard deviation:" + str(sigma)
MLE of data mean:-0.249880829912MLE of data standard deviation:1.89195303507
pearsonr和spearmanr可以计算Pearson和Spearman相关系数,这两个相关系数度量了两组数据的相互线性关联程度:
In[12]:
norm_dist = stats.norm()dat1 = norm_dist.rvs(size=100)exp_dist = stats.expon()dat2 = exp_dist.rvs(size=100)cor, pval = stats.pearsonr(dat1, dat2)print "Pearson correlation coefficient: " + str(cor)cor, pval = stats.pearsonr(dat1, dat2)print "Spearman's rank correlation coefficient: " + str(cor)
Pearson correlation coefficient: -0.0262911931014Spearman's rank correlation coefficient: -0.0262911931014
其中的$p$-value表示原假设(两组数据不相关)下,相关系数的显着性。
最后,在分析金融数据中使用频繁的线性回归在SciPy中也有提供,我们来看一个例子:
In[13]:
x = stats.chi2.rvs(3, size=50)y = 2.5 + 1.2 * x + stats.norm.rvs(size=50, loc=0, scale=1.5)slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)print "Slope of fitted model is:" , slopeprint "Intercept of fitted model is:", interceptprint "R-squared:", r_value**2
Slope of fitted model is: 1.44515601191Intercept of fitted model is: 1.91080684516R-squared: 0.798786910173
在前面的链接中,可以查到大部分stat中的函数,本节权作简单介绍,挖掘更多功能的最好方法还是直接读原始的文档。另外,StatsModels(http://statsmodels.sourceforge.net )模块提供了更为专业,更多的统计相关函数。若在SciPy没有满足需求,可以采用StatsModels。
三、优化部分
优化问题在投资中可谓是根本问题,如果手上有众多可选的策略,应如何从中选择一个“最好”的策略进行投资呢?这时就需要用到一些优化技术针对给定的指标进行寻优。随着越来越多金融数据的出现,机器学习逐渐应用在投资领域,在机器学习中,优化也是十分重要的一个部分。以下介绍一些常见的优化方法,虽然例子是人工生成的,不直接应用于实际金融数据,我们希望读者在后面遇到优化问题时,能够从这些简单例子迅速上手解决。
3.1 无约束优化问题
所谓的无约束优化问题指的是一个优化问题的寻优可行集合是目标函数自变量的定义域,即没有外部的限制条件。例如,求解优化问题 [
minimizef(x)=x24.8x+1.2
] 就是一个无约束优化问题,而求解 [
minimizef(x)=x24.8x+1.2subject tox≥0
]则是一个带约束的优化问题。更进一步,我们假设考虑的问题全部是凸优化问题,即目标函数是凸函数,其自变量的可行集是凸集。(详细定义可参考斯坦福大学Stephen Boyd教授的教材convex optimization,下载链接:http://stanford.e/~boyd/cvxbook )
我们以Rosenbrock函数 [ f(mathbf{x}) = sum{i=1}^{N-1} 100 (x_i – x{i-1}^2)^2 + (1 – x_{i-1})^2 ] 作为寻优的目标函数来简要介绍在SciPy中使用优化模块scipy.optimize。
首先需要定义一下这个Rosenbrock函数:
In[14]:
def rosen(x): """The Rosenbrock function""" return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
3.1.1 Nelder-Mead单纯形法
单纯形法是运筹学中介绍的求解线性规划问题的通用方法,这里的Nelder-Mead单纯形法与其并不相同,只是用到单纯形的概念。设定起始点$mathbf{x}_0 = (1.3, 0.7, 0.8, 1.9, 1.2)$,并进行最小化的寻优。这里‘xtol’表示迭代收敛的容忍误差上界:
In[15]:
x_0 = np.array([0.5, 1.6, 1.1, 0.8, 1.2])res = opt.minimize(rosen, x_0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True})print "Result of minimizing Rosenbrock function via Nelder-Mead Simplex algorithm:"print res
Optimization terminated successfully. Current function value: 0.000000 Iterations: 436 Function evaluations: 706Result of minimizing Rosenbrock function via Nelder-Mead Simplex algorithm: status: 0 nfev: 706 success: True fun: 1.6614969876635003e-17 x: array([ 1., 1., 1., 1., 1.]) message: 'Optimization terminated successfully.' nit: 436
Rosenbrock函数的性质比较好,简单的优化方法就可以处理了,还可以在minimize中使用method=’powell’来指定使用Powell’s method。这两种简单的方法并不使用函数的梯度,在略微复杂的情形下收敛速度比较慢,下面让我们来看一下用到函数梯度进行寻优的方法。
3.1.2 Broyden-Fletcher-Goldfarb-Shanno法
Broyden-Fletcher-Goldfarb-Shanno(BFGS)法用到了梯度信息,首先求一下Rosenbrock函数的梯度:
[ begin{split} frac{partial f}{partial xj} &= sum{i=1}^N 200(xi – x{i-1}^2)(delta{i,j} – 2x{i-1}delta{i-1,j}) -2(1 – x{i-1})delta_{i-1,j} &= 200(xj – x{j-1}^2) – 400xj(x{j+1} – x_j^2) – 2(1 – x_j) end{split}] 其中当$i=j$时,$delta_{i,j} = 1$,否则$delta_{i,j} = 0$。
边界的梯度是特例,有如下形式: [ begin{split} frac{partial f}{partial x_0} &= -400x_0(x_1 – x_0^2) – 2(1 – x_0), frac{partial f}{partial x{N-1}} &= 200(x{N-1} – x_{N-2}^2) end{split}]
我们可以如下定义梯度向量的计算函数了:
In[16]:
def rosen_der(x): xm = x[1:-1] xm_m1 = x[:-2] xm_p1 = x[2:] der = np.zeros_like(x) der[1:-1] = 200*(xm-xm_m1**2) - 400*(xm_p1 - xm**2)*xm - 2*(1-xm) der[0] = -400*x[0]*(x[1]-x[0]**2) - 2*(1-x[0]) der[-1] = 200*(x[-1]-x[-2]**2) return der
梯度信息的引入在minimize函数中通过参数jac指定:
In[17]:
res = opt.minimize(rosen, x_0, method='BFGS', jac=rosen_der, options={'disp': True})print "Result of minimizing Rosenbrock function via Broyden-Fletcher-Goldfarb-Shanno algorithm:"print res
Optimization terminated successfully. Current function value: 0.000000 Iterations: 52 Function evaluations: 63 Gradient evaluations: 63Result of minimizing Rosenbrock function via Broyden-Fletcher-Goldfarb-Shanno algorithm: status: 0 success: True njev: 63 nfev: 63 hess_inv: array([[ 0.00726515, 0.01195827, 0.0225785 , 0.04460906, 0.08923649], [ 0.01195827, 0.02417936, 0.04591135, 0.09086889, 0.18165604], [ 0.0225785 , 0.04591135, 0.09208689, 0.18237695, 0.36445491], [ 0.04460906, 0.09086889, 0.18237695, 0.36609277, 0.73152922], [ 0.08923649, 0.18165604, 0.36445491, 0.73152922, 1.46680958]]) fun: 3.179561068096293e-14 x: array([ 1. , 0.99999998, 0.99999996, 0.99999992, 0.99999983]) message: 'Optimization terminated successfully.' jac: array([ 4.47207141e-06, 1.30357917e-06, -1.86454207e-07, -2.00564982e-06, 4.98799446e-07])
3.1.3 牛顿共轭梯度法(Newton-Conjugate-Gradient algorithm)
用到梯度的方法还有牛顿法,牛顿法是收敛速度最快的方法,其缺点在于要求Hessian矩阵(二阶导数矩阵)。牛顿法大致的思路是采用泰勒展开的二阶近似: [ f(mathbf{x}) approx f(mathbf{x}_0) + nabla f(mathbf{x}_0)(mathbf{x} – mathbf{x}_0) + frac{1}{2}(mathbf{x} – mathbf{x}_0)^Tmathbf{H}(mathbf{x}_0)(mathbf{x} – mathbf{x}_0) ] 其中$mathbf{H}(mathbf{x}_0)$表示二阶导数矩阵。若Hessian矩阵是正定的,函数的局部最小值可以通过使上面的二次型的一阶导数等于0来获取,我们有: [ mathbf{x}_{mathrm{opt}} = mathbf{x}_0 – mathbf{H}^{-1}nabla f ]
这里可使用共轭梯度近似Hessian矩阵的逆矩阵。下面给出Rosenbrock函数的Hessian矩阵元素通式:
[ begin{split} H{i,j} = frac{partial^2 f}{partial x_i partial x_j} &= 200(delta{i,j} – 2x{i-1}delta{i-1,j}) – 400xi(delta{i+1,j} – 2xidelta{i,j}) – 400delta{i,j}(x{i+1} – xi^2) + 2delta{i,j}, &= (202 + 1200xi^2 – 400x{i+1}) delta{i,j} – 400x_idelta{i+1,j} – 400x{i-1}delta{i-1,j} end{split}] 其中$i,j in [1, N-2]$。其他边界上的元素通式为: [ begin{split} frac{partial^2 f}{partial x_0^2} &= 1200x_0^2 – 400x_1 + 2, frac{partial^2 f}{partial x_0 partial x_1} = frac{partial^2 f}{partial x_1 partial x_0} &= -400x_0, frac{partial^2 f}{partial x{N-1} partial x{N-2}} = frac{partial^2 f}{partial x{N-2} partial x{N-1}} &= -400x_{N-2}, frac{partial^2 f}{partial x_{N-1}^2} &= 200. end{split}]
例如,当$N=5$时的Hessian矩阵为:
[ mathbf{H} =
[1200x20400x1+2400x0000400x0202+1200x21400x2400x1000400x1202+1200x22400x3400x2000400x2202+1200x23400x4400x3000400x3200]
]为使用牛顿共轭梯度法,我们需要提供一个计算Hessian矩阵的函数:
In[18]:
def rosen_hess(x): x = np.asarray(x) H = np.diag(-400*x[:-1],1) - np.diag(400*x[:-1],-1) diagonal = np.zeros_like(x) diagonal[0] = 1200*x[0]**2-400*x[1]+2 diagonal[-1] = 200 diagonal[1:-1] = 202 + 1200*x[1:-1]**2 - 400*x[2:] H = H + np.diag(diagonal) return H
In[19]:
res = opt.minimize(rosen, x_0, method='Newton-CG', jac=rosen_der, hess=rosen_hess, options={'xtol': 1e-8, 'disp': True})print "Result of minimizing Rosenbrock function via Newton-Conjugate-Gradient algorithm (Hessian):"print res
Optimization terminated successfully. Current function value: 0.000000 Iterations: 20 Function evaluations: 22 Gradient evaluations: 41 Hessian evaluations: 20Result of minimizing Rosenbrock function via Newton-Conjugate-Gradient algorithm (Hessian): status: 0 success: True njev: 41 nfev: 22 fun: 1.47606641102778e-19 x: array([ 1., 1., 1., 1., 1.]) message: 'Optimization terminated successfully.' nhev: 20 jac: array([ -3.62847530e-11, 2.68148992e-09, 1.16637362e-08, 4.81693414e-08, -2.76999090e-08])
对于一些大型的优化问题,Hessian矩阵将异常大,牛顿共轭梯度法用到的仅是Hessian矩阵和一个任意向量的乘积,为此,用户可以提供两个向量,一个是Hessian矩阵和一个任意向量$mathbf{p}$的乘积,另一个是向量$mathbf{p}$,这就减少了存储的开销。记向量$mathbf{p} = (p_1, ldots, p_{N-1})$,可有
[ mathbf{H(x)p} = begin{bmatrix} (1200x0^2 – 400x_1 + 2)p_0 -400x_0p_1 vdots -400x{i-1}p{i-1} + (202 + 1200x_i^2 – 400x{i+1})pi – 400x_ip{i+1} vdots -400x{N-2}p{N-2} + 200p_{N-1} end{bmatrix} ]
我们定义如下函数并使用牛顿共轭梯度方法寻优:
In[20]:
def rosen_hess_p(x, p): x = np.asarray(x) Hp = np.zeros_like(x) Hp[0] = (1200*x[0]**2 - 400*x[1] + 2)*p[0] - 400*x[0]*p[1] Hp[1:-1] = -400*x[:-2]*p[:-2]+(202+1200*x[1:-1]**2-400*x[2:])*p[1:-1] -400*x[1:-1]*p[2:] Hp[-1] = -400*x[-2]*p[-2] + 200*p[-1] return Hpres = opt.minimize(rosen, x_0, method='Newton-CG', jac=rosen_der, hessp=rosen_hess_p, options={'xtol': 1e-8, 'disp': True})print "Result of minimizing Rosenbrock function via Newton-Conjugate-Gradient algorithm (Hessian times arbitrary vector):"print res
Optimization terminated successfully. Current function value: 0.000000 Iterations: 20 Function evaluations: 22 Gradient evaluations: 41 Hessian evaluations: 58Result of minimizing Rosenbrock function via Newton-Conjugate-Gradient algorithm (Hessian times arbitrary vector): status: 0
转载请注明:数据分析 » 量化分析师的Python_python 金融量化分析_python金融大数据分析
Ⅵ 机器学习中的损失函数
机器学习中的损失函数
损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的值。下面主要列出几种常见的损失函数。
一、log对数损失函数(逻辑回归)
有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,而逻辑回归得到的并不是平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —-> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。
log损失函数的标准形式:
L(Y,P(Y|X))=?logP(Y|X)L(Y,P(Y|X))=?log?P(Y|X)刚刚说到,取对数是为了方便计算极大似然估计,因为在MLE中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化虚链L了。
逻辑回归的P(Y=y|x)表达式如下:P(Y=y|x)=11+exp(?yf(x))P(Y=y|x)=11+exp(?yf(x))
将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:
L(y,P(Y=y|x))=log(1+exp(?yf(x)))L(y,P(Y=y|x))=log?(1+exp(?yf(x)))
逻辑回归最后得到的目标式子如下:
如果是二分类的话模誉仿,则m值等于2,如果是多分类,m就是相应的类别总个数。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度旦纤下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉。
这里有个PDF可以参考一下:Lecture 6: logistic regression.pdf.
二、平方损失函数(最小二乘法, Ordinary Least Squares )
最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理,可以参考【central limit theorem】),最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:
简单,计算方便;
欧氏距离是一种很好的相似性度量标准;
在不同的表示域变换后特征性质不变。
平方损失(Square loss)的标准形式如下:
(Y,f(X))=(Y?f(X))2L(Y,f(X))=(Y?f(X))2
当样本个数为n时,此时的损失函数变为:
Y-f(X)表示的是残差,整个式子表示的是残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(resial sum of squares,RSS)。
而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:
MSE=1n∑i=1n(Yi~?Yi)2MSE=1n∑i=1n(Yi~?Yi)2
上面提到了线性回归,这里额外补充一句,我们通常说的线性有两种情况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数的线性函数。在机器学习中,通常指的都是后一种情况。
三、指数损失函数(Adaboost)
学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。在Adaboost中,经过m此迭代之后,可以得到:
Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数 和G:
而指数损失函数(exp-loss)的标准形式如下
可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:
关于Adaboost的推导,可以参考Wikipedia:AdaBoost或者《统计学习方法》P145.
四、Hinge损失函数(SVM)
在机器学习算法中,hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:
下面来对式子做个变形,令:
于是,原式就变成了:
如若取,式子就可以表示成:
可以看出,该式子与下式非常相似:
前半部分中的就是hinge损失函数,而后面相当于L2正则项。
Hinge 损失函数的标准形式
可以看出,当|y|>=1时,L(y)=0。
更多内容,参考Hinge-loss。
补充一下:在libsvm中一共有4中核函数可以选择,对应的是-t参数分别是:
0-线性核;
1-多项式核;
2-RBF核;
3-sigmoid核。
五、其它损失函数
除了以上这几种损失函数,常用的还有:
0-1损失函数
绝对值损失函数
下面来看看几种损失函数的可视化图像,对着图看看横坐标,看看纵坐标,再看看每条线都表示什么损失函数,多看几次好好消化消化。
OK,暂时先写到这里,休息下。最后,需要记住的是:参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时可以考虑正则化,通过设置正则项前面的hyper parameter,来权衡损失函数和正则项,减小参数规模,达到模型简化的目的,从而使模型具有更好的泛化能力。
Ⅶ POR 1: POR基础综述(更新中...)
离散模型和连续模型
离散模型可数
连续模型不可数
线性模型和非线性模型
线性模型具有addtivity(函数可以写成多个答核分布的线性叠加)和proportionality(呈比例)
非线性模型则至少违背了上面两种性质的一个
概率模型(probablistic models)和决定模型(deterministic models)
概率模型中用概率来描述模型的结果
决定模型中不考虑随机因素,可以使用sensitivity analysis来整合不确定的因素
图1中一些常用模型的走向
线性规划LP问题:OR model Determinstic OR Continuous Variables Linear Function
离散时间马尔科夫链:OR model Probablistic OR Discrete Variables Discrete Space
连续时间马尔科夫链:OR model Probablistic OR Continuous Variables Discrete Space
对于OR模型中的Probablistic OR下面的continuous space,相关的问题比如:强化学习, 序列相关DP问题,特殊限制条件下的凸优化问题等等
概率空间的构成
样本空间:
事件空间: ,事件空间是样本空间的一个子集
事件的概率:
概率空间的定义由这三个概念组成,记为( , , )
概率的规则
概率的交集和举举段并集规则
P(A and B) = P(A B),两个事件同时发生
P(A or B) = P(A B),两个事件发生一个
P(A B) = P(A) + P(B) - P(A B)
P(A B) = P(A) + P(B) - P(A B)
注:借助Venn图可以证明其他关于概率的运算规则:
交换律 A B=B A
结合律 A B C = A (B C)
分配律 A (B C)=(A B) (A C)
摩根律 = , =
条件概率
P(AB) =P(A B) = P(B|A)P(A)
独立的定义 P(B|A)=P(B)
独立的充要条件 P(AB)=P(A)P(B)
证明:左到右, , 因此
右到左, , 得证
互斥(mutually exclusive)和独立(independent)
互斥代表两个事件没有重叠的部分,互斥不等于独立
互斥 :
独立 :
例如:投硬币,正面与反面是互斥的,但是头发是黄的和眼睛是黑的这两件事是独立的
如果不互斥,可以从Venn图证正誉明则对于事件 ,i {1, 2,... ,n}有
全概率公式 (Law of Total Probability)
证明:
贝叶斯公式
概率密度函数(pdf, probability density function)和概率质量函数(pmf, probability mass function),以及累积分布函数(cdf, cumulative distribution)
离散变量
pmf:
在离散变量中,P(a) = P(X=a)只有当a 至多有一个有意义的数 的时候才是正值,否则为0,如果X取值只能是 其中之一,则 ,其他的都是0
连续变量
pdf: 若f(x)为概率密度函数,则区间[a, b]内的概率为,
cdf:
由于 ,说明连续变量中,任何具体的点的P的值是0
离散随机变量的分布常见的有以下几种:
pmf
期望
方差
注意 :对于二项分布,根据其定义有三个条件:独立,等概率,二项
pmf
,其中
期望
注意到k=0的时候项为0,同时因为
(二项式的展开公式的逆用)
其实也可以这么去理解,n个独立的伯努利实验,每一个伯努利实验的期望是p,所以二项分布的期望自然就是np了
方差
(这是因为 )
(这里需要硬凑 )
或者也可以由n次伯努利实验的独立性直接得出
pmf
期望
方差
令 ,g(q)在求期望的时候已经求过了一遍, 由复合函数的求导法则可知:
因此,方差
另一种证明方式则是用错位相减法,证明方式可参考: https://blog.csdn.net/sinat_37321923/article/details/77493672
对于泊松分布的理解
承接二项分布,在现实生活中,实际上二项分布是很难实现的,最关键的地方在于这个n,比如接电话,如果用二项分布去考虑,我们需要知道有n个人投硬币,每个人有p的概率打电话进来,然后可以得到期望打电话过来的人数是np。但是事实上,我们根本不知道有多少个人来投硬币,也就是不知道这个n的具体数值。
如果我们换一个思路思考,不是打电话的n个客户来投硬币,而是电话来投硬币,这个问题就简单多了。
思路是,对于每一个 ,我们都可以看做是电话进行的投币,如果我的 足够小,则完全可以保证我的 就是一次伯努利实验。那么这n个 共同构成了二项分布。
假设现在,我们已知的信息是,在某一段时间内,有 个人来打电话。现在我们根据这个信息反推分布。
我们现在将这一段时间细分成n个 的区间,每个区间的概率都是 ,那么根据二项分布的期望,这n个区间的期望就是 ,这符合我们观测到的结果。
也被称为到达率,也就是在这一段时间之内事件发生的次数。
泊松分布在检验产品的缺陷等等问题上面应用十分广泛。
pmf
根据上面的理解来推导泊松分布的pmf
当 , , 因此,
同时:
由于当
这个是e的极限的定义
由以上极限得到泊松分布的pmf
期望
注意到k=0的时候项为0
注意到 的泰勒展开式
方差
因此
同样的,从理解上来看,假设有n个 时间,概率 方差为
参考: https://zhuanlan.hu.com/p/68780484
https://towardsdatascience.com/poisson-distribution-intuition-and-derivation-1059aeab90d
pdf
cdf
若是 均匀分布 ,则特指 的情况
pdf
cdf
pdf
Ⅷ 机器学习需要什么数学基础
数学基础
欢迎补充。
文中提供的PDF下载链接,均来自于网络,如有问题,请站内告知。
《矩阵分析》 PDFRoger Horn。矩阵分析领域无争议的经典
《概率论及其应用》 PDF威廉·费勒。极牛的书,可数学味道太重,不适合做机器学习的
《All Of Statistics》 PDF 扫描版PDF 高清版机器学习这个方向,统计学也一样非常重要。推荐All of statistics,这是CMU的一本很简洁的教科书,注重概念,简化计算,简化与Machine Learning无关的概念和统计内容,可以说是很好的快速入门材料。
《Nonlinear Programming, 2nd》 PDF最优化方法,非线性规划的参考书。
《Convex Optimization》 PDF配套代码Boyd的经典书籍,被引用次数超过14000次,面向实际应用,并且有配套代码,是一本不可多得的好书。
《Numerical Optimization》 PDF第二版,Nocedal着,非常适合非数值专业的学生和工程师参考,算法流程清晰详细,原理清楚。
《Introction to Mathematical Statistics》 PDF第六版,Hogg着,本书介绍了概率统计的基本概念以及各种分布,以及ML,Bayesian方法等内容。
《An Introction to Probabilistic Graphical Models》 PDFJordan着,本书介绍了条件独立、分解、混合、条件混合等图模型中的基本概念,对隐变量(潜在变量)也做了详细介绍,相信大家在隐马尔科夫链和用Gaussian混合模型来实现EM算法时遇到过这个概念。
《Probabilistic Graphical Models-Principles and Techniques》 PDFKoller着,一本很厚很全面的书,理论性很强,可以作为参考书使用。
具体数学 PDF经典
bind一月 4
线性代数 (Linear Algebra):我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是
Introction to Linear Algebra (3rd Ed.) by Gilbert Strang.
这本书是MIT的线性代数课使用的教材,也是被很多其它大学选用的经典教材。它的难度适中,讲解清晰,重要的是对许多核心的概念讨论得比较透彻。我个人觉得,学习线性代数,最重要的不是去熟练矩阵运算和解方程的方法——这些在实际工作中MATLAB可以代劳,关键的是要深入理解几个基础而又重要的概念:子空间(Subspace),正交(Orthogonality),特征值和特征向量(Eigenvalues and eigenvectors),和线性变换(Linear transform)。从我的角度看来,一本线代教科书的质量,就在于它能否给这些根本概念以足够的重视,能否把它们的联系讲清楚。Strang的这本书在这方面是做得很好的。
而且,这本书有个得天独厚的优势。书的作者长期在MIT讲授线性代数课(18.06),课程的video在MIT的Open courseware网站上有提供。有时间的朋友可以一边看着名师授课的录像,一边对照课本学习或者复习。
Linear Algebra
概率和统计 (Probability and Statistics):概率论和统计的入门教科书很多,我目前也没有特别的推荐。我在这里想介绍的是一本关于多元统计的基础教科书:
Applied Multivariate Statistical Analysis (5th Ed.) by Richard A. Johnson and Dean W. Wichern
这本书是我在刚接触向量统计的时候用于学习的,我在香港时做研究的基础就是从此打下了。实验室的一些同学也借用这本书学习向量统计。这本书没有特别追求数学上的深度,而是以通俗易懂的方式讲述主要的基本概念,读起来很舒服,内容也很实用。对于Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA)这些Learning中的基本方法也展开了初步的论述。
之后就可以进一步深入学习贝叶斯统计和Graphical models。一本理想的书是
Introction to Graphical Models (draft version). by M. Jordan and C. Bishop.
我不知道这本书是不是已经出版了(不要和Learning in Graphical Models混淆,那是个论文集,不适合初学)。这本书从基本的贝叶斯统计模型出发一直深入到复杂的统计网络的估计和推断,深入浅出,statistical learning的许多重要方面都在此书有清楚论述和详细讲解。MIT内部可以access,至于外面,好像也是有电子版的。