【原創(chuàng)】機(jī)器學(xué)習(xí)之PageRank算法應(yīng)用與C#實(shí)現(xiàn)(2)球隊(duì)排名應(yīng)用與C#代碼
本文關(guān)鍵詞:Google搜索引擎的數(shù)學(xué)模型及其應(yīng)用,由筆耕文化傳播整理發(fā)布。
在上一篇文章:機(jī)器學(xué)習(xí)之PageRank算法應(yīng)用與C#實(shí)現(xiàn)(1)算法介紹 中,對(duì)PageRank算法的原理和過(guò)程進(jìn)行了詳細(xì)的介紹,并通過(guò)一個(gè)很簡(jiǎn)單的例子對(duì)過(guò)程進(jìn)行了講解。從上一篇文章可以很快的了解PageRank的基礎(chǔ)知識(shí)。相比其他一些文獻(xiàn)的介紹,上一篇文章的介紹非常簡(jiǎn)潔明了。說(shuō)明:本文的主要內(nèi)容都是來(lái)自“趙國(guó),宋建成.Google搜索引擎的數(shù)學(xué)模型及其應(yīng)用,西南民族大學(xué)學(xué)報(bào)自然科學(xué)版.2010,vol(36),3”這篇學(xué)術(shù)論文。鑒于文獻(xiàn)中本身提供了一個(gè)非常簡(jiǎn)單容易理解和入門的案例,所以本文就使用文章的案例和思路來(lái)說(shuō)明PageRank的應(yīng)用,文章中的文字也大部分是復(fù)制該篇論文,個(gè)人研究是對(duì)文章的理解,以及最后一篇的使用C#實(shí)現(xiàn)該算法的過(guò)程,可以讓讀者更好的理解如何用程序來(lái)解決問(wèn)題。所以特意對(duì)作者表示感謝。如果有認(rèn)為侵權(quán),請(qǐng)及時(shí)聯(lián)系我,將及時(shí)刪除處理。
論文中的案例其實(shí)是來(lái)源于1993年全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽的B題—足球隊(duì)排名問(wèn)題。
本文原文鏈接:【原創(chuàng)】機(jī)器學(xué)習(xí)之PageRank算法應(yīng)用與C#實(shí)現(xiàn)(2)球隊(duì)排名應(yīng)用與C#代碼
1993年的全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽B題就出了這道題目,不過(guò)當(dāng)時(shí)PageRank算法還沒(méi)有問(wèn)世,所以現(xiàn)在用PageRank來(lái)求解也只能算馬后炮,不過(guò)可以借鑒一下思路,順便可以加深對(duì)算法的理解,并可以觀察算法實(shí)際的效果怎么樣。順便說(shuō)一下,全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽的確非常有用,我在大學(xué)期間,連續(xù)參加過(guò)2004和2005年的比賽,雖然只拿了一個(gè)省二等獎(jiǎng),但是這個(gè)過(guò)程對(duì)我的影響非常大。包括我現(xiàn)在的編程,解決問(wèn)題的思路都是從建模培訓(xùn)開(kāi)始的。希望在校大學(xué)生珍惜這些機(jī)會(huì),如果能入選校隊(duì),參加集訓(xùn),努力學(xué)習(xí),對(duì)以后的學(xué)習(xí),工作都非常有幫助。下面看看這個(gè)題目的具體問(wèn)題:
具體數(shù)據(jù)由于篇幅較大,已經(jīng)上傳為圖片,需要看的,點(diǎn)擊鏈接:數(shù)據(jù)鏈接
2.利用PageRank算法的思路 2.1 問(wèn)題分析足球隊(duì)排名次問(wèn)題要求我們建立一個(gè)客觀的評(píng)估方法,只依據(jù)過(guò)去一段時(shí)間(幾個(gè)賽季或幾年)內(nèi)每個(gè)球隊(duì)的戰(zhàn)績(jī)給出各個(gè)球隊(duì)的名次,具有很強(qiáng)的實(shí)際背景.通過(guò)分析題中12支足球隊(duì)在聯(lián)賽中的成績(jī),不難發(fā)現(xiàn)表中的數(shù)據(jù)殘缺不全,隊(duì)與隊(duì)之間的比賽場(chǎng)數(shù)相差很大,直接根據(jù)比賽成績(jī)來(lái)排名次比較困難。
下面我們利用PageRank算法的隨機(jī)沖浪模型來(lái)求解.類比PageRank算法,我們可以綜合考慮各隊(duì)的比賽成績(jī)?yōu)槊恐蜿?duì)計(jì)算相應(yīng)的等級(jí)分(Rank),然后根據(jù)各隊(duì)的等級(jí)分高低來(lái)確定名次,直觀上看,給定球隊(duì)的等級(jí)分應(yīng)該由它所戰(zhàn)勝和戰(zhàn)平的球隊(duì)的數(shù)量以及被戰(zhàn)勝或戰(zhàn)平的球隊(duì)的實(shí)力共同決定.具體來(lái)說(shuō),確定球隊(duì)Z的等級(jí)分的依據(jù)應(yīng)為:一是看它戰(zhàn)勝和戰(zhàn)平了多少支球隊(duì);二要看它所戰(zhàn)勝或戰(zhàn)平球隊(duì)的等級(jí)分的高低.這兩條就是我們確定排名的基本原理.在實(shí)際中,若出現(xiàn)等級(jí)分相同的情況,可以進(jìn)一步根據(jù)凈勝球的多少來(lái)確定排名.由于表中包含的數(shù)據(jù)量龐大,我們先在不計(jì)平局,只考慮獲勝局的情形下計(jì)算出各隊(duì)的等級(jí)分,以說(shuō)明算法原理。然后我們綜合考慮獲勝局和平局,加權(quán)后得到各隊(duì)的等級(jí)分,并據(jù)此進(jìn)行排名?紤]到競(jìng)技比賽的結(jié)果的不確定性,我們最后建立了等級(jí)分的隨機(jī)沖浪模型,分析表明等級(jí)分排名結(jié)果具有良好的參數(shù)穩(wěn)定性。
2.2 獲取轉(zhuǎn)移概率矩陣首先利用有向賦權(quán)圖的權(quán)重矩陣來(lái)表達(dá)出各隊(duì)之間的勝負(fù)關(guān)系.用圖的頂點(diǎn)表示相應(yīng)球隊(duì),用連接兩個(gè)頂點(diǎn)的有向邊表示兩隊(duì)的比賽結(jié)果。同時(shí)給邊賦權(quán)重,表明占勝的次數(shù)。所以,可以得到數(shù)據(jù)表中給出的12支球隊(duì)所對(duì)應(yīng)的權(quán)重矩陣,這是計(jì)算轉(zhuǎn)義概率矩陣的必要步驟,這里直接對(duì)論文中的截圖進(jìn)行引用:
上述權(quán)重不夠科學(xué),在論文中,作者提出了加權(quán)等級(jí)分,就是考慮平局的影響,對(duì)2個(gè)矩陣進(jìn)行加權(quán)得到權(quán)重矩陣,從而得到轉(zhuǎn)移概率矩陣。這里由于篇幅比較大,但是思路比較簡(jiǎn)單,不再詳細(xì)說(shuō)明,如果需要詳細(xì)了解,可以看論文。本文還是集中在C#的實(shí)現(xiàn)過(guò)程。
2.4 隨機(jī)沖浪模型
下面我們將使用C#實(shí)現(xiàn)論文中的上述過(guò)程,注意,2.3和2.2的思想是類似的,只不過(guò)是多了一個(gè)加權(quán)的過(guò)程,對(duì)程序來(lái)說(shuō)還是很簡(jiǎn)單的。下面還是按照步驟一個(gè)一個(gè)來(lái),很多人看到問(wèn)題寫程序很難下手,其實(shí)習(xí)慣就好了,按照算法的步驟來(lái),一個(gè)一個(gè)實(shí)現(xiàn),總之要先動(dòng)手,,不要老是想,想來(lái)想去沒(méi)有結(jié)果,浪費(fèi)時(shí)間。只有實(shí)際行動(dòng)起來(lái),才能知道實(shí)際的問(wèn)題,一個(gè)一個(gè)解決,持之以恒,思路會(huì)越來(lái)越清晰。
3.1 計(jì)算權(quán)重矩陣權(quán)重矩陣要根據(jù)測(cè)試數(shù)據(jù),球隊(duì)和每2個(gè)球隊(duì)直接的比分來(lái)獲取,所以我們使用一個(gè)字典來(lái)存儲(chǔ)原始數(shù)據(jù),將每個(gè)節(jié)點(diǎn),2個(gè)隊(duì)伍的比賽結(jié)果比分都寫成數(shù)組的形式,來(lái)根據(jù)勝平負(fù)的場(chǎng)次計(jì)算積分,得到邊的權(quán)重,看代碼吧:
[,] CalcLevelTotalScore(Dictionary
本文關(guān)鍵詞:Google搜索引擎的數(shù)學(xué)模型及其應(yīng)用,由筆耕文化傳播整理發(fā)布。
本文編號(hào):199067
本文鏈接:http://sikaile.net/kejilunwen/yysx/199067.html