对于一个机器学习问题,数据和特征往往决定了结果的上限,而模型、算法的选择应优化则是在逐步接近这个上限。
为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理使得不同指标之间具有可比性。
前面说的为了去量纲,进一步,为什么需要去量纲?拿一个随机梯度下降的例子,假设高两种数值型特征, X1 的取值范围为[0, 10],X2的取值范围为[0, 3],于是可以构造一个目标函数等值图。另外进行归一化之后如右图
可以看出,如果进行归一化后,等值图是一个圆,可以更快的找到最优点。所以一般通过梯度下降求解的就是需要归一化的。比如线性回归,逻辑回归,SVM,NN。但对于决策树没必要,因为决策树在进行节点分裂时,主要通过计算特征x的信息增益/比/Gini系数。涉及到信息熵与归一化与否都没关系。
类比特征就是待分类的标签值。比如男女,血型A/B/O/AB.这些字符串表示出了决策树等少数模型可以接受,一般模型比如LR,SVM都需要数值型标签才能work。
为了提高对复杂关系的拟合能力,需要对一特征进行组合交叉,将一阶特征组合为高阶特征。
2013年谷歌提出了Word2Vec模型。有两种网络结构分别是:
同理,输出层向量的值可以通过隐含层向量 ( K 维),以及连接隐含层和输出层之间的 K× N 维权童声巨阵计算得到。输出层也是一个N维向量 ,每维与词汇表中的一个单词中日对应 。 最后,对输出层向量应用Softmax 激活函数,可以计算出每个单词的生成概率 。
指标 | T(预测正类) | F(预测负类) |
---|---|---|
Positive(正类) | TP | FP |
Negative(负类) | TN | FN |
准 确 率 : A c c u r a c y = T F + F N / T F + T N + F P + F N 准确率:Accuracy = TF+FN/TF+TN+FP+FN 准确率:Accuracy=TF+FN/TF+TN+FP+FN
Acc缺陷:对于正负样本不均衡的条件下,比如负样本99%,即使所有样本分类为-1,也是99%的准确率。
精 确 率 : P r e c i s i o n = T P / T P + F P 精确率:Precision = TP/TP+FP 精确率:Precision=TP/TP+FP
P指标又称为查准率,正类分类正确占比所有分类为正的比例。
召 回 率 : R e c a l l = T P / T P + F N 召回率:Recall =TP/TP+FN 召回率:Recall=TP/TP+FN
R指标又称为查全率,正类分类为正占比真正正类的比例。
F 1 s c o r e = 2 P R / ( P + R ) F1 score = 2PR/(P+R) F1score=2PR/(P+R)
PR是一对矛盾的指标,为了均衡P和R指标,综合评价模型。
P-R曲线
P-R曲线越靠近右上角效果越好,通过移动判定阈值来绘制曲线。也是为了综合的评价模型。
ROC的横坐标是假阳(FPR),纵坐标是真阳(TPR),计算方式如下:
指标 | T(预测正类) | F(预测负类) |
---|---|---|
Positive(正类) | 2 | 1 |
Negative(负类) | 1 | 6 |
FPR | 1/1+2=2/3 | |
TPR | 1/1+6=1/7 |
绘制ROC曲线:
对于以下的分类结果:
按照输出概率从大到小,作为阈值,每个阈值对应一组FPR,TPR,得到ROC曲线:
还有一种方法:
统计正负样本的个数P,N。设置横轴的刻度为1/N,纵轴的1/P。对结果按照输出概率降序排序,依次遍历样本,遇到一个正样本就沿y轴前进一个刻度,反之x轴。遍历完所有样本即达到(1,1)点。
AUC就是ROC的曲线面积,可以使用对曲线积分的方式计算。
一般AUC取值(0.5,1),越大越好,说明分类器将正样本排序在前,这就是AUC的物理意义。
ROC比P-R曲线更加稳定,对于正负样本不均衡时,ROC曲线可以维持不变,但是P-R曲线变化剧烈。所以ROC的应用场景更加广泛。
对于词频或者词向量,他们在空间的欧氏距离可能很大,但是余弦夹角很小,依次度量两个向量的相似度。即是扩展到高维数据,依然符合相似为1,相交为0,相反为-1的特点。所以余弦相似度取值为[0,2]。
在一些场景,例如 Word2Vec 中,其向量的模长是经过归一化的, 此时欧氏距离与余弦距离有着单调的关系, 即
∥ A − B ∥ 2 = 2 ( 1 − cos ( A , B ) ) , \|A-B\|_{2}=\sqrt{2(1-\cos (A, B))}, ∥A−B∥2=2(1−cos(A,B)),
其中 ∥ A − B ∥ 2 \|A-B\|_{2} ∥A−B∥2 表示欧氏距离, cos ( A , B ) \cos (A, B) cos(A,B) 表示余弦相似度, ( 1 − cos ( A , B ) ) (1-\cos (A, B)) (1−cos(A,B)) 表 示余弦距离。在此场景下, 如果选择距离最小 (相似度最大) 的近邻, 那 么使用余弦相似度和欧氏距离的结果是相同的。
总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。例如, 统计两部剧的用户观看行为, 用户 A \mathrm{A} A 的观看向量为 ( 0 , 1 ) (0,1) (0,1), 用户 B \mathrm{B} B 为 ( 1 , 0 ) (1,0) (1,0); 此时二者的余弦距离很大, 而欧氏距离很小; 我 们分析两个用户对于不同视频的偏好, 更关注相对差异, 显然应当使用余 弦距离。而当我们分析用户活跃度,以登陆次数 (单位: 次) 和平均观看 时长 (单位: 分钟) 作为特征时, 余弦距离会认为 ( 1 , 10 ) 、 ( 10 , 100 ) (1,10) 、(10,100) (1,10)、(10,100) 两个 用户距离很近; 但显然这两个用户活跃度是有着极大差异的, 此时我们更 关注数值绝对差异,应当使用欧氏距离。
所以,针对不同的场景采用不同的距离度量方式。
距离定义:在集合中,一对元素均可以唯一确定一个实数,满足正定性,对称性和三角不等式,那么这个实数就是这对元素的距离。但是余弦距离不满足三角不等式。
此外还有KL散度(相对熵)不满足对称性和三角形不等式
对用户进行分桶,实验组和对照组。要注意样本的独立性和采样无偏性,确保同一用户每次分进同一个组。分桶过程中用户id是一个随机数,保证无偏。
对于美国用户进行推荐系统a/btest,按照用户id的奇偶性来划分两组,分别采用不同的模型。
7:3的训练测试比例
缺点:,即在验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,研究者们引入了“交叉检验”的思想
k-fold交叉验证:将数据样本等分为k份,依次选择其中一份为测试集,其他为训练集,作k次实验,k次结果平均为最终的评估指标。
留一:每次留下一个样本作为测试集,进行n次实验,取平均,由于遍历时间过长,工程上不采用。
以上方法都有一个缺点:当样本规模比较小时,将样本集进行划分会让训练集进一步减小,这可能会影响模型训练效果。自助法可以维持数据集的规模。
对于总数为 n 的样本集合进行 n 次有放回的随机抽样得到大小为 n 的训练集 。 n 次采样过程中有的样本会被重复采样,有的样本没高被抽出过,将这些没被抽出的样本作为测试集,进行模型验证,这就是自助法的验证过程 。
关于方差和偏差的总结 方差和偏差
不同之处:
LR是分类,线性回归属于回归
相同:
1.当单个样本属于一个标签时
假设每个样本属于不同标签的概率服从几何分布,
h θ ( x ) = [ p ( y = 1 ∣ x ; θ ) p ( y = 2 ∣ x ; θ ) ⋮ p ( y = k ∣ x ; θ ) ] = 1 ∑ j = 1 k e θ j ⊤ x [ e θ 1 ⊤ x e θ 2 ⊤ x ⋮ e θ k ⊤ x ] h_{\theta}(x)=\left[\begin{array}{c} p(y=1 \mid x ; \theta) \\ p(y=2 \mid x ; \theta) \\ \vdots \\ p(y=k \mid x ; \theta) \end{array}\right]=\frac{1}{\sum_{j=1}^{k} \mathrm{e}^{\theta_{j}^{\top} x}}\left[\begin{array}{c} \mathrm{e}^{\theta_{1}^{\top} x} \\ \mathrm{e}^{\theta_{2}^{\top} x} \\ \vdots \\ \mathrm{e}^{\theta_{k}^{\top} x} \end{array}\right] hθ(x)=⎣⎢⎢⎢⎡p(y=1∣x;θ)p(y=2∣x;θ)⋮p(y=k∣x;θ)⎦⎥⎥⎥⎤=∑j=1keθj⊤x1⎣⎢⎢⎢⎢⎡eθ1⊤xeθ2⊤x⋮eθk⊤x⎦⎥⎥⎥⎥⎤
其中 θ 1 , θ 2 , … , θ k ∈ R n \theta_{1}, \theta_{2}, \ldots, \theta_{k} \in \mathbb{R}^{n} θ1,θ2,…,θk∈Rn 为模型的参数,而 1 ∑ j = 1 k e θ i T x \frac{1}{\sum_{j=1}^{k} \mathrm{e}^{\theta_{i}^{T} x}} ∑j=1keθiTx1 可以看作是对概率的归 一化。为了方便起见, 我们将 { θ 1 , θ 2 , … , θ k } \left\{\theta_{1}, \theta_{2}, \ldots, \theta_{k}\right\} {θ1,θ2,…,θk} 这 k k k 个列向量按顺序排列形 成 n × k n \times k n×k 维矩阵, 写作 θ \theta θ, 表示整个參数集。一般来说, 多项逻辑回归具 有参数冗余的特点, 即将 θ 1 , θ 2 , … , θ k \theta_{1}, \theta_{2}, \ldots, \theta_{k} θ1,θ2,…,θk 同时加减一个向量后预测结果不变。 特别地, 当类别数为 2 时,
h θ ( x ) = 1 e θ 1 ⊤ x + e θ 2 ⊤ x [ e θ 1 x x e θ 2 T x ] h_{\theta}(x)=\frac{1}{\mathrm{e}^{\theta_{1}^{\top} x}+\mathrm{e}^{\theta_{2}^{\top} x}}\left[\begin{array}{c} \mathrm{e}^{\theta_{1}^{\mathrm{x}} x} \\ \mathrm{e}^{\theta_{2}^{\mathrm{T}} x} \end{array}\right] hθ(x)=eθ1⊤x+eθ2⊤x1[eθ1xxeθ2Tx]
利用参数只余的特点,我们将所有参数减去 θ 1 \theta_{1} θ1, 变为:
其中 θ = θ 2 − θ 1 \theta=\theta_{2}-\theta_{1} θ=θ2−θ1 。而整理后的式子与逻辑回归一致。因此,多项逻辑回 归实际上是二分类逻辑回归在多标签分类下的一种拓展。
2.当一个样本可能属于多标签时:
我们可以训练 k 个二分类的逻辑回归分类器 。 第i个分类器区分每个样本是否可以归为第 i 类,训练该分类器时需要把标签重新整理为“第 i 类标签 ” 与"其他标签”两类 。
优点
缺点:
p = e x 1 + e x p = \frac{e^x}{1+e^x} p=1+exex
决策树
1.ID3——最大信息增益
2.C4.5——最大信息增益比
3.CART——最大基尼指数(Gini)
基尼指数描述的是数据得纯度,类似信息熵的含义。
CART 在每一次迭代中 选择基尼指数最小(ID3,C4.5选择最大的)的特征及其对应的切分点进行分类 。但与 ID3 , C4.5 不同的是, CART 是一颗二叉树,采用二元切割,每一步将数据按特征 A 的取值切成两份,分别进入左右子树
总结:
信息增益反映的是给定条件以后不确定性减少的程度,特征对应的取值越多就意昧着确定性更高,也就是条件熵越小,信息增益越大 。 这在实际应用中是个缺陷 。 比如引入特征DNA,每个人的DNA都不一样,所以ID3按照DNA特征进行划分一走是最优的 ( 条件熵=0 ) ,但这种分类的泛化能力是非常弱的 。 因此 , C4.5 实际上是对 ID3 进行优化 3 通过引 入信息增益比一定程度上对取值比较多的特征进行惩罚,避免 ID3 出现过拟台的特性,C4.5提升决策树的泛化能力。
从样本角度,ID3只能处理离散型变量,后两者可以处理离散+连续。
一颗完全生长的决策树都会过拟合,预测效果很差,为了提升决策树的泛化能力,需要对决策树进行剪枝,去除一些特征。主要有两种方法,预剪枝(pre-Pruning)和后剪枝(Post-Pruning)。
预剪枝:在树中结点进行扩展之前,先计算当前的划分是否能带来模型泛化能力的提升,如果不能,则不再继续生长子树 。此时可能存在不同类别的样本同时存在结点中,按照多数投票的原则判断该结点所属类别。预剪枝对于何时停止决策树的生长有以下几种方法 :
后剪枝:先生长出一颗完全的树,再从下向上进行剪枝,删除子树,用一个叶子结点代替,该节点的类别同样按照多数投票的原则进行判断 。 同样地后剪枝也可以通过在测试集上的准确率进行判断,如果剪枝过后准确率有所提升,则进行剪枝。
总结:
常用损失函数总结
机器学习中的优化问题
常用优化方法
为了防止模型过拟合,通用使用正则的方式,实现结构风险最小。也就是在经验风险的基础上增加一个正则项,一般是一个单调递增的函数,当模型越复杂,正则项就越大,实现对模型的惩罚。
而对于L2正则,与L1分析思路类似,由于曲线变圆,切点不容易发生在坐标轴,而是靠近坐标轴,起到了正则的作用。
贝叶斯的角度来理解 L l 正则化和 L2 正则化,简单的解释是L1正则化相当于对模型参数 w 引入了拉普拉斯先验, L2 正则化引入了高斯先验.而拉普拉斯先验使参数为 0 的可能性更大。
高斯分布在极值点( 0 点)处是平,也就是高斯先验分布认为 w 在极值点附近取不同值的可能性是接近的 。 这就是 L2 正则化只会让 w 更接近 0 点,但不会等于 0 的原因 。
但是对于拉普拉斯分布,在极值点0处是一个尖峰,所以取值为0的概率要更大。
超参数:在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
一般有三种调参方法:
集成学习理论
GBDT和XGBoost
三个原因:
除此之外,神经网络可以作为基分类器,不稳定,调节神经元个数,层数,等方式来引入随机性。