ML笔记

模型

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}\{(x^{(i)},y^{(i)})|i=1,2,...,m\}
xj(i)x_j^{(i)}表示第ii个训练数据的第jj个特征。

标准化

xi:=xixˉσx_i:=\frac{x_i-\bar{x}}{\sigma}

回归问题——线性回归

x0=1x_0=1x=[x0x1...xn]x=\begin{bmatrix}x_0\\x_1\\...\\x_n\end{bmatrix}θ=[θ0θ1...θn]\theta=\begin{bmatrix}\theta_0\\\theta_1\\...\\\theta_n\end{bmatrix}
hypothesis函数:hθ(x)=θTxh_\theta (x)=\theta^Tx
总cost函数:J(θ)=12mean(hy2)J(\theta)=\frac{1}{2}\text{mean}(||h-y||^2)

(多项式回归:将x12,x1x23x_1^2, x_1x_2^3等高次项作为特征)

梯度下降法

不断迭代:θ:=θαJ(θ)\theta :=\theta-\alpha \nabla J(\theta)
其中:

  • α\alpha为学习速率
  • J(θ)=mean(x(hy))\nabla J(\theta)=\text{mean}(x(h-y))为梯度

一般方程

Xθ=yX\theta=y的最小二乘解:θ=(XTX)1XTy\theta=(X^TX)^{-1}X^Ty

(若XTXX^TX不可逆,可能是feature过多)

二分类问题——logistic回归

sigmoid函数:g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}
hypothesis函数:hθ(x)=g(θTx)=11+eθTx=P(y=1x;θ)h_\theta (x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}=P(y=1|x;\theta)

决策函数:y=[hθ(x)>0.5]y=[h_\theta(x)>0.5]
决策边界: hθ(x)=0.5h_\theta(x)=0.5,即θTx=0\theta^Tx=0

cost函数:

Cost(hθ(x),y)={log(hθ(x))y=1log(1hθ(x))y=0=ylog(hθ(x))(1y)log(1hθ(x))\text{Cost}(h_\theta(x),y)=\begin{cases}-\log(h_\theta(x))&y=1\\-\log(1-h_\theta(x))& y=0\end{cases}\\=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))

总cost函数:

J(θ)=meanCost(hθ(x),y)=mean(ylog(h)+(1y)log(1h))=mean(ylog(1+eθTx)+(1y)log(1+eθTx))J(\theta)=\text{meanCost}(h_\theta(x),y)\\=-\text{mean}(y\log(h)+(1-y)\log(1-h))\\=\text{mean}(y\log(1+e^{-\theta^Tx})+(1-y)\log(1+e^{\theta^Tx}))

梯度下降法

不断迭代:θ:=θαJ(θ)\theta :=\theta-\alpha \nabla J(\theta)
其中:

  • J(θ)=mean(x(hy))\nabla J(\theta)=\text{mean}(x(h-y))为梯度

(多分类问题:面对每个新的数据集,都逐类进行检验(把要检验的类当作1,其余当作0),选择可能性最高的那类)

随机梯度下降法

对于规模较大的数据集,可以随机选一个样本算cost

online learning

每次获得一个新的训练集,都用它的cost进行一次梯度下降

正则化

增加penalty以控制θ\theta规模。(θ0\theta_0除外)

  • L1范数(绝对值和):Lasso回归
  • L2范数(平方和):岭回归

回归问题
J(θ)=12mean(hy2+λ2m(θ2)J(\theta)=\frac{1}{2}\text{mean}(||h-y||^2+\frac{\lambda}{2m}(||\theta||^2)
分类问题

J(θ)=1m(yTlog(h)+(1y)Tlog(1h))+λ2m(θ2)J(\theta)=-\frac{1}{m}(y^T\log(h)+(1-y)^T\log(1-h))+\frac{\lambda}{2m}(||\theta||^2)

θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))xj(i)(j0)\theta_j :=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} (j\ne 0)

一般方程
θ=(XTX+λ[0OOIn])1XTy\theta=(X^TX+\lambda \begin{bmatrix}0&O\\O&I_n\end{bmatrix})^{-1}X^Ty
(可以解决矩阵不可逆的问题)

overfit与underfit

overfit: high variance underfit: high bias
JCV>>Jtrain>0J_{CV}>>J_{train}>0 JCV>Jtrain>>0J_{CV}>J_{train}>>0
fix fewer features, more examples, increase λ\lambda more/polynomial features, decrease λ\lambda

神经网络

神经网络是一个多层感知机。从输入到输出共有LL层,第lla(l)a^{(l)}sls_l个unit。(KK分类问题中sL=Ks_L=K

相邻两层之间的转移是Logistic回归(一个线性变换+一个sigmoid函数):

z(l+1)=W(l)a(l)+b(l),a(l+1)=g(z(l+1))z^{(l+1)}=W^{(l)}a^{(l)}+b^{(l)}, a^{(l+1)}=g(z^{(l+1)})

其中W(l)Rsl+1×sl,b(l)Rsl+1W^{(l)}\in R^{s_{l+1}\times s_l}, b^{(l)}\in R^{s_{l+1}}g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}

J=mean(ylogh(1y)log(1h))+W2J=-\text{mean}(y\log h-(1-y)\log (1-h))+||W||^2

我们的目标是求W,bW,b以最小化JJ

梯度下降法需要知道每一步的Wi,j(l)J\frac{\partial}{\partial W_{i,j}^{(l)}}J以及bi(l)J\frac{\partial}{\partial b_{i}^{(l)}}J

Hadamard积

即矩阵对应位置元素乘积运算。

Sn×mTn×m=[s11t11s12t12...s1mt1ms21t21s22t22...s2mt2m............sn1tn1sn2tn2...snmtnm]S_{n\times m}\circ T_{n\times m}=\begin{bmatrix}s_{11}t_{11}&s_{12}t_{12}&...&s_{1m}t_{1m}\\ s_{21}t_{21}&s_{22}t_{22}&...&s_{2m}t_{2m}\\ ...&...&...&...\\ s_{n1}t_{n1}&s_{n2}t_{n2}&...&s_{nm}t_{nm}\end{bmatrix}

反向传播算法

https://blog.csdn.net/qq_47903865/article/details/113839061

支持向量机

目标:

minθC(ycost1(θTx)+(1y)cost0(θTx))+12θ2\min_\theta C\sum(y \text{cost}_1(\theta^Tx)+(1-y)\text{cost}_0(\theta^Tx))+\frac{1}{2}||\theta||^2

其中C=1λC=\frac{1}{\lambda}

image-20210214094906957

{θTx1h=1θTx1h=0\begin{cases}\theta^Tx\ge 1&h=1\\\theta^Tx\le -1&h=0\end{cases}时,ycost1(θTx)+(1y)cost0(θTx)=0y \text{cost}_1(\theta^Tx)+(1-y)\text{cost}_0(\theta^Tx)=0

tip: Gaussian kernal

选取landmark ll,利用正态分布曲线:

f=exp(zl22σ2)f=\exp(-\frac{||z-l||^2}{2\sigma^2})

high bias, low variance low bias, high variance
C(=1λ)C(=\frac{1}{\lambda}) small large
σ2\sigma^2 large small
nn large(>10,000), mm(<1,000) nn small(<1,000), mm intermediate(<10,000) nn small(<1,000), mm large(>50,000)
linear kernel Gaussian kernel add features+linear kernel

tip: 扩大数据规模

在原数据上增加干扰

tip: map reduce

把训练集分给多台计算机并行计算。

tip: 上限分析

分析机器学习流水线各阶段准确率上限,从而避免无用功

聚类问题

将训练集分成多个团

K-means算法

  1. 随机初始化KK个质心μ1,μ2,...,μK\mu_1,\mu_2,...,\mu_K(可以随机取KK个训练数据)
  2. 找出每个点最近的质心μc(i)\mu_{c^{(i)}},并将质心更新为其关联点的均值。不断迭代。

optimization objective: J(c,μ)=mean(x(i)μc(i)2)J(c,\mu)=\text{mean}(||x^{(i)}-\mu_{c^{(i)}}||^2)

可能会取局部极小值,因此需多次实验

全局最小值随KK递减

数据压缩

nn维数据集X={x1,x2,...,xm}Rn×mX=\{x_1,x_2,...,x_m\}\in R^{n\times m}

降到kkYRk×mY\in R^{k\times m}

PCA

  1. feature scaling,去中心化
  2. 求出协方差矩阵Σ=1mXXT\Sigma=\frac{1}{m}XX^T,进行特征值分解Σ=UTΛU\Sigma=U^T\Lambda U
  3. UUkk列,组成PRn×kP\in R^{n\times k}
  4. Y=PTXY=P^TXXapprox=PYX_{approx}=PY

choice of kk : i=1kλii=1nλi0.99\frac{\sum_{i=1}^k\lambda_i}{\sum_{i=1}^n\lambda_i}\ge 0.99

可以减小数据规模、方便可视化

不推荐用来处理overfit(更推荐正则化)

异常检测

根据训练集,确定数据的异常程度

正态分布

训练集X={x1,x2,...,xm}Rn×mX=\{x_1,x_2,...,x_m\}\in R^{n\times m}

一维:p(x;μ,σ)=12πσexp((xμ)22σ2)p(x;\mu,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2})

p(x)=i=1np(xi;μi,σi)p(x)=\prod_{i=1}^n p(x_i;\mu_i,\sigma_i)

nn维:p(x;μ,σ)=1(2π)n2Σ12exp(12(xμ)TΣ1(xμ))p(x;\mu,\sigma)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}\exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)),其中Σ\Sigma为协方差矩阵。(要求m>nm>n,否则Σ\Sigma不可逆)

决策函数:y=[p(x)ε]y=[p(x)\le \varepsilon]

评价依据:F1分数(精准率和召回率的调和平均数)

异常检测 监督学习
少量异常样本,大量正常样本 正常、异常样本数目接近
异常样本缺乏共性 异常样本有共性

推荐系统

nun_u个用户,nmn_m部电影,用户jj对电影ii的评分为y(i,j)y(i,j),有缺失。

协同过滤

电影ii有特征x(i)x^{(i)},用户jj有偏好θ(j)\theta^{(j)}

先随机初始化XXΘ\Theta

然后梯度下降,目标函数J(X,Θ)=12XΘTY2+λ2X2+λ2Θ2J(X,\Theta)=\frac{1}{2}||X\Theta^T-Y||^2+\frac{\lambda}{2}||X||^2+\frac{\lambda}{2}||\Theta||^2

对缺失的y(i,j)y(i,j),可补齐缺失评分y(i,j)=θ(j)Tx(i)y(i,j)=\theta^{(j)T}x^{(i)}

推荐时,选择缺失评分较高的几个电影。