故事算法
㈠ 啤酒尿布的故事运用了什么算法(单选题,10分) A.支持向量机 B.逻辑回归 C.关联规则
买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的关联规则,所以选择C。
请采纳
㈡ 关于这个故事的算法问题
这一天里包括了老板已经除掉的吃饭。睡觉。上网。的时间。。老板没算这个已经被减的,所以,也就多出来一天。。。。。这个我觉得貌似是这样的。。
㈢ 机器学习故事汇-决策树算法
机器学习故事汇-决策树算法
【咱们的目标】系列算法讲解旨在用最简单易懂的故事情节帮助大家掌握晦涩无趣的机器学习,适合对数学很头疼的同学们,小板凳走起!
决策树模型是机器学习中最经典的算法之一啦,用途之广泛我就不多吹啦,其实很多机器学习算法都是以树模型为基础的,比如随机森林,Xgboost等一听起来就是很牛逼的算法(其实用起来也很牛逼)。
首先我们来看一下在上面的例子中我想根据人的年龄和性别(两个特征)对5个人(样本数据)进行决策,看看他们喜不喜欢玩电脑游戏。首先根据年龄(根节点)进行了一次分支决策,又对左节点根据性别进行了一次分支决策,这样所有的样本都落到了最终的叶子节点,可以把每一个叶子节点当成我们最终的决策结果(比如Y代表喜欢玩游戏,N代表不喜欢玩游戏)。这样我们就通过决策树完成了非常简单的分类任务!
再来看一下树的组成,主要结构有根节点(数据来了之后首先进行判断的特征),非叶子节点(中间的一系列过程),叶子节点(最终的结果),这些都是我们要建立的模块!
在决策中树中,我们刚才的喜欢玩电脑游戏的任务看起来很简单嘛,从上往下去走不就OK了吗!但是难点在于我们该如何构造这棵决策树(节点的选择以及切分),这个看起来就有些难了,因为当我们手里的数据特征比较多的时候就该犹豫了,到底拿谁当成是根节点呢?
这个就是我们最主要的问题啦,节点究竟该怎么选呢?不同的位置又有什么影响?怎么对特征进行切分呢?一些到这,我突然想起来一个段子,咱们来乐呵乐呵!
武林外传中这个段子够我笑一年的,其实咱们在推导机器学习算法的时候,也需要这么去想想,只有每一步都是有意义的我们才会选择去使用它。回归正题,我们选择的根节点其实意味着它的重要程度是最大的,相当于大当家了,因为它会对数据进行第一次切分,我们需要把最重要的用在最关键的位置,在决策树算法中,为了使得算法能够高效的进行,那么一开始就应当使用最有价值的特征。
接下来咱们就得唠唠如何选择大当家了,我们提出了一个概念叫做熵(不是我提出的。。。穿山甲说的),这里并不打算说的那么复杂,一句话解释一下,熵代表你经过一次分支之后分类的效果的好坏,如果一次分支决策后都属于一个类别(理想情况下,也是我们的目标)这时候我们认为效果很好嘛,那熵值就很低。如果分支决策后效果很差,什么类别都有,那么熵值就会很高,公式已经给出,log函数推荐大家自己画一下,然后看看概率[0,1]上的时候log函数值的大小(你会豁然开朗的)。
不确定性什么时候最大呢?模棱两可的的时候(就是你犹豫不决的时候)这个时候熵是最大的,因为什么类别出现的可能性都有。那么我们该怎么选大当家呢?(根节点的特征)当然是希望经过大当家决策后,熵值能够下降(意味着类别更纯净了,不那么混乱了)。在这里我们提出了一个词叫做信息增益(就当是我提出的吧。。。),信息增益表示经过一次决策后整个分类后的数据的熵值下降的大小,我们希望下降越多越好,理想情况下最纯净的熵是等于零的。
一个栗子:准备一天一个哥们打球的时候,包括了4个特征(都是环境因素)以及他最终有木有去打球的数据。
第一个问题:大当家该怎么选?也就是我们的根节点用哪个特征呢?
一共有4个特征,看起来好像用谁都可以呀,这个时候就该比试比试了,看看谁的能力强(使得熵值能够下降的最多)
在历史数据中,首先我们可以算出来当前的熵值,计算公式同上等于0.940,大当家的竞选我们逐一来分析,先看outlook这个特征,上图给出了基于天气的划分之后的熵值,计算方式依旧同上,比如outlook=sunny时,yes有2个,no有三个这个时候熵就直接将2/5和3/5带入公式就好啦。最终算出来了3种情况下的熵值。
再继续来看!outlook取不同情况的概率也是不一样的,这个是可以计算出来的相当于先验概率了,直接可以统计出来的,这个也需要考虑进来的。然后outlook竞选大当家的分值就出来啦(就是信息增益)等于0.247。同样的方法其余3个特征的信息增益照样都可以计算出来,谁的信息增益多我们就认为谁是我们的大当家,这样就完成了根节点的选择,接下来二当家以此类推就可以了!
我们刚才给大家讲解的是经典的ID3算法,基于熵值来构造决策树,现在已经有很多改进,比如信息增益率和CART树。简单来说一下信息增益率吧,我们再来考虑另外一个因素,如果把数据的样本编号当成一个特征,那么这个特征必然会使得所有数据完全分的开,因为一个样本只对应于一个ID,这样的熵值都是等于零的,所以为了解决这类特征引入了信息增益率,不光要考虑信息增益还要考虑特征自身的熵值。说白了就是用 信息增益/自身的熵值 来当做信息增益率。
我们刚才讨论的例子中使用的是离散型的数据,那连续值的数据咋办呢?通常我们都用二分法来逐一遍历来找到最合适的切分点!
下面再来唠一唠决策树中的剪枝任务,为啥要剪枝呢?树不是好好的吗,剪个毛线啊!这个就是机器学习中老生常谈的一个问题了,过拟合的风险,说白了就是如果一个树足够庞大,那么所有叶子节点可能只是一个数据点(无限制的切分下去),这样会使得我们的模型泛化能力很差,在测试集上没办法表现出应有的水平,所以我们要限制决策树的大小,不能让枝叶太庞大了。
最常用的剪枝策略有两种:
(1)预剪枝:边建立决策树边开始剪枝的操作
(2)后剪枝:建立完之后根据一定的策略来修建
这些就是我们的决策树算法啦,其实还蛮好的理解的,从上到下基于一种选择标准(熵,GINI系数)来找到最合适的当家的就可以啦!
㈣ 数学典故及数学故事
鬼谷算
我国汉代有位大将,名叫韩信。他每次集合部队,只要求部下先后按l~3、1~5、1~7报数,然后再报告一下各队每次报数的余数,他就知道到了多少人。他的这种巧妙算法,人们称为鬼谷算,也叫隔墙算,或称为韩信点兵,外国人还称它为“中国剩余定理”。到了明代,数学家程大位用诗歌概括了这一算法,他写道:
三人同行七十稀,五树梅花廿一枝,
七子团圆月正半,除百零五便得知。
这首诗的意思是:用3除所得的余数乘上70,加上用5除所得余数乘以21,再加上用7除所得的余数乘上15,结果大于105就减去105的倍数,这样就知道所求的数了。
比如,一篮鸡蛋,三个三个地数余1,五个五个地数余2,七个七个地数余3,篮子里有鸡蛋一定是52个。算式是:
1×70+2×21+3×15=157
157-105=52(个)
请你根据这一算法计算下面的题目。
新华小学订了若干张《中国少年报》,如果三张三张地数,余数为1张;五张五张地数,余数为2张;七张七张地数,余数为2张。新华小学订了多少张《中国少年报》呢?
㈤ 机器学习故事汇-逻辑回归算法
机器学习故事汇-逻辑回归算法
今天我们要来讨论的一个分类算法-逻辑回归(你有没有搞错,这不还是回归吗,虽然名字带上了回归其实它是一个非常实用的分类算法)。,适合对数学很头疼的同学们,小板凳走起!
先来吹一吹逻辑回归的应用,基本上所有的机器学习分类问题都可以使用逻辑回归来求解,当前拿到一份数据想做一个分类任务的时候第一手准备一定要拿逻辑回归来尝试(虽然有很多复杂的模型比如神经网络,支持向量机的名气更大,但是逻辑回归却更接地气,用的最多的还是它)!在机器学习中无论是算法的推导还是实际的应用一直有这样的一种思想,如果一个问题能用简单的算法去解决那么绝对没必要去套用复杂的模型。
在逻辑回归中最核心的概念就是Sigmoid函数了,首先我们先来观察一下它的自变量取值范围以及值域,自变量可以是任何实数(这没啥特别的!)但是我们观察值域的范围是[0,1]也就是任意的一个输入都会映射到[0,1]的区间上,我们来想一想这个区间有什么特别的含义吗?在我们做分类任务的时候一般我都都会认为一个数据来了它要么是0要么是1(只考虑二分类问题),我们其实可以更细致一点得出来它是0或者1的可能性有多大,由此我们就得出了一个输入属于某一个类别的概率值,这个[0,1]不就恰好是这个概率吗!
在这里我们的预测函数还是跟线性回归没有多大差别,只不过我们将结果又输入到Sigmoid函数中,这样得到了数据属于类别的概率值。在推导过程中,我们假定分类是两个类别的(逻辑回归是经典的而分类器)。设定y(标签)要么取0要么取1,这样就可以把两个类别进行整合,得到一个更直观的表达。
对于逻辑回归的求解,已然沿用我们上次跟大家讨论的梯度下降算法。给出似然函数,转换对数似然(跟线性回归一致),但是我们现在的优化目标却跟之前不太一样了,线性回归的时候我们要求解的是最小值(最小二乘法),但是现在我们想得到的却是使得该事件发生得最大值,为了沿用梯度下降来求解,可以做一个简单的转换添加一个负号以及一个常数很简单的两步就可以把原始问题依然转换成梯度下降可以求解的问题。
此处求导过程看起来有些长,但也都是非常非常基本的运算了,感兴趣拿起一支笔来实际算算吧!
最终就是参数更新了,迭代更新是机器学习的常规套路了。但是我们来简单想一想另外的一个问题,现在我们说的逻辑回归是一个二分类算法,那如果我的实际问题是一个多分类该怎么办呢?这个时候就需要Softmax啦,引入了归一化机制,来将得分值映射成概率值。
最后一句话总结一下吧,任何时候(没错就是这么狠)当我们一个实际任务来了,第一个算法就是逻辑回归啦,可以把它当成我们的基础模型,然后不断改进对比!
㈥ 数学趣味小故事
●儿歌比赛
动物学校举办儿歌比赛,大象老师做裁判。
小猴第一个举手,开始朗诵:“进位加法我会算,数位对齐才能加。个位对齐个位加,满十要向十位进。十位相加再加一,得数算得快又准。”
小猴刚说完,小狗又开始朗诵:“退位减法并不难,数位对齐才能减。个位数小不够减,要向十位借个一。十位退一是一十,退了以后少个一。十位数字怎么减,十位退一再去减。”
大家都为它们的精彩表演鼓掌。大象老师说:“它们的儿歌让我们明白了进位加法和退位减法,它们两个都应该得冠军,好不好?”大家同意并鼓掌祝贺它们。
●﹤、﹥和﹦的本领
很久以前,数学王国比较混乱。0—9十个兄弟不仅在王国称霸,而且彼此吹嘘自己的本领最大。数学天使看到这种情况很生气,派﹤、﹥和﹦三个小天使到数学王国建立次序,避免混乱。
三个小天使来到数学王国,0—9十个兄弟轻蔑地看着它们。9问道:“你们三个来数学王国干什么,我们不欢迎你们!”
﹦笑着说:“我们是天使派来你们王国的法官,帮你们治理好你们国家。我是‘等号’,这两位是‘大于号’和‘小于号’,它们开口朝谁,谁就大;它们尖尖朝谁,谁就小。”
0—9十个兄弟听说它们是天使派来的法官,就乖乖地服从﹤、﹥和﹦的命令。从此,数学王国有了严格的次序,任何人不会违反。
●小熊开店
小熊不喜欢学习,只想做生意,于是在学校旁边开了个水果店。小兔和小猴是它的同学,它们商量好,要教训这个不爱上学的懒家伙。
它们来到小熊的水果店。
“桃子怎么卖呀?”小猴问。
“第一筐里6元3公斤,第二筐里6元2公斤。”小熊回答。
小猴又说:“如果我从两筐里拿5公斤,要付你12元,对吗?”
小熊点点头。
“那我全买下,既然5公斤12元,那60公斤就是12×12=144元,对不对?”
“正是,正是。”小熊讲。
于是小猴买了所有的桃子,付了钱,和小兔高兴地走了。
晚上回到家,小熊结帐,怎么算都是亏本的。第二天,小猴、小兔找到小熊把情况说了,笑着说:“都是你学习不好,我们才来教训你一下”,并把少给的钱补给了小熊。
小熊惭愧地低下了头,从此每天上课都很认真。它们三个成了好朋友。
●唐僧师徒摘桃子
一天,唐僧命徒弟悟空、八戒、沙僧三人去花果山摘些桃子。不久,徒弟三人摘完桃子高高兴兴回来。师父唐僧问:你们每人各摘回多少个桃子?
八戒憨笑着说:师父,我来考考你。我们每人摘的一样多,我筐里的桃子不到100个,如果3个3个地数,数到最后还剩1个。你算算,我们每人摘了多少个?
沙僧神秘地说:师父,我也来考考你。我筐里的桃子,如果4个4个地数,数到最后还剩1个。你算算,我们每人摘了多少个?
悟空笑眯眯地说:师父,我也来考考你。我筐里的桃子,如果5个5个地数,数到最后还剩1个。你算算,我们每人摘多少个?
唐僧很快说出他们每人摘桃子的个数。你知道他们每人摘多少个桃子吗
●数学优秀小故事
有一个年轻的小伙子来找刘先生,并自我介绍说:“我叫于江,这次我带领了一个旅游团到香港旅游,听说您的大酒店环境舒适,服务周到,我们想来住你们酒店。”
刘先生连忙热情地说:“欢迎,欢迎,不知贵团一共有多少人?”
“人嘛,还可以,是一个大团。”
刘先生心里一阵惊喜:一个大团,又是一笔大生意,真是太好了。
作为一个导游,于江看出了刘先生的心思,他慢条斯理地说:“先生,如果你能算出我团的人数,我们就住您们酒店了。”
“你请说吧。”刘先生自信地说。
“如果我把我的团平均分成四组,多出一人,再把每小组平均分成四份,结果又多出一人,再把分成的四小组分成四份,结果又多出一人,当然,也包括我,请问我们至少有多少人?”
“一共多少呢?”刘先生马上思考起来,他一定要接下这笔生意,“没有具体的数字,该如何下手呢?”他是精明的生意人,很快说出答案:“至少八十五人,对不对?”
于江先生高兴地说:“一点不错,就是八十五人。请说说您的算法。”
“人数最少的情况是最后一次四等分时,每份为一人,由此推理得到:第三次分之前有1×4+1=5(人),第二次分之前有5×4+1=21(人),第一次分之前有21×4+1=85(人)。”
“好,我们今天就住在您这儿了。”
“那你们有多少男的和女的?”
“有55个男的,30个女的。”
“我们这儿现在只有11人的房间,7人、5人的房间,你们想怎么住?”
“当然是先生您给安排了,但必须男女分开,也不能有空床位。”
又出了一个题目,刘先生还从没碰到过这样的客人,他只好又得花一番心思了。
瞑思苦想之后,他终于得出了最佳方案:男的两间11人房间,四间7人房,一间5人房;女的一间11人房间,两间7人房,一间5人的,一共11间。
于江先生看了他的安排后,非常满意,马上办了住宿手续。
一桩大生意做成了,虽然复杂了一点,但刘先生的心里还是十分高兴的。
●聪明的小男孩
从前,一个国王经常给身边的大臣出难题来取乐,如果大臣答对了,他将用小恩小惠给点赏赐;如果答不出来,那将受罚,甚至被砍头。
一天,国王指着宫里的一个池塘问:“谁能说出池子里有多少桶水,我就赏他珠宝。如果说不出来,我就要‘赏’你们每人50大鞭。”大臣们被这突如其来的问题难住了。
正在大臣们心慌意乱之际,走过来一个放牛的小男孩。他问清了事情的缘由之后说:“我愿意见见这位国王。”
大臣们把小男孩带到了国王身边。国王见眼前的小男孩又黑又瘦又小,便怀疑说:“这个问题答上来有奖,答不上来可要被砍头的,你知道吗?”在场的人都替这个小男孩捏了一把汗,可小男孩却不慌不忙地回答出国王的问题。国王无奈之下,拿出珠宝奖励给了小男孩。小朋友们,你知道他是怎样回答的吗?
其实,国王出的是一道条件不足的问题。在正常的思维模式下是无法找出正确答案的。小男孩正好抓住这一关键。他是这样回答的:“这要看桶有多大:如果桶和池塘一样大,就是一桶水;如果桶只有池塘一半大,就是有两桶水;如果桶是池塘的三分之一大,就是3桶水……”
小男孩实际上打破了习惯性的思维模式,对具体的问题进行具体的分析,他的头脑多么聪明,多么灵活啊!
●一个故事引发的数学家
陈景润是家喻户晓的数学家,在攻克歌德巴赫猜想方面作出了重大贡献,创立了着名的“陈氏定理”,所以有许多人亲切地称他为“数学王子”。但有谁会想到,他的成就源于一个故事。
1937年,勤奋的陈景润考上了福州英华书院。一天,沈元老师在数学课上给大家讲了一个故事:“200年前有个法国人发现了一个有趣的现象:6=3+3,8=5+3,10=5+5,12=5+7,28=5+23,100=11+89。每个大于4的偶数都可以表示为两个奇数之和。因为这个结论没有得到证明,所以还是一个猜想。大数学欧拉说过:虽然我不能证明它,但是我确信这个结论是正确的。
从此,陈景润对这个奇妙问题产生了浓厚的兴趣。课余时间他最爱到图书馆,不仅读了中学辅导书,这些大学的数理化课程教材他也如饥似渴地阅读。
兴趣是第一老师。正是这样的数学故事,引发了陈景润的兴趣,引发了他的勤奋,从而引发了一位伟大的数学家。(果果)
●数学小故事——唐僧取经
一天,唐僧想考考三个徒弟的数学水平,于是他把徒弟们叫到面前,说:“徒儿们,现在我在地上写3个数,你们谁能准确读出来,我就把真经传给他。”
唐僧首先写出:23456。猪八戒迫不及待地说:“这个读二三四五六!”唐僧摇了摇头,说:“八戒,多位数的读法是有规律的。每个数字从右到左依次为个位、十位、百位、千位和万位。只要从左到右把每个数字读出来,并在后面加上万、千、百、十就可以了,只是需要注意,最后一个数字不要读‘个’。所以,23456读作二万三千四百五十六。”
唐僧又写出:130567。孙悟空马上说:“这太容易了,读作十三万零千五百六十七。”唐僧又摇了摇头,说:“遇到0,要特别注意,当一串数中间有0时,只要读零就可以了,它后面的数位不要读出来。所以这个数应该读作十三万零五百六十七。”
第三个数是120034。沙和尚想了想说:“应该读作十二万零零三十四。”唐僧叹了口气,说:“如果一串数中有连续的几个零,读一个就可以了。所以这个数要读成十二万零三十四。徒儿们,你们的数学都学得不太好,还得继续努力呀,真经暂时不能传给你们呀!”
科学小故事
牛顿每天除抽出少量的时间锻炼身体外,大部分时间是在书房里度过的。一次,在书房中,他一边思考着问题,一边在煮鸡蛋。苦苦地思索,简直使他痴呆。突然,锅里的水沸腾了,赶忙掀锅一看,“啊!”他惊叫起来,锅里煮的却是一块怀表。
法拉第 1791 年 9 月 22 日生在一个手工工人家庭, 家里人没有特别的文化, 而且颇为贫 穷。法拉第的父亲是一个铁匠。法拉第小时候受到的学校教育是很差的。13 岁时,他就到 一家装订和出售书籍兼营文具生意的铺子里当了学徒。但与众不同的是他除了装订书籍外, 还经常阅读它们。 他的老板也鼓励他, 有一位顾客还送给了他一些听伦敦皇家学院讲演的听 讲证。1812 年冬季一天,正当拿破仑的军队在俄罗斯平原上遭到溃败的时候,一位 21 岁的 青年人来到了伦敦皇家学院,他要求和着名的院长戴维见面谈话。作为自荐书,他带来了一 本簿子,里面是他听戴维讲演时记下的笔记。这本簿子装订得整齐美观,这位青年给物理学家、化学家戴维留 下了很好的印象。戴维正好缺少一位助手,不久他就雇用了这位申请者。临终前,当有人问戴维他一生最伟大的发现是什么的时候,戴维说:“我一生最伟大的发现就是法拉第!”
伟大的额物理学家安培:有一次,安培在街上散步,走着走着,想出了一个电学问题的算式,正为没有地方运算而发愁。突然,他见到面前有一块“黑板”,就拿出随身携带的粉笔,在上面运算起来。那“黑板”原来是一辆马车的车厢背面。马车走动了,他也跟着走,边走边写;马车越来越快,他就跑了起来,一心一意要完成他的推导,直到他实在追不上马车了才停下脚步。安培这个失常的行动,使街上的人笑得前仰后合。
高斯在晚年喜欢对自己的小孙儿讲述自己小时候的故事。他说他在还不会讲话的时候,就已经学会计算了。
他还不到三岁的时候,有一天他观看父亲在计算受他管辖的工人们的周薪。父亲在喃喃的计数,最后长叹的一声表示总算把钱算出来。
父亲念出钱数,准备写下时。身边传来微小的声音:“爸爸!算错了。钱应该是这样……”
父亲惊异地再算一次,果然小高斯讲的数是正确的。奇特的地方是没有人教过高斯怎么样计算,而小高斯平日靠观察,在大人不知不觉时,他自己学会了计算。
另外一个着名的故事亦可以说明高斯很小时就有很快的计算能力。当他还在小学读书时,有一天,算术老师要求全班同学算出以下的算式:
1+2+3+4+…+98+99+100=?
在老师把问题讲完不久,高斯就在他的小石板上端端正正地写下答案5050,老师头也不抬让他重算,但是很快他又拿出答案震惊了老师,而其他孩子算到头昏脑胀,还是算不出来。最后只有高斯的答案是正确无误。
高斯的家里很穷,在冬天晚上吃完饭后,父亲就要高斯上床睡觉,这样可以节省燃料和灯油。高斯很喜欢读书,他往往带一棵芜菁(Turnip)上他的顶楼去。他把芜菁当中挖空,塞进用粗棉卷成的灯芯,用一些油脂当烛油,于是就在这发出微弱光亮的灯下,专心地看书。等到疲劳和寒冷压倒他时,他才钻进被窝睡觉。 高斯的算术老师本来是对学生态度不好,他常认为自己在穷乡僻壤教书是怀才不遇。现在发现了“神童”,他是很高兴。但是很快他就感到惭愧,觉得自己懂的数学不多,不能对高斯有什么帮助。他去城里自掏腰包买了一本数学书送给高斯。高斯很高兴和比他大差不多十岁的老师的助手一起学习这本书。这个小孩子和那个少年建立起深厚的感情,他们花许多时间讨论这里面的东西。
㈦ 发明1加到100简便算法的人的故事
高斯十岁解决了那个问题
着名数学家高斯小时候就很善于动脑筋思考问题。有一天他的老师比特纳说:“今天给大家出一道算术题,谁算完,就可以先回家吃饭!”说完,他在黑板上写了一道算数题,题是这样的:“1+2+3+4+5+……+100=?”
同学们都低头做题,老师开始看起了小说,可没等他看上两页,就听见小高斯说:“报告老师,我做完了。”
比特纳头也没抬,就说:“这么快就做完了,肯定不对,回去重做。”
高斯却说:“不会错的,肯定是5050。”
老师听到这个答案非常惊讶,因为答案的确是5050。小高斯解释道:“我发现这许多数中,一头一尾两个数相加的和都是一样的,1加100是101;2加99是101;3加98是101……50加51也是101,就是说一共有50个101,因此很容易就能算出答案是5050。”
比纳特老师非常惊喜小小的高斯竟然这么善于思考,从此,他越发注重对小高斯进行数学方面的指导了!
高斯(Gauss 1777.4.30~1855.2.23)是德国数学家 ,也是科学家,出生于德国布伦兹维克的一个贫苦家庭。父亲格尔恰尔德·迪德里赫先后当过护堤工、泥瓦匠和园丁,第一个妻子和他生活了10多年后因病去世,没有为他留下孩子。迪德里赫后来娶了罗捷雅,第二年他们的孩子高斯出生了,这是他们唯一的孩子。父亲对高斯要求极为严厉,甚至有些过份,常常喜欢凭自己的经验为年幼的高斯规划人生。高斯尊重他的父亲,并且秉承了其父诚实、谨慎的性格。1806年迪德里赫逝世,此时高斯已经做出了许多划时代的成就。他和牛顿、阿基米德,被誉为有史以来的三大数学家。高斯是近代数学奠基者之一,在历史上影响之大, 可以和阿基米德、牛顿、欧拉并列,有“数学王子”之称。
他幼年时就表现出超人的数学天才。1795年进入格丁根大学学习。第二年他就发现正十七边形的尺规作图法。并给出可用尺规作出的正多边形的条件,解决了欧几里得以来悬而未决的问题。
㈧ 机器学习故事汇-集成算法
机器学习故事汇-集成算法
【咱们的目标】系列算法讲解旨在用最简单易懂的故事情节帮助大家掌握晦涩无趣的机器学习,适合对数学很头疼的同学们,小板凳走起!
今天咱们就来讨论一下传说中的集成算法,之前咱们讲的算法都是单兵作战的(单个模型得到结果),但是回过头来想一想现在是不是干啥都讲究个合作共赢,所以咱们的模型也是如此。单个算法确实势单力薄,假如我们可以把它们组合起来会不会得到更好的效果呢?(算法们要揭竿起义了,今亡亦死举大计亦死。。。编不下去了)
在集成算法中,有三个核心模块,咱们就一一道来,先来概述一下:
Bagging集成:并行的构造多个基础模型(随机森林),每一个基础模型都各自为政,然后把它们的结果求一个平均就好!
Boosting集成:串行的构造多个基础模型(Xgboost),每一个基础模型都要严格筛选,在前面的基础上加进来的新模型后,它们整体的效果起码得没加这个新的基础模型前要强吧!
Stacking集成:多种算法群殴一起上!选择多个机器学习算法做同一件事,最后把它们的结果合并就OK啦!
先来看看第一个家伙Bagging模型,其典型代表就是随机森立了,简单来说就是并行的训练一堆树模型,然后求其平均结果,在这里我们要讨论一个问题,就是每个树模型该怎么构造呢?如果不加入任何限制,那每个树模型不都差不多嘛,那最后的平均结果又会有什么变化呢?所以为了结果的泛化能力更强,必须要使得每个树模型表现出多样性,也就是尽可能的让每个树模型都不一样!
这该怎么做呢?什么影响模型呢?数据绝对是最大的影响因子,这里的森林很好理解了,就是把树放在一起,那么随机又是什么呢?为了保证每个树的多样性,在构建模型时,我们做了二重随机(我自创的词。。。)第一重就是对样本的选择,每次随机的有放回的选择部分样本作为一棵树的训练样本(比如选择百分之八十作为训练集)。第二重还要考虑特征了,既然样本数据能随机,那么特征也是一样的,每棵树选择的特征也是不一样的随机选择部分特征来建模!
随机的意义非常重要,这是随机森林的精神所在!
随机森林作为灰常经典的机器学习算法,优势自然少不了,当我们建模完之后,还可以对特征进行重要性评估,其实简单来说一个特征的重要与否可以取决于建模的时候如果把这个特征换成噪音特征再去看看结果的错误率是不是显着上升,如果显着上升,那么这个特征自然很重要,如果没变化,那这个特征就没啥用了,因为它和噪音没啥区别!
随机森林中树的个数是不是越多越好呢?理论上越多的树效果应该会更好吧,但是实际上我们把树的个数增加到一定的时候比如100棵了已经,再往上增加树的个数结果也只会发生小范围的浮动,基本也就稳定了!
Boosting集成中典型的代表就属Xgboost啦,一个大杀器,这个算法由于涉及的数学比较多,咱们后续来一个专题去讲Xgboost,我们先来看看简单些的Adaboost。
Adaboost算法概述来说就是,首选我有一个非常简单的模型,比如深度为1的树模型,然后我去预测一下结果,在结果中我发现某些样本预测错了,这个时候第二个简单的树模型就来了,还是同样的任务只不过数据的权重发生了变换,一开始所有的数据都是相同的权重,但是第二次会把前面那次预测错的数据的权重增大,相对来说预测对的数据的权重就会减小。说白了就是让后面的模型更注重我之前哪些数据分错了,这回好能分对它!(好比我们在考试前都会复习之前做错的题)
最后来看一下堆叠模型吧,社会我Stacking,人狠话不多,不需要多解释,做了一堆算法,然后把它们的结果堆叠起来,每个算法都有自己的预测结果,这些结果组合在一起那不相当于一个新的特征嘛,再把它们结果组成的特征去做一个分类或者回归,又得到了一个唯一的结果。
㈨ 神秘国度的爱情故事 数据结构详细算法程序
神秘国度的爱情故事代码#include<iostream> using namespace std;#define MAXNODE 100 //图中顶点的最大个数typedef char ElemType; //顶点的数据类型
struct Node //定义边的表结点{ int adjvex; //邻接点在顶点向量中的下标 struct Node *next; //指向下一邻接点的指针}; typedef struct //定义顶点结点{ ElemType vertex; //顶点信息 Node *firstarc; //指向第一邻接点的指针}VerNode;
typedef struct { VerNode vertices[MAXNODE];//定义邻接表 int vexnum,arcnum; //顶点和边的数目}AlGraph;
AlGraph creatgraph(AlGraph G){ //建立图函数 int i,j,k; //i,j,k用于边和顶点的建立 Node *p; //用于新生成顶点的指针 cout<<"输入村落的个数:"<<endl; cin>>G.vexnum; G.arcnum=G.vexnum-1; for(i=0;i<G.vexnum;i++) { G.vertices[i].firstarc=NULL; } cout<<"输入村落间的道路:"<<endl; for(k=0;k<G.arcnum;k++) { cin>>i>>j; p=(Node*)malloc(sizeof(Node)); p->adjvex=j;p->next=G.vertices[i].firstarc;G.vertices[i].firstarc=p;//用头插法 p=(Node*)malloc(sizeof(Node)); p->adjvex=i;p->next=G.vertices[j].firstarc; G.vertices[j].firstarc=p;
} return G;} int visited[MAXNODE]; //用于深度遍历记住遍历过的顶点AlGraph G; //全局图int w; //记住C【j】点int count=0; //计数器,深度优先后,保存是否在AB间int count1=0; //辅助计数器,判断ABC是否重复
void DFS(AlGraph G,int A,int B,int C){ //G为邻接表存储的图,从第v个顶点出发递归的深度优先遍历函数 if(A==C||B==C)count1++; //如果遍历到A或B点辅助计数器加一 visited[C]=1; Node *p; p=(Node*)malloc(sizeof(Node)); //为p申请空间 p=G.vertices[C].firstarc; //指向c的第1邻接点的指针 while(p!=NULL) { if(!visited[p->adjvex]) { DFS(G,A,B,p->adjvex); //访问p的顶点向量中的下标 } if(p->adjvex==w&&count1==1)count=1;//如果辅助计数器为一且遍历返回到C时计数器为一 if(count==1)break; p=p->next; //遍历到已被遍历的顶点从此顶点的下一邻接点 }}void If(AlGraph G){ //判断C是否在A和B之间,原理是判断是否在一次探测,还是产生回溯 int d; //d为判断的次数 cout<<"输入测试的次数:"<<endl; cin>>d; int A[10],B[10],C[10]; //记住每次用于测试A、B、C的值 cout<<"输入用于测试A、B、C的值:"<<endl; for(int i=0;i<d;i++) { cin>>A[i]>>B[i]>>C[i]; } cout<<"显示测试结果:"<<endl; for(int j=0;j<d;j++) { w=C[j]; DFS(G,A[j],B[j],C[j]); if(count==1)cout<<"YES恭喜你将找到命中的恋人"<<endl;//在遍历A或B后又重新遍历到C if(count==0)cout<<"NO你将与她错过 "<<endl;//在遍历了A和遍历了B之后又从新遍历到C for(int k=0;k<=G.vexnum;k++) visited[k]=0; count=0; count1=0; //计数器清0 }}void main(){ cout<<" 《故事背景介绍》"<<endl; cout<<" /* 欢迎来到神秘国度,在神秘国度里你将找到命中的恋人*/"<<endl; cout<<" 。。。。 请按照提示信息寻找爱情。。。。。。"<<endl;
G=creatgraph(G);//调用图建立函数 If(G);//调用判断函数}
㈩ 区块链的故事 - 9 - RSA 算法
RSA
迪菲与赫尔曼完美地解决了密钥分发的难题,从此,交换密钥就很简单了,爱丽丝与鲍勃完全可以可以在村头大喇叭里喊话,就能够交换出一个密钥。但加密的方式,依然是对称加密的。
DH 协议交换密钥虽然方便,但依然有一些不尽人意的麻烦处,爱丽丝还是要与鲍勃对着嚷嚷半天,二人才能生成密钥。当爱丽丝想要交换密钥的时候,若是鲍勃正在睡觉,那爱丽丝的情书,还是送不出去。
迪菲与赫尔曼在他们的论文中,为未来的加密方法指出了方向。 通过单向函数,设计出非对称加密,才是终极解决方案。 所谓非对称加密,就是一把钥匙用来合上锁,另一把钥匙用来开锁,两把钥匙不同。锁死的钥匙,不能开锁。开锁的钥匙,不能合锁。
麻省理工的三位科学家,他们是罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman),他们读了迪菲与赫尔曼的论文,深感兴趣,便开始研究。迪菲与赫尔曼未能搞定的算法,自他们三人之手,诞生了。
2002 年,这三位大师因为 RSA 的发明,获得了图灵奖。 但不要以为 RSA 就是他们的全部,这三位是真正的大师,每一位的学术生涯都是硕果累累。让我们用仰视的目光探索大师们的高度。
李维斯特还发明了 RC2, RC4, RC 5, RC 6 算法,以及着名的 MD2, MD3, MD4, MD5 算法。他还写了一本书,叫 《算法导论》,程序员们都曾经在这本书上磨损了无数的脑细胞。
萨莫尔发明了 Feige-Fiat-Shamir 认证协议,还发现了微分密码分析法。
阿德曼则更加传奇,他开创了 DNA 计算学说,用 DNA 计算机解决了 “旅行推销员” 问题。 他的学生 Cohen 发明了计算机病毒,所以他算是计算机病毒的爷爷了。他还是爱滋病免疫学大师级专家,在数学、计算机科学、分子生物学、爱滋病研究等每一个方面都作出的卓越贡献。
1976 年,这三位都在麻省理工的计算机科学实验室工作,他们构成的小组堪称完美。李维斯特和萨莫尔两位是计算机学家,他们俩不断提出新的思路来,而阿德曼是极其高明的数学家,总能给李维斯特和萨莫尔挑出毛病来。
一年过后,1977 年,李维斯特在一次聚会后,躺在沙发上醒酒,他辗转反侧,无法入睡。在半睡半醒、将吐未吐之间,突然一道闪电在脑中劈下,他找到了方法。一整夜时间,他就写出了论文来。次晨,他把论文交给阿德曼,阿德曼这次再也找不到错误来了。
在论文的名字上,这三位还着实君子谦让了一番。 李维斯特将其命名为 Adleman-Rivest-Shamir,而伟大的阿德曼则要求将自己的名字去掉,因为这是李维斯特的发明。 最终争议的结果是,阿德曼名字列在第三,于是这个算法成了 RSA。
RSA 算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开,用作加密密钥。
例如,选择两个质数,一个是 17159,另一个是 10247,则两数乘积为 175828273。 乘积 175828273 就是加密公钥,而 (17159,10247)则是解密的私钥。
公钥 175828273 人人都可获取,但若要破解密文,则需要将 175828273 分解出 17159 和 10247,这是非常困难的。
1977 年 RSA 公布的时候,数学家、科普作家马丁加德纳在 《科学美国人》 杂志上公布了一个公钥:
114 381 625 757 888 867 669 235 779 976 146 612 010 218 296 721 242 362 562 842 935 706 935 245 733 897 830 597 123 563 958 705 058 989 075 147 599 290 026 879 543 541
马丁悬赏读者对这个公钥进行破解。漫长的 17 年后,1994 年 4 月 26 日,一个 600 人组成的爱好者小组才宣称找到了私钥。私钥是:
p:3 490 529 510 847 650 949 147 849 619 903 898 133 417 764 638 493 387 843 990 820 577
q:32 769 132 993 266 709 549 961 988 190 834 461 413 177 642 967 992 942 539 798 288 533
这个耗时 17 年的破解,针对的只是 129 位的公钥,今天 RSA 已经使用 2048 位的公钥,这几乎要用上全世界计算机的算力,并耗费上几十亿年才能破解。
RSA 的安全性依赖于大数分解,但其破解难度是否等同于大数分解,则一直未能得到理论上的证明,因为未曾证明过破解 RSA 就一定需要作大数分解。
RSA 依然存在弱点,由于进行的都是大数计算,使得 RSA 最快的情况也比普通的对称加密慢上多倍,无论是软件还是硬件实现。速度一直是 RSA 的缺陷。一般来说只用于少量数据加密。
RSA 还有一个弱点,这个在下文中还会提及。
在密码学上,美国的学者们忙的不亦乐乎,成果一个接一个。但老牌帝国英国在密码学上,也并不是全无建树,毕竟那是图灵的故乡,是图灵带领密码学者们在布莱切里公园战胜德国英格玛加密机的国度。
英国人也发明了 RSA,只是被埋没了。
60 年代,英国军方也在为密码分发问题感到苦恼。1969 年,密码学家詹姆斯埃利斯正在为军方工作,他接到了这个密钥分发的课题。他想到了一个主意,用单向函数实现非对称加密,但是他找不到这个函数。政府通讯总部的很多天才们,加入进来,一起寻找单向函数。但三年过去了,这些聪明的脑袋,并没有什么收获,大家都有些沮丧,这样一个单项函数,是否存在?
往往这个时候,就需要初生牛犊来救场了。科克斯就是一头勇猛的牛犊,他是位年轻的数学家,非常纯粹,立志献身缪斯女神的那种。 虽然年轻,但他有一个巨大优势,当时他对此单向函数难题一无所知,压根儿不知道老师们三年来一无所获。于是懵懵懂懂的闯进了地雷阵。
面对如此凶险的地雷阵,科克斯近乎一跃而过。只用了半个小时,就解决了这个问题,然后他下班回家了,并没有把这个太当回事,领导交代的一个工作而已,无非端茶倒水扫地解数学题,早点干完,回家路上还能买到新出炉的面包。他完全不知道自己创造了历史。科克斯是如此纯粹的数学家,后来他听闻同事们送上的赞誉,还对此感到有些不好意思。在他眼里,数学应该如哈代所说,是无用的学问,而他用数学解决了具体的问题,这是令人羞愧的。
可惜的是,科克斯的发明太早了,当时的计算机算力太弱,并不能实现非对称的加解密。所以,军方没有应用非对称加密算法。詹姆斯与科克斯把非对称加密的理论发展到完善,但是他们不能说出去,军方要求所有的工作内容都必须保密,他们甚至不能申请专利。
军方虽然对工作成果的保密要求非常严格,但对工作成果本身却不很在意。后来,英国通讯总部发现了美国人的 RSA 算法,觉得好棒棒哦。他们压根就忘记了詹姆斯与科克斯的 RSA。通讯总部赞叹之余,扒拉了一下自己的知识库,才发现自己的员工科克斯早已发明了 RSA 类似的算法。 官僚机构真是人类的好朋友,总能给人们制造各种笑料,虽然其本意是要制造威权的。
科克斯对此并不介怀,他甚至是这样说的:“埋没就埋没吧,我又不想当网红,要粉丝干嘛?那些粉丝能吃?” 原话不是这样的,但表达的意思基本如此。
迪菲在 1982 年专程去英国见詹姆斯,两人惺惺相惜,真是英雄相见恨晚。可惜詹姆斯依然不能透漏他们对 RSA 的研究,他只告诉了迪菲:“你们做的比我们要好。” 全球各国的科学家们,可以比出谁更好,但全球各国的官僚们,却很难比出谁更颟顸,他们不分高下。
区块链的故事 - 1
区块链的故事 - 2
区块链的故事 - 3
区块链的故事- 4
区块链的故事 - 5
区块链的故事 - 6
区块链的故事 - 7
区块链的故事 - 8