模型
graph TD;
ts(Training set);
la(Learning algorithm);
h(hypothesis function);
1((x))
2((y))
ts-->la-->h;
1-->h-->2;
训练集
{(x(i),y(i))∣i=1,2,...,m}
xj(i)表示第i个训练数据的第j个特征。
标准化
xi:=σxi−xˉ
回归问题——线性回归
令x0=1,x=⎣⎢⎢⎡x0x1...xn⎦⎥⎥⎤,θ=⎣⎢⎢⎡θ0θ1...θn⎦⎥⎥⎤。
hypothesis函数:hθ(x)=θTx。
总cost函数:J(θ)=21mean(∣∣h−y∣∣2)
(多项式回归:将x12,x1x23等高次项作为特征)
梯度下降法
不断迭代:θ:=θ−α∇J(θ)
其中:
- α为学习速率
- ∇J(θ)=mean(x(h−y))为梯度
一般方程
求Xθ=y的最小二乘解:θ=(XTX)−1XTy
(若XTX不可逆,可能是feature过多)
二分类问题——logistic回归
sigmoid函数:g(z)=1+e−z1。
hypothesis函数:hθ(x)=g(θTx)=1+e−θTx1=P(y=1∣x;θ)。
决策函数:y=[hθ(x)>0.5]
决策边界: hθ(x)=0.5,即θTx=0。
cost函数:
Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x))y=1y=0=−ylog(hθ(x))−(1−y)log(1−hθ(x))
总cost函数:
J(θ)=meanCost(hθ(x),y)=−mean(ylog(h)+(1−y)log(1−h))=mean(ylog(1+e−θTx)+(1−y)log(1+eθTx))
梯度下降法
不断迭代:θ:=θ−α∇J(θ)
其中:
- ∇J(θ)=mean(x(h−y))为梯度
(多分类问题:面对每个新的数据集,都逐类进行检验(把要检验的类当作1,其余当作0),选择可能性最高的那类)
随机梯度下降法
对于规模较大的数据集,可以随机选一个样本算cost
online learning
每次获得一个新的训练集,都用它的cost进行一次梯度下降
正则化
增加penalty以控制θ规模。(θ0除外)
- L1范数(绝对值和):Lasso回归
- L2范数(平方和):岭回归
回归问题
J(θ)=21mean(∣∣h−y∣∣2+2mλ(∣∣θ∣∣2)
分类问题
J(θ)=−m1(yTlog(h)+(1−y)Tlog(1−h))+2mλ(∣∣θ∣∣2)
θj:=θj(1−αmλ)−αm1∑i=1m(hθ(x(i))−y(i))xj(i)(j=0)
一般方程
θ=(XTX+λ[0OOIn])−1XTy
(可以解决矩阵不可逆的问题)
overfit与underfit
|
overfit: high variance |
underfit: high bias |
|
JCV>>Jtrain>0 |
JCV>Jtrain>>0 |
fix |
fewer features, more examples, increase λ |
more/polynomial features, decrease λ |
神经网络
神经网络是一个多层感知机。从输入到输出共有L层,第l层a(l)有sl个unit。(K分类问题中sL=K)
相邻两层之间的转移是Logistic回归(一个线性变换+一个sigmoid函数):
z(l+1)=W(l)a(l)+b(l),a(l+1)=g(z(l+1))
其中W(l)∈Rsl+1×sl,b(l)∈Rsl+1,g(z)=1+e−z1。
J=−mean(ylogh−(1−y)log(1−h))+∣∣W∣∣2
我们的目标是求W,b以最小化J。
梯度下降法需要知道每一步的∂Wi,j(l)∂J以及∂bi(l)∂J。
Hadamard积
即矩阵对应位置元素乘积运算。
Sn×m∘Tn×m=⎣⎢⎢⎡s11t11s21t21...sn1tn1s12t12s22t22...sn2tn2............s1mt1ms2mt2m...snmtnm⎦⎥⎥⎤
反向传播算法
https://blog.csdn.net/qq_47903865/article/details/113839061
支持向量机
目标:
minθC∑(ycost1(θTx)+(1−y)cost0(θTx))+21∣∣θ∣∣2
其中C=λ1

当 {θTx≥1θTx≤−1h=1h=0时,ycost1(θTx)+(1−y)cost0(θTx)=0。
tip: Gaussian kernal
选取landmark l,利用正态分布曲线:
f=exp(−2σ2∣∣z−l∣∣2)
|
high bias, low variance |
low bias, high variance |
C(=λ1) |
small |
large |
σ2 |
large |
small |
n large(>10,000), m(<1,000) |
n small(<1,000), m intermediate(<10,000) |
n small(<1,000), m large(>50,000) |
linear kernel |
Gaussian kernel |
add features+linear kernel |
tip: 扩大数据规模
在原数据上增加干扰
tip: map reduce
把训练集分给多台计算机并行计算。
tip: 上限分析
分析机器学习流水线各阶段准确率上限,从而避免无用功
聚类问题
将训练集分成多个团
K-means算法
- 随机初始化K个质心μ1,μ2,...,μK(可以随机取K个训练数据)
- 找出每个点最近的质心μc(i),并将质心更新为其关联点的均值。不断迭代。
optimization objective: J(c,μ)=mean(∣∣x(i)−μc(i)∣∣2)
可能会取局部极小值,因此需多次实验
全局最小值随K递减
数据压缩
把n维数据集X={x1,x2,...,xm}∈Rn×m
降到k维Y∈Rk×m
PCA
- feature scaling,去中心化
- 求出协方差矩阵Σ=m1XXT,进行特征值分解Σ=UTΛU
- 取U前k列,组成P∈Rn×k
- Y=PTX,Xapprox=PY
choice of k : ∑i=1nλi∑i=1kλi≥0.99
可以减小数据规模、方便可视化
不推荐用来处理overfit(更推荐正则化)
异常检测
根据训练集,确定数据的异常程度
正态分布
训练集X={x1,x2,...,xm}∈Rn×m
一维:p(x;μ,σ)=2πσ1exp(−2σ2(x−μ)2)。
p(x)=∏i=1np(xi;μi,σi)。
n维:p(x;μ,σ)=(2π)2n∣Σ∣211exp(−21(x−μ)TΣ−1(x−μ)),其中Σ为协方差矩阵。(要求m>n,否则Σ不可逆)
决策函数:y=[p(x)≤ε]
评价依据:F1分数(精准率和召回率的调和平均数)
异常检测 |
监督学习 |
少量异常样本,大量正常样本 |
正常、异常样本数目接近 |
异常样本缺乏共性 |
异常样本有共性 |
推荐系统
nu个用户,nm部电影,用户j对电影i的评分为y(i,j),有缺失。
协同过滤
电影i有特征x(i),用户j有偏好θ(j)。
先随机初始化X和Θ。
然后梯度下降,目标函数J(X,Θ)=21∣∣XΘT−Y∣∣2+2λ∣∣X∣∣2+2λ∣∣Θ∣∣2。
对缺失的y(i,j),可补齐缺失评分y(i,j)=θ(j)Tx(i)。
推荐时,选择缺失评分较高的几个电影。