文章目录
用于突击一下机器学习的一些东西,第二志愿被改到机器学习部门了,感觉其实挺凉的估计,毕竟这玩意没碰到过,也就两三天时间,随便看一下吧。
我也不知道这里面具体都有什么分类,就看到哪里抄到哪里吧
机器学习
单模型
LR
Logistic回归算法,名字虽带有回归,但其实是一个分类模型。它将特征的线性组合作为自变量,然后利用sigmoid函数将其映射到(0,1)上,映射后的值是y=1的概率。
対生成的结果是0或1的概率进行建模,通过采用最大似然估计的方法最大化似然函数,采用梯度上升的方法得到使似然函数最大的参数。
SVM
集成学习
特征工程
为什么要归一化,有什么好处
评价指标
样本分布不均,如何训练
过拟合、欠拟合
- 过拟合:模型在训练集和测试集上的误差过大,模型复杂度高于实际了,属于“死记硬背”,也没有理解数据背后的规律,泛化能力差;
- 欠拟合:模型无法在训练集上获得足够小的误差,即模型复杂度低,模型在训练集上的表现很差,没有学习到数据背后的规律。
为什么会发生过拟合
- 训练数据样本过于单一,不够足。比如如果都给负样本,但是用正样本进行测试,显然不行
- 训练数据中噪声干扰太大,从而忽略了真正的输入输出的数据特征
- 模型过于复杂,大概是比较主要的原因,仅仅死记硬背知道了训练集的规律,不够灵活变通,无法探索出测试集的规律。
如何防止过拟合
需要显著减少测试误差而且不过度增加训练误差,提高泛化能力。
可以使用正则化,正则化是指修改学习方法,使其降低泛化误差而不降低训练误差
常用的正则化方法根据使用策略不同可以分为如下:
- 直接提供正则化约束的参数正则化方法,如L1/L2正则化;
- 通过工程上的技巧来实现更低泛化误差的方法,如提前终止(Early stopping)和Dropout;
- 不直接提供约束的隐式正则化方法,如数据增强等。
使用和获取更多数据用于训练,是解决过拟合的根本方法
在实际中如果没有太多数据,可以使用“假数据”添加进行测试。
采用合适的模型
比如对于深度学习,CNN层数越多效果越好,但是也会更容易产生过拟合。
L1、L2正则
L1正则是在原始损失函数后面加一个L1正则项,即全部权重w的绝对值的和,再乘λ/n。这是让权重靠近0,减小网络中的网络复杂度。
L2正则又称为权重衰减,在原始损失函数后面加一个L2正则项,全部权值w的平方和,乘以λ/2n。
droupout
在训练过程中,按照一定概率随机“删除”一部分神经元,其实就是隐藏起来不用了。这样在训练中可以产生多个模型,当计算到达一定程度的时候,其实结果是在一个范围内徘徊的,因此这个结果可能是不同模型的一个平均输出。也削弱了对某个神经元的某种依赖关系提高了泛化能力
提前终止
当再每个epoch测试的时候,同时用验证集开始检测,如果在验证集上进行测试,如果发现误差率开始上升,说明前就说好了