machine learning学习笔记(二)-sklearn 库中常用算法的学习

sklearn常见算法简介

Logistic Regression

Background

 Maximum Likelihood Logistic Function Normal Distribution Regularization Overfitting

算法

将原本输出结果范围可以非常大的θTX 通过sigmoid函数映射到(0,1),从而完成概率的估测。而直观地在二维空间理解逻辑回归,是sigmoid函数的特性,使得判定的阈值能够映射为平面的一条判定边界,随着特征的复杂化,判定边界可能是多种多样的,但是它能够较好地把两类样本点分隔开,解决分类问题。

代价函数是所有模型误差的平方和,也就是损失函数的总和的平均。

正则化是为了解决过拟合的情况,

参数详解

class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

 

参数名

取值

作用

penalty

str, ‘l1’ or ‘l2’ 

penalty参数可选择的值为"l1"和"l2",分别对应L1的正则化和L2的正则化,默认是L2的正则化。如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化,如果模型的特征非常多,我们希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。会影响sover函数的选择,当L1时,solver只能为liblinear。

dual

bool

Dual只适用于正则化相为l2 liblinear的情况,通常样本数大于特征数的情况下,默认为False

tol

float, optional

迭代终止判据的误差范围。

 

C

float,default 1.0

正则化系数的倒数,越小对应越强的正则化。

class_weight

dict or ‘balanced’, default: None

class_weight参数用于标示分类模型中各种类型的权重,不输入,即所有类型的权重一样。如果选择输入的话,可以选择balanced让类库自己计算类型权重,或者我们自己输入各个类型的权重。

第一种是误分类的代价很高。比如对合法用户和非法用户进行分类,将非法用户分类为合法用户的代价很高,我们宁愿将合法用户分类为非法用户,这时可以人工再甄别,但是却不愿将非法用户分类为合法用户。这时,我们可以适当提高非法用户的权重。

第二种是样本是高度失衡的,比如我们有合法用户和非法用户的二元样本数据10000条,里面合法用户有9995条,非法用户只有5条,如果我们不考虑权重,则我们可以将所有的测试集都预测为合法用户,这样预测准确率理论上有99.95%,但是却没有任何意义。

可以选择balanced,让类库自动提高非法用户样本的权重。

 

random_state

int, RandomState instance or None, optional, default: None

对正则化算法为sag, liblinear时有用

solver

{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}

a) liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。

b) lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

c) newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

d) sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候,SAG是一种线性收敛算法,这个速度远比SGD快。

newton-cg, lbfgs和sag这三种优化算法时都需要损失函数的一阶或者二阶连续导数,因此不能用于没有连续导数的L1正则化,只能用于L2正则化。而liblinear则既可以用L1正则化也可以用L2正则化。同时,sag每次仅仅使用了部分样本进行梯度迭代,所以当样本量少的时候不要选择它,而如果样本量非常大,比如大于10万,sag是第一选择。但是sag不能用于L1正则化。

multi_class

(把二分问题扩展为多分问题)

str, {‘ovr’, ‘multinomial’}, default: ‘ovr’  

OvR相对简单,但分类效果相对略差(这里指大多数样本分布情况,某些样本分布下OvR可能更好)。而MvM分类相对精确,但是分类速度没有OvR快。选择ovr,则4种损失函数的优化方法liblinear,newton-cg,lbfgs和sag都可以选择。选择multinomial,则只能选择newton-cg, lbfgs和sag。

n_job

int, default: 1 

如果multi_class ='ovr'“,并行数等于CPU内核数量。当“solver”设置为“liblinear”时,无论是否指定“multi_class”,该参数将被忽略。如果给定值-1,则使用所有内核。

max_iter

int,optional

仅在正则化优化算法为newton-cg, sag和lbfgs 才有用,算法收敛的最大迭代次数。

 

Suport Vector Machine

BackGround

Convex quadratic programming Duality kernel method

算法原理

https://blog.youkuaiyun.com/u012990623/article/details/40272619

核函数

解决原始空间的线性不可分,把数据映射到高维空间,使得数据在高维空间内线性可分,低维计算,高维分类。

数据处理时需要进行归一化(加快收敛速度,使支持向量变多,分类更加准确)

核函数:计算两个向量在隐式映射过后的空间中的内积的函数

主要有线性核,主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,其参数少速度快,对于线性可分数据,其分类效果很理想,因此我们通常首先尝试用线性核函数来做分类。

多项式核,多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。

高斯核,高斯核函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。

sigmoid核,采用sigmoid核函数,支持向量机实现的就是一种多层神经网络。

如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM。

如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数。

SVM分类库

参数

LinearSVC

SVC

NuSVC

惩罚系数C

Pattern recognition and machine learning门涉及到模式识别机器学习的课程,通过这门课程的学习,我对模式识别机器学习有了更深入的了解。 在模式识别方面,我学习了如何使用统计学概率论的知识对数据进行分析,识别出数据中的规律模式。通过学习不同的模式识别算法,我了解了如何利用机器来识别图像、音频、文本甚至是生物特征等不同类型的模式。在机器学习方面,我学习了如何利用机器学习算法来训练模型,使得机器可以从数据中学习规律模式,进而做出预测决策。 通过学习这门课程,我对机器学习模式识别的应用有了更清晰的认识,比如在图像识别、语音识别、自然语言处理、生物特征识别等领域的应用。我也学习到了如何应用这些知识技术来解决现实生活中的问题,比如医疗诊断、金融风控、智能驾驶等领域的应用。 另外,通过课程中的实践项目,我有机会动手实践机器学习算法的应用,从数据的处理特征提取到模型的训练评估,这些实践使我对课程中学到的理论知识有了更深刻的理解。 总的来说,通过学习Pattern recognition and machine learning这门课程,我不仅对机器学习模式识别的理论技术有了更深入的了解,也掌握了些实践应用的技能,对未来在相关领域的发展应用有了更清晰的思路认识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值