Skip to content

Commit 267e704

Browse files
author
aoxy
committedJan 1, 2021
格式化md文件
1 parent 1bb6714 commit 267e704

File tree

3 files changed

+36
-20
lines changed

3 files changed

+36
-20
lines changed
 

‎Lab1/实验报告.md

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,35 @@
1-
# LR实验
1+
# LR 实验
22

33
<center>PB18071477 敖旭扬</center>
44

55
## 原理
66

77
**LR (logistics regression) 模型**就是要给出一个 $W=(b;\boldsymbol{w})$ ,它对一个样本 $\hat{\boldsymbol{x}}=(1,\boldsymbol{x})$ ,计算得到一个预测值
8+
89
$$
910
z=\hat{\boldsymbol{x}}W=w_1x_1+w_2x_2+\cdots+w_dx_d+b \tag{1}
1011
$$
1112

1213
那么在所建立的模型(给定 $W$ )下,样本 $\hat{\boldsymbol{x}}$ 为正类的概率为
14+
1315
$$
1416
P(Y=1|\hat{\boldsymbol{x}},W)=sigmoid(z) \tag{2}
1517
$$
16-
为反类的概率为
18+
19+
为反类的概率为
20+
1721
$$
1822
P(Y=0|\hat{\boldsymbol{x}},W)=1-P(Y=1|\hat{\boldsymbol{x}},W)=1-sigmoid(z) \tag{3}
1923
$$
24+
2025
一般 `sigmoid` 函数取
26+
2127
$$
2228
f(x)=\frac{1}{1+e^{-x}} \tag{4}
2329
$$
30+
2431
则样本 $(\hat{\boldsymbol{x}},y)$ 出现的概率为
32+
2533
$$
2634
\begin{align}
2735
P(y|\hat{\boldsymbol{x}},W)&=P(Y=1|\hat{\boldsymbol{x}},W)^yP(Y=0|\hat{\boldsymbol{x}},W)^{1-y} \\
@@ -30,38 +38,46 @@ P(y|\hat{\boldsymbol{x}},W)&=P(Y=1|\hat{\boldsymbol{x}},W)^yP(Y=0|\hat{\boldsymb
3038
$$
3139

3240
似然函数为
41+
3342
$$
3443
\mathcal L(W)=\prod_{i=1}^{n}P(y_i|\hat{\boldsymbol{x}}_i,W) \tag{6}
3544
$$
3645

37-
**LR模型**中,损失函数称为最大似然损失函数,即似然函数取对数,在取得相反数:
46+
**LR 模型**中,损失函数称为最大似然损失函数,即似然函数取对数,在取得相反数:
47+
3848
$$
3949
J(W)=-\log \mathcal L(W)=-\sum_{i=1}^{n}\Bigg[y_i\Big{(}\frac{1}{1+e^{-\hat{\boldsymbol{x}}W}}\Big{)}+(1-y_i)\Big{(}1-\frac{1}{1+e^{-\hat{\boldsymbol{x}}W}}\Big{)}\Bigg]
4050
$$
4151

42-
训练**LR模型**的过程就是一步步迭代修改 $W$ ,使得损失函数 $J(W)$ 取得最小值,**梯度下降法**就是一种优化**LR模型**的方法,先对 $J(W)$ 求偏导
52+
训练**LR 模型**的过程就是一步步迭代修改 $W$ ,使得损失函数 $J(W)$ 取得最小值,**梯度下降法**就是一种优化**LR 模型**的方法,先对 $J(W)$ 求偏导
53+
4354
$$
4455
\frac{\partial J}{\partial W_j}=-\sum_{i=1}^n\Big(\frac{1}{1+e^{-\hat{\boldsymbol{x}}_iW}} \Big)\cdot x_{ij} \tag{7}
4556
$$
4657

4758
写成矩阵形式即
59+
4860
$$
4961
\frac{\partial J}{\partial W}=X^T(H-Y) \tag{8}
5062
$$
63+
5164
其中
65+
5266
$$
5367
H=\frac{1}{1+e^{-XW}} \tag{9}
5468
$$
5569

5670
在梯度下降法中,输入训练次数 $T$ 和学习率 $\alpha$ ,则循环 $T$ 次,每一次都用下式更新 $W$
71+
5772
$$
5873
W=W-\alpha \cdot dW=W-\alpha \cdot \frac{\partial J}{\partial W} \tag{10}
5974
$$
75+
6076
或者不指定次数 $T$ ,而是判断当 $max(dW) \leq \varepsilon$时停止学习,输入训练数据用梯度下降法计算出 $W$ 得到最优模型后,即可用该模型对测试数据集进行预测,输出训练集和测试集的精度。
6177

6278
## 编程实现
6379

64-
本次实验给定的数据集有**70**组数据, $\boldsymbol{x}$ 的维度为$(,2)$(2列), $y$ 为一个 $0/1$ 的值,维度为$(,1)$(1列),则 $\hat{\boldsymbol{x}}$ 维度为 $(,3)$ , $X$ 维度为 $(70,3)$ (70行3列),$Y$ 维度为 $(70,1)$。
80+
本次实验给定的数据集有**70**组数据, $\boldsymbol{x}$ 的维度为$(,2)$(2 列), $y$ 为一个 $0/1$ 的值,维度为$(,1)$(1 列),则 $\hat{\boldsymbol{x}}$ 维度为 $(,3)$ , $X$ 维度为 $(70,3)$ (70 行 3 列),$Y$ 维度为 $(70,1)$。
6581

6682
由原理部分的公式推导可知 $H$ 的维度为 $(70,1)$ , $W$ 的维度为 $(3,1)$ 。
6783

@@ -98,6 +114,7 @@ def gradient_descent(X, Y, alpha=0.001, max_iter=100000):
98114
```python
99115
W, W_save = gradient_descent(x_train, Y_train, 0.001, 100000)
100116
```
117+
101118
命令行输出结果为
102119

103120
```text
@@ -149,12 +166,12 @@ W = [[17.31462217]
149166

150167
## 总结
151168

152-
题目要求的Baseline为
169+
题目要求的 Baseline 为
153170

154171
```text
155172
测评指标:精度值,正确预测占整体的比例
156173
训练集精度:0.9
157174
测试集精度:0.85
158175
```
159176

160-
我训练出的**LR模型**训练集精度为 $95.714286\%$,测试集精度为 $93.333333\%$ ,性能达标。
177+
我训练出的**LR 模型**训练集精度为 $95.714286\%$,测试集精度为 $93.333333\%$ ,性能达标。

‎Lab2/实验报告.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,32 @@
1-
# SVM实验
1+
# SVM 实验
22

33
<center>PB18071477 敖旭扬</center>
44

55
## 选做的问题
66

7-
**使用`数据集1`中数据,采用梯度下降法优化SVM模型**
7+
**使用`数据集1`中数据,采用梯度下降法优化 SVM 模型**
88

99
## 原理
1010

11-
`数据集1`中的数据不是完全线性可分的,但是使用线性模型也可以较好地完成二分类任务,所以这里使用**软间隔线性SVM**模型进行训练。由周志华的《机器学习》式$(6.35)$(或李航的《统计学习方法(第2版)》式$(7.32-7.34)$),线性不可分的线性支持向量机的学习问题变成如下凸二次规划问题:
11+
`数据集1`中的数据不是完全线性可分的,但是使用线性模型也可以较好地完成二分类任务,所以这里使用**软间隔线性 SVM**模型进行训练。由周志华的《机器学习》式$(6.35)$(或李航的《统计学习方法(第 2 版)》式$(7.32-7.34)$),线性不可分的线性支持向量机的学习问题变成如下凸二次规划问题:
12+
1213
$$
1314
\underset{\boldsymbol{w},b,\xi}{min} \quad \frac 1 2 ||\boldsymbol{w}||^2 + C \sum_{i=1}^N \xi_i\\\\ s.t.\ y_i(w\cdot x_i+b) \ge 1-\xi_i \\\\ \xi_i \ge 0, i=1,2,\cdots,N \tag{1}
1415
$$
1516

16-
由于实验使用的数据噪声较大,使用`SVM.pptx`中给出的最简单的梯度下降算法时,训练过程中会出现剧烈的“抖动”,参数难以收敛,训练效果不好。即使对 $X$ 进行归一化可以改善效果,但是改善幅度并不明显,所以最终选择使用**Mini-Batch梯度下降法(MBGD)**来求解该问题。使用该方法求得最优 $\boldsymbol{w}^*,b^*$ 后,分类决策函数即为:
17+
由于实验使用的数据噪声较大,使用`SVM.pptx`中给出的最简单的梯度下降算法时,训练过程中会出现剧烈的“抖动”,参数难以收敛,训练效果不好。即使对 $X$ 进行归一化可以改善效果,但是改善幅度并不明显,所以最终选择使用**Mini-Batch 梯度下降法(MBGD)**来求解该问题。使用该方法求得最优 $\boldsymbol{w}^*,b^*$ 后,分类决策函数即为:
18+
1719
$$
1820
h(x)=sign(\boldsymbol{w}^* \cdot x+b^*) \tag{2}
1921
$$
22+
2023
据此可用该模型对数据集进行预测,输出训练集和测试集的精度。
2124

2225
## 编程实现
2326

2427
矩阵运算使用`python``numpy`库实现。
2528

26-
最关键的**Mini-Batch梯度下降法(MBGD)**算法如下
29+
最关键的**Mini-Batch 梯度下降法(MBGD)**算法如下
2730

2831
```python
2932
class SVM:
@@ -74,6 +77,7 @@ class SVM:
7477
svm = SVM()
7578
W, b = svm.fit(x_train1, y_train1) # 训练模型
7679
```
80+
7781
命令行输出结果(每次运行的结果可能都不同)为
7882

7983
```text
@@ -96,8 +100,6 @@ b= 4.925196423270461
96100
padding: 2px;">数据集1的训练过程展示</div>
97101
</center>
98102

99-
100-
101103
### 训练结果
102104

103105
<center>
@@ -111,8 +113,6 @@ b= 4.925196423270461
111113
padding: 2px;">最终结果在数据集1的训练集上的决策边界(精度95.71%)</div>
112114
</center>
113115

114-
115-
116116
### 预测效果
117117

118118
<center>
@@ -126,15 +126,14 @@ b= 4.925196423270461
126126
padding: 2px;">最终结果在数据集1的测试集上的决策边界(精度93.33%)</div>
127127
</center>
128128

129-
130129
## 总结
131130

132-
题目要求的Baseline为
131+
题目要求的 Baseline 为
133132

134133
```text
135134
测评指标:精度值,正确预测占整体的比例
136135
训练集精度:0.9
137136
测试集精度:0.85
138137
```
139138

140-
我训练出的**软间隔线性SVM模型**训练集精度为 $95.71\%$,测试集精度为 $93.33\%$ ,性能达标。
139+
我训练出的**软间隔线性 SVM 模型**训练集精度为 $95.71\%$,测试集精度为 $93.33\%$ ,性能达标。

‎Lab3/实验报告.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,4 +238,4 @@ print("测试集精度为:{:.2f} %".format(
238238
测试集精度:0.7
239239
```
240240

241-
我训练出的**XGBoost模型**测试集精度为 $76.47 \%$,性能达标。
241+
我训练出的**XGBoost 模型**测试集精度为 $76.47 \%$,性能达标。

0 commit comments

Comments
 (0)
Please sign in to comment.