1. 程式人生 > >簡單易學的機器學習演算法——Gibbs取樣

簡單易學的機器學習演算法——Gibbs取樣

一、Gibbs取樣概述

前面介紹的Metropolis-Hastings取樣為從指定分佈中進行取樣提供了一個統一的框架,但是取樣的效率依賴於指定的分佈的選擇,若是選擇的不好,會使得接受率比較低,大量的取樣被拒絕,影響到整體的收斂速度。

Gibbs取樣是Metropolis-Hastings取樣演算法的特殊形式,即找到一個已知的分佈,使得接受率α=1。這樣,每次的取樣都會被接受,可以提高MCMC的收斂速度。

二、Gibbs取樣演算法的流程

在這部分,先直接給出Gibbs取樣演算法的流程,對於Gibbs取樣演算法的有效性將在第三部分給出論述,Gibbs取樣演算法的具體流程如下所述:

  • 初始化時間t
    =1
  • 設定u=(u1,u2,,uN)的值,並初始化初始狀態Θ(t)=u
  • 重複以下的過程:
    • t=t+1
    • 對每一維:i=1,2,N
      • θ(t)1p(θ1θ(t1)2,,θ(t1)N)
      • θ(t)2p(θ2θ(t)1,,θ(t1)N)
      • θ(t)N1p(θN1θ(t)1,,θ(t1)N)
      • θ(t)Np(θNθ(t)1,,θ(t)N1)
  • 直到t=T

Gibbs取樣有一個缺陷,必須知道條件分佈

三、上述過程滿足細緻平穩條件

為簡單起見,我們假設所需取樣的分佈為一個二元分佈f(x,y),假設兩個狀態為(x1,y1)(x1,y2)。已知:

p
(x1,y1)p(y2x1)=p(x1)p(y1x1)p(y2x1)
p(x1,y2)p(y1x1)=p(x1)p(y2x1)p(y1x1)

所以有:

p(x1,y1)p(y2x1)=p(x1,y2)p(y1x1)

由此可見,Gibbs取樣的過程是滿足細緻平穩條件的。這裡直接取p(y2

相關推薦

簡單易學機器學習演算法——Gibbs取樣

一、Gibbs取樣概述 前面介紹的Metropolis-Hastings取樣為從指定分佈中進行取樣提供了一個統一的框架,但是取樣的效率依賴於指定的分佈的選擇,若是選擇的不好,會使得接受率比較低,大量的取樣被拒絕,影響到整體的收斂速度。 Gibbs取樣是Met

機器學習筆記之八—— knn-最簡單機器學習演算法以及KD樹原理

上一節結束了線性迴歸、邏輯迴歸,今天一節來介紹機器學習中最簡單的演算法:    K近鄰(KNN,全稱K-nearst Neighbor)       概述:判斷一個樣本的label只需要判斷該樣本週圍其他樣本的label。簡言之,朋

簡單易學機器學習演算法——Softmax Regression

Contents   [hide] 1 簡介 2 代價函式 3 Softmax迴歸模型引數化的特點 4&nbs

簡單易學機器學習演算法——梯度提升決策樹GBDT

梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)演算法是近年來被提及比較多的一個演算法,這主要得益於其演算法的效能,以及該演算法在各類資料探勘以及機器學習比賽中的卓越表現,有很多人對GBDT演算法進行了開原始碼的開發,比較火的是陳

簡單易學機器學習演算法——AdaBoost

#coding:UTF-8 ''' Created on 2015年6月15日 @author: zhaozhiyong ''' from numpy import * def loadSimpleData(): datMat = mat([[1., 2.1],

簡單易學機器學習演算法——K-近鄰演算法

# coding:UTF-8 import cPickle as pickle import gzip import numpy as np def load_data(data_file): with gzip.open(data_file, 'rb') as f: train_set, vali

簡單易學機器學習演算法——整合方法(Ensemble Method)

一、整合學習方法的思想前面介紹了一系列的演算法,每個演算法有不同的適用範圍,例如有處理線性可分問題的,有處理線性不可分問題。在現實世界的生活中,常常會因為“集體智慧”使得問題被很容易解決,那麼問題來了,

簡單易學機器學習演算法——因子分解機(Factorization Machine)

#coding:UTF-8 from __future__ import division from math import exp from numpy import * from random import normalvariate#正態分佈 from datetime import datetime

簡單易學機器學習演算法——K-Means演算法

一、聚類演算法的簡介    聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到一個類別中。聚類演算法與分類演算法最大的區別是:聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習

簡單易學機器學習演算法——樸素貝葉斯

一、貝葉斯定理     1、條件概率         條件概率是指在事件B發生的情況下,事件A發生的概率,用表示。     2、全概率公式          含義是:如果和構成樣本空間的一個劃分,那麼

簡單易學機器學習演算法——神經網路之BP神經網路

%% BP的主函式 % 清空 clear all; clc; % 匯入資料 load data; %從1到2000間隨機排序 k=rand(1,2000); [m,n]=sort(k); %輸入輸出資料 input=data(:,2:25); output1 =data(:,1); %把輸出從1維變

簡單易學機器學習演算法——EM演算法

一、機器學習中的引數估計問題     在前面的博文中,如“簡單易學的機器學習演算法——Logistic迴歸”中,採用了極大似然函式對其模型中的引數進行估計,簡單來講即對於一系列樣本,Logistic迴

簡單易學機器學習演算法——SVD奇異值分解

一、SVD奇異值分解的定義     假設是一個的矩陣,如果存在一個分解: 其中為的酉矩陣,為的半正定對角矩陣,為的共軛轉置矩陣,且為的酉矩陣。這樣的分解稱為的奇異值分解,對角線上的元素稱為奇異值,稱

簡單易學機器學習演算法——極限學習機(ELM)

一、極限學習機的概念       極限學習機(Extreme Learning Machine) ELM,是由黃廣斌提出來的求解單隱層神經網路的演算法。ELM最大的特點是對於傳統的神經網路,尤其是單隱層

簡單易學機器學習演算法——Logistic迴歸

一、Logistic迴歸的概述     Logistic迴歸是一種簡單的分類演算法,提到“迴歸”,很多人可能覺得與分類沒什麼關係,Logistic迴歸通過對資料分類邊界的擬合來實現分類。而“迴歸”也就

簡單易學機器學習演算法——嶺迴歸(Ridge Regression)

一、一般線性迴歸遇到的問題     在處理複雜的資料的迴歸問題時,普通的線性迴歸會遇到一些問題,主要表現在: 預測精度:這裡要處理好這樣一對為題,即樣本的數量和特徵的數量 時,最小二乘迴歸會有較小的

簡單易學機器學習演算法——分類迴歸樹CART

引言    分類迴歸樹(Classification and Regression Tree,CART)是一種典型的決策樹演算法,CART演算法不僅可以應用於分類問題,而且可以用於迴歸問題。一、樹迴歸的

簡單易學機器學習演算法——基於密度的聚類演算法DBSCAN

%% DBSCAN clear all; clc; %% 匯入資料集 % data = load('testData.txt'); data = load('testData_2.txt'); % 定義引數Eps和MinPts MinPts = 5; Eps = epsilon(data, MinPts)

機器學習&資料探勘筆記_16(常見面試之機器學習演算法思想簡單梳理)

  前言:   找工作時(IT行業),除了常見的軟體開發以外,機器學習崗位也可以當作是一個選擇,不少計算機方向的研究生都會接觸這個,如果你的研究方向是機器學習/資料探勘之類,且又對其非常感興趣的話,可以考慮考慮該崗位,畢竟在機器智慧沒達到人類水平之前,機器學習可以作為一種重要手段,而隨著科技的不斷髮展,

機器學習演算法推導】簡單線性迴歸與多元線性迴歸

線性迴歸,主要用於從資料中擬合出一條直線(或更高維的平面),這條直線能夠很好地體現資料的特徵,比如,它能夠使得平面上的點都均勻地分佈在這條直線上。 演算法思想 對於簡單線性迴歸和多元線性迴歸,其演算法過程是相同的,不同之處在於簡單線性迴歸只有一個特徵需要擬合,多元線