說明: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一定是比所有...