Andrew Ng ML 第十四章 無監督學習

2022-05-09 05:42:14 字數 3069 閱讀 8751

圖1.無監督學習

有監督學習中,資料是有標籤的,而無監督學習中的訓練集是沒有標籤的,比如聚類演算法。

k-means演算法應用是十分廣泛的聚類方法,它包括兩個過程,首先是選取聚類中心,然後遍歷每乙個點,決定其屬於哪個類;第二步是移動聚類中心點,根據剛才的聚類情況將聚類中心點移動,下面三個圖很好地說明了這個過程:

圖2.初始化,並且計算距離。

圖3.計算距離後

圖4.根據最小化均方誤差移動聚類中心點

根據新的聚類中心點,再次重複這個過程,

圖5.迭代之後最終結果

迭代之後最終結果,就算再執行k-means聚類演算法,聚類中心點也不會改變了,

圖6.k-means演算法輸入

輸入包括k,之後會講解如何選擇k,訓練集,x(i)是n維的,不是n+1維,通常捨去x_0=1項。

圖7.k-means演算法過程

k是指一共分為幾簇,k是指每個聚類中心。

首先隨機初始化k各聚類中心點,迴圈以下過程:

1.將m個樣本點遍歷,分到k個聚類中心中;

2.根據各個簇中的點到聚類中心點的距離並取均值。

對於聚類結果中,沒有點的簇,通常是直接刪去,那麼k就變成了k-1簇。

圖8.k-means優化目標

就是最小化代價函式,也叫失真代價函式。優化目標就是使點到聚類中心的平均距離最小。

這節會講如何避開區域性最優。

圖9.區域性最優化情況

如圖就是區域性最優化情況,兩個類被分成了乙個簇,乙個簇被分開成了兩份,這是不好的,是因為聚類中心店的初始化的問題。解決辦法就是初始化多次,並且執行多次k-means聚類演算法,得到結果,保證得到乙個足夠好的結果。

圖10.執行區域性最優化演算法

隨機初始化,重複k-means演算法100次,通常是在50-1000之間,執行結束後,選取乙個失真函式最小的聚類結果。

隨機初始化的情況,適用於k在2-10之間,多次隨機初始化會比較好的得到正確的聚類結果,但是當不在此區間內,聚類結果並不會有很大的改善,k很大時一次聚類結果即可。

目前來說,還都是通過視覺化的方法手動選擇的。

圖11.如何選擇聚類k的值

選擇k個聚類的值,並以損失函式為縱軸來判斷,肘形函式,但是有時會像有部,是平滑的,也不好確定最終分為幾類,所以這個肘形曲線並不能成為好的判斷方法。

但是最終的應用結果會告訴你應該分為幾類。

看了上面之前的筆記,就發現,學習還停留在概念上面,沒有具體的數學公式和實現**,這就比較飄了。

這個講的還是挺通俗易懂的,原來在計算過程中會出現虛擬的中心點啊,直到分類結果沒有什麼變化就認為是收斂了。

首先隨機選取k個點,然後計算所有其他點到這兩個點的距離,根據小的確定分類,然後在各個類中再選出中心點,計算中心點是通過x/y軸的均值計算出乙個可能是虛擬的點的座標(重心),計算所有距離將點再分類,然後這樣迴圈下去。

給出了使用sklearn實現的例子:

import

numpy as np

from sklearn.cluster import

kmeans

data = np.random.rand(100, 3) #

生成乙個隨機資料,樣本大小為100, 特徵數為3

#假如我要構造乙個聚類數為3的聚類器

estimator = kmeans(n_clusters=3)#

構造聚類器

estimator.fit(data)#

聚類label_pred = estimator.labels_ #

獲取聚類標籤

centroids = estimator.cluster_centers_ #

獲取聚類中心

inertia = estimator.inertia_ #

獲取聚類準則的總和

#輸出:

>>>centroids

array([[0.42927216, 0.57043035, 0.19739574],

[0.76233694, 0.46150249, 0.69253087],

[0.25571954, 0.41477208, 0.79997927]])

>>>inertia

13.015626730491624

第十四章約束

約束 constraint 是一種保證資料完整性的規則。約束設定在單個字段或者多個字段組合上,寫入這些欄位的行資料必須要符合約束的規則 約束的五種型別 not null 非空約束,指定某列的所有行資料不能包含空值 unique 唯一性約束,指定列或者列的組合的所有行資料必須唯一 primary ke...

第十四章 約束

第十四章 約束 練習1 1.學校有乙個選課系統,其中包括如下關係模式 系 系編號 主鍵,系名稱 唯一鍵,系主任 非空約束,系所在校去 取值範圍只能在南湖校區和渾南校區 create table xi xi no varchar2 10 primary key,xi name varchar2 10 ...

第十四章 集合

1.集合 把個數不定的物件一起帶著走 集合是乙個存放任意數量的引用的物件的容器 多個物件放在另乙個物件中,此物件可成為乙個集合物件 注意 如果集合物件建立時不指定泛型,則在當前集合中可以存放任意型別的物件 包括 collection list set map list 介面的實現類有arraylis...