機器學習科研助手總結

2021-07-02 19:07:13 字數 3146 閱讀 3997

在大二下學期的時候,我報名參加了學校mima(machine intelligence & media analysis)實驗室組織的科研助手,旨在跟隨老師所在實驗室的乙個專案,但說實話就是在實驗室裡打雜,幫助學長們實現部分**,出bug後尋求解決方法,儘管最終並沒有發出什麼**或者做出什麼成型的專案(說實話,本來也沒打算有什麼成果,只是想多學多做提高科研能力),不過帶我們的學長還是很負責任的(在此感謝學長),在這期間學到了很多書本上學不到的東西,對科研也有了一定的了解,感覺到科研離我們並不是那麼遙遠,在這裡把一些心得和學到的一些知識記錄下來。

k-means 演算法首先接受引數 k;然後將事先輸入的n個資料物件劃分為k個聚類以便使得所獲得的聚類滿足:同一聚類中的物件相似度較高;而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個「中心物件」(引力中心)來進行計算的。  

k-means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演算法之一。k-means演算法的基本思想是:以空間中k個點為中心進行聚類,對最靠近他們的物件歸類。

通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結果。

假設要把樣本集分為c個類別,演算法描述如下:

(1)適當選擇c個類的初始中心;

(2)在第k次迭代中,對任意乙個樣本,求其到c個中心的距離,將該樣本歸到距離最短的中心所在的類;

(3)利用均值等方法更新該類的中心值;

(4)對於所有的c個聚類中心,如果利用(2)(3)的迭代法更新後,值保持不變,則迭代結束,否則繼續迭代。

該演算法的最大優勢在於簡潔和快速。演算法的關鍵在於初始中心的選擇和距離公式。

通過對kmeans的應用,再加上平時對《模式分類》一書的簡單理解,使我對機器學習產生了初步的興趣。

相關****:

這篇*****介紹了一種基於product quantization(簡稱pq)的最近鄰搜尋方法,主要想法是將當前的樣本空間分解為低維的笛卡兒積子空間,並對每乙個子空間分別進行量化(quantization,將連續的取值離散化為有限多個取值的過程),其中原空間中的乙個向量是由子空間量化後的下標索引組成的乙個簡單編碼表示的,兩個向量間的歐式距離可以通過他們量化後對應的編碼來獲得。然而,有一種非對稱版本能夠提高精度,因為它計算的是乙個向量和乙個編碼之間的距離。

for example,我們測試時使用的是siftsmall資料集,若當前每個空間向量均為64維,將其分為8個子空間,每個子空間有8維,可找出256(2^8)個中心點

(管理下標0~255便於編碼),在每個子空間中通過kmeans方法找到其256個中心點(向量)的最近鄰即進行編碼(表示第幾個中心點),之後通過儲存的編碼即索引

找到將每個子空間相應的中心點向量拼接之後的向量,再通過非對稱方法計算測試集向量和編碼對應的向量之間的歐式距離即可。

相關****:

相關****:

ck-means演算法的提出主要原因是kmeans演算法在k很大的時候,迭代演算法計算量大,儲存各個中心需要的空間大,但是如果每個中心由乙個小的子中心集合線性合成的話,空間利用率很高。因此,ck-means演算法應運而生,在我認為,如同pq一樣,ck-means也應屬於一種量化方法,它首先對原空間進行分割,再對每個子空間執行kmeans求出k個中心點,以原空間的向量在各子空間中對應的中心點拼接之後的向量代替原向量。其中又分為兩個版本,對稱版本是將原空間向量找到其對應的中心點,計算中心點之間的距離來代替原先計算向量之間的距離;非對稱版本是將原空間向量找到其對應的中心點,計算原空間向量和中心點之間的距離,顯然非對稱版本的精度更高,但計算量也較大。給出的**中還是用了openmp,明顯是使用並行方法來進行了優化,openmp的使用在前面有所講述,這裡不再贅述。

for example,我們測試時用的是sift資料集,共1000000個樣本,每個樣本128維,我們分為8個子空間,每個子空間向量為16維,每個子空間中找出256個子樣本中心點,這樣在計算歐式距離時,我們只需計算向量與樣本中心點的距離即可,假設原先需要計算1000000*1000000次歐式距離(每個向量之間均計算一次),現在只需找到向量對應的中心點(共256*8個中心點),對稱版本只需計算256*256*8*8次歐式距離,非對稱版本也只需計算1000000*256*8次歐式距離,比起kmeans來看計算次數要少得多。
變數說明:

base -- 用於訓練模型

query -- 測試集

trdata -- 訓練集

model -- 訓練出的模型,如8部分256中心點,則有8個struct,每個struct包含256個中心點,每個中心點16維。

cbase -- 儲存中心點下標索引,如8部分256中心點,則cbase是8*1000000的矩陣,代表每個原向量對應的每個子空間的中心點索引。

應用步驟:

現在,如果我們要查詢原向量對應的中心點,則查詢cbase,找到該向量在每個子空間中對應的中心點索引即編碼,再到model中找到對應子空間中的索引下的中心點子向量,將8部分子向量按子空間順序拼接起來之後得到對應中心點向量,使用此中心點向量代替原向量進行計算。

在這幾個機器學習方法中,投入精力較多的就是ck-means,感覺這個方法用的十分巧妙與靈活,但是有時又感覺機器學習好多命名都是故弄玄虛,比如梯度,不就是咱們平常說的導數嘛,回歸,不就是咱們說的擬合嘛,再拿本例來說,編碼,不就是使用下表索引進行操作嘛,所以,有時這些令我們感覺高大上的東西就在我們身邊,只不過是換了乙個名字,就讓我們產生了一種仰視而不可攀的心理。(個人見解而已)

相關****:

matrix factorization:

相關****:

recommender system,中文翻譯過來就是推薦系統。推薦系統是通過分析使用者屬性、訪問日誌、反饋資訊等對使用者可能感興趣的項進行**。

主要使用的是協同過濾推薦技術,採用最近鄰技術,利用使用者的歷史喜好資訊計算使用者之間的距離,然後利用目標使用者的最近鄰居使用者對商品評價的加權評價值來**目標使用者對特定商品的喜好程度,系統從而根據這一喜好程度來對目標使用者進行推薦。協同過濾最大優點是對推薦物件沒有特殊的要求,能處理非結構化的複雜物件,如**、電影。

在此過程中,我的主要工作是將ck-means應用到推薦系統中,比較使用前後的誤差和執行時間之後看是否能夠在效能方面有所提公升。

有關推薦系統方面的知識,由於還沒有花費太多精力在這方面,在這裡就不再多說了,不過作為當今電子商務盛行的時代,推薦系統的應用已經十分廣泛,因此這方面的研究很有前景的,筆者也會在今後多多在這方面下一些功夫,爭取能夠有所收穫。

機器學習科研專案第五周總結

最近在跟著我們學校的餘老師後面做本科科研,我們的科研課題是 機器學習在密集網路中的應用 由於最近半個多月才接觸到機器學習這塊,同時每週我們都要對一星期的學習成果和個人對於課題的感想進行總結,所以接下來的部落格主要的文章都會圍繞機器學習和我們的課題 由於超密集網路是為了適應5g的到來才提出來的,所以我...

科研技能訓練總結

科學研究,一部分是創造知識,即創新 發現和發明,是探索未知事實及其規律的實踐活動 另一部分是整理知識,即對已有知識分析整理,使其規範化 系統化,是知識繼承的實踐活動。由此可以給科學研究下這樣乙個定義 科學研究是人們探索未知事物或未完全了解事實的本質和規律以及對已有知識分析整理的實踐活動。作為一名在校...

科研管理系統總結

截止到昨天晚上十點多我們的專案主要功能的開發演算法完成,佔整個專案的80 後期需要確定科研管理系統教師資料的匯入方式,待老師測試通過後部署算是整個專案的結束.在這次專案中我是擔任整個團隊的負責人,並未過多的參與到編碼中,這次開發整體來說還是比較順利的,沒有遇到特別難的技術點和業務邏輯.我之前從未擔任...