出家如初,成佛有余

史上最全面在国外接收国内手机短信解决方案

Posted in 移动互联网 by chuanliang on 2019/04/10

出国留学或工作,如果要继续使用国内的一些服务,就面临需要用国内手机号接收短信验证码的场景,例如:各家银行,微信、微博、淘宝、美团、支付宝、12306等各种互联网服务。

这里汇总一下在国外接收国内短信的方案,可以说是史上最全面的解决方案,不管是土豪还是屌丝、科技小白还是极客,总有一款适合你。

优先推荐方案:

对大部人而言,强烈建议出国时候,尽量保留国内手机号,不要注销掉国内手机号,开通运营商最低月租套餐,开通国际漫游,同时关闭移动数据业务、彩信业务。
强调一下:如果不是土豪,一定要确认关闭掉移动数据业务,除了可以在手机上关闭外,安全起见,可以找运营商客服人工关闭掉。
之所以强调要关闭移动数据业务,因为接收彩信(包括运营商发送的服务彩信账单等)、手机报、邮件推送、软件自动更新等都会消耗数据流量。
之所以要开通国际漫游,因为要接收短信,需要通过接入当地网络。由于接收短信,大部分国家都是免费的,因此如果只是接收短信,虽然是漫游,但不需要额外付费,不用担心费用问题。

下面细说一下在国外接收国内短信的各种方案。

一、继续使用原有国内手机号

1.1、优先推荐:运营商最低月租套餐+开通国际漫游+关闭移动数据业务

1.2、双卡双待方案

1.2.1、对Android手机,可以采用双卡手机或两台android。

要实现两台android手机间的短信转发可以考虑采用绿芽短信转发到微信,IFTTT实现短信转发。

 

1.2.2、iPhone手机,可以找一台旧的iPhone手机放在国内家里

要实现两台iPhone手机间短信转发,两部 iPhone 均启用 iMessage,iCloud 用同一个 Apple ID登陆,通过iMessage信息转发功能自动转发到主力手机上。

 

1.2.3、专用设备

有一些专用设备用于实现双卡双待、国外接收短信的需求,包括双享号pro、旅信、络漫宝

 

1.2.4、极客方案

可以自己搭建树莓派/Asterisk/freePBX 来做转发,包括短信、语音、电话等

1.3、让国内的亲朋好友帮代接收

此方案需要经常麻烦亲朋好友,且时效性很难保证,只不过可以作为方案之一。

二、使用新的手机号

2.1、运营商一卡双号

2.1.1、中国电信

欧洲行:CTExcelbiz

美洲卡:CTExcel

 

2.1.2、中国移动

香港(CMHK):一咭两號、一咭多號

英国:CMLink

 

2.1.3、中国联通

美洲卡

跨境王

CUniq

中国通欧洲预付费卡

 

2.2、运营商虚拟手机号

中国移动:无忧行(原来的Jego)

中国移动:和多号

中国电信:天翼小号

中国联通:隐私小号

 

2.3、虚拟运营商手机号

阿里小号

易博通 eSender

 

2.4、国内亲朋好友代收

 

三、一次性注册使用

国内有一堆接码平台,特别适合一些只需要一次性注册使用的场景。对一些不重要的网站服务,可以考虑使用此类平台。为避免广告嫌疑,各位自行搜索。

 

直观起见,来一张解决方案的脑图:

 CMLink,CTExcel, CTExcelbiz, CUniq, IFTTT, jego, 双享号pro, 接码平台, 旅信, 无忧行, 易博通, 树莓派, 短信, 络漫宝, 虚拟手机号, 虚拟运营商, 阿里小号

脑图的慕布分享:https://mubu.com/doc/12qFdXUYuM

 

Advertisements

使用国外手机号接码解决Google 账号注册问题

Posted in 技术相关 by chuanliang on 2019/03/28

想注册新的google账号,一直卡在手机验证环节,用大陆手机号,始终提示:此电话号码无法用于进行验证。
试验了各种方法依然卡在手机号验证环节,例如:
1、使用google系app注册,例如gmail app、youtube app等
2、通过网易邮箱大师、腾讯邮箱注册
3、选择香港,输入+86

国内有各种用于网赚的接码平台,因此第一个想到能不能找个海外手机号来接收google验证码。

方案1:使用虚拟号码接收

用已有的textnow、talkatone号码来接收,仍然提示号码无法用于验证。google应该对是否为虚拟号码、是否为手机号码做了检测。

按照google注册规则,验证的号码,只允许移动电话号码,不能用固定电话号码。

有一些所谓“Carrier Lookup Service”可以检查使用的号码是固定电话还是手机号。例如:https://freecarrierlookup.com/ 只不过此类服务基本上只提供个别国家的号码查询服务。

 

方案2:购买国外实体SIM卡来注册

如果有需要,倒可以购买国外运营商的实体电话卡来注册,例如Skinny、Lycamobile、越南、缅甸的。
只不过如果只是用于注册google账号,成本有点高。

 

方案3:使用国外Phone Verified Accounts(PVA)服务

搜索国外类似于接码平台的服务,由于不熟悉老外术语,无法明确搜索关键词,用sim online、sms online之类关键词搜索半天,只找到一堆免费的在线接短信平台,例如:国内外免费接收短信验证码平台网站

这些免费服务,已经被大量使用过,用于注册google基本上都拒绝。

想找一些相对便宜的收费服务,通过google.com+similarsites.com的方案,总算搞明白老外对接码服务的叫法,定位了搜索关键词

总结搜索过程,可用的搜索关键词:

Phone Verified Accounts 这个相对精准,老外一般叫PVA

Phone verification service

Toll free

Disposable SMS Numbers

 

结合google搜索结果和reddit、quora等论坛以及类似pvacreator、instadub这样的营销软件重点推荐的服务,下面几家重点推荐:

http://www.getsmscode.com/ 与http://hs3x.com/是同一家运营商,似乎为中国人运营的

https://www.smspva.com/

https://www.textverified.com/

除了这几家,推荐大家使用 similarsites.com 这样的服务,探索一下其他类似的Phone verification service,对比一下价格、充值方式、支持的服务等,找到符合自己需求的服务商。

其他一些服务商:

https://www.smsaccs.com

https://numberproxy.com

http://numbers.city

https://hottelecom.biz

https://onlinesim.ru

https://5sim.net/

https://www.pvacodes.com

https://sonetel.com

https://freeje.com/en/

https://mobilesms.io

https://www.proovl.com

https://www.smsglobal.com

 

在使用国外接码服务接受google验证码后,在完成注册前,可以绑定+86的手机号,也可以在注册成功后更换为+86手机号(需要往PVA的手机号发验证码)。

互联网支付对信用卡支付有多大影响?

Posted in 电子商务&互联网金融 by chuanliang on 2019/03/07

对知乎问题《互联网支付对信用卡支付有多大影响?》的回答。

我理解提问者是要问:网络支付对信用卡支付的影响。由于第三方支付的银行卡收单(线下收单)、移动支付、互联网支付、跨境支付等支付服务对信用卡支付都有影响,因此以下将内容扩展为:第三方支付对信用卡支付的影响。

这里只谈自己的直观感受,数据控可以参考央行、银监会以及艾瑞、易观的相关数据考证一下具体情况。

1、第三方支付推动了信用卡支付的普及和发展

第三方支付对信用卡支付的普及影响主要有几方面

a、第三方支付推动了电商、外卖、打车等行业繁荣,尤其是快捷支付的出现,极大程度提升了支付体验,从而拓展了信用卡支付的场景,提高了使用频次。

b、第三方支付极大程度上推动了信用卡支付的交易量,尤其是类似套现这样的灰色交易。可以说第三方支付,包括银联收单业务,有很大程度的交易量都来自于这些灰色业务,主要包括线下POS、手刷、线上套现等。

c、第三方支付推动了跨境支付蓬勃发展,也带动了信用卡支付发展

d、支付宝/微信扫码支付等移动支付手段的兴起,降低了普通消费者在线下POS刷信用卡正常消费的频次,带动了信用卡网络支付交易量。

 

2、第三方支付对信用卡支付生态不同角色影响不同

对发卡行没有大的影响,发卡行的信用卡发卡量还持续上升,交易量也持续增加。

对收单行影响也不大,第三方支付兴起后,很少有银行自己去做直接做收单,除了一些优质的商家。

对银联这样的清算影响较大,虽然银联的交易量还在稳步增加,但走银行卡收单的很多信用卡交易是套现交易,银联丧失掉了很多优质商户。

 

3、第三方支付推动了“网络信用卡”类的兴起,也变相推动了信用卡支付发展

第三方支付的普及,让淘宝、京东、京东这样拥有闭环交易场景的互联网巨头对客户的画像更为全面、细致、精准,相对于传统银行信用卡审批在额度授信、个性化定价、风险控制等方面更灵活,效率更高。因此像蚂蚁花呗、京东白条这样2C的网络信用卡以及2B的商家授信类产品迅速崛起。

这些产品用户与信用卡持卡人有一定的重叠,但由于国内金融体系的不完善,包括信用卡或网络信用卡都未完全满足目标用户需求,两者不构成真正意义上的竞争关系。相反,个人认为对信用卡支付有推动作用,网络信用卡培育了90后,00后透支消费习惯,相对于网络信用卡,银行信用卡成本更低,门槛更高,这些网络信用卡的用户可以说也是信用卡的潜在目标客户。

 

题外话,关于网络支付,互联网支付等的的分类可以参考《非金融机构支付服务管理办法》中的划分方法:

非金融机构支付服务,是指非金融机构在收付款人之间作为中介机构提供下列部分或全部货币资金转移服务:

(一)网络支付

(二)预付卡的发行与受理;

(三)银行卡收单;

(四)中国人民银行确定的其他支付服务。

本办法所称网络支付,是指依托公共网络或专用网络在收付款人之间转移货币资金的行为,包括货币汇兑、互联网支付、移动电话支付、固定电话支付、数字电视支付等。

代扣支付失败,可以切换渠道重新发起吗?

Posted in 电子商务&互联网金融 by chuanliang on 2019/03/02

在知乎的问题回答《代扣支付失败,可以切换渠道重新发起吗?

由于是代扣,商家要发起一笔代扣,必须具备如下几个条件

1. 商户签约及接入:商家在提供支付通道的第三方支付服务商签约并完成接入

2. 用户签约:在商家签约前提下,用户通过商家平台向第三方支付发起代扣签约请求,授权必须针对指定的代扣通道(例如工行小额代扣通道、招行无磁无密代扣通道等)。

3、第三方支付与提供代扣通道的银行等签约

对第三方支付服务商,会按照商户签约协议id+用户签约协议id(隐含了特定的代扣通道、金额、频次等)对一笔代扣请求鉴权。

对银行等提供代扣通道服务的服务商,会按照支付服务商签约id+商户签约id+用户签约id对一笔代扣请求鉴权(这几要素根据代扣通道服务商与第三方支付的合作情况有所不同)。

以上说的标准意义上的代扣,快捷支付情况稍微有点差异,核心差异在于第三方支付是否在中间提供了单独的钱包账户。但原理类似。

说起来太抽象,换成场景的实际例子就是:

假定同一个商家接入了三家第三方支付的代扣通道,则如果要实现在某一通道支付失败后,切换到另外一个通道代扣,则需要用户提前通过商家平台先三家第三方支付分别发起代扣授权签约请求。

题外话:其实应该画一张图更能形象以上说明问题,懒得画了。

1、那么从用户体验角度,有没有可能只需要用户输入一次资料,由系统自动完成各个通道的自动签约?

市面上确实有一些支付公司的部分通道提供了自动签约的功能,但由于风险过大,一般都不会直接对外开放,即便开放也有诸多限制。

因此可以说这条路行不通。对于代扣,必须有用户明确授权协议,否则后期投诉、拒付之类问题会烦死运营人员。

2、假定用户已经在多条通道已经授权,那么系统能否自动发起代扣呢?

建议:尽量避免此类操作。

原因一:支付结果可能是非终态。

做支付的同学都遇到过,即便是上游发卡行订单结果通知支付失败或成功的情况下,隔日对账也会小概率出现订单状态反转的情况,尤其是一些小银行的支付通道。

代扣失败的原因很多,例如余额不足,金额超过限额等等,而大部分代扣通道提供的错误信息有限,很难作为代扣是否真正失败的依据。

原因二:成本考虑。有很多代扣通道是按照发起代扣,不论成功失败就扣费的。

原因三:业务逻辑考虑。题主描述的需求场景,大部分与小贷相关。由于基本上所有代扣通道都不会提供账户余额查询功能,只会对每一次代扣请求返回成功、失败信息。那么在发起代扣请求时,全额扣款失败情况下,要不要按照更低金额扣款?按多少扣?

以上几个问题纠缠在一起,会出现一堆问题。

区块链支付系统与传统支付系统有哪些不同?

Posted in 电子商务&互联网金融, 区块链 by chuanliang on 2019/01/31

在这里不讨论区块链支付有没有未来、加密币是不是庞氏骗局、是不是割韭菜这样形而上的问题,只从技术角度探讨区块链支付相对与传统第三方支付的一些差异。

按照以上对比,似乎区块链支付从各方面都碾压传统第三方支付平台。

其实不然,相对于成熟的基于法币支付体系的第三方支付,区块链支付在实际应用中还存在诸多致命性问题,例如:

1、法币-加密币出金、入金难题

区块链支付只是解决了区块链及加密币体系内的支付问题,但没有解决“用户持有的加密币从什么地方来?用户持有的加密币怎样变现为法币?”。

可以说:没有通畅的法币-加密币的出金、入金解决方案,极大程度制约了区块链及加密币的发展。

受制于各国政府KYC、AML合规性要求,目前市场上的OTC在用户体验、市场流动性、交易速度、交易成本等方面都存在较大问题。

2、币价波动导致的资金安全风险

现实消费场景大部分商家只愿意接受法币结算,因此目前大部分应用场景下,都由支付服务商帮助商家收取加密币,然后以法币形式结算给商户。虽然可以通过币币交易、OTC交易等方式将收取的加密币通过量化交易算法转为稳定币或法币,但市场流动性、币价波动性、交易成本等因素导致支付服务商仍存在较大资金安全风险。

3、持有加密币、加密币钱包的受众人群及范围还是太少太少,还局限在小众圈子里,尤其是2017、2018火热的ICO割了一大堆韭菜后。

4、实际落地应用场景极少

这些致命问题什么时候能够解决,有什么好的解决办法呢?业内也在探索中。

一点体会:

最近一段时间,由于行业监管趋严,市场上出现了诸多新玩法,核心思路与区块链“去中心化”的核心理念不谋而合,还有一些创新玩法也尝试借鉴“去信任化”的思路,利用智能合约解决保证金缴纳去中心化担保问题。市场刚性需求倒逼金融服务“创新”,在此大变革进程中,丢掉各种噱头,回归到区块链最核心的理念和价值,与互联网成熟的应用场景结合,或许是寒冬中区块链项目最好的出路。

拼多多优惠券事故思考

Posted in 电子商务&互联网金融 by chuanliang on 2019/01/26
备注:博主在知乎关于拼多多优惠券事故邀请的回答。

回答很多了,大家从法律角度、运营角度、风控反欺诈等角度阐述得比较详细了。我只谈对问题原因的看法。

与大部分回答看法不同,个人认为拼多多的风控反欺诈体系及风控意识应该不至于像大家说的那么弱智。拼多多在这几年发展过程中,一直是薅羊毛人群的重点对象,因此类似的挑战肯定都遇到过,也出现过大大小小的各种风控相关问题,要是能力差,早就死在路上。虽然这一次事故确实低级,但不至于冠上风控意识薄弱、风控能力不足帽子。

拼多多短短三年发展到现在规模,可以说互联网企业高速发展的典范,上述回答提到的反薅羊毛风控反欺诈体系、产品运营变更上线流程、风控实时告警体系、系统风控检测体系,我相信拼多多都有对应的体系、规章流程制度。像这样规模的企业,都有对应的专业人才,但问题是:为何这些体系、规章制度在简单的优惠券设置上线事件中没有一个环节及时发挥止损点作用?

对大部分互联网公司,风控反欺诈体系建设都有专属的部门来负责,其他业务都不能自造轮子,必须遵循统一的风控架构,也就是说:反薅羊毛、账户资金异常监控、业务流量异常监控等都会纳入到风控反欺诈体系中。在假定拼多多风控反欺诈能力不弱智的前提下,为何风控反欺诈体系未及时起到风控告警作用?

按照自己经验,这样的问题,不可能是单一原因,可能的原因:

a、业务部门基于业务高速发展、快速上线需要,并未真正按照风控规范体系要求将各种细化指标及业务数据上报风控平台,有些业务平台可能根本就接入风控平台;

b、风控部门、审计部门不愿意深入了解熟悉业务及产品,从而无法发现各种业务深层风险、业务交叉风险,风控部门只是按照想当然的经验、业务部门反馈,设置对应的风控规则,而这完全将风控交付给业务部门风险意识、经验、业务发展等诸多因素上;

c、企业在高速发展过程中,做取舍时候有意、无意忽视了各种警示信息

以拼多多事故为例,技术产品在做优惠券运营管理平台时候为了通用,可能不考虑金额上限及流程审核问题。但对一家公司而言,任何涉及资金投入的活动,不管是现金还是像优惠券这样的虚拟账户资金,都是公司财务资产,按照财务管理制度,针对不同金额肯定都有分级审批流程。拼多多这样上市企业,在上市前、上市后的各种IT审计、财务审计、管理审计等过程中,肯定都是知名审计所审计过的,那么问题来了,是哪个环节问题呢?

按照自我经验理解,应该是为了高速发展,主动延迟了一些“非高优先级”问题的解决时间点,于是一拖再拖,最终没有下文,成为惯例。

还能列举出一堆可能原因,这里要表达的核心观点为:拼多多事故表现为风控系统问题,但可能最本质的根源还是企业高速发展与管理精细化矛盾。

作为旁观者,提出问题总是最容易的。怎样解决以上一堆问题,尤其是对拼多多这样的高速发展企业?

这么多年的创业经历,让我越来越理解作为高速发展与管理精细化间矛盾和难处。对于通过模式创新起家的高速发展企业,意味着支撑模式创新的文化体系、管理体系、运营体系、技术体系等至少与已有的成功经验有所差异,各种体系建立只能参照别人成功经验但无法直接拿来就用。

有很多方法论体系可供参考,我这几年最受益匪浅的是RCA(Root Cause Analysis)制度,也就是在运营过程中,不管大事、小事都真正追根溯源,将每一次运营、运维事故都作为一次企业及团队成长、制度完善机会。

声明:与拼多多无任何利益相关关系。

https://www.zhihu.com/question/309682706/answer/582364228

Ethereum调用机制总结call/delegatecall/callcode/send/transfer

Posted in 技术相关 by chuanliang on 2018/04/02

Ethereum中涉及各种类型的方法调用。一个编程中常用的call概念,可能为Ethereum Vitrual Machine(EVM)内的call,又可能为EVM外的call,又涉及诸如Message/Transaction等基本概念;同时还包括call/delegatecall/callcode/send/transfer/sendTransaction等等方法。

对这些调用机制及基本概念的说明散落在 solidity文档黄皮书白皮书 中,初学者容易搞晕。这里对这些基本概念、调用机制及用法做一下整体梳理。

Ethereum调用机制总结

PDF版本:Ethereum调用机制总结

PNG版本:Ethereum调用机制总结

示例代码:测试代码下载

pragma solidity ^ 0.4.18;

contract A {
uint public var2;
uint public var1;
B b1;
address addrB;

function A() public {
b1 = new B();
addrB=address(b1);
}

function callSet(address addr, uint param) public returns(uint) {
//addr.call(bytes4(keccak256(“set(uint)”)), param); //使用了uint,调用不生效。应当使用uint256; uint是uint256的昵称,但在ABI调用时候,只能使用长类型。

//使用address.call
addr.call(bytes4(keccak256(“set(uint256)”)), param); //call 使用的是被调用者的存储,因此改变的是B.var1值

//使用实例方式,可以直接采用callee.method形式调用,从而直接获取函数返回值
/*
B b2 = B(addr);
uint result = b2.set(param);
return result;
*/

//使用 new B()方式方式调用
// uint  b1=b1.set(param);
// addrB.call(bytes4(keccak256(“set(uint256)”)), param);

return 1;
}

function delegatecallSet(address addr, uint param) {
//addr.delegatecall(bytes4(keccak256(“set(uint)”)), param); //使用了uint,调用不生效。应当使用uint256; uint是uint256的昵称,但在ABI调用时候,只能使用长类型。
addr.delegatecall(bytes4(keccak256(“set(uint256)”)), param); //delegatecall和callcode都是使用调用者的存储,特别要注意调用者和被调用者合约变量定义顺序,目前改变的是A.var2的值。
B b2 = B(addr);  //使用实例方式,可以直接采用callee.method形式调用,从而直接获取函数返回值
uint result = b2.set(param);
// uint  b1=b1.set(param);
// addrB.call(bytes4(keccak256(“set(uint256)”)), param);
}

function callcodeSet(address addr, uint param) {
addr.callcode(bytes4(keccak256(“set(uint256)”)), param);
}

function getVar1() public view returns(uint) {
return var1;
}

function getVar2() public view returns(uint) {
return var2;
}

function getAddr() public view returns(address) {
return addrB;
}
}

contract B {
uint public var1;
event MyEvent(uint param, uint result);

function set(uint param) public returns(uint) {
var1 = param;
MyEvent(param, 1);
return param;
}
}

R语言常用统计分布的蒙特卡洛模拟

Posted in 技术相关 by chuanliang on 2017/12/23

为加深对各种常用统计分布的理解,更好掌握R语言对应的各类分布的概率函数(d、p、q、r族)以及广义线性模型的使用,研究了一下常用统计分布数据的模拟生成方法,收获颇多。

各类常用统计分布蒙特卡洛模拟数据生成的大致思路:

1、构造自变量x的均匀分布
2、根据对应分布的均值函数,构造x变量对应的均值。(广义线性模型的link 函数参考
https://en.wikipedia.org/wiki/Generalized_linear_model#Link_function
3、将均值代入,R中对应分布的随机变量生成函数,得到因变量y(例如正态分布为rnorm、泊松分布为rpois)

代码:

#norm distribution simulation
set.seed(1234)
num=100
beta0=1
beta1=0.2
x=beta0+beta1*runif(n=num,-1,1)
y=rnorm(num,mean=x,sd=1)
model=glm(y~x,,family=gaussian(link=’identity’))

#possion distribution simulation
set.seed(1234)
num=100
beta0=1
beta1=0.2
x=beta0 + beta1*runif(n=num, min=0, max=5)
lambda=exp(x)
y=rpois(n=num, lambda=lambda)
model = glm(y~x, family=poisson(link = log))

#Exponential/Gamma distribution simulation
set.seed(1234)
num=100
beta0=1
beta1=0.2
x=beta0 + beta1*runif(n=num, min=0, max=5)
y=rexp(num,rate=exp(-x))
model=glm(y~x,,family=Gamma(link=’log’))
#使用nls模拟
df=data.frame(x,y)
model=nls(y~exp(a+b*x),data=df,start = list(a=0,b=0))

#logistic/probit distribution simulation
set.seed(1234)
num=100
beta0=1
beta1=0.2
x=beta0 + beta1*runif(n=num, min=0, max=5)
#logistic distribution logit=log(odds)=log(p/(1-p))
odds=exp(x)
probs=odds/(1+odds)
#probit distribution probit=Cumulative normal pdf
#probs=pnorm(x)

y=rbinom(n=num,size=1,prob=probs)
model=glm(y~x1+x2,family = binomial(link="logit"))

#bionimal/Categorical/Multinomial distribution simulation
library(nnet)
y=rbinom(n=num,size=3,prob=probs)
model <- multinom(y ~ x1 + x2)

代码下载


参考资料:《 Monte Carlo Simulation and Resampling Methods for Social Science》

https://www.sagepub.com/sites/default/files/upm-binaries/57233_Chapter_6.pdf

R中fitted()与predict()函数关系以及predict type参数解析

Posted in 技术相关 by chuanliang on 2017/12/17

R文档对fitted()、predict()函数以及predict函数type参数取值的具体含义说得很不清楚,网上也没有清晰的解释。总结一下。

一、说明

目的一、R中fitted和predict的关系
目的二、以logistic为例,解析predict中type参数不同取值的关系

1、R中fitted和predict的关系
fitted对无link函数模型(例如线性回归),fitted值和predict的值相同
对有link函数的模型(例如logistic、Binomial),
fitted是link函数作用前(或者link逆函数inverse of the link function作用后)的预测值
predict是link函数作用后(或link逆函数inverse of the link function作用前)的预测值
link function  https://en.wikipedia.org/wiki/Generalized_linear_modelLink_function

2、logistic中predict中type参数不同取值的关系
predict中type参数的可选项有:default, type="link",type="response",type="terms"

假设log(odds)=log(p/(1-p))=alpha+beta1*x1+beta2*x2+…+betan*xn
a.、type="link",type为缺省值
  type="link"为缺省值,给出logit线性函数预测值,link=alpha+beta1*x1+beta2*x2+…+betan*xn

b、 type="response"
  type="response" 给出概率预测值。
  response=predict(model,type = "response"),则
  log(response/(1-response))=alpha+beta1*x1+beta2*x2+…+betan*xn=link,或:link=exp(response)/(1+response)

c、type="terms"
  type="terms"表示各个变量的预测值(包括前面参数在模型中的值)。
  terms=predict(model, newdata = traindata,type = "terms")的结果为各个变量term的值
  term1=beta1*x1,term2=beta2*x2, …
  sum(term1,…,termn)+attr(terms,"constant")=log(odds)=log(response/(1-response))
  attr(terms,"constant")的含义 http://blog.minitab.com/blog/adventures-in-statistics-2/regression-analysis-how-to-interpret-the-constant-y-intercept

二、代码

代码下载

#fitted和predict的关系演示
#linear regression
#no link function
num=100
x1=rnorm(num)
x2=rnorm(num)
lr=1+2*x1+3*x2
model=lm(y~x+x2)

fit=fitted(model)
pred=predict(model)
print(all.equal(fit, pred))
#对无link函数的模型,fitted值与predict值相同

#possion
#link=log
num=100
x=rnorm(num)
y=rpois(num,lambda = exp(x))
model = glm(y~x, family="poisson")
fit=fitted(model)
pred=predict(model)
print(all.equal(log(fit),pred))
print(all.equal(fit,exp(pred)))
#对有link函数的模型,fitted值为link函数作用前的值,predict为link作用后的值

#logistic
#link=logit=log(p/(1-p))
num=100
x1=rnorm(num)
x2=rnorm(num)
lo=1+2*x1+3*x2
odds=exp(lo)
probs=odds/(1+odds)
y=rbinom(n=num,size=1,prob=probs)
model=glm(y~x1+x2,family = binomial(link="logit"))

fit=fitted(model)
pred=predict(model)
print(all.equal(log(fit/(1-fit)),pred))
print(all.equal(fit,exp(pred)/(1+exp(pred))))
#对有link函数的模型,fitted值为link函数作用前的值,predict为link作用后的值

#以logistic模型为例子,验证predict中type为缺省值,type="link",type="response",type="terms"关系
#predict中type="link"时的fitted及predict
link=predict(model,type="link")
print(link)
print(all.equal(pred,link))
#type=link为缺省值

#predict中type="response"时的fitted及predict
response=predict(model,type="response")
print(response)
print(all.equal(fit,response))
print(all.equal(pred,log(response/(1-response))))

#type="terms"时的fitted及predict
terms<- predict(model,type="terms")
term=terms[,1]+terms[,2]+attr(terms,"constant")
print(term)
print(all.equal(link,term))
print(all.equal(response,exp(term)/(1+exp(term))))

参考资料:

https://stackoverflow.com/questions/12201439/is-there-a-difference-between-the-r-functions-fitted-and-predict

资产端线上对接资金端系统?

Posted in 电子商务&互联网金融, 产品管理 by chuanliang on 2017/12/16

我在知乎关于提问“资产端线上对接资金端系统?” https://www.zhihu.com/question/67426957/answer/277256804  的回答。

虽然最近现金贷整顿,但此问题涉及的内容的应用场景挺多的,简单说一下思路。

资产端平台接入资金端平台时候,需要重点考虑两大部分的内容:

1、交易结构设计

由于合作双方监管合规性问题,交易结构设计主要解决资金端资金怎样以合规、安全的形式流转到资产端。这里的合规性,不单纯只是资产端或资金端,双方都涉及合规性。

在交易结构设计时候,涉及很多因素,例如:

a、资产端的资质,例如是P2P平台、互联网小贷平台、消费金融公司、助贷机构等的资金合规来源渠道并不同。

b、资金端的资质,例如是金融机构(银行、保险公司、融资性担保公司等)、P2P、互联网小贷、消费金融公司、企业、股东等的资金。

c、资产方的资产质量

d、实际放款方,资产最终归属。涉及放款资质,是否需要债权转让、ABS等

e、担保方式

f、资金放款、还款流转流程,支付/代扣渠道

g、资产端的保证金、杠杆、资金成本等

交易结构设计是整个合作最核心的内容,也是最难的地方,需要双方一起就双方实际情况探讨合规的合作模式。

交易结构设计影响了资产端、资金端合作模式、金融产品设计、平台对接的业务流等内容。

2、平台化设计

低成本、稳定、多元化的资金来源是资产端平台的核心竞争力,因此一般情况下,资产端都会尽量接入更多的资金端平台,以保证资金的持续供给。因此从平台建设角度来说,需要在设计时候考虑平台的扩展性、可运营性等因素,以满足多个资金端接入的需求。

在合作之初以验证合作模式为主,因此平台功能平台功能没必要设计得过于复杂。但随着业务规模扩大,低成本的运营能力成为平台的核心能力之一,可以说每一个资产端的资金对接平台最终都会演变成资产端、资金端的撮合路由平台。

一张图供参考

产品架构图