《機器學習》西瓜書習題 第 3 章

2022-09-03 23:24:18 字數 3407 閱讀 3752

試析在什麼情況下式 \((3.2)\) 中不必考慮偏置項 \(b\) .

書中有提到, 可以把 \(x\) 和 \(b\) 吸收入向量形式 \(\hat = (w;b)\) .此時就不用單獨考慮 \(b\) 了.

其實還有很多情況不用, 比如說使用了 \(\mathrm\) 編碼, 就可以不用考慮偏置項.

更廣泛的情況是, 如果偏置項 \(b\) 可以被 "包含" 在另外的一些離散特徵裡, 那麼就不用考慮. 就是偏置項可以以一定係數加到離散特徵中. (可能看了還是不太懂, 我以後有時間會重寫乙個的.)

試證明, 對於引數 \(w\), 對率回歸的目標函式 \((3.18)\) 是非凸的, 但其對數似然函式 \((3.27)\) 是凸的.

\[y = \frac}\tag

\]\[\ell(\boldsymbol\beta) = \sum^m_(-y_i\boldsymbol \beta^\mathrm t\boldsymbol}_i)\tag

\]計算其海森矩陣, 判斷是否正定. 海森矩陣可以模擬成一元函式的二階導, 正定可以模擬為二階導恆大於 \(0\) .

程式設計實現対率回歸, 並給出西瓜資料集 \(3.0\alpha\) 上的結果.

《機器學習》西瓜書 第 3 章 程式設計例項

選擇兩個 \(\mathrm\) 資料集, 比較 \(10\) 折交叉驗證法和留一法所估計出的錯誤率.

《機器學習》西瓜書 第 3 章 程式設計例項

程式設計實現線性判別分析, 並給出西瓜資料集 \(3.0\alpha\) 上的結果.

《機器學習》西瓜書 第 3 章 程式設計例項

像 \(6.3\) 節介紹的那樣, 使用核函式, 就可以運用於非線性可分資料.

令碼長為 \(9\), 類別數為 \(4\) , 試給出海明距離意義下理論最優的 \(\mathrm\) 二元碼並證明之.

首先要給出理論最優, 我們先要確定 '最優' 的指導標準.

對同等長度的編碼, 理論上來說, 任意兩個類別之間的編碼距離越遠, 則糾錯能力越強.

我們要將 '任意兩個類別的編碼距離' 用數學表達, 這樣才能進行求解. 那麼怎麼用數學表達這個 '距離' 呢? 這裡考慮到 '總體距離最大' , 同時我們還要保證每兩個類別之間的反碼的距離也 '最大' , 所以我們淺顯的使用每兩個類別之間的海明距離乘和其反碼的海明距離的積來作為衡量標準(有點繞), 我們定義乙個變數 \(l\) 用來表達這個積, 也就是有

\[l = \prod_dis(r_i, r_j)dis(r_i, -r_j)

\]\(dis(r_i, r_j)\) 表示第 \(i\) 個編碼和第 \(j\) 個編碼之間的海明距離, \(dis(r_i, r_j)\) 表示第 \(i\) 個編碼和第 \(j\) 個編碼的反碼之間的海明距離. \(l\) 越大代表這種編碼方式越好.

於是我寫了段程式來搜尋 \(l\) 的最大值 (直接爆搜) .

#include#includeusing namespace std;

const int maxcol = 9; // 碼長為 9

const int maxrow = 4; // 類別數為 4

bool code[maxrow][maxcol]; // 記錄最大值時編碼排列

bool temp_code[maxrow][maxcol]; // 表示當前編碼排列

int mmax = 0; // 記錄最大值

int dif_val(bool a[maxcol], bool b[maxcol])

return cnt1 * cnt2;

}int cost(bool code[maxrow][maxcol])

}return res;

}void dfs(int row = 2, int col = 0)

if(col == maxcol - 1) dfs(row + 1, 0); // 下一層

else dfs(row, col + 1);

temp_code[row][col] = 0; // 返回再列舉 0

temp = cost(temp_code);

if(mmax < temp)

if(col == maxcol - 1) dfs(row + 1, 0); // 同上

else dfs(row, col + 1);

return ;

}int main()

for(int i = 1 ; i <= maxcol ; ++i)

for(int i = 0 ; i < maxrow ; ++i)

cout << endl;

}cout << mmax;

return 0;

} // 我的碼風是不是很好看

結果:12

3456

7891

1111

1111

1111

0000

0110

0111

0011

0010

011當然我們要把 \(0\) 換成 \(-1\).

所以, 我們求出了海明距離下理論最優的, 碼長為 \(9\), 類別數為 \(4\) 的 \(\mathrm\) 二元碼. 至於證明, 在我們定義的衡量標準下, 其正確性是顯然的.

\(\mathrm\) 編碼能起到理想糾錯作用的重要條件是: 在每一位編碼上出錯的概率相當且獨立. 試析多分類任務經 \(\mathrm\) 編碼後產生的二類分類器滿足該條件的可能性及由此產生的影響.

\(\mathrm\) 編碼不僅要和其他編碼距離盡量大, 還要和其他編碼的反碼距離也要大. 這是因為每個二類分類器的錯誤可能相似. 考慮乙個極端情況, 要是錯誤完全相同, 那麼分類器出錯的後果就是輸出碼為原來的反碼.

使用 \(\mathrm\) 和 \(\mathrm\) 將多分類任務分解為二分類任務求解時, 試述為何無需專門針對類別不平衡性進行處理.

原文就已經提到

對 \(\mathrm\) 、\(\mathrm\) 來說, 由於對每個類進行了相同的處理, 其拆解出的二分類任務中類別不平衡的影響會相互抵消, 因此通常不需要專門處理.

試推導出多分類代價敏感學習 (僅考慮基於類別的誤分類代價) 使用 "再縮放" 能獲得理論最優解的條件.

原文中提到

再縮放的思想雖簡單, 但實際操作卻並不平凡, 主要因為 "訓練集是真實樣本總體的無偏取樣" 這個假設往往並不成立.

因此假設成立應該也算是獲得理論最優解的乙個條件(好水啊).

《機器學習》西瓜書習題 第 4 章

試證明對於不含衝突資料 即特徵向量完全相同但標記不同 的訓練集,必存在與訓練集一致 即訓練誤差為 0 的決策樹.既然每個標記不同的資料特徵向量都不同,只要樹的每一條 從根解點到乙個葉節點算一條 枝幹代表一種向量,這個決策樹就與訓練集一致.試析使用 最小訓練誤差 作為決策樹劃分選擇準則的缺陷.4.1 ...

《機器學習》 西瓜書習題 第 2 章

資料集包含 1000 個樣本,其中 500 個正例 500 個反例,將其劃分為包含 70 樣本的訓練集和 30 樣本的測試集用於留出法評估,試估算共有多少種劃分方式.如果劃分要保證正例和反例一樣多的話,那麼劃分方式數量 n 有 begin n c times c c end 如果不考慮的話則有 n ...

《機器學習》西瓜書習題 第 1 章

表 1.1 中若只包含編號為 1 和 4 的兩個樣例,試給出相應的版本空間.這應該不難理解吧,直接上 編號色澤 根蒂敲聲 好瓜 1 青綠蜷縮濁響是 4 烏黑稍蜷沉悶否 與使用單個合取式來進行假設表示相比,使用 析合正規化 將使得假設空間具有更強的表示能力.例如 好瓜 leftrightarrow b...