当前位置: 首页 > news >正文

网络产品推广方案范文东莞网站优化制作

网络产品推广方案范文,东莞网站优化制作,免费网站app源码,wordpress卡密网站源码文章目录 逻辑回归定义损失函数正则化 sklearn里面的逻辑回归多项式逻辑回归 逻辑回归 逻辑回归#xff0c;是一种名为“回归”的线性分类器#xff0c;其本质是由线性回归变化而来的#xff0c;一种广泛使用于分类问题中的广义回归算法。 线性回归是机器学习中最简单的的… 文章目录 逻辑回归定义损失函数正则化 sklearn里面的逻辑回归多项式逻辑回归 逻辑回归 逻辑回归是一种名为“回归”的线性分类器其本质是由线性回归变化而来的一种广泛使用于分类问题中的广义回归算法。 线性回归是机器学习中最简单的的回归算法它写作一个几乎人人熟悉的方程 z b θ 1 x 1 θ 2 x 2 . . . θ n x n θ T X , ( θ 0 b ) z bθ_1x_1θ_2x_2...θ_nx_nθ^TX,(θ_0b) zbθ1​x1​θ2​x2​...θn​xn​θTX,(θ0​b) θ被统称为模型的参数其中 b b b被称为截距(intercept) θ 1 θ_1 θ1​ ~ θ n θ_n θn​ 被称为系数(coefficient)。此时我们的z是连续的所以是回归模型。 线性回归的任务就是构造一个预测函数z来映射输入的特征矩阵x和标签值y的线性关系而构造预测函数的核心就是找出模型的参数θ系数和 b著名的最小二乘法就是用来求解线性回归中参数的数学方法。 如果想要z是离散的也就是标签是离散型变量则需要再做一次函数转换 g ( z ) g(z) g(z)并且令 g ( z ) g(z) g(z)的值分布在(0,1)之间且当 g ( z ) g(z) g(z)接近0时样本的标签为类别0当 g ( z ) g(z) g(z)接近1时样本的标签为类别1这样就得到了一个分类模型。而这个联系函数对于逻辑回归来说就是Sigmoid函数 g ( z ) 1 1 e − z 1 1 e − θ T X g(z) \frac{1}{1e^{-z}}\frac{1}{1e^{-θ^TX}} g(z)1e−z1​1e−θTX1​ Sigmoid函数是一个S型的函数当自变量z趋近正无穷时因变量g(z)趋近于1而当z趋近负无穷时g(z)趋近于0它能够将任何实数映射到(0,1)区间使其可用于将任意值函数转换为更适合二分类的函数。 二元逻辑回归的一般形式 逻辑回归可以理解维为由线性回归通过Sigmoid函数转换使其预测值在[0,1]之间达到二分类的效果。 为什么叫逻辑回归何来的逻辑 y ( x ) y(x) y(x)是逻辑回归返回的标签值且取值在[01]之间所以 y ( x ) y(x) y(x)和 1 − y ( x ) 1-y(x) 1−y(x)的和必然是1如 果我们令 y ( x ) y(x) y(x) 除以 1 − y ( x ) 1-y(x) 1−y(x)可以得到形似几率(odds)的 y ( x ) 1 − y ( x ) \frac{y(x)}{1-y(x)} 1−y(x)y(x)​ 在此基础上取对数可以很容易就得到 y(x)的形似几率取对数的本质其实就是我们的线性回归z我们实际上是在对线性回归模型的预测结果取 对数几率来让其的结果无限逼近0和1。因此其对应的模型被称为”对数几率回归“logistic Regression音译过来就是逻辑回归这个名为“回归”却是用来做分类工作的分类器。 定义损失函数 定义损失函数非常重要它能帮我们找到一组最佳的参数θ和偏置b使得我们的模型能够更加准确的进行预测即是说能够衡量参数的模型拟合训练集时产生的信息损失的大小并以此衡量参数的优劣我们在求解参数时追求损失函数最小让模型在训练数据上的拟合效果最优。 二元逻辑回归的标签服从伯努利分布(即0-1分布): 我们可以将一个特征向量为x参数为θ的模型中的一个样本i的预测情况表现为如下形式 样本i在由特征向量x和参数θ组成的预测函数中样本标签被预测为1的概率为样本i在由特征向量x和参数θ组成的预测函数中样本标签被预测为0的概率为 当 P 1 P_1 P1​被的值为1的时候代表样本i的标签被预测为1当 P 0 P_0 P0​的值为1的时候代表样本i的标签被预测为0。 样本i的真实标签 y i y_i yi​为1 如果 P 1 P_1 P1​为1 P 0 P_0 P0​为0就代表样本i的标签被预测为1与真实值一致。模型预测正确没有信息损失。如果 P 1 P_1 P1​此时为0 P 0 P_0 P0​为1就代表样本i的标签被预测为0与真实情况完全相反。预测错误有损失信息。 同理真实值 y i y_i yi​为0的情况所以希望当 y i y_i yi​为1的时候我们希望 P 1 P_1 P1​非常接近1当 y i y_i yi​为0的时候我们希望 P 0 P_0 P0​非常接近1这样模型的效果就很好信息损失就很少。 将两种取值的概率整合我们可以定义如下等式 y i ^ 预测值 \hat{y_i}预测值 yi​^​预测值当预测值与真实值一样时上式是1的表示预测真确所以我们在追求 P ( y i ^ ∣ x i , θ ) P(\hat{y_i}|x_i,θ) P(yi​^​∣xi​,θ)的最大值。这就将模型拟合中的“最小化损失”问题转换成了对函数求解极值的问题。 P ( y i ^ ∣ x i , θ ) P(\hat{y_i}|x_i,θ) P(yi​^​∣xi​,θ)是对单个样本i而言的函数对一个训练集的m个样本来说我们可以定义如下等式来表达所有样本在特征矩阵X和参数θ组成的预测函数中预测出所有可能的 y ^ \hat{y} y^​的概率P为 这就是我们的交叉熵函数。为了数学上的便利以及更好地定义”损失”的含义我们希望将极大值问题转换为极小值问题因此我们对 log ⁡ P \log{P} logP取负并且让参数θ作为函数的自变量就得到了我们的损失函数:这就是一个基于逻辑回归的返回值 y θ ( x i ) y_θ(x_i) yθ​(xi​)的概率性质得出的损失函数。在这个函数上我们只要追求最小值就能让模型在训练数据上的拟合效果最好损失最低。 正则化 正则化是用来防止模型过拟合的过程常用的有L1正则化和L2正则化两种选项分别通过在损失函数后加上参数向量 的L1范式和L2范式的倍数来实现。 这个增加的范式被称为“正则项”也被称为惩罚项。损失函数改变基于损失函数的最优化来求解的参数取值必然改变我们以此来调节模型拟合的程度。 L1范数Loss function 加上 参数的绝对值之和可以起到一个特征筛选的作用使得某些参数直接为0。 L2范数Loss function 加上 参数的绝对值平方之和可以使Loss function更加平缓防止出现过拟合但只能使参数接近于0不能为0不能特征筛选。 sklearn里面的逻辑回归 类linear_model.LogisticRegression参数 属性 接口 参数很多但只需要理解下面常用的即可 正则化相关 参数说明penalty可以输入l1或l2来指定使用哪一种正则化方式不填写默认l2。注意若选择l1正则化参数solver仅能够使用求解方式”liblinear和saga“若使用“l2”正则化参数solver中所有的求解方式都可以使用。CC正则化强度的倒数必须是一个大于0的浮点数不填写默认1.0即默认正则项与损失函数的比值是11。C越小损失函数会越小模型对损失函数的惩罚越重正则化的效力越强参数会逐渐被压缩得越来越小。 sklearn里面L1和L2的公式 导入库 from sklearn.linear_model import LogisticRegression as LR # 逻辑回归 from sklearn.datasets import load_breast_cancer # 乳腺癌数据集 import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split # 划分测试集和训练集 from sklearn.metrics import accuracy_score # 精确性模型评估指标之一data load_breast_cancer() # 数据集 X data.data # 特征 y data.target # 标签lrl1 LR(penaltyl1,solverliblinear,C0.5,max_iter1000) # L1范数 lrl2 LR(penaltyl2,solverliblinear,C0.5,max_iter1000) # L2范数lrl1 lrl1.fit(X,y) lrl2 lrl2.fit(X,y) 通过coef_属性查看每个特征所对应的参数 L1和L2模型训练的效果比较 l1 [] l2 [] l1test [] l2test [] Xtrain, Xtest, Ytrain, Ytest train_test_split(X,y,test_size0.3,random_state420) for i in np.linspace(0.05,1,19):lrl1 LR(penaltyl1,solverliblinear,Ci,max_iter1000)lrl2 LR(penaltyl2,solverliblinear,Ci,max_iter1000)lrl1 lrl1.fit(Xtrain,Ytrain)l1.append(accuracy_score(lrl1.predict(Xtrain),Ytrain))l1test.append(accuracy_score(lrl1.predict(Xtest),Ytest))lrl2 lrl2.fit(Xtrain,Ytrain)l2.append(accuracy_score(lrl2.predict(Xtrain),Ytrain))l2test.append(accuracy_score(lrl2.predict(Xtest),Ytest))graph [l1,l2,l1test,l2test] color [green,black,lightgreen,gray] label [L1,L2,L1test,L2test] plt.figure(figsize(6,6)) for i in range(len(graph)):plt.plot(np.linspace(0.05,1,19),graph[i],color[i],labellabel[i]) plt.legend(loc4) #图例的位置在哪里?4表示右下角 plt.show()两种正则化的结果区别不大。但随着C的逐渐变大正则化的强度越来越小模型在训练集和测试集上的表现都呈上升趋势直到C0.8左右训练集上的表现依然在走高但模型在未知数据集上的表现开始下跌这时候就是出现了过拟合。我们可以认为C设定为0.8会比较好。在实际使用时基本 就默认使用l2正则化如果感觉到模型的效果不好那就换L1试试看。 重要参数max_iter最大的迭代次数【进行梯度下降找最小值的迭代次数】 参数max_iter最大迭代次数来代替步长lreaning rate帮助我们控制模型的迭代速度并适时地让模型停下。max_iter越大代表步长越小模型迭代时间越长反之则代表步长设置很大模型迭代时间很短。 来看看乳腺癌数据集下max_iter的学习曲线 循环迭代次数 l2 [] l2test [] Xtrain, Xtest, Ytrain, Ytest train_test_split(X,y,test_size0.3,random_state420) for i in np.arange(1,201,10):lrl2 LR(penaltyl2,solverliblinear,C0.9,max_iteri)lrl2 lrl2.fit(Xtrain,Ytrain)l2.append(accuracy_score(lrl2.predict(Xtrain),Ytrain))l2test.append(accuracy_score(lrl2.predict(Xtest),Ytest))画出迭代次数与准确率的图 graph [l2,l2test] color [black,gray] label [L2,L2test]plt.figure(figsize(20,5)) for i in range(len(graph)):plt.plot(np.arange(1,201,10),graph[i],color[i],labellabel[i])plt.legend(loc4) plt.xticks(np.arange(1,201,10)) plt.show()#我们可以使用属性.n_iter_来调用本次求解中真正实现的迭代次数 lr LR(penaltyl2,solverliblinear,C0.9,max_iter300).fit(Xtrain,Ytrain) lr.n_iter_最大的迭代次数并不是说就会迭代这么多次如果梯度下降找到了局部最优点就会停止 重要参数solver multi_class 【二元回归与多元回归】 上面都是针对二分类的逻辑回归展开其实sklearn提供了多种可以使用逻辑回归处理多分类问题的选项。比如说我们可以把某种分类类型都看作1其余的分类类型都为0值和”数据预处理“中的二值化的思维类似这种方法被称为一对多(One-vs-rest)简称OvR在sklearn中表示为“ovr。又或者我们可以把好几个分类类型划为1剩下的几个分类类型划为0值这是一种”多对多“(Many-vs-Many)的方法简称MvM在sklearn中表示为Multinominal。每种方式都配合L1或L2正则项来使用。 在sklearn中我们使用参数multi_class来告诉模型我们的预测标签是什么样的类型。 “auto”表示会根据数据的分类情况和其他参数来确定模型要处理的分类问题的类型。比如说如果数据是二分类或者solver的取值为liblinear“auto会默认选择ovr”。反之则会选择nultinomial。【默认】“ovr”:表示分类问题是二分类或让模型使用一对多的形式来处理多分类问题。‘multinomial’表示处理多分类问题这种输入在参数solver是’liblinear’时不可用。 multinomial和ovr的区别【鸢尾花数据集】 from sklearn.datasets import load_iris iris load_iris() for multi_class in (multinomial, ovr):clf LR(solversag, max_iter200, random_state42,multi_classmulti_class).fit(iris.data, iris.target) #打印两种multi_class模式下的训练分数 #%的用法用%来代替打印的字符串中想由变量替换的部分。%.3f表示保留三位小数的浮点数。%s表示字符串。 #字符串后的%后使用元祖来容纳变量字符串中有几个%元祖中就需要有几个变量print(training score : %.3f (%s) % (clf.score(iris.data, iris.target), multi_class))多项式逻辑回归 上文逻辑回归是在平面上找一条直线用这条直线来分割所有样本对应的分类。 从图片中可以看得一条直线不可能将红蓝点完全分隔开可以采用多项式不使用直线来分割尽可能的提高分类的准确率。 多项式实现 from sklearn.pipeline import Pipeline from sklearn.linear_model import LogisticRegression #专门产生多项式的并且多项式包含的是相互影响的特征集。 from sklearn.preprocessing import PolynomialFeatures from sklearn.model_selection import train_test_split#增加多项式预处理 def polynomial_model(degree1,**kwarg):polynomial_features PolynomialFeatures(degreedegree,include_biasFalse)logistic_regression LogisticRegression(solverliblinear,**kwarg)#solver的默认参数是lbfgs只支持L2要改成liblinearL1L2都能支持pipeline Pipeline([(polynomial_features,polynomial_features),(logistic_regression,logistic_regression)])return pipelineX_train, X_test, y_train, y_test train_test_split(data_X, data_y, random_state666) #增加二阶多项式特征创建并训练模型 modelpolynomial_model(degree2,penaltyl1,max_iter1000)#使用L1范式作为正则项进行稀疏化 model.fit(X_train,y_train)#训练模型 # 结果可视化 plot_decision_boundary(model, axis[0, 100, 0, 100]) plt.scatter(data_X[data_y 0, 0], data_X[data_y 0, 1], colorred) plt.scatter(data_X[data_y 1, 0], data_X[data_y 1, 1], colorblue) plt.xlabel(成绩1) plt.ylabel(成绩2) plt.title(两门课程成绩与是否录取的关系) plt.show()从图片中可以看到采用多项式之后基本能够完全分隔开红蓝两类至少准确率要比之前的高。
http://www.hkea.cn/news/14472595/

相关文章:

  • app网站建设宣传方案网站推广员如何做
  • 域名申请到网站建设教程广告设计公司经营范围
  • 公司网站的关键词推广怎么做html5网站多少钱
  • 一键网站模块安徽网站推广营销设计
  • 做网站平台赚钱吗网站空间哪家好
  • 网站字体大小选择得物网上商城
  • 公司网站有中文域名吗有了代码如何建设网站
  • 厦门市建设执业资格注册管理中心网站做网站go和php用哪个好
  • 建设网站证深圳软件开发有限公司
  • 海珠电子商务网站建设房山做网站
  • 一个网站做两种产品做招投标有哪些网站
  • 网站建设发展历程小程序商城怎么开发
  • 电子政务和网站建设自评企业网站 自助建站
  • 青海网站建设多少钱wordpress会员微信支付宝
  • 牛商网网站后台网站建设内容介绍
  • 手机棋牌网站大全企业网站建设 建立作用
  • 个人网站建设方案书框架栏目wordpress教程 主页
  • 可视化网站制作软件网站更新怎么样做更高大上
  • 如何推广网站网站推广常用方法网页设计基础的课程介绍
  • 移动 网站模板牡丹江市建设行业协会网站
  • 哈尔滨网站建设价格在百度做网站多少钱
  • 个人建站软件办公用品十大购物网站排名
  • dedecms怎么关闭网站营销项目策划公司
  • 做网站的规范科技小制作怎么做视频网站
  • 电子商务网站建设的大纲计算机专业做网站运营
  • 杭州网站改版公司专业网站建设常州
  • 顺企网杭州网站建设wordpress网页打开加快
  • 《网站建设》期末考试沈阳市三好街网站建设公司
  • 网站 文章 keywords 和主页keywordsc 网站开发实例教程
  • 深圳外包网站做网站的前端技术