逻辑回归算法回顾
1.逻辑回归原理
逻辑回归是这样一个过程:面对回归或分类问题,建立成本函数,然后通过优化方法迭代求解最优模型参数,然后进行测试来验证我们求解的模型的质量。
回归虽然名字里有“回归”,但它实际上是一种分类方法,主要用于二分类问题(即只有两种输出,分别代表两个类别)
在回归模型中,y是定性变量,例如y=0或1。该方法主要用于研究某些事件发生的概率。
2.逻辑回归与线性回归的联系与区别
回归和多元线性回归实际上有很多相似之处。 最大的区别就是它们的因变量不同,其他的基本都是一样的。 正因为如此,这两个回归可以归属于同一个家族,即广义线性模型(模型)。
该族的模型形式基本相似,唯一的区别是因变量不同。 该族的模型形式基本相似,唯一的区别是因变量不同。
常规步骤是构造预测函数h(x)函数(或函数),函数形式为:
[图片上传失败...(image--25)]构造损失函数J(m个样本,每个样本有n个特征)
Cost函数和J函数如下,是基于最大似然估计推导出来的。
3. 回归损失函数推导及优化成本函数
概率的综合写法:
取似然函数:
取对数似然函数:
最大似然估计就是寻求帮助
取最大值时
,其实这里可以用梯度上升法来求解,得到的θ就是需要的最优参数。
在Ng的课程中,J(θ)取如下公式,即
梯度下降法求最小值:
更新流程:
θ的更新过程可以写为:
4、正则化及模型评价指标
对逻辑回归模型的损失函数进行正则化,在原来的损失函数上添加正则项:
上式中,j≥1,因为
不涉及正则化
θ的更新过程可以写为:
5. 回归的优点和缺点
优势:
1)快速且适合二分类问题
2)简单易懂,可以直接看到每个特征的权重
3)模型可以轻松更新以吸收新数据
缺点:
适应数据和场景的能力有限,不如决策树算法的适应性强。
6. 样本不平衡问题的解决方案
参考:
当对类不平衡数据集进行分类时,准确率达到 90% ()。 当你进一步分析时,你会发现数据集中90%的样本属于同一类,并且分类器将所有样本分类到该类中。 在这种情况下,很明显分类器是无效的。而这种无效是由训练集中的类别不平衡造成的
八个解决方案能否扩展数据集?
遇到类不平衡问题时,首先应该思考是否可以添加更多的数据(必须有小类样本数据)。 更多的数据往往会打败更好的算法。 因为机器学习使用现有数据和整个数据的分布来估计,更多的数据往往可以带来更多的分布信息和更好的分布估计。 即使在添加小类别样本数据的同时,添加大类别样本数据,也可以通过放弃部分大类别数据(即对大类别数据进行欠采样)来解决。
尝试其他评估指标
从前面的分析可以看出,准确率的评价指标在不平衡类别的分类任务中不起作用,甚至可能产生误导(分类器不起作用,但从这个指标来看,分类器有一个很好的评价指标Score) )。 因此,在类别不平衡分类任务中,需要使用更有说服力的评价指标来评价分类器。 如何针对不同问题选择有效的评价指标可以参见这里。
上面超链接中的文章描述了如何对乳腺癌患者复发类别的不平衡数据进行分类。 文中推荐了几个比传统准确率更有效的评价指标:
混淆矩阵( ):用一个表格来统计分类器预测的类别与其真实类别之间的样本,即:TP、FN、FP 和 TN。
准确性()
记起()
F1 分数:精确率和召回率的加权平均值。
尤其:
卡帕(科恩·卡帕)
ROC曲线(ROC):参见ROC和同
对数据集重新采样
可以使用多种策略来缓解数据不平衡。 这个策略就是()。 减少数据不平衡的抽样方法主要有两种。
尝试生成人工数据样本
生成人工样本数据的一种简单方法是从类别下所有样本的每个属性特征的值空间中随机选择一个新样本,即属性值的随机采样。 可以根据经验对属性值进行随机采样来构造新的人工样本,或者使用类似于朴素贝叶斯的方法假设每个属性相互独立进行采样。 这样,可以获得更多的数据,但不能保证属性相同。 线性关系(如果存在)。
有一种构建人工数据样本SMOTE(Over-)的系统方法。 SMOTE 是一种过采样算法,它构造新的小类样本,而不是生成小类中现有样本的副本。 即该算法构造的数据是原数据集中不存在的新样本。 该方法根据距离度量选择小类别下的两个或多个相似样本,然后选择其中一个样本,并随机选择一定数量的邻居样本对所选样本的某个属性添加噪声,一次处理一个属性。 通过这种方式,构建了更多新生数据。 详细内容请参考原文。
SMOTE 算法有多种不同语言的实现:
:模块提供了SMOTE算法的多种不同实现版本,以及多种重采样算法。
R:DMwR。
韦卡:击杀。
尝试不同的分类算法
强烈建议不要对每个分类都使用您最喜欢和熟悉的分类算法。 应使用不同的算法对它们进行比较,因为不同的算法用于不同的任务和数据。 有关详细信息,请参阅“为什么您是重点”。
决策树往往在类不平衡数据上表现良好。 它使用基于类变量的划分规则来创建分类树,因此可以强制将样本从不同类别中分离出来。 目前流行的决策树算法包括:C4.5、C5.0、CART等。 可以在此处找到用 R 编写的决策树。 有关基于 -learn 的 CART 用法,请参阅此处。
尝试惩罚模型
您可以使用相同的分类算法,但从不同的角度来看。 例如,如果你的分类任务是识别那些小类,你可以增加分类器小类样本数据的权重,减少大类样本的权重(这样的方法实际上会生成一个新的数据分布,即新数据集,译者注),从而使分类器能够专注于小类样本。 具体做法是,如果分类器在训练分类器时对小类样本进行误分类,则给分类器添加小类样本误分类成本。 这种额外的成本可以让分类器更加“关心”小类样本。 比如-SVM和-LDA算法。
Weka中有一个惩罚模型的通用框架,ier,它可以封装任何分类器,并使用自定义的惩罚矩阵来惩罚错误分类的样本。
如果你锁定特定的算法并且无法通过重采样解决不平衡问题,你将得到很差的分类结果。 这允许您使用惩罚模型来解决不平衡问题。 然而,设置惩罚矩阵是一件复杂的事情,所以你需要根据你的任务尝试不同的惩罚矩阵,并选择一个更好的惩罚矩阵。
尝试从新的角度来理解问题
我们可以从分类之外的不同角度来解决数据不平衡的问题。 我们可以将那些小类别的样本作为异常值(),这样问题就转化为异常值检测()和变化趋势检测()。
异常值检测就是识别那些罕见的事件。 例如,可以通过机器部件的振动来识别机器故障,可以通过系统调用序列来识别恶意程序。 与正常情况相比,这些事件很少见。
变化趋势检测与异常值检测类似,不同之处在于它是通过检测异常变化趋势来识别的。 例如通过观察用户模式或银行交易来检测用户行为的异常变化。
将小类样本视为异常值的想法的改变有助于考虑新的方法来分离或分类样本。 这两种方法从不同的角度思考,可以让你尝试新的方法来解决问题。
尝试创新
仔细分析并深入研究你的问题,看看是否可以将其分解为更容易解决的小问题。 您可以从这篇文章中获得灵感,您如何设置? 例如:
七、参数
参考:
LogisticRegression,一共有14个参数:
参数说明如下:
摘要::算法收敛的最大迭代次数,int类型,默认为10。仅当正则化优化算法为-cg、sag和lbfgs时有用,算法收敛的最大迭代次数。 :分类方法选择参数,str类型,可选参数为ovr和ovr,默认为ovr。 ovr就是前面提到的one-vs-rest(OvR),也是前面提到的many-vs-many(MvM)。 如果是二元逻辑回归,ovr和ovr没有区别。 差异主要在于多元逻辑回归。 :记录详细程度,int类型。 默认为0。即训练过程不输出,为1时偶尔输出结果。如果大于1,则针对每个子模型输出。 :热启动参数,bool类型。 默认值为 False。 如果为 True,则下一次训练将作为附加树执行(重用最后一次调用作为初始化)。 :平行线的数量。 int类型,默认为1。当为1时,使用CPU的1个核心来运行程序,当为2时,使用CPU的2个核心来运行程序。 当设置为-1时,所有CPU核心都用于运行程序。 总结:
优点:实现简单,易于理解和实施; 计算成本低、速度快、存储资源少。
缺点:容易出现欠拟合,分类精度可能不高。
其他:
回归的目的是寻找非线性函数的最佳拟合参数,求解过程可以通过优化算法来完成。
一些改进的优化算法,例如sag。 它可以在新数据到达时完成参数更新,而无需重新读取整个数据集进行批处理。
机器学习中的一个重要问题是如何处理缺失数据。 这个问题没有标准答案,要看实际应用需求。 存在多种解决方案,每种方案都有自己的优点和缺点。
我们需要根据数据情况来使用这些参数,才能达到更好的分类效果。