當前位置:首頁 » 操作系統 » 故事演算法

故事演算法

發布時間: 2022-09-06 05:58:13

㈠ 啤酒尿布的故事運用了什麼演算法(單選題,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

熱點內容
學習java地址 發布:2024-05-14 02:26:42 瀏覽:226
首頁訪問時間 發布:2024-05-14 02:20:50 瀏覽:735
python文件匹配字元串 發布:2024-05-14 02:18:20 瀏覽:867
c迭代演算法 發布:2024-05-14 02:02:41 瀏覽:139
什麼叫安卓屏幕 發布:2024-05-14 01:56:36 瀏覽:153
如何驗證配置是否正確並生效 發布:2024-05-14 01:56:30 瀏覽:634
可復用的業務需要什麼伺服器 發布:2024-05-14 01:55:07 瀏覽:603
堆棧java 發布:2024-05-14 01:51:16 瀏覽:647
只允許訪問網站 發布:2024-05-14 01:33:34 瀏覽:526
蘋果ipadid密碼忘了怎麼辦 發布:2024-05-14 01:18:56 瀏覽:933