1. 程式人生 > >機器學習各種演算法的理解(不斷更新)

機器學習各種演算法的理解(不斷更新)

1、K-近鄰演算法

剛剛把K-近鄰演算法整理了一下,下面說一下我對它的理解

(1)優點

  • 簡單有效:效果很好(對於適用這個演算法的問題來說),而且原理很簡單,沒有什麼困難的數學公式來推導理解
  • 不需要很長時間的訓練:只要有資料集就可以直接執行,不需要訓練出模型
  • 是一種online演算法:也就是它是一種線上演算法,新資料可以直接加入資料集而不必重新訓練(沒有它本身就沒有模型可言)

(2)缺點

  • 首先,這個演算法不是常規的機器學習演算法,因為它沒有“學習過程”,一般的機器學習演算法是需要通過訓練資料來學習得到一個模型的,但是KNN沒有這個過程,雖然它也有訓練集,這就導致它每次預測新的樣本,就要將所有訓練集都儲存到記憶體中,然後一個個比較,如果你的資料集非常大,這就非常佔據記憶體資源了(一般來說資料集越大,準確度越高)
  • 無法給出任何資料的基礎結構資訊,因此我們也無法知曉平均例項樣本和典型例項樣本具有什麼特徵,換句話來說,讓你區分一個人是歐洲人還是中國人,很好區分,但是讓你區分中國人和韓國人,有時候就比較困難,前面那個區分是典型的(一眼就可以看出來,這叫特徵明顯),而後一個就不太明顯了(這就是不典型了)
  • 沒有解決樣本不平衡問題(也就是有些類別樣本數量很多,有些樣本數量很少),遇到這種問題,它的預測偏差會比較大
  • K值大小的選擇,這個要根據你的資料集樣本和種類的分配,還有類別的不同來決定,隨著資料集的變化可能會發生變化,有時候要不斷篩選才可以得出

(3)應用領域

理論上,只要資料可以轉化成向量,就可以用KNN演算法,只是效果好壞不一樣罷了,這裡列舉的都是效果比較好的:

文字分類、模式識別、聚類分析、多分類領域

2、決策樹

(1)優點:

  • 決策樹具有一般機器學習演算法的優點,那就是一勞永逸,一旦獲得一棵決策樹,就不需要再用到原來的資料集了(當然是基於這棵決策樹的準確率很不錯的情況),下次預測一個樣本,只要將其放入決策樹中,就可以輕鬆得到分類或者回歸結果
  • 非常容易理解,因為決策樹在我看來更像是基於規則的分類,在形式上比起K近鄰演算法要容易理解,可解釋性也很強,決策樹模型可以想象,在你大腦中可以輕易復現出來,可以說決策樹是一個白盒模型,不像神經網路那樣更偏向於黑盒模型
  • 需要的資料量相對而言不大,其他技術需要的資料量一般要大很多,而且HIA需要去除不完整資料,但是決策樹不需要(專門有針對不完整資料的策略)
  • 決策樹演算法的時間複雜度(即預測資料)是用於訓練決策樹的資料點的對數
  • 可以處理的問題領域很廣(而且準確率相對而言也是很高的),而其他演算法大都是針對某一領域的資料集具有較高的準確率
  • 能夠處理多輸出問題

(2)缺點

  • 決策樹的結果很不穩定,可能資料集一個小的變化,就會導致生成一棵完全不同的決策樹(可以使用整合決策樹來解決)
  • 容易造成過擬合現象,也就是枝葉太過茂盛,節點過多(可以採用剪枝策略來解決)
  • 針對最優決策樹來說,決策樹實際上是一個啟發式演算法,如貪婪演算法,尋求在每個節點上的區域性最優決策,這樣的演算法不能保證返回全域性最優決策樹
  • 樹的每次分叉都減少了資料集,有意地創造分裂將會潛在地引入偏差(bias)
  • 針對連續值屬性來說,劃分的選擇是一個大問題,也就是怎麼改變區間大小,比如年齡從0-200,你可以劃分為1-10,11-20,這時候區間大小為10,如果你劃分成1-20,21-40,這時候區間大小是20,但是你應該怎麼劃分呢,如果一個屬性還好說,但是如果很多屬性都是連續的,那麼就有些不好處理了
  • 對有時間順序的資料,需要很多預處理的工作

(3)決策樹們

不同種類的決策樹,可以參考:決策樹有哪些特性

相關推薦

機器學習各種演算法理解不斷更新

1、K-近鄰演算法剛剛把K-近鄰演算法整理了一下,下面說一下我對它的理解(1)優點簡單有效:效果很好(對於適用這個演算法的問題來說),而且原理很簡單,沒有什麼困難的數學公式來推導理解不需要很長時間的訓練:只要有資料集就可以直接執行,不需要訓練出模型是一種online演算法:也

機器學習專項練習筆記持續更新

##1.卷積神經網路計算尺寸 輸出尺寸=(輸入尺寸-filter尺寸+2*padding)/stride+1 卷積向下取整,池化向上取整 stride=1時,當kernel=3,padding=1或kernel=5,padding=2 卷積前後尺寸不變。 ##2.序列模式挖掘

機器學習常見演算法總結面試用

樸素貝葉斯 參考[1] 事件A和B同時發生的概率為在A發生的情況下發生B或者在B發生的情況下發生A P(A∩B)=P(A)∗P(B|A)=P(B)∗P(A|B) 所以有: P(A|B)=P(B|A)∗P(A)P(B) 對於給出的待分

IDEA學習系列之剖析IDEA裏的Code Style適合各種語言不斷更新圖文詳解

ESS javascrip 挖掘 python pre scrip 學習 裏的 yaml   不多說,直接上幹貨!   File -> Settings -> Editor -> Code Style

正在學習的比較詳細的機器學習教程不斷更新

使用MINIST資料集 https://blog.csdn.net/zhaohaibo_/article/d // 獲取 minist 資料集 from tensorflow.examples.tutorials.mnist import input_data mnist = input

收集per的各種學習資源不斷更新

一個簡潔快速入門的perl教程 -------------------------------------------------------------------------------- perl偵錯程式用法 預設的Perl偵錯程式就是perl直譯器本身,另外還

機器學習基石作業1翻譯更新ing

排列組合 str alt 圖片 組合 技術分享 簡單的 作業1 註意 前面幾道簡單的選擇題就不說了 自己代數進去 ①令N = 11,L = 5先算OTS,再代到四個選項中 ②令N = 10,L = 5繼續 然後可以得出第三個是對的,註意看清楚向上取整還是向下取整 D

李巨集毅機器學習PTT的理解1深度學習的介紹

深度學習的介紹 機器學習就像是尋找一個合適的函式,我們輸入資料就可以得到想要的結果,比如: 在語音識別中,我們輸入一段語音,函式的輸出值就是識別的結果;在影象識別中,輸入一張照片,函式可以告訴我們分類

機器學習演算法思想極簡版

讀到的一篇不錯的文章,拿來和大家分享一下。 轉自–頭條公眾號–極數蝸牛 (1)線性迴歸 迴歸最早是由高爾頓研究子女身高與父母身高遺傳關係提出的,發現子女平均身高總是向中心迴歸而得名。其實“一分辛苦一分才”中就蘊含了線性迴歸演算法思想,比較簡單表現出才能與辛

步步學習之用python實戰機器學習1-kNN K-NearestNeighbors演算法a

我最近才開始接觸機器學習,我大學數學學的幾乎忘了,最近才接觸python。所以我以一個完全初學者角度來學習機器學習。 我主要用的書籍就是machine learning in action (機器學習實戰)這本書。我主要是用文中已有的程式碼來講解機器學習。 同時對程式碼進行

機器學習——SVM演算法原理1)

(1)線性可分支援向量機與硬間隔最大化 考慮一個二分類問題,假設輸入空間與特徵空間為兩個不同的空間,輸入空間為歐式空間或離散集合,特徵空間為歐式空間或希伯特空間。線性支援向量機假設這兩個空間的元素一一

機器學習 之 決策樹Decision Tree文字演算法的精確率

目錄 背景 效果圖 整體流程 這裡用詞向量,而不是TF-IDF預處理後的向量 原始碼 背景 最近的專案中,用到了很多機器學習的演算法,每個機器學習的演算法在不同的樣本下的精準率是不同的。為了驗證每個演算法在每種不同樣本數

機器學習經典演算法總結3——特徵選擇

一、特徵的分類1. 相關特徵:對當前學習任務有用的屬性。2. 無關特徵:對當前學習任務沒有用的屬性。3. 冗餘特徵:包含的資訊能從其他特徵中推演出來,冗餘特徵有時候不起作用,有時候則是有益的,對應了學習任務所需的“中間變數”。二、特徵選擇1. 概念:從給定的特徵集合中選擇出相

Unity3d修煉之路:遊戲開發中,3d數學知識的練習【1】不斷更新.......

turn tor rdo pre 長度 scrip 縮放 unity3d float #pragma strict public var m_pA : Vector3 = new Vector3(2.0f, 4.0f, 0.0f); public var m_pB :

資源列表下載不斷更新

5% images splay rar http bsp jpg get 資源 [中譯本][算法精解:C語言描述]源代碼 http://files.cnblogs.com/files/hdu-2010/[中譯本][算法精解:C語言描述]源代碼.rar 資源列表下載

C++編程規範不斷更新

系統 must 那是 一點 class xxx 編程規範 自己 ++ 本文總結一些經驗教訓,以使編出來的代碼更為健壯。 1、定義類/結構體的時候不要和系統函數沖突(尤其是不同系統/平臺之間移植的時候)   有時候在windows系統下編譯沒問題,但是在linux系統下就

Linux學習資源匯總持續更新...

linux論壇 ... coursera linux 博客園 教程 引擎 風格 w3cschool 自己收集一些學習資源,方便以後查找 搜索引擎: google:https://www.google.com/Linux教程: 鳥哥的私房菜:http://linu

ng機器學習視頻筆記十一 ——K-均值算法理論

微信公眾 分類 under 等於 分析 一個 筆記 不同 learn ng機器學習視頻筆記(十一) ——K-均值算法理論 (轉載請附上本文鏈接——linhxx) 一、概述 K均值(K-Means)算法,是一種無監督學習(Unsupervised

ng機器學習視頻筆記十六 ——從圖像處理談機器學習項目流程

公眾號 written 字符串分割 評估 jpg 關註 改進 視頻 pip ng機器學習視頻筆記(十六) ——從圖像處理談機器學習項目流程 (轉載請附上本文鏈接——linhxx) 一、概述 這裏簡單討論圖像處理的機器學習過程,主要討論的是機器學習的

24.C語言最全排序方法小結不斷更新

http 希爾 找到 sin -s arr span 計算機 gpo 希爾排序: 該方法的基本思想是:先將整個待排元素序列切割成若幹個子序列(由相隔某個“增量”的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全