svm演算法
2.無監督學習
3.無監督學習和有監督學習的採用
有監督學習可以說是一種分類問題,通過已有的訓練樣本(已知資料及其對應的輸出)去訓練乙個得到乙個最優模型(模型是某個函式的集合,這裡的最優模型是指在某個評價準則下的最優,具體問題具體分析)。再利用這個訓練出來的模型將所有的輸入對映成為相應的輸出,對輸出進行判斷從而實現分類的目的。
這裡我們可以通俗的說,就類似我們小時候在識事物,老師和家長會告訴你這是什麼東西,這就是已知資料及其對應的輸出,然後我們的腦子裡會慢慢的形成乙個泛化的意識,這個意識就是我們訓練出來的模型(一種函式對應關係)。我們通過我們的意識看到某種東西,就可以反應出這是什麼,這就是將所有的輸入對映成為相應的輸出。
knn演算法
knn演算法概念理解
knn演算法的核心思想是用距離目標資料最近的k個樣本資料的分類來代表目標資料的分類。因此knn也叫k-鄰近演算法。
我們可以先通俗的理解一下,比如判斷我的職業,knn就是通過人以群分的方法,如果我的身邊的朋友多數是程式設計師,那麼即判定我是個程式設計師。
如下圖所示,我們存在乙個訓練樣本集,而在樣本集中存在特徵和目標變數這兩個概念,特徵在下圖中即圖示的空間座標,目標變數即圖示的分類(三角形還是正方形)。因此我們在輸入乙個新的不含目標變數的資料(還未被分類),我們就通過knn來判斷他的目標變數。
簡單演示一下knn的過程(判斷綠色圓的目標變數):
當k=3時,距離綠色圓最近的三個圖示有兩個為三角形,乙個為正方形,我們判斷未知資料的目標變數為三角形。
當k=5時,距離綠色圓最近的五個圖示有兩個為三角形,三個為正方形,我們判斷未知資料的目標變數為正方形。
knn的優缺點
優點:演算法簡單,易於理解。對異常值不敏感(雙刃劍)
缺點:結果受k值的影響大,k值的取值會影響結果的判定(k一般不超過20)。演算法計算量大,需要計算每個樣本的距離,雖然理解簡單,但是不斷的計算,不夠優化。且當樣本的分布不平衡的話,就無法準確判斷(比如我是乙個老師,但是我經常和程式設計師打交道,身邊的朋友程式設計師佔絕大多數,因此訓練時我的身份被判定為程式設計師)。
knn演算法的流程
(1)資料集的整理:有監督學習需要乙個訓練樣本
(2)計算輸入的測試資料和每個訓練樣本的資料的距離(兩個公式)
曼 哈頓
距離公式
:d(x
,y)=
∑i=1
n∣xi
−yi∣
曼哈頓距離公式:d(x,y)=\sum_^n|x_-y_|
曼哈頓距離公
式:d(
x,y)
=i=1
∑n∣
xi−
yi∣
(3)按照距離遞增排序
(4)選距離最近的k個點
(5)判斷這個k點的分類概率
(6)將返回的最高的分類概率,該分類及測試資料的分類
knn演算法分類器
#knn演算法分類器函式
from numpy import
*import operator
#函式引數:(測試資料,訓練資料,分類標籤,k值)
defclassify
(inx,dataset, labels, k)
:#dataset.shape[0]指資料行數
datasetsize = dataset.shape[0]
''' 我們模擬一下下面的計算過程
假設測試資料(即輸入)為[1,0,1]
訓練資料為
[2,1,3]
[1,2,3]
[0,3,1]
==>
將測試資料域訓練資料進行相減,得到
==>
[-1,-1,-2]
[0,-2,-2]
[1,-3,0]
==>
將相減結果進行平方,得到
==>
[1,1,2]
[0,2,2]
[1,3,0]
==>
將其相加
==>
[4][4]
[4]==>
開方==>
[2][2]
[2]==>
排序得[2,2,2]
'''#相減 diffmat = tile(inx,
(datasetsize,1)
)-dataset
#平方sqdiffmat=diffmat**
2#相加
sqdistances=sqdiffmat.
sum(axis=1)
#開方 distances=sqdistances**
0.5#計算歐式距離
#排序 sorteddistindicies=distances.argsort(
)#排序並返回index
#選擇距離最近的k個值
classcount=
for i in
range
(k):
voteilabel=labels[sorteddistindicies[i]
]#計算每個類別出現的頻率
classcount[voteilabel]
=classcount.get(voteilabel,0)
+1#排序 sortedclasscount=
sorted
(classcount.items(
),key=operator.itemgetter(1)
,reverse=
true
)return sortedclasscount[0][0]
svm演算法
svm演算法概念理解
通俗理解:判斷我是**人,比如福建和浙江的交界處是一條分割線,我在分割線靠福建這塊,就判斷我為福建人,反之則為浙江人。
特徵向量對映到空間的資料,有不同的目標變數(即分類),svm的目的就是畫出一條準確的線來區分這兩種類別,在我們後續輸入新的測試資料照樣能很好的分類。
svm演算法的小知識
(1)svm演算法可以畫出很多條分界線,但是每一條的效果不一樣,如上圖所示,綠線明顯效果不好,藍線還算湊合,紅線的區分效果明顯比較好。我們把最好的那條分界線稱之為劃分超平面(超平面指特徵如果是高維的,這樣的樣本空間的最佳分界是乙個超平面)
(2)在svm演算法訓練出的分界中,以邊際最大的的超平面稱為劃分超平面。邊際指在裡分界線(面)兩邊最近的兩個樣本資料的距離(如下圖)。
演算法會盡量的讓邊際變得更大,因為這樣使得分類的犯錯率減小。
svm特性
svm演算法的推導公式
無監督學習的輸入資料沒有被標記,也無法通過輸入已知他的輸出結果。樣本的資料類別是未知的,然後我們通過樣本之間的相似程度對樣本集進行分類(聚類)。通俗理解:兒童去動物園,不知道這個動物是啥,但是參觀了一天下來,會發現老虎獅子是體型大的動物,兔子猴子是體型小的動物。類似這樣去把所輸入的知識通過資料間的相似性區分開來。(資料如下圖)
推薦參考文章:
(1)當我們有乙個訓練樣本時(已標記)可以採取有監督學習(優先考慮)和無監督學習。但是如果正負樣本的分布具有偏差(有小有大),那麼這時我們有監督學習的效果就不如無監督學習了。(這裡可以自己腦補上述knn演算法和svm演算法資料不平衡時的情況)
(2)當無訓練樣本一定不能使用有監督學習的方法。(沒有分類無從下手)
有監督學習和無監督學習 無監督學習
一.無監督學習包含的演算法 聚類 kmeans聚類演算法 降維 pca 之所以叫無監督學習 是因為模型是從無標籤的資料開始學習,沒有目標值。二.kmeans聚類 1.聚類演算法步驟 定義 將高維資料轉化為低維資料的過程,在此過程中可能會捨棄原有資料,創造新的變數 作用 降低原始資料的維數 複雜度 損...
有監督學習和無監督學習
是否有監督 supervised 就看輸入資料是否有標籤 label 輸入資料有標籤,則為有監督學習,沒標籤則為無監督學習 這裡我參考網路資料將機器學習分為 有監督學習 無監督學習 半監督學習和強化學習四類。回歸 regression 其資料集是給定乙個函式和它的一些座標點,然後通過回歸分析的演算法...
有監督學習和無監督學習
機器學習的常用方法,主要分為有監督學習 supervised learning 和無監督學習 unsupervised learning 監督學習,就是人們常說的分類,通過已有的訓練樣本 即已知資料以及其對應的輸出 去訓練得到乙個最優模型 這個模型屬於某個函式的集合,最優則表示在某個評價準則下是最佳...