機器學習技法作業三題目19 20

2021-07-23 06:15:17 字數 2288 閱讀 1060

說明:1. 此處是台大林軒田老師主頁上的hw7,對應coursera上「機器學習技法」作業三;

2. 本文給出大作業(19-20題)的**;

3. matlab**;

4. 非職業碼農,**質量不高,變數命名也不規範,湊合著看吧,不好意思;

相比於題目13-18,題目19-20需要修改主程式和乙個函式。

主程式:

clear all;

close all;

data_trn = csvread('hw7_train.dat');

data_tst = csvread('hw7_test.dat');

xtrn = data_trn(:,1:end-1);

ytrn = data_trn(:,end);

[n,k] = size(xtrn);

xtst = data_tst(:,1:end-1);

ytst = data_tst(:,end);

[ntst,k] = size(xtst);

clear data_trn

clear data_tst

t = 1000;

node0 = [1,0,0,0,0,0,0];

ein = zeros(t,1);

eout = zeros(t,1);

eing = zeros(t,1);

eoutg = zeros(t,1);

ypred_sum_trn = zeros(n,1);

ypred_sum_tst = zeros(ntst,1);

for t = 1:t,

global dtree_node;

dtree_node = ;

idx_rf = randi(n,n,1);

hw7_cart_train_1branch(xtrn(idx_rf),ytrn(idx_rf), node0);

ypred_trn = hw7_cart_pred(dtree_node, xtrn);

ein(t) = sum(ypred_trn ~= ytrn)/n;

ypred_sum_trn = ypred_sum_trn+ypred_trn;

eing(t) = sum(sign(ypred_sum_trn) ~= ytrn)/n;

ypred_tst = hw7_cart_pred(dtree_node, xtst);

eout(t) = sum(ypred_tst ~= ytst)/ntst;

ypred_sum_tst = ypred_sum_tst+ypred_tst;

eoutg(t) = sum(sign(ypred_sum_tst) ~= ytst)/ntst;

clear dtree_node;

end;

figure;

hold on;

plot(eing,'r');

plot(eoutg,'b');

title('q19-20: t versus e(gt)');

xlabel('t');

ylabel('e(gt)');

legend('ein(gt)', 'eout(gt)');

函式

function hw7_cart_train_1branch(x,y,node0)

global dtree_node;

dtree_node = [dtree_node;node0];

fn_num = node0(1);

[s, dim, thresh] = hw7_deci_stump_impurity(x, y);

dtree_node(fn_num,3)=s;

dtree_node(fn_num,4)=dim;

dtree_node(fn_num,5)=thresh;

dtree_size = size(dtree_node);

nodep = [dtree_size(1)+1,fn_num,s,0,0,0,0];

dtree_node = [dtree_node;nodep];

dtree_node(fn_num,6)=dtree_size(1)+1;

dtree_size = size(dtree_node);

nodem = [dtree_size(1)+1,fn_num,-s,0,0,0,0];

dtree_node = [dtree_node;nodem];

dtree_node(fn_num,7)=dtree_size(1)+1;

end

筆記 機器學習技法 Random Forest

permutation test的原理 隨機排序的方式來測試某個特徵的重要性 原本的表現 該特徵資料的隨機打亂後的表現。在面對非線性的問題的時候會首先用random forest來進行初步的特徵選擇。上圖一 一棵樹劃分情況,圖二 bagging的小樹的結果 bootstrap隨機產生的一顆樹的情況,...

機器學習技法筆記(1)

一 承前啟後 kernel method 這一段話還是很重要的 1 如何處理feature很多很複雜的情況?kernel 2 如何將多個feature聯絡起來使用?boost和blend 3 如何學習隱藏的feature?deeplearning 首先還是引出了svm,為什麼需要使用svm呢,簡單的...

《機器學習技法》 模型聚合

分別有 1 選擇最好的模型 2 每個模型均勻的投票 3 每個模型按不同的權重投票 4 每個模型的權重跟輸入有關。也就是均勻投票的聚合方式。對於二分類來說,就是 對於多分類來說,就是 對於回歸來說,就是 簡單推導一下為什麼這種聚合方式可以做的好 也就是blending之後的模型g的eout一定是比所有...