Logistic Regression 基础

Logistic Regression 沿用了 Linear Regression 的思路和想法,通过使用线性关系拟合得到真实的函数关系。同样的,如果模型结果表现不好,可能是超参数没调好,或者是训练集的特征没处理好(可以多构造一些特征,将线性特征构造成为非线性特征之类的)。

由于用Linear Regression 求得的解范围是 正无穷 到 负无穷,而最后得到只是某一分类的概率,其取值范围是 [0,1],所以我们需要将最后得到的值经过某个合适的投影,投射到 [0,1] 范围内。

这里就引入了 odds 的概念 和 sigmoid 函数。

引入 odds 的原因是,想要将概率投射到 [0, 正无穷] 这个范围上,所以要引入 odds。

引入 sigmoid 函数的原因是,想要将 [0, 正无穷] 投射到 [负无穷,正无穷] 这个范围上,所以要引入 sigmoid 函数。

Logistic Regression 预测员工离职率

直接调库运算

from sklearn.linear_model import LogisticRegression
from patsy import dmatrices                    # 作用是将 离散变量变为 哑变量
y,X = dmatrices('left~satisfaction + last_evaluation + number_project
+ C(sales) + C(salary), data, return_type = 'dataframe')# C(sales) 表示 将 sales 变成哑变量
model = LogisticRegression()
model.fit(X,y)
pd.DataFrame(list(zip(X.columns, np.transpose(model.coesf_))))  # 显示系数
pred = model.predict(x)                        # 进行预测

Logistic Regression 理论上是通过梯度下降法来求解的。

LR 的普通 gradient descend 代码如下所示:

# 这需要事先知道导数是什么,计算机可不会帮你去求导
# 我们需要做的就是不断更新这个导数
# 更新的步长是我们自己设定的,或者是 error 到达某一个比较小的值
np.random.seed(1)
alpha = 1 # learning rate 这个值是比较重要的
beta = np.random.randn(X.shape[1])      # 随机初始化一个梯度
for T in range(500):    # 迭代次数prob = np.array(1./ ( 1 + np.exp(-np.matmul(X, beta)))).ravel()prob_y = list(zip(prob, y))                   # 为了下面计算 loss 用的, 对 gd 没啥作用loss = -sum([np.log(p) if y == 1 else np.log(1-p) for p, y in prob)y]) / len(y)  # 计算 loss, 目的是为了比较用的,对 gd 没啥作用error_rate = 0for i in range(len(y)):if ((prob[i] > 0.5 and y[i] == 0) or (prob[i] <= 0.5 and y[i] == 1)):error_rate += 1error_rate /= len(y)if T % 5 ==0:print('T=' + str(T) + 'loss = ' + str(loss) + 'error = ; + str(error_rate)) # 目的是实时输出一个 loss 和 eoorderiv = np.zeros(X.shape[1])
 for i in range(len(y)):                       # 对每一个 instance 都计算其导数deriv += np.asarray(X[i,:].ravel() * (prob[i] - y[i])  # 把所有 instance 对应的导数加起来deriv /= len(y)                               # 求一个平均值beta -= alpha * deriv                         # 更新这个 beta

对于整个更新的过程,最实质的代码是

 for i in range(len(y)):                       # 对每一个 instance 都计算其导数deriv += np.asarray(X[i,:].ravel() * (prob[i] - y[i])  # 把所有 instance 对应的导数加起来deriv /= len(y)                               # 求一个平均值beta -= alpha * deriv                         # 更新这个 beta

这里计算 prob[i] 的原因是导数中有这一项,所以要在这里进行计算。

Logistic Regression 中的正则化

关于正则化,首先需要明白的一个结论是:beta (模型中的系数) 越大,则说明模型越复杂。

为了避免overfitting的问题,我们在模型中引入正则化系数。正则化系数设为R。R值越大,则最后训练出来的 beta 值越小。模型越简单。

给正则话系数赋值的操作如下所示:

model = LogisticRegression(C = 1e5)

C 的值是 正则化系数的 倒数。

Logisitc Regression 预测员工离职率相关推荐

  1. 如何利用大数据分析技术预测员工离职?

    为什么我们要对员工离职进行预测,因为它会帮助公司减少员工离职成本的消耗. 本文为美国肯尼索州立大学刘丽媛(Lilian)在HR成长部落2019年6月23日的线下活动分享文字实录,希望对大家在数据分析在 ...

  2. 团队管理(3)---有效降低企业员工离职率

    有效降低企业员工离职率 招人难!居高不下的员工离职率,更使企业招聘难上加难!近年来,楚柳香小编很多HR朋友都在抱怨公司员工离职率过高的问题.过高的员工流失率,使许多企业都处在招聘--流失--再招聘-- ...

  3. 为什么现在90后员工离职率那么高?

    近几年职场上普遍存在一个奇怪的现象,90后的员工离职率特别高,95后就更不用说了,几乎可以用"一言不合就离职"来形容.那究竟是为什么现在90后的员工离职率那么高呢? 回想我们父母那 ...

  4. 员工离职率预测,练手赛

    文章目录 1.数据探索 1.1 各特征总量及百分比 1.2 heatmap 2.特征选择&处理 2.1 特征分类 2.2 连续特征选择 2.3 分类特征选择 2.4 异常值处理 2.5 连续特 ...

  5. 使用深度学习预测员工流失率

    墨西哥的员工流动率在全球排名第八,平均每年约17%的流失率 - 一些行业(如餐饮服务)的流失率高达50%. 根据Catalyst的一项研究,平均而言,替换员工的成本约为员工年薪的50%至75%. 考虑 ...

  6. 如何使用Keras和TensorFlow建立深度学习模型以预测员工留任率

    The author selected Girls Who Code to receive a donation as part of the Write for DOnations program. ...

  7. 博士员工离职率21.8%,任正非反思:华为这么大,英雄为何无用武之地?

    ** 2019程序员转型学什么? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw ** 导读:这份文件中的数据显示,近公司博士类员工近5年累计平均 ...

  8. 华为给博士毕业生开出天价年薪!为何博士级员工离职率依旧高达21.8%

    昨日(7月23日),网络盛传一张华为总裁办电子邮件的截图.截图显示,华为已制定2019届顶尖学生年薪制方案:8位2019届应届博士生年薪89.6万起,其中最高的达到了201万. 华为:从全世界招募天才 ...

  9. 竟可监控员工离职倾向!一系统引发大争议

    南方都市报(nddaily).N视频报道 南都记者 方诗琪 叶霖芳 实习生 曾汉 近日,一款可监测员工离职倾向和怠工情况的系统引发热议.该系统被指或为上市公司深信服科技股份有限公司(下称"深 ...

最新文章

  1. 效率翻倍!推荐10个超实用的神器工具,高效率办公必备
  2. DNF登录器显示WIN无法访问指定设备_快速修复无法访问的u盘,不需要工具
  3. flight php 中文,PHP: composer的简单使用
  4. scss的使用方式(环境搭建)
  5. SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现
  6. 第12章[12.4] 鼠标移入移除时弹出和关闭窗口
  7. 美团正押注无人车?没错,这是外卖大战的第三阶段
  8. Web API-排他思想及其案例
  9. ubuntu16.04命令行模式和图形界面互相切换
  10. 感慨公交车766路调整
  11. 谭浩强C语言程序设计第五版第七章例题
  12. C语言考试题及答案(一)
  13. 半透明导航栏css代码,纯CSS实现的紫罗兰风格导航条效果代码
  14. ArcGIS 9.3下载,包含ArcGIS Desktop、ArcGIS Engine、ArcGIS Server、ArcSDE、workstation
  15. Java实现简单的KFC点餐系统(未实现可视化)
  16. 文件上传漏洞及解析漏洞总结
  17. 如何将电梯门禁卡复制到手机/手环上
  18. php emoji 保存 显示不出来,PHP导出带有emoji表情的文本到excel文件出问题了
  19. (附源码)基于JSP的养老院信息管理系统的设计与实现 毕业设计211141
  20. 工程流体力学笔记暂记30 (管道水力计算)

热门文章

  1. 如何做口碑营销?企业实施网络口碑营销的技巧
  2. 超好用的画图工具推荐
  3. 计算机应用月什么,计算机应用月考试卷
  4. RMAN CROSSCHECK命令 说明
  5. php电子商务的服装库存管理系统
  6. Qt使用 QProcess来检测 ip 设备是否在线(Ping)
  7. 2022-2028年全球与中国老年手机行业发展趋势及竞争策略研究
  8. java中小数后加f_在 Java 中,小数默认为 ,如果要指定 类型请在小数后加 F/f 。_学小易找答案...
  9. python自动化看什么书_python自动化测试书籍
  10. php去除编辑器html标签,js处理富文本编辑器转义、去除转义、去除HTML标签