INF442 Amphi 7:Linear models for regression | Standard Template Library
k-NN的优缺点
1. Linear model for regression
- Hyp:
- Y = β 0 + ∑ j = 1 d X j β j + ϵ = [ 1 , x T ] β + ϵ Y = \beta_0 + \sum_{j=1}^dX_j\beta_j+\epsilon = [1 ,x^T] \beta+\epsilon Y=β0+∑j=1dXjβj+ϵ=[1,xT]β+ϵ
- β ∈ R d + 1 \beta \in \mathbb{R}^{d+1} β∈Rd+1
- 目的:得到 β ^ , ϵ ^ \hat{\beta},\hat{\epsilon} β^,ϵ^
Ordinary Least Squares(OLS) estimator
Estimate
β
\beta
β by minimizing the empirical risk with MSE:
Optimality
- β ^ \hat{\beta} β^绕着其均值 β \beta β的振动最小。
Evaluation
- 给定数据 y 1 , . . . , y n y_1,...,y_n y1,...,yn,以及它们的平均值 y ‾ \overline{y} y
- TSS 是真实情况下数据的波动
- ESS 是我们能解释的部分
- RSS 是我们一开始定义的损失函数
Dem:
或者:
Rm:
因为TSS = ESS + RSS,且ESS越高越好,RSS越低越好。
因此我们定义
Fraction of variance unexplained
F V U = R S S T S S FVU=\frac{RSS}{TSS} FVU=TSSRSS越低越好
R 2 = E S S T S S R^2=\frac{ESS}{TSS} R2=TSSESS越高越好
Degenerate Cases
因为我们之前假设了 X ∈ R ( n , d + 1 ) X \in \mathbb{R}^{(n,d+1)} X∈R(n,d+1) rang max,但是当样本n<特征数d,则用这n个样本的combinaison lineare并不能表示 R d R^d Rd这个空间 -> 没有rang max。
即, n < d n<d n<d时是Degenerate Cases。
上图可以看成d=2,但是两个样本都相关,如[1,2]和[2,4] ,所以实际上它们的线性组合只能表示一条线。
此时,我们不再能通过X中的每个样本(每一行)的线性组合得到 R d \mathbb{R}^d Rd,导致我们在估计 β \beta β的时候可能有多个解。
此时最自然的想法就是选择 β ^ \hat{\beta} β^为在我们能表示的空间上的那个。
另一种方法是利用Regularization:
由图可直观的感受到,这个
β
^
\hat{\beta}
β^满足模长最小这个特点,因此,我们引入Regularization。
Sol: Regularization
- ridge: ∣ ∣ β ∣ ∣ 2 ||\beta||_2 ∣∣β∣∣2
- lasso:
∣
∣
β
∣
∣
1
||\beta||_1
∣∣β∣∣1 可以用来选择变量。(即看出哪些变量比较重要。)
Ridge Regression
增加了Regularization之后,我们的目标函数就Strictement Convex了。
LU: Lower Triangle, Upper Triangle从而减少Pivot de gauss的复杂度。
2. Non-Linear regression
2.1 Using basis functions
Prametric families: polybimials, RBFs
我们可以通过对数据进行处理得到一个线性的关系,如
[x,y]
[1,3]
[2,7]
[3,13]
我们可以尝试增加一个数据,
[x,x^2,y]
[1,1,3]
[2,4,7]
[3,9,13]
然后我们就可以发现真实要找的关系就是
y
=
x
2
+
x
+
1
y=x^2+x+1
y=x2+x+1
2.2 Using kernels [Hors Programme]
利用
Φ
\Phi
Φ把X映射到Espace de Hilbert上。
- f可以用kernel来表示。
3. Standard Template Library
-
Standard: located in namespace std
-
containers (i.e. abstractions for basic storage data structures), e.g.:
- strings
- lists and dynamic arrays
- trees
-
functionals (i.e. objects performing speci c functions), e.g.:
- comparisons
- arithmetic operations
- logical or bitwise operations
-
algorithms, e.g.:
- max / min
- sort
- binary search
#include<string>
std::string s = "Hello";
3.1 Containers
-
std::list<T>
doubly-linked list -
std::vector<T>
dynamic (resizable) array
v[0] O(1)的时间 -
std::set<T>
ordered set (balanced binary search tree) -
std::unordered_set<T>
unordered set (hash table) -
std::(unordered )map<T>
associations (key, val) with (un)ordered keys -
std::stack<T, C=std::dequeue<T> >
stack (LIFO) -
std::queue<T, C=std::dequeue<T> >
queue (FIFO) -
std::priority queue<T, C=std::vector<T> >
priority queue
我们可以在套用
- push_back 会复制要加入的元素。
- pop_back 会调用desctructor