赞
踩
前言
回归和分类方法是机器学习中经常用到的方法,本文首先介绍这两种方法的区别和联系,然后对分类方法中的逻辑回归进行较详细的说明(包括其基本原理及评估指标),最后结合案例介绍如何利用Python进行逻辑回归分析。
1.1什么是分类和回归
区分回归问题和分类问题:
因此分类及回归分别为研究这两类问题的方法。
1.2两者区别与联系
区别:从三个维度来对比分类和回归方法:
联系:从prediction角度来看,分类模型和回归模型本质相同,分类模型是将回归模型的输出离散化,比如:
1、Logistic Regression 和 Linear Regression
Linear Regression:输出一个标量wx+b,是连续值,用以处理回归问题;
Logistic Regression:将标量wx+b通过sigmoid函数映射到(0,1)上,并划分一个阈值,大于阈值的分为一类,其他归为另一类,可处理二分分类问题;
对于N分类问题,先得到N组w值不同的wx+b,然后归一化,比如用softmax函数,最后变成N个类上的概率,可处理多分类问题。
2、Support Vector Regression 和 Support Vector Machine
SVR:输出wx+b,即某个样本点到分类面的距离,是连续值,用以处理回归问题;
SVM:将该距离通过sign(·)函数映射,距离为正的样本点为一类,为负的是另一类,故为分类问题。
1.3相应有哪些常用方法
常见的分类方法:
逻辑回归、决策树分类、KNN(K-近邻)分类、贝叶斯分类、人工神经网络、支持向量机(SVM)等
常见的回归方法:
线性回归、多项式回归、逐步回归等
(常见的聚类方法:K-Means(K均值)聚类等)
2.1逻辑回归
Logistic回归主要思想是,根据现有数据对决策边界建立回归方程,然后将回归方程映射到分类函数上实现分类。
2.2原理介绍
Logistic回归的原理可以理解为以下四步:
1、利用回归方程表示决策边界
分类问题的目的是找到决策边界,因此我们需要找到一个回归方程来表示这个决策边界: g(W,X)=W^X ,其中 W 代表权重向量。
2、利用 Sigmoid 函数对回归关系进行映射
在面对二分分类问题时,可以用1和0分别代表一种情况,此时利用 Sigmoid 函数:
将回归方程的结果映射到分类函数上,即用 Sigmoid 函数表示拟合函数,这种函数是 S 型的非线性函数。
3、在得到拟合函数后,利用损失函数来评价模型与实际值之间的差异大小
损失函数:
其中 x{i} 代表数据属性值, y{i} 代表数据实际的分类结果, h{W}(x{i}) 代表利用拟合函数得到的预测值,可以用下图表示:
损失函数应满足三个特点,以y{i}=1 时为例:
递减: h{W}(x{i}) 越小,则惩罚力度应越大;
导数绝对值递减:h{W}(x{i}) 越趋近于零,该递减函数的递减幅度也应该越小;
定义域在[0,1]内时,变化幅度应较大。
因此利用满足此条件的逻辑函数作为拟合函数。
4、求出损失函数取得极小值时对应的W ,从而得到拟合函数
损失函数求极值利用梯度下降法,本文不做介绍。
2.3评价指标
常见的分类模型性能指标有准确率(precision)、召回率(recall)、ROC曲线等。
1、混淆矩阵(confusion matrix)
包括分类器预测结果:真正TP(true positive)、真负TN(true negative)、假正FP(false positive)、假负FN(false negative)的数量,其中真正和假负均为正确分类的结果。
2、准确率、真正率及假正率
预测误差(error,ERR)和准确率(accuracy,ACC)都可以表示误分类样本数量的相关信息, ACC=1-ERR=TN+TP}/{TN+TP+FN+FP} 。
真正率(TPR)和假正率(FPR)也是很有参考价值的性能指标, TPR={TP}/{AP} 表示预测与实际均为正类别样本数量 与 实际正样本数量的比值, FPR={FP}/{AN} 表示预测为正类别实际为负类别样本数量 与 实际负样本数量的比值。
3、ROC曲线(receiver operator characteristic)
ROC曲线由变量1-Specificity和Sensitivity绘制,其中横轴1-Specificity=假正率(FPR)、纵轴Sensitivity=真正率(TPR),ROC曲线的对角线表示随机猜测,若ROC曲线在对角线下表示分类器性能比随机猜测还差,ROC曲线下的区域面积(area under the curve,AUC)表示分类模型的性能,反映了模型将正例排在反例前的比例(当AUC=1时,说明将所有正例均排在反例之前)。
原理:
意义:
利用Python中sklearn包进行逻辑回归分析。
3.1提出问题
根据已有数据探究“学习时长”与“是否通过考试”之间关系,并建立预测模型。
3.2理解数据
1、导入包和数据
#1.导入包
import warnings
import pandas as pd
import numpy as np
from collections import OrderedDict
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')
#2.创建数据(学习时间与是否通过考试)
dataDict={
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。