Max-Min
X n o r m = X − X m i n X m a x − X m i n X_{norm} = \frac{X-X_{min}}{X_{max}-X_{min}} Xnorm=Xmax−XminX−Xmin
z-score
z = x − μ σ z = \frac{x-\mu}{\sigma} z=σx−μ
归一化
x ′ = x ∑ j = 1 n ( x j ) 2 x^{'} = \frac{x}{\sqrt{\sum_{j=1}^{n}(x_j)^2}} x′=∑j=1n(xj)2x
序列编码
序列转换成数字,保留优先级,如高中低 ==> 3、2、1
one-hot
序列转换成数字,不保留优先级,如血型A、B、O、AB分别对应(1,0,0,0)、(0,1,0,0)、(0,0,1,0)、(0,0,0,1)
维度太高的时候可以使用hash来降维,或者改成稀疏向量的形式
二进制编码
如血型A、B、O、AB分别对应(0,0,1)、(0,1,0)、(0,1,1)、(1,0,0)
word2vec
特征选择的两个标准
按照发散性或者相关性对各个特征进行评分,选择特征
通过目标函数(AUC/MSE)来决定是否要新加入一个变量
先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣
真实\预测 | 0 | 1 |
---|---|---|
0 | TN | FP |
1 | FN | TP |
所有的,都是在描述模型输出结果
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP
F 1 = 2 1 P + 1 R = 2 P R P + R F1 = \frac{2}{\frac{1}{P}+\frac{1}{R}}=\frac{2PR}{P+R} F1=P1+R12=P+R2PR
A c c u r a t e = T P + T N T N + F N + F P + T P Accurate = \frac{TP+TN}{TN+FN+FP+TP} Accurate=TN+FN+FP+TPTP+TN
P-R曲线
横坐标:召回率
纵坐标:准确率
P-R曲线是通过将阈值从高到低移动而生成的
ROC曲线
横坐标:FPR 假阳性率
纵坐标:TPR 真阳性率、召回率
ROC曲线是通过将阈值从高到低移动而生成的
当正负样本的比例发生变化时,ROC曲线相比于P-R曲线会更为稳定
AUC
是ROC曲线的面积,表示任意取两个样本,正样本的score大于负样本的score的概率
评估聚类随机程度 —— 霍普金斯统计量H
从所有样本中随机寻找n个点,P,再寻找离每个点最近的点x,计算px的距离x;
从所有样本中寻找n个点,q,再寻找最近点y,计算qy的距离y
H = ∑ i = 1 n y i ∑ i = 1 n x i + ∑ i = 1 n y i H = \frac{\sum_{i=1}^{n}y_i}{\sum_{i=1}^{n}x_i + \sum_{i=1}^{n}y_i} H=∑i=1nxi+∑i=1nyi∑i=1nyi
随机分布H=0.5,H值越大聚类效果越好
评估聚类质量 —— 轮廊系数
a( p )表示p与同簇其他点之间的平均距离
b( p )表示离p最近的一个族中所有点到p的平均距离
轮廊系数可以衡量族与簇的距离、族自己的紧凑程度
s ( p ) = b ( p ) − a ( p ) m a x { b ( p ) , a ( p ) } s(p) = \frac{b(p)-a(p)}{max{\{ b(p),a(p) \}}} s(p)=max{b(p),a(p)}b(p)−a(p)
均方根标准偏差
R方
假设函数:
h θ ( x ) = θ T X = ∑ i = 0 n θ i x i = θ 0 + θ 1 x 1 + ⋯ + θ n x n h_\theta(x) = \theta^TX = \sum_{i=0}^{n}\theta_ix_i = \theta_0 + \theta_1x_1 + \cdots + \theta_nx_n hθ(x)=θTX=i=0∑nθixi=θ0+θ1x1+⋯+θnxn
损失函数:
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)}) - y^{(i)})^2 J(θ)=2m1i=1∑m(h(x(i))−y(i))2
正规方程求解:
X = ( x 0 ( 1 ) x 1 ( 1 ) ⋯ x n ( 1 ) x 0 ( 2 ) x 1 ( 2 ) ⋯ x n ( 2 ) ⋯ ⋯ ⋯ ⋯ x 0 ( m ) x 1 ( m ) ⋯ x n ( m ) ) X = \begin{pmatrix} x_0^{(1)} & x_1^{(1)} & \cdots & x_n^{(1)} \\ x_0^{(2)} & x_1^{(2)} & \cdots & x_n^{(2)} \\ \cdots & \cdots & \cdots & \cdots \\ x_0^{(m)} & x_1^{(m)} & \cdots & x_n^{(m)} \\ \end{pmatrix} X=⎝⎜⎜⎜⎛x0(1)x0(2)⋯x0(m)x1(1)x1(2)⋯x1(m)⋯⋯⋯⋯xn(1)xn(2)⋯xn(m)⎠⎟⎟⎟⎞
θ = ( X T X ) − 1 X T Y \theta = (X^TX)^{-1}X^TY θ=(XTX)−1XTY
梯度下降求解:
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 , . . . ) ( s i m u l a t e − f o r j = 0 , 1 , 2 , . . . ) \theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j}J(\theta_0, \theta_1, ...) \qquad (simulate - for \quad j=0,1,2,...) θj:=θj−α∂θj∂J(θ0,θ1,...)(simulate−forj=0,1,2,...)
开始梯度下降之前:
梯度下降中:
梯度下降后:
几种梯度下降方法:
{ θ T X 小 于 0 = ⇒ h θ ( x ) < 0.5 = ⇒ y = 0 θ T X > 0 = ⇒ h θ ( x ) > 0.5 = ⇒ y = 1 θ T X = 0 = ⇒ h θ ( x ) = 0.5 = ⇒ 决 策 边 界 \begin{cases} & \theta^TX小于0 =\Rightarrow h_\theta(x) < 0.5 =\Rightarrow y=0 \\ & \theta^TX>0 =\Rightarrow h_\theta(x) > 0.5 =\Rightarrow y=1\\ & \theta^TX=0 =\Rightarrow h_\theta(x) = 0.5 =\Rightarrow 决策边界 \end{cases} ⎩⎪⎨⎪⎧θTX小于0=⇒hθ(x)<0.5=⇒y=0θTX>0=⇒hθ(x)>0.5=⇒y=1θTX=0=⇒hθ(x)=0.5=⇒决策边界
线性回归的代价函数是平方损失函数,将逻辑回归的假设函数代入公式后的损失函数是一个非凸函数,有很多个局部最优解,没有办法快速的获得全局最优解,于是我们就用上了最大似然估计:
J ( θ ) = { if y=1 then − y ( i ) l o g ( h θ ( x ( i ) ) if y=0 then − ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) J(\theta)=\begin{cases} & \text{if y=1 then } -y^{(i)}log(h_\theta(x^{(i)}) \\ & \text{if y=0 then } -(1-y^{(i)})log(1-h_\theta(x^{(i)})) \end{cases} J(θ)={if y=1 then −y(i)log(hθ(x(i))if y=0 then −(1−y(i))log(1−hθ(x(i)))
J ( θ ) = 1 m ∑ i = 1 m ( − y ( i ) l o g ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(-y^{(i)}log(h_\theta(x^{(i)})) - (1-y^{(i)})log(1-h_\theta(x^{(i)}))) J(θ)=m1i=1∑m(−y(i)log(hθ(x(i)))−(1−y(i))log(1−hθ(x(i))))
决策树损失函数
J ( k , t k ) = m l e f t m G l e f t + m r i g h t m G r i g h t ( G m e a s u r e s t h e i m p u r i t y o f t h e s u b s e t ) J(k, t_k)=\frac{m_{left}}{m}G_{left} + \frac{m_{right}}{m}G_{right} \;\; (G \; measures \; the \; impurity \; of \; the \; subset) J(k,tk)=mmleftGleft+mmrightGright(Gmeasurestheimpurityofthesubset)
基尼指数
G i n i i = 1 − ∑ k = 1 n p i , k 2 Gini_i=1-\sum_{k=1}^{n}p_{i,k}^2 Ginii=1−k=1∑npi,k2
香农指数
H i = − ∑ k = 1 , p i , k ≠ 0 n p i , k l o g ( p i , k ) H_i=-\sum_{k=1,p_{i,k}\neq 0}^{n}p_{i,k}log(p_{i,k}) Hi=−k=1,pi,k=0∑npi,klog(pi,k)
损失函数:
J ( c , μ ) = ∑ i = 1 M ∣ ∣ x i − μ c i ∣ ∣ 2 J(c, \mu) = \sum_{i=1}^{M}||x_i-{\mu}_{c_i}||^2 J(c,μ)=i=1∑M∣∣xi−μci∣∣2
调优策略:
数据归一化、去除离群点噪声、合理的选择K值(手肘法)、采用核函数
缺点:
需要手动设置K值、受初始值影响比较大、受噪声影响大、样本只能被分到一个类别
优化算法:kmeans++
初始化第n+1个聚类中心的时候,尽可能的选择里0-n个点比较远的点
0-1损失函数
预测值和目标值不相等为1,否则为0
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( x ) 0 , Y = f ( x ) L(Y, f(X)) = \left\{\begin{matrix} 1, & Y \neq f(x)\\ 0, & Y = f(x) \end{matrix}\right. L(Y,f(X))={1,0,Y=f(x)Y=f(x)
绝对值损失函数
L ( Y , f ( X ) ) = ∣ Y − f ( x ) ∣ L(Y, f(X)) = | Y - f(x) | L(Y,f(X))=∣Y−f(x)∣
log对数损失函数
L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) L(Y, P(Y|X)) = -logP(Y|X) L(Y,P(Y∣X))=−logP(Y∣X)
平方损失函数
L ( Y ∣ f ( x ) ) = ∑ ( Y − f ( X ) ) 2 L(Y | f(x)) = \sum(Y-f(X))^2 L(Y∣f(x))=∑(Y−f(X))2
指数损失函数
L ( Y ∣ f ( x ) ) = e x p [ − y f ( X ) ] L(Y | f(x)) = exp[-yf(X)] L(Y∣f(x))=exp[−yf(X)]
Hinge损失函数
L ( y ) = m a x ( 0 , 1 − t y ) L(y) = max(0, 1-ty) L(y)=max(0,1−ty)
Ridge Regression 岭回归 L2
a 1 2 ∑ i = 1 n θ i 2 a\frac{1}{2} \sum_{i=1}^{n}\theta_i^2 a21i=1∑nθi2
Lasso Regression 套索回归 L1
completely eliminate the weights of the least important features (i.e., set them to zero), 对重要性不高的特征打压比较重
a ∑ i = 1 n ∣ θ i ∣ a\sum_{i=1}^{n}|\theta_i| ai=1∑n∣θi∣
Elastic Net 弹性网络
a middle ground between Ridge Regression and Lasso Regression
r a ∑ i = 1 n ∣ θ i ∣ + ( 1 − r ) a 1 2 ∑ i = 1 n θ i 2 ra\sum_{i=1}^{n}|\theta_i| + (1-r)a\frac{1}{2} \sum_{i=1}^{n}\theta_i^2 rai=1∑n∣θi∣+(1−r)a21i=1∑nθi2
如何选择惩罚方式
Early Stopping
stop training as soon as the validation error reaches a minimum suspect,欠拟合和过拟合之间的拐点也就是验证集误差最小的点,毕竟训练误差会一直在下降
使用BGD时,遇到最低点就可以停止;使用SGD、MBGD就需要多观察一会儿看看会不会有更小值
voting_clf = VotingClassifier(
estimators=[('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)],
# 有两种投票方式
# voting='hard', 选出被投票次数最多的分类
# voting='soft', 选所有分类中预测概率最大的分类
voting='hard'
)
voting_clf.fit(X_train, y_train)
将弱模型组合起来成为更强大的模型
第j个模型的错误率,instance weight w(i) is initially set to 1/m
r j = ∑ i = 1 , y ( i ) ^ ≠ y ( i ) m w ( i ) ∑ i = 1 m w ( i ) r_j= \frac{\sum_{i=1,\hat{y^{(i)}} \neq y^{(i)}}^{m}w^{(i)}}{\sum_{i=1}^{m}w^{(i)}} rj=∑i=1mw(i)∑i=1,y(i)^=y(i)mw(i)
第j个模型的权重,准确率越高,权重值越大,随机模型权重为0
α j = η l o g r j 1 − r j \alpha_j=\eta log \frac{r_j}{1-r_j} αj=ηlog1−rjrj
更新每一个样本的权重值
f o r i = 1 , 2 ⋯ m w ( i ) ← { w ( i ) i f y ( i ) ^ = y ( i ) w ( i ) e x p ( α j ) i f y ( i ) ^ ≠ y ( i ) \begin{aligned} &for \; i= 1, 2 \cdots m \\ &w^{(i)} \leftarrow \begin{cases} w^{(i)} \quad &if \; \hat{y^{(i)}}=y^{(i)} \\ w^{(i)}exp(\alpha_j) \quad &if \; \hat{y^{(i)}} \neq y^{(i)} \end{cases} \end{aligned} fori=1,2⋯mw(i)←{w(i)w(i)exp(αj)ify(i)^=y(i)ify(i)^=y(i)
归一化,然后训练下一个模型…
预测结果是由所有的N个模型投票,选出sum权重最高的分类
y ^ ( x ) = a r g m a x k ∑ y j ^ ( x ) = k j = 1 N α j \hat{y}(x) = \underset{k}{argmax}\sum_{\overset{j=1}{\hat{y_j}(x)=k}}^{N}\alpha_j y^(x)=kargmaxyj^(x)=kj=1∑Nαj
@ WHAT - HOW - WHY