1. 程式人生 > >機器學習技法第三次作業

機器學習技法第三次作業

Question 1 ~3

帶入原式,解方程就知道了

Question 4

三個裡面有兩個錯誤才能出現錯誤,可以把資料分成10份分,1中出錯的一份與3中對應,2中出錯的兩份與3中的 對應,則一共有3份錯誤,就是0.3 

Question 5

同一個資料有超過一半的g出錯才會出錯,最好情況下就是所有的err資料加在一起除以(k+1)/2[就是超過半數]

Question 6~8

對著PPT中的公式展開就知道了

Question 9

就是OR操作,蠻簡單的

Question 10

就是x中必須有奇數個1,包括1,3,5;1和3需要兩個公式進行限制,5只需要一個,一共就是5個

Question 11~12

根據神經網路的計算公式,很容易推算出來 ————————————————————————————————————————————————割 後面幾題當時腦袋一熱,非要用c++去寫,寫了好久,c++好多東西都忘記了,什麼指標,reference,const,static, 相當於把決策樹跟隨機森林實現了序列版的,不過隨機森林的速度好慢啊,300個完全生長的樹。 當時直接用sklearn估計馬上也就好了。不過對決策樹還有隨機森林,bagging什麼的有了比較深的印象。我會把整個 專案加到附件裡面

Question 13

10個,在程式碼裡面輸出一下就有結果了。我直接用遞迴做的,排序是對原資料的index進行排序,當時用陣列實現了這部分功能,後來 發現很不方便用vector,然後自己還實現了一下快排什麼的,做了好多造輪子的工作- -!浪費了不少時間。決策樹我就是用 連結串列去存的,每個節點有兩個後繼節點。

Question 14

0.0. Ein應該就是沒錯了,完全生長的樹。

Question 15

我跑出來是0.094,感覺應該選0.05,但是答案是0.15

Question 16~18 

為了這個功能,我發現原來設計的CART不是很合理,又把CART的程式碼改了一下,然後實現了一個RF,順帶一個BAGGING。 我直接貼輸出結果吧
start:  526
1 0 0.0609333 0.079
2 0 0.0579667 0.077
3 0 0.0604667 0.078
4 0 0.0583667 0.073
5 0 0.0582 0.078
6 0 0.0621 0.077
7 0 0.0596333 0.077
8 0 0.0587 0.078
9 0 0.0601 0.073
10 0 0.0601 0.074
11 0 0.0595667 0.077
12 0 0.0577 0.074
13 0 0.0569333 0.078
14 0 0.0564333 0.078
15 0 0.0585667 0.074
16 0 0.0582667 0.077
17 0 0.0607333 0.077
18 0 0.0588 0.078
19 0 0.0604333 0.074
20 0 0.0598333 0.077
21 0 0.0608 0.077
22 0 0.0568667 0.077
23 0 0.0597333 0.078
24 0 0.0595 0.08
25 0 0.0582667 0.075
26 0 0.0579667 0.077
27 0 0.0605333 0.077
28 0 0.0585667 0.073
29 0 0.0587667 0.078
30 0 0.0618667 0.074
31 0 0.0588 0.077
32 0 0.0606333 0.077
33 0 0.0587333 0.081
34 0 0.0585 0.077
35 0 0.0577667 0.077
36 0 0.0573 0.078
37 0 0.0581333 0.073
38 0 0.0569667 0.077
39 0 0.0597 0.074
40 0 0.0605 0.074
41 0 0.0586333 0.074
42 0 0.0614333 0.077
43 0 0.0568667 0.079
44 0 0.0605333 0.073
45 0 0.0612333 0.074
46 0 0.0613 0.079
47 0 0.0579667 0.075
48 0 0.0582667 0.074
49 0 0.0573333 0.078
50 0 0.0597 0.077
51 0 0.0595667 0.078
52 0 0.0586 0.077
53 0 0.0576 0.073
54 0 0.0599333 0.077
55 0 0.061 0.077
56 0 0.0595667 0.078
57 0 0.0597667 0.075
58 0 0.0591667 0.074
59 0 0.0557667 0.078
60 0 0.0570333 0.078
61 0 0.0599 0.077
62 0 0.0588333 0.077
63 0 0.0601333 0.074
64 0 0.0616 0.073
65 0 0.0597 0.077
66 0 0.0598667 0.08
67 0 0.0569667 0.074
68 0 0.059 0.079
69 0 0.0603333 0.081
70 0 0.0608667 0.074
71 0 0.0600667 0.075
72 0 0.0579333 0.074
73 0 0.0583667 0.078
74 0 0.0563667 0.077
75 0 0.0603 0.078
76 0 0.0607667 0.073
77 0 0.0567333 0.075
78 0 0.0570333 0.077
79 0 0.0596 0.078
80 0 0.0584 0.075
81 0 0.0571 0.074
82 0 0.0572 0.077
83 0 0.0577333 0.077
84 0 0.0610333 0.077
85 0 0.0589 0.077
86 0 0.0572 0.075
87 0 0.0595 0.078
88 0 0.0579333 0.077
89 0 0.0573333 0.078
90 0 0.0600333 0.078
91 0 0.0587 0.074
92 0 0.0571 0.075
93 0 0.0608 0.078
94 0 0.0579 0.075
95 0 0.0560333 0.077
96 0 0.0574 0.077
97 0 0.0600667 0.078
98 0 0.0599 0.077
99 0 0.0583333 0.073
100 0 0.0577333 0.077
finish:  5131791
time:  1425
0 0.058957 0.07639
第一個是迭代的次數,三個數分別是Ein(gt)、Ein(GRF)、Eout(GRF).時間是s為單位,不過要乘以一下3.6,反正跑了1個多小時= =!

Question 16~18 

又改了一下之前RF的程式碼,使它支援樹高這個引數的設定。我直接貼執行結果吧
start:  720
1 0.11 0.145
2 0.11 0.146
3 0.12 0.148
4 0.11 0.145
5 0.13 0.147
6 0.12 0.15
7 0.14 0.166
8 0.1 0.146
9 0.11 0.155
10 0.1 0.138
11 0.13 0.152
12 0.13 0.149
13 0.13 0.16
14 0.11 0.181
15 0.12 0.152
16 0.12 0.15
17 0.1 0.151
18 0.14 0.163
19 0.13 0.166
20 0.11 0.146
21 0.13 0.153
22 0.12 0.148
23 0.13 0.163
24 0.12 0.147
25 0.09 0.14
26 0.12 0.15
27 0.13 0.15
28 0.11 0.145
29 0.11 0.142
30 0.14 0.166
31 0.13 0.166
32 0.11 0.141
33 0.13 0.153
34 0.13 0.154
35 0.11 0.141
36 0.1 0.146
37 0.13 0.164
38 0.12 0.153
39 0.09 0.141
40 0.11 0.145
41 0.09 0.135
42 0.14 0.166
43 0.11 0.153
44 0.11 0.145
45 0.13 0.166
46 0.13 0.166
47 0.09 0.146
48 0.14 0.161
49 0.11 0.144
50 0.12 0.148
51 0.13 0.16
52 0.14 0.164
53 0.11 0.146
54 0.11 0.146
55 0.13 0.164
56 0.12 0.152
57 0.12 0.145
58 0.14 0.166
59 0.13 0.15
60 0.11 0.145
61 0.1 0.145
62 0.1 0.141
63 0.11 0.162
64 0.11 0.143
65 0.13 0.161
66 0.1 0.153
67 0.13 0.166
68 0.12 0.167
69 0.13 0.159
70 0.12 0.136
71 0.12 0.156
72 0.13 0.153
73 0.13 0.157
74 0.13 0.16
75 0.11 0.148
76 0.12 0.152
77 0.12 0.159
78 0.11 0.145
79 0.14 0.166
80 0.11 0.148
81 0.13 0.159
82 0.13 0.152
83 0.11 0.144
84 0.12 0.159
85 0.13 0.153
86 0.1 0.15
87 0.13 0.152
88 0.11 0.147
89 0.12 0.156
90 0.11 0.166
91 0.1 0.146
92 0.12 0.15
93 0.13 0.157
94 0.14 0.166
95 0.13 0.163
96 0.11 0.146
97 0.13 0.161
98 0.13 0.153
99 0.11 0.145
100 0.11 0.149
finish:  2313203
time:  642
第一個是迭代次數,後面分別是Ein和Eout
  附件地址: http://pan.baidu.com/s/1eQR6jJW
密碼: ycgp