1. 程式人生 > >機器學習中的有監督學習,無監督學習,半監督學習的區別

機器學習中的有監督學習,無監督學習,半監督學習的區別

在機器學習(Machine learning)領域,主要有三類不同的學習方法:

監督學習(Supervised learning)、

非監督學習(Unsupervised learning)、

半監督學習(Semi-supervised learning),


監督學習:通過已有的一部分輸入資料與輸出資料之間的對應關係,生成一個函式,將輸入對映到合適的輸出,例如分類。 

非監督學習:直接對輸入資料集進行建模,例如聚類。 

半監督學習:綜合利用有類標的資料和沒有類標的資料,來生成合適的分類函式。

一、 監督學習

1、監督式學習(Supervised learning),是一個機器學習中的方法,可以由訓練資料

學到或建立一個模式( learning model),並依此模式推測新的例項。訓練資料是由輸入物件(通常是向量)和預期輸出所組成。函式的輸出可以是一個連續的值(稱為迴歸分析),或是預測一個分類標籤(稱作分類)。 
    2、一個監督式學習者的任務在觀察完一些訓練範例(輸入和預期輸出)後,去預測這個函式對任何可能出現的輸入的值的輸出。要達到此目的,學習者必須以"合理"(見歸納偏向)的方式從現有的資料中一般化到非觀察到的情況。在人類和動物感知中,則通常被稱為概念學習(concept learning)。 

3、監督式學習有兩種形態的模型。最一般的,監督式學習產生一個全域模型,會將輸入物件對應到預期輸出。而另一種,則是將這種對應實作在一個區域模型。(如案例推論及最近鄰居法)。為了解決一個給定的監督式學習的問題(手寫辨識),必須考慮以下步驟: 
1)決定訓練資料的範例的形態。在做其它事前,工程師應決定要使用哪種資料為範例。譬如,可能是一個手寫字元,或一整個手寫的詞彙,或一行手寫文字。 
2)蒐集訓練資料。這資料須要具有真實世界的特徵。所以,可以由人類專家或(機器或感測器的)測量中得到輸入物件和其相對應輸出。 
3)決定學習函式的輸入特徵的表示法。學習函式的準確度與輸入的物件如何表示是有很大的關聯度。傳統上,輸入的物件會被轉成一個特徵向量,包含了許多關於描述物件的特徵。因為維數災難的關係,特徵的個數不宜太多,但也要足夠大,才能準確的預測輸出。 
4)決定要學習的函式和其對應的學習演算法所使用的資料結構。譬如,工程師可能選擇人工神經網路和決策樹。 
5)完成設計。工程師接著在蒐集到的資料上跑學習演算法。可以藉由將資料跑在資料的子集(稱為驗證集)或交叉驗證(cross-validation)上來調整學習演算法的引數。引數調整後,演算法可以執行在不同於訓練集的測試集上 
另外對於監督式學習所使用的詞彙則是分類。現著有著各式的分類器,各自都有強項或弱項。分類器的表現很大程度上地跟要被分類的資料特性有關。並沒有某一單一分類器可以在所有給定的問題上都表現最好,這被稱為‘天下沒有白吃的午餐理論’。各式的經驗法則被用來比較分類器的表現及尋找會決定分類器表現的資料特性。決定適合某一問題的分類器仍舊是一項藝術,而非科學。 
目前最廣泛被使用的分類器有 人工神經網路、支援向量機、最近鄰居法、高斯混合模型、樸素貝葉斯方法、決策樹和徑向基函式分類 。

二、 無監督式學習

1、無監督式學習(Unsupervised Learning )是人工智慧網路的一種演算法(algorithm),其目的是去對原始資料進行分類,以便了解資料內部結構。有別於監督式學習網路,無監督式學習網路在學習時並不知道其分類結果是否正確,亦即沒有受到監督式增強(告訴它何種學習是正確的)。其特點是僅對此種網路提供輸入範例,而它會自動從這些範例中找出其潛在類別規則。當學習完畢並經測試後,也可以將之應用到新的案例上。

2、無監督學習裡典型的例子就是聚類了。聚類的目的在於把相似的東西聚在一起,而我們並不關心這一類是什麼。因此,一個聚類演算法通常只需要知道如何計算相似度就可以開始工作了。

三、半監督學習

1、半監督學習的基本思想是利用資料分佈上的模型假設, 建立學習器對未標籤樣本進行標籤。 
形式化描述為:給定一個來自某未知分佈的樣本集S=L∪U, 其中L 是已標籤樣本集L={(x1,y1),(x2,y2), … ,(x |L|,y|L|)}, U是一個未標籤樣本集U={x’1,x’2,…,x’|U|},希望得到函式f:X → Y可以準確地對樣本x預測其標籤y,這個函式可能是引數的,如最大似然法;可能是非引數的,如最鄰近法、神經網路法、支援向量機法等;也可能是非數值的,如決策樹分類。其中, x與x’  均為d 維向量, yi∈Y 為樣本x i 的標籤, |L| 和|U| 分別為L 和U 的大小, 即所包含的樣本數。半監督學習就是在樣本集S 上尋找最優的學習器。如何綜合利用已標籤樣例和未標籤樣例,是半監督學習需要解決的問題。

2、半監督學習問題從樣本的角度而言是利用少量標註樣本和大量未標註樣本進行機器學習,從概率學習角度可理解為研究如何利用訓練樣本的輸入邊緣概率 P( x )和條件輸出概率P ( y | x )的聯絡設計具有良好效能的分類器。這種聯絡的存在是建立在某些假設的基礎上的,即聚類假設(cluster  assumption)和流形假設(maniford assumption)。

相關推薦

偽標籤:教你玩轉標籤資料的監督學習方法

對於每個機器學習專案而言,資料是基礎,是不可或缺的一部分。在本文中,作者將會展示一個名為偽標籤的簡單的半監督學習方法,它可以通過使用無標籤資料來提高機器學習模型的效能。 偽標籤 為了訓練機器學習模型,在監督學習中,資料必須是有標籤的。那這是否意味著無標籤的資料對於諸如分類和迴歸之類的監督任務

計算機學習哪些比較好的刷題網…

ZOJ ZOJ :: Home POJ Welcome To PKU JudgeOnline HDOJ Welcome to Hangzhou Dianzi University Online Judge 三個是主流,任意選一個,認真做就可以了! 北京大學的Online Judge。POJ上面的題目有點

學習遇到的幾個棘手的問題很關鍵

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> <script type="text/javascript"> function showAndr

C語言 符號數、符號數、整數溢出 (轉)

alt 原因 () tar sig 重新 detail copyto 想象 [cpp] view plain copy print? #include<stdio.h> void main() { int l=-1; unsigned

ubuntu作業系統虛擬機器掛起繼續執行虛擬機器網路連線該怎麼辦?

每次把虛擬機器關機後,網路就可以通了,但是很多時候,我們需要它能在我們下次再來的時候能夠保持原樣。 我的虛擬機器是ubuntu作業系統,所以開啟終端 輸入命令:vim /etc/network/interfaces 然後發現自己沒有許可權 這時候我們給這個檔案新增可執行,讀寫,

python匿名函式引數時引數時返回多個引數時

lambda lambda 形參:返回式子 演練 應用場景 它和其它函式一起使用,一般不會獨立使用 特點 匿名函式不應該有複雜的邏輯,比如不應有if判斷,但可以有判斷的函式如startswith等。(或者使用三元表示式)。 匿函的核心是,冒號的右邊應該是

陣列三個數只出現一次其它的數恰好出現兩次找出這三個數。

具體的題意如題 當我第一次碰到這類題的時候是宿舍的舍友分享的,當時他說的問題還要簡單一些,具體的題意是"陣列中只有一個數只出現一次,其它的數恰好出現兩次,找出這個數。"  當時我的第一感覺就是要用到快排,因此得出第一種演算法,將陣列進行快排的第一層排序,然後從中間分開,數字

聊聊Java的併發佇列 界佇列和界佇列的區別

本文主要總體的說一說各種併發佇列  首先來一張全體照  從有界無界上分  常見的有界佇列為 ArrayBlockingQueue 基於陣列實現的阻塞佇列 LinkedBlockingQueue 其實也是有界佇列,但是不設定大小時就時Integer.MAX_VALUE

Shiro框架三個核心概念:Subject SecurityManager和Realms。

2.1.2    SecurityManagerSubject的“幕後”推手是SecurityManager。Subject代表了當前使用者的安全操作,SecurityManager則管理所有使用者的安全操作。它是Shiro框架的核心,充當“保護傘”,引用了多個內部巢狀安全元件,它們形成了物件圖。但是,一旦S

編寫一個函式print列印一個學生的成績陣列該陣列5個學生的資料記錄每個記錄包括numnamescore[3]用主函式輸入這些資料用print輸出這些記錄

編寫一個函式print,列印一個學生的成績陣列,該陣列中有5個學生的資料記錄,每個記錄包括num,name,score[3],用主函式輸入這些資料,用print輸出這些記錄 程式碼如下: #include<stdio.h> #define N 5 typedef struc

java符號數與符號數互相轉換

java中有符號數與無符號數互相轉換 文章目錄 java中long型別轉換成無符號數 java中無符號數轉換成有符號數 java中long型別轉換成無符號數 由於JAVA中基本資料型別均為有符號數,而且最大資料型別lon

js變數var定義和var定義的區別,es6let命令和const命令

之前我們在寫js程式碼的時候都知道可以用var定義全域性變數和區域性變數,也可以省略var,而且在非嚴格模式下不會報錯,但是並不知道兩者的區別... var x = 1; y = 4; console.log(x);//1 console.log(y);//4 cons

JMeter的BeanShell斷言中訪問的變數值[或雙引號等特殊符號導致執行出錯

有2個變數,變數var1內容為[],變數var2內容為""。若直接訪問${var1},${var2},符號[會報錯,錯誤提示:BeanShell斷言 : org.apache.jorphan.util.JMeterException: Error invoking bsh m

12硬幣一個不知道輕重的假幣用天平將它找出來

    問題1:假設有8個硬幣,裡面有一個硬幣是假幣,並且知道它是重了還是輕了(假設是輕了),現在給你一個天平,要求用最小次數將這個硬幣找出來.      這時候可以用一種類似二分法的演算法來找出這個假幣.將左邊4個和右邊4個比較,因為知道硬幣是輕了,所以很快就能確定那堆

redis的客戶端jedis裡構造器soTimeout和connectionTimeout兩個引數分別代表什麼

connectionTimeout:表示連線超時時間例如構造器public Jedis(String host, int port, int timeout) { super(host, port, timeout); }public static void main

建立一個數據庫userdb該庫一個名為user的表該表用於存放註冊使用者的資訊user ( id char(18) not null primary key, psd char(16))。 完

【檢測】 JButton btn_1 = new JButton("\u68C0\u6D4B");         btn_1.addActionListener(new ActionListener() {             public void actionP

個人小專案:現有12個小球和一個天平小球一個重量與其它的不同稱重幾次能將這個小球找出來

<script language="JavaScript"> //建立兩個陣列,分別存放左邊盤小球物件和右邊盤小球物件 var leftbar = new Array(); var rightbar = new Array(); //建立一個整形變數,存放當前稱重的次數

C語言符號數與符號數相加

執行以下這段程式,輸出的結果是什麼? #include <stdio.h> int main() {     unsigned int a = 1;     signed int b = -2;     printf("%d\n", a + b);     p

Hibernate查詢資料正常資料出現java.lang.NullPointerException 異常

 現象:  在使用struts+Spring+Hibernate時,執行多對一查詢時,出現異常!程式碼如下:  Hibernate影射檔案:  SGroup.hbm.xml <hibernate-mapping>    <class name="com

PYTHON替代MATLAB線上性代數學習的應用(使用Python輔助MIT 18.06 Linear Algebra學習)

![](http://115.182.41.123/files/202008/linearAlgerbra1.jpeg) #### 前言 MATLAB一向是理工科學生的必備神器,但隨著中美貿易衝突的一再升級,禁售與禁用的陰雲也持續籠罩在高等學院的頭頂。也許我們都應當考慮更多的途徑,來輔助我們的學習和研究