机器学习与数据挖掘(上)-期末复习
机器学习与数据挖掘(下)-期末复习
预备概念
过拟合与欠拟合
-
-
过拟合定义
当学习器把训练样本学的“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降,这种现象称为过拟合。
-
过拟合原因
- 噪训练数据中,噪声干扰过大,使学习者认为部分噪声是干扰学习规则的特征。
- 建模样本选择错误,如训练数据太少、抽样方法错误、样本label错误等,导致样本不能代表整体。
- 模型不合理,或假设条件与实际情况不一致。
- 特征维度/参数过多,导致模型复杂度过高。
-
过拟合解决方案
-
数据角度 从数据源获取更多数据
数据增强(Data Augmentation):通过某些规则扩展数据。例如,图像中物体的位置、姿势、尺度和整体图像的亮度不会影响分类结果。
获取额外数据
-
模型角度
-
降低模型复杂度:
对于神经网络:减少网络的层数、神经元数等都可以限制网络的拟合能力。,向前传播时,让神经元的激活值以一定的概率P停止工作,使模型更具泛化性,因为它不会太依赖某些局部特征。
决策树:限制树深、剪枝、叶节点数量。
-
特征选择,特征降维
-
:在损失函数中加入权值的大小作为惩罚。
-
增加噪声
-
-
-
-
-
欠拟合定义
欠拟合是指训练样本的一般性质尚未学好。训练集和测试集表现不佳。
-
欠拟合原因
模型复杂度太低,特征量太少
-
欠拟合解决方案
- 增加特征数;当特征不足或现有特征与样品标签相关性不强时,模型容易欠拟合。 挖掘上下文特征,ID类特征、组合特征等新特征可以取得更好的效果
- 增加模型复杂度; 当模型简单时,其表达能力较差,容易导致欠拟合,因此可以适当增加模型的复杂性,使模型具有较强的拟合能力。 例如,在线性模型中添加高次项,在神经网络中增加网络层数或神经元数。尝试非线性模型,如核SVM 、决策树、DNN等模型
- 减少正则化系数。 正则化是用来防止过拟合的,但当出现欠拟合时,有必要降低正则化系数。
-
正则化
简单地说,在使用神经网络时,为了提高模型的泛化能力,防止模型仅在训练集和测试集中有效,我们使用正则化。
-
L 0 L_0 L0范数是指向量中非零元素的数量: ∥ X ∥ 0 = ∑ i = 0 n x i 0 \Vert X\Vert_0=\sum^{n}_{i=0}x_i^0 ∥X∥0=i=0∑nxi0 若用 L 0 L_0 L0范数来规则化参数矩阵,就是希望参数矩阵大部分元素都为0,使特征矩阵稀疏。但是很难优化求解。
-
L 1 L_1 L1范数是指向量中各个绝对值元素之和: ∥ X ∥ 1 = ∑ i = 0 n ∣ x i ∣ \Vert X\Vert_1=\sum^{n}_{i=0}\vert x_i\vert ∥X∥1=i=0∑n∣xi∣ 因为参数的大小与模型的复杂度成正比,所以模型越复杂,范数就越大。使用范数也可以实现特征稀疏。正则化是正则化的最优凸近似,相对范数的优点是容易求解,因此通常都是用范数进行正则化,而不是范数。
-
L 2 L_2 L2范数是各参数的平方和再求平方根: ∥ X ∥ 2 = ∑ i = 0 n ∣ x i ∣ 2 \Vert X\Vert_2=\sqrt{\sum^{n}_{i=0}\vert x_i\vert^2} ∥X∥2=i=0∑n∣xi∣2 让 L 2 L_2 L2范数的正则化项 ∥ W ∥ 2 \Vert W\Vert_2 ∥W∥2最小,可以使W的每个元素都很小,都接近于零。但是与范数 L 1 L_1 L1不同,它不使每个元素都为0,而是接近于零。越小的参数模型越简单,越简单的模型越不容易产生过拟合现象。
L 2 L_2 L2范数不仅可以防止过拟合,而且还使优化求解变得稳定与迅速。
L_2范数解决在用正规方程进行最小化代价函数时矩阵可能会不可逆的问题: ∂ ∂ θ j J ( θ ) ⟼ s e t 0 : θ = ( X T X ) − 1 X T y \frac{\partial}{\partial\theta_j}J(\theta)\overset{set}{\longmapsto}0:\theta=(X^TX)^{-1}X^Ty ∂θj∂J(θ)⟼set0:θ=(XTX)−1XTy 但是如果样本的数目 m m m比特征参数 n n n要小的时候,也就是方程组的个数小于未知数的个数,那么 X T X X^T X XTX将会是不满秩的,也就是 X T X X^T X XTX不可逆,那么就无法求出最优解。在加上正则项后: θ = ( X T X + λ I ) − 1 X T y \theta=(X^TX+\lambda I)^{-1}X^Ty θ=(XTX+λI)−1XTy 就会保证 ( X T X + λ I ) (X^TX+\lambda I) (XTX+λI)是可逆的。
-
L 1 、 L 2 L_1、L_2 L1、L2正则化是通过修改损失函数来实现的,而Dropout则是通过修改神经网络本身来实现的,它是在训练网络时用的一种技巧(trick)。每一次训练神经网络时,随机丢弃一部分神经元,下一次训练时,再随机丢掉一部分神经元,那么这样我们也可以有效降低过拟合效应。
机器学习中的目标函数
几乎所有的机器学习算法最后都归结为求解最优化问题,以达到我们想让算法达到的目标。为了完成某一目标,需要构造出一个“目标函数”来,然后让该函数取极大值或极小值,从而得到机器学习算法的模型参数。
-
的是最简单的线性分类器,它的目标是让所有样本尽可能分类。对于二分类问题,线性分类器的判别函数为: s g n ( w T x + b ) sgn(w^Tx+b) sgn(wTx+b) 样本的标签值为+1或-1,分别对应正样本和负样本。如果线性函数预测出来的值和样本的真实标签值不同号,则预测错误;如果同号,则预测正确。要将预测错误最小化,只需求解如下最优化问题即可: min ∑ i = 1 l − y i ( w T x i + b ) \min\sum^l_{i=1}-y_i(w^Tx_i+b) mini=1∑l−yi(wTxi+b) 对于二分类或多分类问题,都可以用欧氏距离作为分类的损失函数。对于多分类问题,一般不直接用类别编号作为预测值,而是为类别进行向量化编码,如one-hot编码。此时损失函数定义为: min 1 2 l ∑ i = 1 l ∥ h ( x i ) − y i ∥ 2 2 \min\frac1{2l}\sum^l_{i=1}\Vert h(x_i)-y_i\Vert _{2}^2 min2l1i=1∑l∥h(xi)−yi∥22
-
(LDA)是一种有监督的数据降维算法,它的目标是最大化类间差异,最小化类内差异。数据经过投影之后,在低维空间里,同类样本聚集在一起,不同类的样本相距尽可能远。类内差异用每个类的方差来衡量,类间差异用各个类的类中心之间的距离来衡量,二者的比值为我们要优化的目标。由此构造出如下损失函数: max L ( W ) = t r ( W T S B W ) t r ( W T S W W ) \max L(W)=\frac{tr(W^TS_BW)}{tr(W^TS_WW)} maxL(W)=tr(WTSWW)tr(WTSBW)
-
不仅要让所有训练样本尽可能被正确分类,还要让分类间隔最大化,根据解析几何中点到超平面的距离公式,我们构造出了它的优化目标: min 1 2 w T w + C ∑ i = 1 l ξ i y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 , i = 1 , … , l \begin{aligned} &\min \frac12 w^Tw+C\sum_{i=1}^{l}\xi_i\\ &y_i(w^Tx_i+b)\ge1-\xi_i\\ &\xi_i\ge0,i=1,\ldots,l \end{aligned} min21wTw+Ci=1∑lξiyi(wTxi+b)≥1−ξiξi≥0,i=1,…,l
-
是输出概率值的模型,可以采用最大似然估计来估计模型的参数。对于二分类问题,如果样本的类别标签值为1和0,则对数似然函数为: max L ( w ) = ∑ i = 1 l ( y i log h ( x i ) + ( 1 − y i ) log ( 1 − h ( x i ) ) ) \max L(w)=\sum_{i=1}^{l}(y_i\log h(x_i)+(1-y_i)\log (1-h(x_i))) maxL( 标签: 挖机手动式快速连接器