作為乙個機器學習方面的小白,在閔老師課上學的兩個聚類演算法,即經典的k-means聚類和基於隨機遊走的聚類演算法,是我學習到的頭兩個與機器學習相關的演算法。演算法課上,閔老師先講了簡單但是經典的k-means聚類演算法,讓我們對聚類演算法有了乙個初步的理解,緊接著又花了大量的時間剖析了基於隨機遊走的聚類演算法。五周十二次的課程,我學到的不只是演算法本身,下面將從幾個方面來總結我對本課程的收穫。
k-means是一種基於距離的迭代式演算法。它將n個點分類到k個聚類中,以使得每個點距離它所在的聚類的中心點比其他的聚類中心點的距離更小。演算法的過程如下:
1)所有的點中隨機抽取出k個觀測點,作為聚類中心點,然後遍歷其餘的點找到距離各自最近的聚類中心點,將其加入到該聚類中。這樣,我們就有了乙個初始的聚類結果,這是一次迭代的過程。
2)我們每個聚類中心都至少有乙個觀測例項,這樣,我們可以求出每個聚類的中心點(means),作為新的聚類中心,然後再遍歷所有的點,找到距離其最近的中心點,加入到該聚類中。然後繼續執行2)。
3)如此往復2),直到前後兩次迭代得到的聚類中心點一模一樣。
這樣,演算法就穩定了,這樣得到的k個聚類中心,和距離它們最近的觀測點構成k個聚類,就是我們要的結果。實驗證明,演算法是可以收斂的。
這種聚類演算法是一種將加權圖進行聚類分析的聚類演算法,用乙個壓縮矩陣表示資料與資料之間的關係,該矩陣表示每個節點隨機遊走到其他節點的概率。最後根據轉移概率實現聚類分析。演算法過程如下:
求出k步以內每個節點遊走到其他節點的概率矩陣之和;
用該矩陣每一行代表該節點的特徵向量即朋友圈;
用該特徵向量計算每個節點的特徵向量的曼哈頓距離;
用遍歷真個圖,求出每乙個類簇。
這裡的k要根據圖的大小確定,資料量大的圖k值可以相對取大一點,資料量小的圖則可以取乙個較小的值。當k太大時,會使得最後的轉移矩陣趨於穩定,並且會使得演算法的時間複雜度變的很大。
作為我個人而言,雖然有一定的程式設計經驗,但是有時候遇到乙個問題可能會分析很久都找不到問題所在。因為我自己老是太過相信自己,想當然的認為自己的**沒有問題,可以達到自己想要的效果,然而有的時候恰恰是為這樣的自以為是付出很大的時間代價來查詢問題和解決問題。當老師提到「步步為營」這樣的思想的時候,我自己下來把我們課上學的k-means演算法按照自己的理解,邊寫邊除錯寫了一遍沒有出錯的時候,我真的有一種想見很晚的感覺。
注重**的通用性應該是每個學程式設計的人的基本素質,以前程式設計的時候我也會時不時的考慮到這一點,但是這樣的意識還不夠強烈,因為每次都是把解決問題作為第一要務,通不通並沒有那麼重要。但是當我們實驗室的學石工院的小夥伴讓我幫他做乙個計算矩陣的計算器的時候,我直接把老師上課寫的**複製過來就可以用的時候,除了開心之外就是真的意識到了一段通用的**對於程式設計師來說意味著什麼。
曾記得時間,空間複雜度的問題,還是乙個在本科學習《資料結構》這門課的考試的時候才會考慮的問題,之後的程式設計中就很少考慮它了。但是現在學習演算法了,而時間,空間複雜度又是衡量乙個演算法優劣的重要標準,而且在計算大資料的量的時候,又是乙個不得不考慮的問題。所以,這個課也讓我認識到了時空複雜度的重要性。
在學習《on clustering using random walks》這篇**之前,我的導師也讓我看過一篇**,由於沒有學習**的經驗,我就從頭到尾,囫圇吞棗的看了一遍,然而看完就很懵逼,這篇文章都說了些啥??但是,跟著閔老師從頭學習了這篇**之後,我知道了一篇**其實要學會抓住主要矛盾,掌握它的中心思想。
五周的時間就學習了這一篇**,可能看起來內容很少,其實並不。我們從中學習到的很多學習的方法和技巧,將會運用到我們的其他學習過程中。認認真真的把一篇經典的東西學透,比把大量的知識學個大概應該要值得一些吧。
檢驗有沒有看懂一篇文章的標準就是能夠親自動手寫一遍。
最近在學習一篇**,關於人群計數的,文章中用了三個卷積神經網路和乙個開關網路(scnn)實現人群計數,我在想我應該可以把k-means用到演算法裡面,來實現那個開關。在訓練每個網路的時候我們可以計算出每個網路的質心,然後在計數的時候用每乙個對應的向量計算到每乙個網路的距離,然後確定該使用哪乙個網路。
也是改進這個演算法,我準備用隨機遊走演算法把這個演算法改進成乙個網路個數自適應的計數演算法,網路的個數根據當前的疏密度確定。就是利用隨機遊走演算法的不用指定聚類個數,可以保留聚類的自然屬性的特性。其中每乙個對應乙個向量,也就是乙個資料點。最後聚類的個數即為需要的網路的個數。
感謝閔老師這幾周來的耐心指導,過程雖然很輕鬆,但是受益匪淺,謝謝老師。
機器學習課程學習階段總結
邏輯回歸是一種分類演算法,和之前的線性回歸不是同一類問題,但是對於處理問題上有相同的思想。對於線性回歸問題,有較容易理解的思路。首先指定乙個形式確定的 h x tx 然後根據所有樣本計算代價函式,距離的平方取平均再乘個係數 j 1 2m m i 1 h x i y i 2 簡單的理解就是根據假設函式...
機器學習演算法高階一
長文字的智慧型解析實戰 如何從紛繁多變 資訊量龐雜的冗長文字中獲取關鍵資訊,一直是文字領域難題。隨著深度學習的熱潮來臨,有許多新方法來到了 nlp 領域,給相關任務帶來了更多優秀成果,也給大家帶來了更多應用和想象的空間。用傳統的監督學習模型對一段文文字進行分類的基本過程 一段原始文字 資料預處理 處...
機器學習演算法總結
機器學習 machine learning,ml 是一門多領域交叉學科,涉及概率論 統計學 逼近論 凸分析 演算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效能。嚴格的定義 機器學習是一門研究機器獲取新知識和新技能...