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

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

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


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


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面积了,面积越大说明该模型或者该算法下的分类效果较好


相关文章
|
1月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
62 1
|
1月前
|
机器学习/深度学习 算法 API
机器学习入门(六):分类模型评估方法
机器学习入门(六):分类模型评估方法
|
2月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
132 8
|
2月前
|
机器学习/深度学习 数据采集 算法
利用未标记数据的半监督学习在模型训练中的效果评估
本文将介绍三种适用于不同类型数据和任务的半监督学习方法。我们还将在一个实际数据集上评估这些方法的性能,并与仅使用标记数据的基准进行比较。
208 8
|
2月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
104 3
|
2月前
|
机器学习/深度学习 人工智能 算法
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
机器学习框架调研
机器学习框架调研
38 1
|
3月前
|
机器学习/深度学习 数据挖掘
机器学习模型的选择与评估:技术深度解析
【8月更文挑战第21天】机器学习模型的选择与评估是一个复杂而重要的过程。通过深入理解问题、选择合适的评估指标和交叉验证方法,我们可以更准确地评估模型的性能,并选择出最适合当前问题的模型。然而,机器学习领域的发展日新月异,新的模型和评估方法不断涌现。因此,我们需要保持对新技术的学习和关注,不断优化和改进我们的模型选择与评估策略。
|
3月前
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
242 1
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
NumPy 与机器学习框架的集成
【8月更文第30天】NumPy 是 Python 中用于科学计算的核心库之一,它提供了高效的多维数组对象,以及用于操作数组的大量函数。NumPy 的高效性和灵活性使其成为许多机器学习框架的基础。本文将探讨 NumPy 如何与 TensorFlow 和 PyTorch 等流行机器学习框架协同工作,并通过具体的代码示例来展示它们之间的交互。
56 0

热门文章

最新文章