一、数据挖掘思惟导图

思惟导图为:Dr. Saed Sayad总结的An Introduction to Data Mining
我的更喜欢的分类方式为:
一、分类与预测
二、关联
三、聚类
四、异常检测
二、信用评分中的常见算法
信用评分中主要包括申请评分、行为评分、催收评分卡、反欺诈。
其中,申请评分和行为评分比较成熟的是逻辑回归,其次层次聚类和判别分析、决策树。
申请和信用评分须要比较好的解释性,也有的使用神经网络作,只是个噱头。
在反欺诈中,不须要有好的解释性,神经网络在这方面这方面使用的比较多。html
其实,当前在评分中,几乎没有单一的算法,都是综合处理。即便是传统的逻辑回归,针对变量的共线性分析也会采用不少方法,另外针对单一变量的分段也采用决策树来进行最优划分。
三、总结
实际上处理数据,主要包括:
一、针对数据进行数据的探索,各类统计指标,单个变量的状况分析,针对单变量的数据预处理和规范化
二、针对数据中变量和变量之间的关系进行分析
三、基于变量和变量之间的分析或者变量的分析,作出结论
四、经过原始数据验证模型和数据的吻合程度,经过新数据验证模型的预测程度
数据处理工具选择:
一、小数据量,spss比较简单好用,你能够不须要写代码,可是方法原理和结果仍是要搞懂
二、中等数据量:sas不错,stat没用过
三、大数据量:Spark或者Hadoop,spark上有一些算法实现,有些算法仍是要本身按照spark或者hadoop的变成模型来实现。从传统的算法变为能够在spark和hadoop上能够运行的算法也有不少工做量,须要既懂算法,又懂spark或者hadoop原理。
开发语言选择:
一、工具类,spss和sas都有本身的语言,sas在数据处理上仍是很强大
二、开发类:若是只是分析,R和Python都很流行,看我的喜爱;若是和程序的集成,相对来讲Java更合适,虽然python集成也比较方便。
为“逾期”正名
所谓逾期,在金融领域是指借款人没有按照约定或承诺的时间点履行还本付息义务所致使的债务延期现象,说白了,就是借了钱,没有在说好的时间还,以前主要应用于银行贷款和信用卡领域。
对银行来讲,逾期是指借款方在银行规定的最后还款日或缴息日,未能及时足额还款或缴息的情形。一般出现这种状况,银行会将借款方暂时列为催收对象,并于7日内打电话提醒,借款方若是在7日内补足,银行通常不会收取滞纳金,但若是超过7天仍未缴款,银行就会将这笔贷款正式列为“催收”并收取滞纳金。
信用卡逾期不是指到了最后还款日不还,而是到了下个月帐单日不还才算逾期,一旦持卡人逾期,银行会从第二天起按天天万分之五计息,逾期会计复利,所以逾期时间越长,每日利息就会越高。
在P2P行业,逾期率并无一个统一的计算标准,目前使用率比较高的标准出自中国小额信贷联盟P2P行业委员会发布的《我的对我的(P2P)小额信贷信息咨询服务机构行业自律公约》,计算公式是“逾期90天以上的未还剩余资本金总额/可能产生90天+预期累计合同总额”,也就是说,当前已经产生90天以上的逾期,是分子,剩余的有可能产生的90天以上的逾期,是分母,而那些不可能产生90天以上逾期的,则被剔除在分母以外(如那些到期日期至当前不足90天或当前还处于正常借款期内的借款)。
翻阅P2P平台的季报、半年报、年报等信息,咱们会发现这类报告格式广泛简洁明了,多以可视化形式展示。其中,披露的内容主要集中于累计成交额、注册用户数、为投资者赚取收益、平均年化收益等能够给平台增光添彩的部分,而对于逾期率、坏帐率、营业收入、净利润等指标多有意绕过。目前,会在报告中正规、真实披露相关内容的多为在海外或新三板上市的平台。
除了避而不谈,还有一些平台故意压低逾期率等指标的比例,固然,这其中包括了合理压低与恶意压低两种。合理压低有如下几种方法:一、由于平台上线时间不少,全部借款都未到期,因此对外宣称本身逾期率为零;二、由第三方担保的平台,担保公司代偿的部分不计入逾期率;三、平台抵押类项目,由于有足值抵押物,因此不计入逾期率;四、平台用自有资金或风险拨备把逾期借款换上。恶意压低主要指不合理的扩大逾期率的分母,手段包括:一、将历史以来全部的成交额做为分母;二、将全部待收做为分母,这样逾期率看起来都会很低。
今年3月,当时还未正式挂牌的中国互联网金融协会曾出台一份《互联网金融信息披露规范(初稿)》,其中对P2P从业机构的应披露内容作了要求,其中就包括了累计违约率、平台项目逾期率、近三月项目逾期率、借款逾期金额、代偿金额、借贷逾期率、借贷坏帐率等运营信息。6月,上海互金行业协会发布P2P平台信息披露工做指引,要求P2P会员单位按期披露主体、产品、业务、财务和其余等五大类49项信息,其中也包括了交易逾期状况、主要产品90天以上逾期金额和90天以上逾期率。
在此,但愿监管层可以尽早对P2P平台逾期率的计算方法和披露方式进行出统1、规范的要求和标准,这将对P2P行业的健康发展起到很大帮助。
坏帐与违约
很多分析P2P的文章中,每每将预期与坏帐不加分辨或直接等同,这是不对的,实际上二者是有区别的。逾期的意思,上文已经解释,其重要的时间点是超过90天以上,也就是三个月左右。而坏帐是在逾期的基础上,在对借款方进行了相关的催收等资产处置工做后,债权人依然没法收回本息,且在从此一段时间内均可能没法收回本息,在P2P行业内,这个时间段是超过120天。因此说,逾期并不意味着坏帐。
所谓违约,是指借款方未能按照借款合同上的约定,偿还贷款本息,这是一个覆盖性更广的概念,逾期和坏帐,其实都属于违约,由于它们都没有遵照合同上的约定时间还款。二者的区别是,逾期虽然没有遵照还款时间,可是在超过还款期限后的90天-120天这个时间段内仍是还了,而坏帐则是超过约定还款日期120天后仍是没有还款,并且有可能一直不会还了。
A卡(Application score card)申请评分卡
B卡(Behavior score card)行为评分卡
C卡(Collection score card)催收评分卡
评分机制的区别在于:
1.使用的时间不一样。分别侧重贷前、贷中、贷后;
2.数据要求不一样。A卡通常可作贷款0-1年的信用分析,B卡则是在申请人有了必定行为后,有了较大数据进行的分析,通常为3-5年,C卡则对数据要求更大,需加入催收后客户反应等属性数据。
3.每种评分卡的模型会不同。在A卡中经常使用的有逻辑回归,AHP等,而在后面两种卡中,常使用多因素逻辑回归,精度等方面更好。
评分卡是综合我的客户的多个维度信息(如基本状况、偿债能力、信用情况等,重点关注借贷意愿、偿债能力、还款意愿),基于这些信息综合运用数学分析模型,给我的综合评分,判断违约的可能性的工具。
生活中存在许多“显性”或“隐性”的“评分卡”。例如:选购汽车--综合价格、油耗、安全系数、性能、外观等来因素。买仍是不买?包括以前小编实习中参与的车联网交通数据清理,如何评价车主是否为“中国好司机”会涉及到车辆是否绿色出行(迟早高峰、周末是否出行),车主的驾驶行为(是否疲劳驾驶、是否夜间驾驶、急加速急转弯百千米次数等)以及月出行次数的合理程度等。
就分析方法发而言,如今分类算法有不少种,决策树,逻辑回归,支持向量机,神经网络等等,均可以实现这个目的。但要明确一点是:数据是决定模型的核心,什么样的数据决定什么样的模型。
逻辑回归汇总的变量选择
一、 使用全部的变量:这是拟合模型的最简单的方法;
二、 正向选择:这种模型如要以下步骤。第一步,用截距对模型进行拟合,接下来,检验没有归入模型的变量并选择卡方统计量最大、符合进入条件的变量,这个条件能够通选选项SLE肯定。一旦这个变量被归入模型就不会被移出,重复这个过程知道全部变量归入。
三、 逆向选择:与正向相反,第一步,使用全部的变量进行拟合,而后,在每一步,移出Wald卡方统计量P值最大的变量,一旦移出,将不会归入。
四、 stepwise选择:刚开始模型只有截距项,正向选择最优,逆向选择最差,经过SLE和SLS的值控制归入和移出模型变量的p值。
五、 得分最有统计模型:最优得分法与stepwise方法类似,可是使用分支界定算法找出木偶性的分数统计量最高变量的子集,从而找出最优解。
相关方法
MLE极大似然估计
极大似然原理的直观想法是:一个随机试验若有若干个可能的结果A,B,C,…。若在仅仅做一次试验中,结果A出现,则通常认为试验条件对A出现有利,也即A出现的几率很大。通常地,事件A发生的几率与参数a相关,A发生的几率记为P(A,a),则a的估计应该使上述几率达到最大,这样的a顾名思义称为极大似然估计。
极大似然估计是能沟统统过模型以最大几率在线样本观察数据,逻辑回归模型主要使用极大似然法来进行估计
SLE
sas中在变量选举进入的参数,SLE(sets criterion for entry into model) 是变量进入模型的标准即统计意义水平值P<0.3,是定逻辑回归中变量归入的主要条件。
SLS
sas中在变量选举进入的参数,SLS(sets criterion for staying in model)是变量在模型中保留的标准即统计意义水平值P<0.3,是定逻辑回归中变量保留的主要条件。逻辑回归变量进入后,由于新的变量进入致使老的变量对整个模型的贡献不足,从中移出的阀值。
卡方校验
原理
卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,误差越小,越趋于符合,若两个值彻底相等时,卡方值就为0,代表理论值彻底符合。
卡方检验的两个应用是拟合性检验和独立性检验。拟合性检验是用于分析实际次数与理论次数是否相同,适用于单个因素分类的计数数据。独立性检验用于分析各有多项分类的两个或两个以上的因素之间是否有关联或是否独立的问题。
应用场景
卡方校验的场景
1.应用实例——适合度检验
实际执行多项式试验而获得的观察次数,与虚无假设的指望次数相比较,称为卡方适度检验,即在于检验两者接近的程度,利用样本数据以检验整体分布是否为某一特定分布的统计方法。
2.应用实例2——独立性检验
卡方独立性检验是用来检验两个属性间是否独立。一个变量做为行,另外一个变量做为列。
3.应用实例3——统一性检验
检验两个或两个以上整体的某一特性分布,也就是各“类别”的比例是否统一或相近,通常称为卡方统一性检验或者卡方同质性检验。
具体参考例子
见文档:http://wiki.mbalib.com/wiki/%E5%8D%A1%E6%96%B9%E6%A3%80%E9%AA%8C
卡方分布与皮尔逊卡方检验的关系
摘录自知乎,总结的比较到位
咱们知道,从正态分布里随机抽取n个值的平方的和构成了自由度为n-1的卡方分布,在使用卡方分布表进行假设检验时,咱们须要用样本方差除整体方差进行标准化。如今的问题是使用皮尔逊卡方检验的时候,为何用的不是整体方差进行标准化,而是使用理论频数进行标准化?
理论证实,实际观察次数(fo)与理论次数(fe),又称指望次数)之差的平方再除以理论次数所得的统计量,近似服从卡方分布。因此用理论次数标准化
模型选择的几种方法:AIC,BIC,HQ准则
引用:http://blog.csdn.net/xianlingmao/article/details/7891277
常常地,对一堆数据进行建模的时候,特别是分类和回归模型,咱们有不少的变量可供使用,选择不一样的变量组合能够获得不一样的模型,例如咱们有5个变量,2的5次方,咱们将有32个变量组合,能够训练出32个模型。可是哪一个模型更加的好呢?目前经常使用有以下方法:
AIC=-2 ln(L) + 2 k 中文名字:赤池信息量 akaike information criterion
BIC=-2 ln(L) + ln(n)*k 中文名字:贝叶斯信息量 bayesian information criterion
HQ=-2 ln(L) + ln(ln(n))*k hannan-quinn criterion
其中L是在该模型下的最大似然,n是数据数量,k是模型的变量个数。
注意这些规则只是刻画了用某个模型以后相对“真实模型”的信息损失【由于不知道真正的模型是什么样子,因此训练获得的全部模型都只是真实模型的一个近似模型】,因此用这些规则不能说明某个模型的精确度,即三个模型A, B, C,在经过这些规则计算后,咱们知道B模型是三个模型中最好的,可是不能保证B这个模型就可以很好地刻画数据,由于颇有可能这三个模型都是很是糟糕的,B只是烂苹果中的相对好的苹果而已。
这些规则理论上是比较漂亮的,可是实际在模型选择中应用起来仍是有些困难的,例如上面咱们说了5个变量就有32个变量组合,若是是10个变量呢?2的10次方,咱们不可能对全部这些模型进行一一验证AIC, BIC,HQ规则来选择模型,工做量太大。
总结
逻辑回归比较复杂,推荐《Logistic回归模型——方法与应用》王济川郭志刚著,这本书不错
您或许据说过一次硬查询可能使您的信用记录受影响。可是您可能并不知道这究竟是为何,到底什么是硬查询?
(因审核贷款业务申请缘由而查询信用报告叫硬查询。如贷款审批、信用卡审批。)
理解硬查询如何进行相当重要:经过低息贷款购物能够为您省钱。可是若是您忘了按时还款,极可能会在信用查询时为您的信用减分,使您以后的借款利率升高。对于相似车贷、房贷这样的大额贷款来讲,哪怕信用分只降了一点,都意味着贷款人将支付更高的利率,进而致使您在还贷期支付更多的利息。因此避免没必要要的违约实际上是为本身省钱。
在您查询信用信息时,会标注在贷款人信用报告里。好比说您申请一项汽车贷款,借款方经过Experian征信公司调用了您的信息记录和FICO分数。“您的信用信息被一家特定公司使用了”这一记录将记录在您的Experian公司报告中,标注了索取报告的公司名以及查询的方式。
在咱们谈论硬查询如何工做的细节以前,宏观的判断很重要。除非您真的是一个重度刷卡消费者(不止是一时使用),硬查询不会对您的信用分形成多大的影响。“创建新的信用帐户”占到您FICO信用评分的10%,查询只是这类中的一部分。因此单次查询不会使您的信用分下降5分以上,但这只是在硬查询时,并且有一些限制条件。
另外,这样的一次询价将在您的信用记录上保留两年,可是只有一年内的记录会对您的FICO信用分产生影响,至少如今大部分评分模型是这样设计的。而太久的查询记录早已被忽略。
硬查询 VS. 软查询
硬查询是那些会影响您信用评分的查询行为,他们代表您正在积极地获取信用额度,无论是车贷、抵押、学生贷款仍是信用卡贷款。
偏偏相反,软查询并非为使用信用卡或贷款购物而发生,不会影响您的信用评分。好比说,若是一个借款人给您发来一个预受权的信用额度,这样的查询被称为“奖励”查询,是一种软查询。这时当您查询本身的信用评分时,也会被定义为软查询。相似的,若是您已经持有一张信用卡或者获得一笔贷款,征信公司将不按期地查询您的帐户,而这种查询将不会记录在您的信用报告中。
雇主或者保险公司出于对您信用分数的计算目的而进行的查询也不会被记录。
避免信用损失
有几种方式来最小化您由于硬查询而致使的我的信用损失。
作好决定再出手:正在寻找一份按揭贷款,车贷,或是学生贷款?请在两周的时间内完成全部消费。这样的话,全部申请仅算做一次查询。由于大部分信用评分模型会把14到45天内的查询行为统一视为一次(具体时间取决于被使用的是哪一种模型)。
时刻监控您的信用帐户:在您要使用信用消费以前检查一下您的信用报告和信用评分。而后作些功课,申请您最有可能获得的贷款额。经过Credit.com的免费信用报告卡,您能每个月免费查看您的信用分数。在查看期间,咱们会根据您的我的信用档案和信用评分为您推荐适合您的信用卡和贷款项目,您帮助您省钱。
谁在访问个人信用帐户
您阅览您的信用报告时,您会看到一个查询清单,可是您不会看到清单中的公司名字。首先肯定这些查询是否是奖励询价。若是是,那么您极可能是获得了一个预受权的信用贷款,请不要担忧(您能够在OptOutPrescreen.com网站上拒绝预受权)。若是不是这种状况,那么公司的联系方式必定会显示在清单上,因此您可以联系到他们。若是这些信息没有被提供,能够请信用报告代理商帮您取得。
逻辑回归(Logistic Regression,简称LR)是机器学习中十分经常使用的一种分类算法,在互联网领域获得了普遍的应用,不管是在广告系统中进行CTR预估,推荐系统中的预估转换率,反垃圾系统中的识别垃圾内容……均可以看到它的身影。LR以其简单的原理和应用的普适性受到了广大应用者的青睐。实际状况中,因为受到单机处理能力和效率的限制,在利用大规模样本数据进行训练的时候每每须要将求解LR问题的过程进行并行化,本文从并行化的角度讨论LR的实现。
1. LR的基本原理和求解方法
LR模型中,经过特征权重向量对特征向量的不一样维度上的取值进行加权,并用逻辑函数将其压缩到0~1的范围,做为该样本为正样本的几率。逻辑函数为
,曲线如图1。

图1 逻辑函数曲线
给定M个训练样本并行逻辑回归
,其中Xj={xji|i=1,2,…N} 为N维的实数向量(特征向量,本文中全部向量不做说明都为列向量);yj取值为+1或-1,为分类标签,+1表示样本为正样本,-1表示样本为负样本。在LR模型中,第j个样本为正样本的几率是:
其中W是N维的特征权重向量,也就是LR问题中要求解的模型参数。
求解LR问题,就是寻找一个合适的特征权重向量W,使得对于训练集里面的正样本,
并行逻辑回归值尽可能大;对于训练集里面的负样本,这个值尽可能小(或
并行逻辑回归尽可能大)。用联合几率来表示:

对上式求log并取负号,则等价于:
公式(1)
公式(1)就是LR求解的目标函数。
寻找合适的W令目标函数f(W)最小,是一个无约束最优化问题,解决这个问题的通用作法是随机给定一个初始的W0,经过迭代,在每次迭代中计算目标函数的降低方向并更新W,直到目标函数稳定在最小的点。如图2所示。

图2 求解最优化目标函数的基本步骤
不一样的优化算法的区别就在于目标函数降低方向Dt的计算。降低方向是经过对目标函数在当前的W下求一阶倒数(梯度,Gradient)和求二阶导数(海森矩阵,Hessian Matrix)获得。常见的算法有梯度降低法、牛顿法、拟牛顿法。
(1) 梯度降低法(Gradient Descent)
梯度降低法直接采用目标函数在当前W的梯度的反方向做为降低方向:

其中
并行逻辑回归为目标函数的梯度,计算方法为:

(2) 牛顿法(Newton Methods)
牛顿法是在当前W下,利用二次泰勒展开近似目标函数,而后利用该近似函数来求解目标函数的降低方向:

其中Bt为目标函数f(W)在Wt处的海森矩阵。这个搜索方向也称做牛顿方向。
(3) 拟牛顿法(Quasi-Newton Methods):
拟牛顿法只要求每一步迭代中计算目标函数的梯度,经过拟合的方式找到一个近似的海森矩阵用于计算牛顿方向。最先的拟牛顿法是DFP(1959年由W. C. Davidon提出,并由R. Fletcher和M. J. D. Powell进行完善)。DFP继承了牛顿法收敛速度快的优势,而且避免了牛顿法中每次迭代都须要从新计算海森矩阵的问题,只须要利用梯度更新上一次迭代获得的海森矩阵,但缺点是每次迭代中都须要计算海森矩阵的逆,才能获得牛顿方向。
BFGS是由C. G. Broyden, R. Fletcher, D. Goldfarb和D. F. Shanno各自独立发明的一种方法,只须要增量计算海森矩阵的逆Ht=Bt-1,避免了每次迭代中的矩阵求逆运算。BFGS中牛顿方向表示为

L-BFGS(Limited-memory BFGS)则是解决了BFGS中每次迭代后都须要保存N*N阶海森逆矩阵的问题,只须要保存每次迭代的两组向量和一组标量便可:

在L-BFGS的第t次迭代中,只须要两步循环既能够增量计算牛顿方向:

2. 并行LR的实现
由逻辑回归问题的求解方法中能够看出,不管是梯度降低法、牛顿法、拟牛顿法,计算梯度都是其最基本的步骤,而且L-BFGS经过两步循环计算牛顿方向的方法,避免了计算海森矩阵。所以逻辑回归的并行化最主要的就是对目标函数梯度计算的并行化。从公式(2)中能够看出,目标函数的梯度向量计算中只须要进行向量间的点乘和相加,能够很容易将每一个迭代过程拆分红相互独立的计算步骤,由不一样的节点进行独立计算,而后归并计算结果。
将M个样本的标签构成一个M维的标签向量,M个N维特征向量构成一个M*N的样本矩阵,如图3所示。其中特征矩阵每一行为一个特征向量(M行),列为特征维度(N列)。

图3 样本标签向量 & 样本矩阵
若是将样本矩阵按行划分,将样本特征向量分布到不一样的计算节点,由各计算节点完成本身所负责样本的点乘与求和计算,而后将计算结果进行归并,则实现了“按行并行的LR”。按行并行的LR解决了样本数量的问题,可是实际状况中会存在针对高维特征向量进行逻辑回归的场景(如广告系统中的特征维度高达上亿),仅仅按行进行并行处理,没法知足这类场景的需求,所以还须要按列将高维的特征向量拆分红若干小的向量进行求解。
(1) 数据分割
假设全部计算节点排列成m行n列(m*n个计算节点),按行将样本进行划分,每一个计算节点分配M/m个样本特征向量和分类标签;按列对特征向量进行切分,每一个节点上的特征向量分配N/n维特征。如图4所示,同同样本的特征对应节点的行号相同,不一样样本相同维度的特征对应节点的列号相同。

图4 并行LR中的数据分割
一个样本的特征向量被拆分到同一行不一样列的节点中,即:

其中Xr,k表示第r行的第k个向量,X(r,c),k表示Xr,k在第c列节点上的份量。一样的,用Wc表示特征向量W在第c列节点上的份量,即:

(2) 并行计算
观察目标函数的梯度计算公式(公式(2)),其依赖于两个计算结果:特征权重向量Wt和特征向量Xj的点乘,标量
和特征向量Xj的相乘。能够将目标函数的梯度计算分红两个并行化计算步骤和两个结果归并步骤
① 各节点并行计算点乘,计算
并行逻辑回归,其中k=1,2,…,M/m,d(r,c),k,t表示第t次迭代中节点(r,c)上的第k个特征向量与特征权重份量的点乘,Wc,t为第t次迭代中特征权重向量在第c列节点上的份量。
② 对行号相同的节点归并点乘结果

计算获得的点乘结果须要返回到该行全部计算节点中,如图5所示。

图5 点乘结果归并
③ 各节点独立算标量与特征向量相乘

G(r,c),t能够理解为由第r行节点上部分样本计算出的目标函数梯度向量在第c列节点上的份量。
④ 对列号相同的节点进行归并:

Gc,t就是目标函数的梯度向量Gt在第c列节点上的份量,对其进行归并获得目标函数的梯度向量:

这个过程如图6所示。

综合上述步骤,并行LR的计算流程如图7所示。比较图2和图7,并行LR实际上就是在求解损失函数最优解的过程当中,针对寻找损失函数降低方向中的梯度方向计算做了并行化处理,而在利用梯度肯定降低方向的过程当中也能够采用并行化(如L-BFGS中的两步循环法求牛顿方向)

3. 实验及结果
利用MPI,分别基于梯度降低法(MPI_GD)和L-BFGS(MPI_L-BFGS)实现并行LR,以Liblinear为基准,比较三种方法的训练效率。Liblinear是一个开源库,其中包括了基于TRON的LR(Liblinear的开发者Chih-Jen Lin于1999年建立了TRON方法,而且在论文中展现单机状况下TRON比L-BFGS效率更高)。因为Liblinear并无实现并行化(事实上是能够加以改造的),实验在单机上进行,MPI_GD和MPI_L-BFGS均采用10个进程。
实验数据是200万条训练样本,特征向量的维度为2000,正负样本的比例为3:7。采用十折交叉法比较MPI_GD、MPI_L-BFGS以及Liblinear的分类效果。结果如图8所示,三者几乎没有区别。

将训练数据由10万逐渐增长到200万,比较三种方法的训练耗时,结果如图9,MPI_GD因为收敛速度慢,尽管采用10个进程,单机上的表现依旧弱于Liblinear,基本上都须要30轮左右的迭代才能达到收敛;MPI_L-BFGS则只须要3~5轮迭代便可收敛(与Liblinear接近),虽然每轮迭代须要额外的开销计算牛顿方向,其收敛速度也要远远快于MPI_GD,另外因为采用多进程并行处理,耗时也远低于Liblinear。

图9 训练耗时对比
转载于: http://blog.sina.com.cn/s/blog_6cb8e53d0101oetv.html
一、综述
机器学习的优化问题中,梯度降低法和牛顿法是经常使用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解。梯度降低的目的是直接求解目标函数极小值,而牛顿法则变相地经过求解目标函数一阶导为零的参数值,进而求得目标函数最小值。在逻辑回归模型的参数求解中,通常用改良的梯度降低法,也能够用牛顿法。
2 梯度降低法
2.1算法描述
一、肯定偏差范围和降低的步长,肯定函数的导函数
二、while(|新值 -旧值| >偏差)
三、 旧值=新值
四、 新值=初始值-步长*导函数值,来进行梯度降低
算法的一些问题:每一步走的距离在极值点附近很是重要,若是走的步子过大,容易在极值点附近震荡而没法收敛。解决办法:将alpha设定为随着迭代次数而不断减少的变量,但过小会致使迭代次数不少。
2.二、java代码示例
代码转自:http://www.lailook.net/klxx/04/2016-01-05/51426.html
[java] view plain copy


-
-
- public class GradientDescent {
-
- double x_old = 0;
- static double x_new = 6;
- double gamma = 0.01;
- double precision = 0.00001;
- static int iter = 0;
-
- private double derivative(double x) {
- return 4 * Math.pow(x, 3) - 9 *Math.pow(x, 2);
- }
-
- private void getmin() {
- while (Math.abs(x_new - x_old) > precision){
- iter++;
- x_old = x_new;
- x_new = x_old - gamma * derivative(x_old);
- }
- }
-
- public static void main(String[] args) {
- GradientDescent gd = new GradientDescent();
- gd.getmin();
- System.out.println(iter+": "+x_new);
- }
- }
-
三、牛顿法
3.1算法描述
求解f(x)=0,若是f(x)可导,等价为迭代x = x-f(x)/f'(x)的最小值,算法以下:
输入:初始值x0,偏差荣制TOL;最大迭代次数m
输入: 近似解p或者失败信息
一、 p0=x0
二、while (小于迭代次数)
三、 p= p0-f(p0)/f'(p0)
四、 若|p-p0|<TOL,停机,不然p0=p
3.2例子

四、参考文档
机器学习中梯度降低法跟牛顿法的比较
http://www.myexception.cn/cloud/1987100.html
梯度降低法(一)入门
http://blog.csdn.NET/nupt123456789/article/details/8281923
Java实现梯度降低算法
http://blog.csdn.Net/nupt123456789/article/details/8281923
梯度降低、牛顿法、拟牛顿法
http://blog.csdn.net/luo86106/article/details/40510383
讲解更深刻和详细的以下:
梯度降低法与牛顿法的解释与对比
http://www.cnblogs.com/happylion/p/4172632.html
牛顿法、雅克比矩阵、海森矩阵
http://blog.csdn.net/ubunfans/article/details/41520047
系列文章收集在比特币与互联网金融风控专栏中
虚拟变量定义
在实际建模过程当中,被解释变量不但受定量变量影响,同时还受定性变量影响。例如须要考虑性别、民族、不一样历史时期、季节差别、企业全部制性质不一样等因素的影响。这些因素也应该包括在模型中。
因为定性变量一般表示的是某种特征的有和无,因此量化方法可采用取值为1或0。这种变量称做虚拟变量,用D表示。虚拟变量应用于模型中,对其回归系数的估计与检验方法与定量变量相同。
虚拟变量对模型的意义
一般,咱们假设的因变量与自变量之间的关系既是线性的,又是能够叠加,若是这些假设条件被违背,参数估计将发生误差。
将连续变量分红不一样组表并用一套虚拟变量来表达,这不只有助于检查这一变量的非线性模式,还提供在非线性关系存在条件下的无偏参数估计,这其实是在创建回归模型时对方非线性关系的一个经常使用的方法。
如何设置虚拟变量
虚拟变量一般是对无序分类资料而言。在线性回归中,若是自变量中有分类变量,那么必定要事先把这些分类变量事先从新编码,生成多个二分类虚拟变量。
在模型中引入多个虚拟变量时,虚拟变量的个数应按下列原则肯定:
(1)若是回归模型有截距项
有m种互斥的属性类型,在模型中引入(m-1)个虚拟变量。
(2)若是回归模型无截距项,有m个特征,设置m个虚拟变量
虚拟变量在计算广告和信用评分中很经常使用。
人大经济论坛这个例子讲的很是好
http://bbs.pinggu.org/thread-3702024-1-1.html
假如现有4个省份,分别是山西,山西,江苏,江西,要归入到模型中。
理解虚拟变量的真正含义:是要体现出不一样省份之间的差别,而并非所谓的控制变量。而其要充分理解多元线性回归当中参数估计量的真正含义:是偏回归系数,即自变量的边际量,代表了在其余条件不变的状况下,自变量每增长一个单位因变量的变化。
若是按照你的理解假设X为地区变量,X的取值为1表明山西;2表明陕西;3表明江苏;4表明江西,那么回归完了之后如何来解释X前面的参数:X前面的参数表示X每增长一个单位因变量增长多少,而此时按照X的取值,陕西和山西之间相差一个单位,陕西和江苏之间也是差一个单位、江苏和江西之间也差一个单位,那么这个系数到底是说明陕西和山西之间的差异呢?仍是陕西和江苏仍是江苏和江西之间的差异呢?这显然没法解释。还有X前面的回归参数是一个常数,那么就是说陕西和山西、陕西和江苏、江苏和江西之间因变量的差别是相同的,这显然是不合理的。
要把四个省份用数值区分开来,用1,2,3,4呢?那用10,20,30,40也能够,那样的话参数估计量就更无法解释。因此,虚拟变量的定义必定是按照1和0来定义,便是就等于1,不是就等于0,好比,假设模型中有常数项,那么能够定义3个虚拟变量,D1为陕西(是陕西D1=1,不是陕西D1=0);D2为江苏(是江苏D2=1,不是江苏D2=0);D3为江西(是江西D3=1,不是江西D3=0),那么山西呢?若是D1,D2,D3都同时为0,确定就是山西了,这样回归以后D1前面的参数代表了陕西与山之间的差异;D2前面的参数代表了江苏与山西之间的差别;D3前面的参数代表了江西与山西之间的差别,参数的经济意义很是明确。从深层次上讲虚拟变量模型其实是解决了方差分析只能说明不一样省份之间有无差别,而不能说明不一样省份之间的这种差别究竟有多大的问题。
spss中设置虚拟变量
http://cos.name/cn/topic/306/
摘要
若是自变量是多分类的,若是数据类型是(ordinal)整序变量,则不用设置哑变量,若是是多分类名义变量(观测类型是norminal)则必须设置哑变量,SPSS会自动设置,但具体设置也能够本身选择,通常默认的状况下,是以最后一个组为对照组。
ordinal的时候,和nomial会有比较大的不一样的处理方式,能够参考专门讲ordinal变量分析的资料,或者logistic方面的资料,总之要谨慎使用。