1. 程式人生 > >Andrew Ng機器學習課程筆記(十二)之無監督學習之K-means聚類演算法

Andrew Ng機器學習課程筆記(十二)之無監督學習之K-means聚類演算法

Preface

Unsupervised Learning(無監督學習)
K-means聚類演算法

Unsupervised Learning

我們以前介紹的所有演算法都是基於有類別標籤的資料集,當我們對於沒有標籤的資料進行分類時,以前的方法就不太適用了。我們對於這樣的資料集的分類叫做,聚類。對於對於這樣的資料集的學習演算法叫做,無監督學習

K-means聚類演算法

K-means聚類演算法的目標就是將給定的資料集分成 k 類。(k 由我們自己指定)

演算法內容

  1. 隨機選取n個聚類中心,μ1,μ2,...,μkRn
  2. 重複下面過程直到收斂 {
    對於每一個樣本
    i
    ,計算其應該屬於的類:
    c(i):=argminj||x(i)μj||2
    對於每一個聚類 j ,計算屬於的類的聚類中心:
    μj:=i=1m1{c(i)=j}x(i)i=1m1{c(i)=j}
    }

在上述演算法過程中,c(i) 表示樣本 i 到聚類中心點集合的最小值(表示為樣本 i 屬於取得最小值的那個聚類中心點);uj 表示為聚類中心,即為屬於這個的所有樣本的均值。

下圖為選擇k=2的聚類過程:
這裡寫圖片描述

收斂驗證

K-means 演算法面對有一個重要問題時如何保證收斂,在上述演算法內容中強調結束條件就是收斂,所以證明K-means 演算法可以收斂至關重要。
首先,我們定義畸變函式(distortion function)


J(c,μ)=i=1m||x(i)μc(i)||2

J函式表示每個樣本點到其質心的距離平方和。K-means是要將J調整到最小。假設當前J沒有達到最小值,那麼首先可以固定每個簇中心 μj,調整每個樣例的所屬的類別 c(i) 來讓J函式減少,同樣,固定 c(i) ,調整每個簇中心 μj也可以使J減小。這兩個過程就是內迴圈中使J單調遞減的過程。當J遞減到最小時, μc也同時收斂。(在理論上,可以有多組不同的 μc 值能夠使得J取得最小值,但這種現象實際上很少見)。其實整體來看,這個演算法就是座標上升演算法。

如果畸變函式J是非凸函式,意味著我們不能保證取得的最小值是全域性最小值,也就是說k-means對簇中心初始位置的選取比較敏感,但一般情況下k-means達到的區域性最優已經滿足需求。但如果你怕陷入區域性最優,那麼可以選取不同的初始值跑多遍k-means,然後取其中最小的J對應的 μc 輸出。

相關推薦

Andrew Ng機器學習課程筆記監督學習K-means演算法

Preface Unsupervised Learning(無監督學習) K-means聚類演算法 Unsupervised Learning 我們以前介紹的所有演算法都是基於有類別標籤的資料集,當我們對於沒有標籤的資料進行分類時,以前的方

Andrew Ng機器學習課程筆記監督學習因子分析模型與EM演算法

Preface Marginals and Conditionals of Gaussians(高斯分佈的邊緣分佈與條件分佈) Restrictions of ΣΣ(限制協方差矩陣) Factor Analysis(因子分析模型) EM Alg

Android開發學習筆記基礎UI控制元件ImageView、CheckBox、RadioButton

一、ImageView:直接繼承自View,它的作用是在介面上顯示Drawable物件。 ImageView在佈局檔案(如main_activity.xml)中常用的屬性 有 scaleType ,s

系統學習程式設計筆記

一個電路就是一個環路。 研究電流工作原理的、最主流的科學理論叫做“電子理論”(electro theory),這套理論認為電流是由電子的運動而產生的。 所有的物質都是由叫做原子(atom)的極其微小的東西組成的。每一個原子又由三種粒子構成;它們分別是中子(neutron)、質子(proton)和電子(el

Andrew NG機器學習課程筆記

特徵選擇嚴格上來說也是模型選擇的一種。這裡不去辨析他們的關係,重點說明問題。假設我們想對維度為n的樣本進行迴歸,然後,n可能大多以至於遠遠大於訓練樣例數。但是我們感覺很多特徵對於結果是無用的,想剔除n中的無用特徵。n個特徵就有2^n種情況。如果我們去列舉這些情況,然後利用交叉驗證去選,太麻煩了。因此需要一些啟

監督學習k-means演算法——Andrew Ng機器學習筆記

寫在前面的話 在聚類問題中,我們給定一個訓練集,演算法根據某種策略將訓練集分成若干類。在監督式學習中,訓練集中每一個數據都有一個標籤,但是在分類問題中沒有,所以類似的我們可以將聚類演算法稱之為非監督式學習演算法。這兩種演算法最大的區別還在於:監督式學習有正確答

機器學習筆記:TensorFlow實戰四影象識別與卷積神經網路

1 - 卷積神經網路常用結構 1.1 - 卷積層 我們先來介紹卷積層的結構以及其前向傳播的演算法。 一個卷積層模組,包含以下幾個子模組: 使用0擴充邊界(padding) 卷積視窗過濾器(filter) 前向卷積 反向卷積(可選) 1.1

機器學習筆記

目錄 1)Unsupervised learning introduction 2)K-means algorithm 3)Optimization objective 4)Random initialization 5)Choosing the number of clus

Python3《機器學習實戰》學習筆記:線性迴歸提高篇樂高玩具套件二手價預測

一、前言 本篇文章講解線性迴歸的縮減方法,嶺迴歸以及逐步線性迴歸,同時熟悉sklearn的嶺迴歸使用方法,對樂高玩具套件的二手價格做出預測。 二、嶺迴歸 如果資料的特徵比樣本點還多應該怎麼辦?很顯然,此時我們不能再使用上文的方法進行計算了,因為矩陣X不是滿秩矩

機器學習筆記:TensorFlow實現四影象識別與卷積神經網路

1 - 卷積神經網路常用結構 1.1 - 卷積層 我們先來介紹卷積層的結構以及其前向傳播的演算法。 一個卷積層模組,包含以下幾個子模組: 使用0擴充邊界(padding) 卷積視窗過濾器(filter) 前向卷積 反向卷積(可選) 1.1.2 - 邊界填充

吳恩達機器學習筆記-支援向量機

第十三章 支援向量機(SVM)優化目標支援向量機在學習複雜的非線性方程時能夠提供一種更為清晰個更加強大的方式。    先回顧一下邏輯迴歸的相關概念,看如何進行改動可以得到支援向量機。邏輯迴歸的假設函式為

機器學習實戰》學習筆記利用PCA來簡化資料

轉載請註明作者和出處:http://blog.csdn.net/john_bh/ 執行平臺: Windows Python版本: Python3.6 IDE: Sublime text3 一、降維技術 1.1 什麼是降維 降維就是

機器學習筆記——馬爾科夫模型

    馬爾科夫模型是一種概率圖模型,它描述了一類重要的隨機過程(隨機過程又稱為隨機函式,是隨時間而隨機變化的過程)。我們常常需要考察一個隨機變數序列,這些隨機變數序列並不是相互獨立的,每個隨機變數的值都依賴於這個序列前邊的狀態。     如果一個系統有N個有

Python學習筆記 使用模塊

常見 永遠 命令行 效果 學習筆記 例如 style name hello 摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431845183

cocos2d-x學習筆記cocos2dx 3.10添加lua LuaFileSystem庫遍歷文件

luafilesystem庫;lfs;遍歷文件在lua中遍歷目錄文件需要用到lfs庫,而所用的cocos2dx 3.10沒用lfs,需要自己添加1、下載lfs.c和lfs.hhttps://github.com/keplerproject/luafilesystem 從github獲取源碼,在src目錄拷貝l

《Qt5 開發與實例第三版學習筆記

action spa 添加 png esb geb itl msgbox setw 1 // 4.2 Qt5 自定義對話框 2 #include <QMessageBox> 3 4 void Dialog::showCustomMsgBox() 5

Linux學習筆記usermod、passwd、mkpasswd

屬於 pass bsp exp -- 改密碼 use uid gid 一、usermod修改用戶信息usermod -u 111 username #修改用戶 usermod -g grp2 username #修改用戶組 usermod -d

PHP7 學習筆記PHPExcel vs PhpSpreadsheet and PHP_XLSXWriter

sheet class clas 參考 項目 open shee 現在 nbsp 前言   PhpSpreadsheet是PHPExcel的下一個版本。 它打破了兼容性,極大地提高了代碼庫的質量(命名空間,PSR合規性,使用最新的PHP語言功能等)。由於所有努力都轉移到了P

Python3學習筆記:閉包

ram 類型 trac 就是 不能 ast 兩種 作用 ror 閉包定義: 在一個外函數中定義了一個內函數,內函數裏引用了外函數的臨時變量,並且外函數的返回值是內函數的引用。這樣就構成了一個閉包。 我們先來看一個簡單的函數: def outer(a): b

ASP.NET Core 2 學習筆記REST-Like API

light namespace strong postman space 新增 html move engine Restful幾乎已算是API設計的標準,通過HTTP Method區分新增(Create)、查詢(Read)、修改(Update)和刪除(Delete),簡稱