①机器学习框架及评估指标详解

简介: 机器学习框架及评估指标详解

机器学习在生活中无处不在,你是否会疑问为什么你的某宝界面总是给你推荐一些商品,而这些商品还是你自己想要的东西,这就是电商平台利用大数据推荐算法,结合你的历史搜索记录和浏览记录,以及你的购买记录作为数据支撑,最终推荐给你心仪的商品。


       某音视频也是如此,为什么每个人的视频刷的都不一样,小朋友的界面;年级人的界面;老年人的界面大不相同,那是因为会根据你的历史观看记录和关注人群做层次筛选,这样结合你的视频停留时间和用户发生的动作行为作为数据支撑,最终演化为一个符合人性化的推荐算法!


image.png


       每一次当你使用微信朋友圈,微博的相片分类功能,它能识别出哪些是你好友的照片,这也是机器学习算法。


       每次当你使用百度搜索引擎时,它能给出如此满意的结果,原因之一就是使用了机器学习算法。


       机器学习还可以实现图像的像素增强以及图像补全,同时还可以在图像识别方面具有较好的可塑性和重用性。


image.png


       简单来说,机器学习就是让计算机从大量的数据中学习到相关的规律和逻辑,然后利用学习来的规律来预测以后的未知事物


       如果要说到机器学习,不得不推荐一个Python的库:sklearn,它具有大量的模型算法,而且都已经封装好了,只需要我们自己去调用即可,就像科研神器R语言一样,拥有大量的宏包,Python也是如此。


官方指导手册网址


scikit-learn: machine learning in Python — scikit-learn 1.0.2 documentation


train_x, train_y, test_x, test_y = getData()
model1 = somemodel()
model.fit(train_x,train_y)
predictions = model.predict(test_x)
score =score_function(test_y, predictions)
joblib.dump(knn, 'filename.pkl')

机器学习的步骤

      机器学习初步可以分

      机器学习初步可以分为:


       数据导入,特征选取,数据分割,模型选择,模型训练,模型评分,模型调优


       什么是特征选取呢?


       什么又是特征工程?


       这里只是简单的提一下,后续将会详细的介绍,特征工程就是将机器无法识别,无法运算的数据转换为数值类型的数据,用于模型的训练和测试。


image.png


利用sklearn中分割函数train_test_split()函数去将数据分割为测试集和训练集


image.png


train_test_split函数的详解

在机器学习中,我们通常将原始数据按照比例分割为“测试集”和“训练集”


从 sklearn.model_selection 中调用train_test_split 函数


简单用法如下:


X_train,X_test, y_train, y_test  =sklearn.model_selection.train_test_split
(train_data,train_target,test_size=0.4, random_state=0,stratify=y_train)

train_data:所要划分的样本特征集


train_target:所要划分的样本结果


test_size:样本占比,如果是整数的话就是样本的数量


random_state:是随机数的种子


随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。


stratify:是为了保持split前类的分布。比如有100个数据,80个属于A类,20个属于B类。


如果train_test_split(... test_size=0.25, stratify = y_all), 那么split之后数据如下:


training: 75个数据,其中60个属于A类,15个属于B类


testing: 25个数据,其中20个属于A类,5个属于B类。


用了stratify参数,training集和testing集的类的比例是 A:B= 4:1


等同于split前的比例(80:20)。通常在这种类分布不平衡的情况下会用到stratify。


将stratify=X就是按照X中的比例分配


将stratify=y就是按照y中的比例分配


整体总结起来各个参数的设置及其类型如下:


主要参数说明:


*arrays 可以是列表、numpy数组、scipy稀疏矩阵或pandas的数据框


test_size:可以为浮点、整数或None,默认为None


①若为浮点时,表示测试集占总样本的百分比


②若为整数时,表示测试样本样本数


③若为None时,test size自动设置成0.25


train_size:可以为浮点、整数或None,默认为None


①若为浮点时,表示训练集占总样本的百分比


②若为整数时,表示训练样本的样本数


③若为None时,train_size自动被设置成0.75


random_state:可以为整数、RandomState实例或None,默认为None


①若为None时,每次生成的数据都是随机,可能不一样


②若为整数时,每次生成的数据都相同


stratify:可以为类似数组或None


①若为None时,划分出来的测试集或训练集中,其类标签的比例也是随机的


②若不为None时,划分出来的测试集或训练集中,其类标签的比例同输入的数组中类标签的比例相同,可以用于处理不均衡的数据集


image.png


总之在遇到数据集不平衡的情况下可以使用该参数,来调节数据标签的不平衡的情况,我们可以该参数调节


机器学习评估指标

分类模型评估指标

分类常用指标:


准确率( accuracy):对于给定的测试数据集,分类器正确分类的样本数与总样本数之比


混淆矩阵

针对预测值和真实值之间的关系,我们可以将样本分为四个部分:


真正例(True Positive,TP):预测值和真实值都为1


假正例(False Positive,FP):预测值为1,真实值为0


真负例(True Negative,TN):预测值与真实值都为0


假负例(False Negative,FN):预测值为0,真实值为1


image.png


很明显的得知,真正例和真负例越多,说明模型的效果就越好


ROC曲线

那么有了混淆矩阵,这样一个规则之后,我们需要一个评估指标可以直接的反映该情况的好坏,此时就引入了:


真正例率


image.png


上述公式,如果值越大那么说明真正例越多


假正例率

image.png



TPR也就是我们所说的召回率,通过TPR和FPR的相关性图,可以得到ROC曲线,如下图所示:

image.png



   图中的红色曲线和蓝色曲线分别表示了两个不同的分类器的TPR-FPR曲线,曲线上的任意一点都对应了一个特定的数值,也就是说如何看ROC曲线,从它的构造本质来看,真正例越大,假正例就越少,也就是说我们画出该曲线的时候,应该如何去看,怎样的曲线效果才是最好的,请看下面的解说:

曲线越是“凸”向左上角,说明分类器效果越好


最完美的分类器(完全区分正负样例):(0,1)点,即没有FP,全是TP ,根本不存在,如果存在应该思考是否出现错误?


随机预测会得到(0,0)和(1,1)的直线上的一个点


曲线上离(0,1)越近的点分类效果越好,对应着越合理的


如此来看,上面的ROC曲线,红色的较好与蓝色的


利用ROC的其他评估标准

AUC:是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,而作为一个数值,对应AUC更大的分类器效果更好;


这里需要注意的是,ROC曲线和AUC面积一般用于分类中的二分类情况,ROC曲线用在多分类中是没有意义的。只有在二分类中Positive和Negative同等重要时候,适合用ROC曲线评价。如果确实需要在多分类问题中用ROC曲线的话,可以转化为多个“一对多”的问题。即把其中一个当作正例,其余当作负例来看待,画出多个ROC曲线。


EER:也就是FPR=FNR的值,由于FPR=1-TPR,可以画一条从(0,1)到(1,0)的直线,找到交点,图中的A、B两点。


如果roc曲线绘制出来是一个对角线,那么就属于随机猜测模型,意义不大


ROC曲线的意义及解释


ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。


有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。


可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。


       该方法简单、直观、通过图示可观察分析方法的准确性,并可用肉眼作出判断。ROC曲线将真正例率和假正例率以图示方法结合在一起,可准确反映某种学习器真正例率和假正例率的关系,是检测准确性的综合代表。


       此外,可以把多个模型(二分类)的ROC曲线绘制在一个平面图中,至于如何比较这个时候,就需要用到AUC面积了,面积越大说明该模型或者该算法下的分类效果较好


相关文章
|
2天前
|
机器学习/深度学习 分布式计算 调度
机器学习分布式框架Ray
Ray是UC Berkeley RISELab推出的一个高性能分布式执行框架,它比Spark更具计算优势,部署简单,支持机器学习和深度学习的分布式训练。Ray包括节点(head和worker)、本地调度器、object store、全局调度器(GCS),用于处理各种分布式计算任务。它支持超参数调优(Ray Tune)、梯度下降(Ray SGD)、推理服务(Ray SERVE)等。安装简单,可通过`pip install ray`。使用时,利用`@ray.remote`装饰器将函数转换为分布式任务,通过`.remote`提交并用`ray.get`获取结果。5月更文挑战第15天
22 3
|
3天前
|
机器学习/深度学习 人工智能
【机器学习】有哪些指标,可以检查回归模型是否良好地拟合了数据?
【5月更文挑战第16天】【机器学习】有哪些指标,可以检查回归模型是否良好地拟合了数据?
|
5天前
|
机器学习/深度学习 BI
机器学习模型评估指标总结
机器学习模型评估指标总结
10 2
|
5天前
|
机器学习/深度学习 数据可视化 前端开发
【Python机器学习专栏】机器学习模型评估的实用方法
【4月更文挑战第30天】本文介绍了机器学习模型评估的关键方法,包括评估指标(如准确率、精确率、召回率、F1分数、MSE、RMSE、MAE及ROC曲线)和交叉验证技术(如K折交叉验证、留一交叉验证、自助法)。混淆矩阵提供了一种可视化分类模型性能的方式,而Python的scikit-learn库则方便实现这些评估。选择适合的指标和验证方法能有效优化模型性能。
|
5天前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】Python中的机器学习评估与度量指标
【4月更文挑战第30天】本文介绍了Python中机器学习模型的评估方法和度量指标。主要包括留出法、交叉验证和自助法等评估方法,以及准确率、精确率、召回率、F1分数、AUC-ROC曲线、MSE、RMSE和R方值等度量指标。选择合适的评估标准对于理解模型性能和适应不同任务至关重要。
|
5天前
|
机器学习/深度学习 大数据
如何通过评估方法评估机器学习模型的性能
如何通过评估方法评估机器学习模型的性能
13 0
|
5天前
|
机器学习/深度学习
机器学习第13天:模型性能评估指标
机器学习第13天:模型性能评估指标
|
5天前
|
机器学习/深度学习 算法 数据可视化
机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?
机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?
40 1
|
5天前
|
机器学习/深度学习 人工智能 分布式计算
PAI底层支持多种计算框架
PAI底层支持多种计算框架
16 0
|
5天前
|
机器学习/深度学习 数据采集 自然语言处理
理解并应用机器学习算法:神经网络深度解析
【5月更文挑战第15天】本文深入解析了神经网络的基本原理和关键组成,包括神经元、层、权重、偏置及损失函数。介绍了神经网络在图像识别、NLP等领域的应用,并涵盖了从数据预处理、选择网络结构到训练与评估的实践流程。理解并掌握这些知识,有助于更好地运用神经网络解决实际问题。随着技术发展,神经网络未来潜力无限。

热门文章

最新文章