机器学习(Machine Lerning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数。并最终对数据进行预测和分析的一门学科。
从简单线性分类器到深度学习(一)
问题:根据繁华程度(x1)、交通便利度(x2)、与市中心距离(x3)、楼层(x4 )预
测房价的高低(x1-x4为输入,w为各个输入的权重):
则可以写出如下表达式:
从简单线性分类器到深度学习(二)
加入中间层(隐藏层)(U为中间层与输入层对应的权重,h为输出层与中间层对应的权重):
深度学习网络往往包含多个中间层(隐藏层),且网络结构要更复杂一些。
●深度学习(Deep learning) :
lris(鸢尾花)数据集:山鸢尾(lris setosa),变色鸢尾(lris versicolor),维吉尼亚鸢尾(iris virginica)。
●每个样本包含4个特征(单位: cm), 1个类别标签(类别编码)。
●共有150个样本,3类,每类50个样本。
分类特征:花萼(sepal) 和花瓣(petal) 的宽度和长度
数据集在数学上通常表示为{(x1,y1), (x2,y2), …(xi,yi), … (xm, ym)}的形式,
类别标签的ground truth与gold standard
数据集与有监督学习
有监督学习中数据通常分成训练集、测试集两部分。
有时对训练集做进一步划分为训练集和验证集(validation set)。验证集与测试集类似,也是用于评估模型的性能。区别是验证集主要用于模型选择和调整超参数,因而一般不用于报告最终结果。
可以使用sklearn进行训练集、测试集的拆分
可以在anaconda上安装sklearn外部库搭建环境。
训练集、测试集的拆分——留出法
留出法的优点是处理简单。而不足之处是在测试集上的预测性能的高低与数据集拆分情况有很大的关系,所以基于这种数据集拆分基础上的性能评价结果不够稳定。
训练集、测试集的拆分——K折交叉验证
分层抽样策略(Stratified k-fold)
将数据集划分成k份,特点在于,划分的k份中,每一份内各个类别数据的比例和原始数据集中各个类别的比例相同。
用网格搜索来调超参数(一)
超参数:指在学习过程之前需要设置其值的一些变量,而不是通过训练得到的参数数据。如深度学习中的学习速率等就是超参数。
网格搜索:
假设模型中有2个超参数: A和B。A的可能取值为{a1, a2, a3}, B的可能取
值为连续的,如在区间[0-1]。由于B值为连续,通常进行离散化,如变为
{0, 0.25, 0.5, 0.75, 1.0}。
如果使用网格搜索,就是尝试各种可能的(A, B)对值,找到能使的模型取
得最高性能的(A, B)值对。
用网格搜索来调超参数(二)
网格搜索往往需要与k折交叉验证相结合:
网格搜索与K折交叉验证结合调整超参数的具体步骤:
分类问题是有监督学习的一个核心问题。分类解决的是要预测样本属于哪
个或者哪些预定义的类别。此时输出变量通常取有限个离散值。
分类的机器学习的两大阶段:
1)从训练数据中学习得到一个分类决策函数或分类模型,称为分类器(classifier) ;
2)利用学习得到的分类器对新的输入样本进行类别预测。
两类分类问题与多类分类问题。多类分类问题也可以转化为两类分类问题解决,如采用一对其余(One-Vs- Rest)的方法:将其中一个类标记为正类,然后将剩余的其它类都标记成负类。
分类性能度量一准确率
假设只有两类样本,即正例(positive)和负例(negative)。通常以关注
的类为正类,其他类为负类:
表中AB模式:第二个符号表示预测的类别,第一个表示预测结果对了(True)还是错了(False)
分类性能度量一精确率和召回率
精确率反映了模型判定的正例中真正正例的比重。在垃圾短信分类器中,是指预测出的垃圾短信中真正垃圾短信的比例。
召回率反映了总正例中被模型正确判定正例的比重。医学领域也叫做灵敏度(sensitivity) 。在垃圾短信分类器中,指所有真的垃圾短信被分类器正确找出来的比例。
分类性能度量一P-R曲线
要得到P-R曲线,需要一系列Precision和Recall的值。这些系列值是通过阈值来形成的。对于每个测试样本,分类器一般都会给了“Score”值,表示该样本多大概率上属于正例。
绘制P-R曲线:
分类性能度量一F值
分类性能度量—ROC
ROC曲线绘制步骤与P-R曲线绘制类似,只需每次更改阈值,依据公式算出对应值即可。
分类性能度量一ROC-AUC计算
分类性能可视化
分类报告
分类报告(lassification report)显示每个类的分类性能。包括每个类标签的精确率、召回率、F1值等。