目录
数据集
-
数据集的行:样本
-
数据集的列:特征
-
特征组成的空间:特征或属性空间
-
组成属性空间中的点:特征或属性向量
-
将数据集切分成训练集和测试集,使用训练集+算法构成模型解决实际问题
非数值特征如何处理?
非数值特征需要通过labelcoder和onehotencoder转化为数值型变量,注意使用onehotencoder需要将维度扩大
序号 | 颜色 | 花瓣直径(cm) | 分类 |
1 | 红 | 1.5 | 玫瑰 |
2 | 蓝 | 1.2 | 牵牛花 |
3 | 黄 | 1.3 | 牵牛花 |
-
labelencoder标签编码(红:0,蓝:1,黄:2)
序号 | 颜色 | 花瓣直径(cm) | 分类 |
1 | 0 | 1.5 | 玫瑰 |
2 | 1 | 1.2 | 牵牛花 |
3 | 2 | 1.3 | 牵牛花 |
-
onehot encoder 独热编码(红:100,黄:010,蓝001)
序号 | 红 | 黄 | 蓝 | 花瓣直径(cm) | 分类 |
1 | 1 | 0 | 0 | 1.5 | 玫瑰 |
2 | 0 | 0 | 1 | 1.2 | 牵牛花 |
3 | 0 | 1 | 0 | 1.3 | 牵牛花 |
如何对二分类问题进行评价?
-
绝对值误差函数
-
平方误差函数
-
训练误差:关于训练集的平均损失
-
测试误差:关于测试集的平均损失
-
泛化误差:对新数据误差
性能矩阵(混淆矩阵)
postive | negative | |
postive | PP | PN |
negative | NP | NN |
-
Accuraccy 准确率=(PP+NN)/ALL
-
Precsition精确率=PP/(PP+NP)
-
Recall=Tpr 真正率或召回率=PP/(PP+PN)
-
Fpr假正率=NP/(NP+NN)
-
F1-Score精确率和召回率的调和平均数=2/(1/精确率 + 1/召回率)=2PP/(2PP+PN+NP)
-
ROC曲线的AUC指标
机器学习的步骤
-
把数据拆分为训练集和测试集
-
用训练集和训练集的特征向量来训练算法
-
用学习来的算法运用在测试集上来评估算法
机器学习分类
概念学习:关于布尔函数的学习方式
有监督学习:有类别标签
-
分类:目标标记为类别型数据
决策树、KNN、SVM、Perception&&NeuralNetwork、Bayes、LogisticRegression
-
回归:目标标记为连续性数值
简单线性回归、多元线性回归、Lasso回归、Ridge回归、ElasticNet
无监督学习:无类别标签
-
聚类:通过特征之间的相似性
-
降维:通过机器学习算法到达降维目的,区别于特征选择
半监督学习:有的有标签,有的无标签
-
主动学习(专家系统)
-
纯半监督学习(预测新数据)/直推学习(预测无标签数据)
强化学习:解决连续决策问题
迁移学习:解决小数据集和个性化问题
机器学习三要素
机器学习模型=数据+算法+策略
-
机器学习模型:y=ax+b
-
策略:什么样的模型是好的模型
-
算法:如何找到最优的a和b
模型
-
决策函数:结果为类别标签 —— F={f|Y=f(X)}
-
条件概率分布:结果为概率模型 —— F={P|P(Y|X)}
策略
-
0-1损失函数:用于分类
-
平方损失函数:用于回归
-
绝对值损失函数:分类或回归
-
对数损失函数
-
指数损失
损失函数期望越小越好,但求解损失函数p(x,y)不容易求解。
从而提出了一系列概念。经验损失=平均损失--->当数据量足够大时,经验风险最小化=平均损失最小化--->结构风险:在经验风险的基础上增加正则罚项,使结构风险最小化。以下是一些详细概念
期望损失
经验损失/平均损失---->平均/经验损失最小化
结构风险-->结构风险最小化
-
决策函数:损失函数就是平方损失
-
条件概率:极大似然估计:经验损失=平均损失
-
参考图示:随着模型的复杂度增加,模型在训练集上的误差越小,但是模型在测试集上的误差先减小然后增加,这里需要找到一个合适的点,该点需要模型具备很好的泛化能力,因此得到了结构风险最小化的点对应的就是求解最佳的点,该点对应的参数即为所求解参数
算法
-
解析解---平常方法
-
最优解---梯度下降放(最优解)、牛顿法
如何设计机器学习系统:
-
首先明确:该问题是否是机器学习问题?--是;该问题是机器学习问题的哪方面?--监督学习,非监督学习
-
当拿到数据之后从下面两个角度思考问题:从数据角度思考:根据具备的数据能够看出是监督学习还是无监督学习;从业务的角度思考:根据业务部门指定的业务方向
特征工程
-
对特征处理
-
对数据处理
模型选择-泛化性能体现
对于多个模型如何选择?
模型的泛化能力
-
欠拟合:模型在训练集和测试集的效果都很差 60% 58%
-
过拟合:模型在训练集上的效果好,但在测试集上效果差 100% 40%
欠拟合
-
欠拟合出现原因:模型过于简单
-
欠拟合出现场景:模型的训练初期
-
欠拟合解决办法:增加模型多项式项、增加模型多项式项的次数、减少正则罚项
过拟合
-
过拟合出现原因:模型过于复杂、数据不纯、训练数量太少
-
过拟合出现场景:出现在模型训练的中后期
-
过拟合解决办法:针对模型过于复杂的--增加正则罚项、针对数据不纯的重新清洗数据、训练数据少的增加训练的数据量、对样本进行抽样或特征进行抽样、dropout随机丢弃一些点(深度学习)
奥卡姆剃刀原则:具有两个相同泛化误差的模型,较简单的模型比较复杂的更可取
正则化
-
目的:为了降低模型的复杂度
-
L1正则=损失函数后加上λ|ω|
-
L2正则=损失函数后加上λ|ω|**2
交叉验证
在机器学习中常用的精度测试方法,叫做交叉验证。它的目的是得到可靠稳定的模型,具体做法是拿出大部分数据进行建模,留小部分样本进行预测,并求出这些小部分样本中的预测误差,交叉验证在克服过拟合的问题上非常有效。
-
简单交叉验证
将数据集切分为:训练集和测试集=7:3 6:4 8:2
-
K则交叉验证
将数据集平均随机切分成K等分,将其中一份数据作为测试集,其余数据作为训练集,训练K个模型,得到平均准确率
-
留一验证
特殊的K则交叉验证。每次只留一个样本作为测试集
库介绍
-
基于Python的sklearn库
-
基于spark的mllib库
-
基于spark的sparkR库
-
基于Java的Weka库
深度学习库
-
基于java的dl4j库
-
基于python的tensorflow
-
基于tensorflow之上的pytorch、keras等