2016年1月5日星期二

KNN 算法 Python 实现

【概述】
K-近邻算法采用不同特征值之间的距离方法进行分类。

优点:精度高,对异常值不敏感,无数据输入假定;
缺点:计算复杂度高,空间复杂度高;
适用数据范围:数值型和标称型

【实现原理】
  1. 选择一种距离计算方式, 通过数据所有的特征计算新数据与已知类别数据集中的数据点的距离
  2. 按照距离递增次序进行排序,选取与当前距离最小的k(一般不超过20)个点
  3. 对于离散分类,返回k个点出现频率最多的类别作预测分类;对于回归则返回k个点的加权值作为预测值
【算法关键】
  1. 数据的所有特征都要做可比较的量化
  2. 需要计算distance的函数
  3. 确定K值
【实现步骤】
收集数据:可以使用任何方法;
准备数据:距离计算所需要的数值,最好是结构化的数据格式(可能需要归一化数据)
分析数据:可以使用任何方法;(可视化方法找出数据大致关系)
测试算法:计算错误率(构建分类器)
使用方法:首选需要输入样本数据和结构化的输出结果,然后运行K-紧邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分了你执行后续的处理(实例化分类器)

【算法实例】


2016年1月4日星期一

【转】数据科学家需解答的77个问题

假的数据科学家往往是某个特定学科的专家,并且坚持他们的学科是唯一真正的数据科学。这种信念没有抓住数据科学的要点,数据科学涉及到应用全部科学工具和技术(数学、计算机、可视化、分析、统计、实验、问题定义、模型构建和验证等等)以得到来自数据的发现、洞察和价值。
——Kirk Borne,Booz Allen Hamilton的首席数据科学家和RocketDataScience.org的创始

----数据挖掘---
1、你处理过的最大的数据量?你是如何处理他们的?处理的结果。
2、告诉我二个分析或者计算机科学相关项目?你是如何对其结果进行衡量的?
3、什么是:提升值、关键绩效指标、强壮性、模型按合度、实验设计、2/8原则?
4、什么是:协同过滤、n-grams, map reduce、余弦距离?

10、什么是概率合并(AKA模糊融合)?使用SQL处理还是其它语言方便?对于处理半结构化的数据你会选择使用哪种语言?
11、你是如何处理缺少数据的?你推荐使用什么样的处理技术?

29、你可以使用excel建立逻辑回归模型吗?如何可以,说明一下建立过程?
30、在SQL, Perl, C++, Python等编程过程上,待为了提升速度优化过相关代码或者算法吗?如何及提升多少?
31、使用5天完成90%的精度的解决方案还是花10天完成100%的精度的解决方案?取决于什么内容?
32、定义:QA(质量保障)、六西格玛、实验设计。好的与坏的实验设计能否举个案例?
33、普通线性回归模型的缺陷是什么?你知道的其它回归模型吗?
34、你认为叶数小于50的决策树是否比大的好?为什么?
35、保险精算是否是统计学的一个分支?如果不是,为何如何?
36、给出一个不符合高斯分布与不符合对数正态分布的数据案例。给出一个分布非常混乱的数案例。
37、为什么说均方误差不是一个衡量模型的好指标?你建议用哪个指标替代?
38、你如何证明你带来的算法改进是真的有效的与不做任何改变相比?你对A/B测试熟吗?
39、什么是敏感性分析?拥有更低的敏感性(也就是说更好的强壮性)和低的预测能力还是正好相反好?你如何使用交叉验证?你对于在数据集中插入噪声数据从而来检验模型的敏感性的想法如何看?
40、对于一下逻辑回归、决策树、神经网络。在过去15年中这些技术做了哪些大的改进?
41、除了主成分分析外你还使用其它数据降维技术吗?你怎么想逐步回归?你熟悉的逐步回归技术有哪些?什么时候完整的数据要比降维的数据或者样本好?
42、你如何建议一个非参数置信区间?
43、你熟悉极值理论、蒙特卡罗逻辑或者其它数理统计方法以正确的评估一个稀疏事件的发生概率?
44、什么是归因分析?如何识别归因与相关系数?举例。
45、如何定义与衡量一个指标的预测能力?
46、如何为欺诈检验得分技术发现最好的规则集?你如何处理规则冗余、规则发现和二者的本质问题?一个规则集的近似解决方案是否可行?如何寻找一个可行的近似方案?你如何决定这个解决方案足够好从而可以停止寻找另一个更好的?
47、如何创建一个关键字分类?
48、什么是僵尸网络?如何进行检测?

57、是假阳性好还是假阴性好?
58、你熟悉价格优化、价格弹性、存货管理、竞争智能吗?分别给案例。
59、Zillow’s算法是如何工作的?
60、如何检验为了不好的目的还进行的虚假评论或者虚假的FB帐户?
61、你如何创建一个新的匿名数字帐户?

64、你用过时间序列模型吗?时滞的相关性?相关图?光谱分析?信号处理与过滤技术?在什么样的场景下?

--数据开发---
49、你有使用过API接口的经验吗?什么样的API?是谷歌还是亚马逊还是软件即时服务?
50、什么时候自己编号代码比使用数据科学者开发好的软件包更好?
51、可视化使用什么工具?在作图方面,你如何评价Tableau?R?SAS?在一个图中有效展现五个维度?
52、什么是概念验证?
54、你熟悉软件生命周期吗?及IT项目的生命周期,从收入需求到项目维护?
55、什么是cron任务?
63、你认为帐号与密码输入的登录框会消失吗?它将会被什么替代?
67、什么是效率曲线?他们的缺陷是什么,你如何克服这些缺陷?
68、什么是推荐引擎?它是如何工作的?
69、什么是精密测试?如何及什么时候模拟可以帮忙我们不使用精密测试?

72、什么是一个好的、快速的聚类算法的的计算复杂度?什么好的聚类算法?你怎么决定一个聚类的聚数?
74、什么让一个图形使人产生误解、很难去读懂或者解释?一个有用的图形的特征?
76、你觉得下一个20年最好的5个预测方法是?

6、如何设计一个解决抄袭的方案?
7、如何检验一个个人支付账户都多个人使用?
8、点击流数据应该是实时处理?为什么?哪部分应该实时处理?


--数据库--
16、你参与过数据库与数据模型的设计吗?
17、你是否参与过仪表盘的设计及指标选择?你对于商业智能和报表工具有什么想法?
18、你喜欢TD数据库的什么特征?
19、如何你打算发100万的营销活动邮件。你怎么去优化发送?你怎么优化反应率?能把这二个优化份开吗?
20、如果有几个客户查询ORACLE数据库的效率很低。为什么?你做什么可以提高速度10倍以上,同时可以更好处理大数量输出?
21、如何把非结构化的数据转换成结构化的数据?这是否真的有必要做这样的转换?把数据存成平面文本文件是否比存成关系数据库更好?
22、什么是哈希表碰撞攻击?怎么避免?发生的频率是多少?
23、如何判别mapreduce过程有好的负载均衡?什么是负载均衡?
24、请举例说明mapreduce是如何工作的?在什么应用场景下工作的很好?云的安全问题有哪些?
25、(在内存满足的情况下)你认为是100个小的哈希表好还是一个大的哈希表,对于内在或者运行速度来说?对于数据库分析的评价?
26、为什么朴素贝叶斯差?你如何使用朴素贝叶斯来改进爬虫检验算法?
27、你处理过白名单吗?主要的规则?(在欺诈或者爬行检验的情况下)
28、什么是星型模型?什么是查询表?

5、如何让一个网络爬虫速度更快、抽取更好的信息以及更好总结数据从而得到一干净的数据库?

--数据故事---
65、哪位数据科学有你最佩服?从哪开始?
66、你是怎么开始对数据科学感兴趣的?
70、你认为怎么才能成为一个好的数据科学家?
71、你认为数据科学家是一个艺术家还是科学家?

62、你有没有想过自己创业?是什么样的想法?
56、你是一个独身的编码人员?还是一个开发人员?或者是一个设计人员?
53、你主要与什么样的客户共事:内部、外部、销售部门/财务部门/市场部门/IT部门的人?有咨询经验吗?与供应商打过交道,包括供应商选择与测试。
77、你怎么马上就知道在一篇文章中(比如报纸)发表的统计数字是错误,或者是用作支撑作者的论点,而不是仅仅在罗列某个事物的信息?例如,对于每月官方定期在媒体公开发布的失业统计数据,你有什么感想?怎样可以让这些数据更加准确?
9、你认为哪个更好:是好的数据还是好模型?同时你是如何定义“好”?存在所有情况下通用的模型吗?有你没有知道一些模型的定义并不是那么好?
73、给出一些在数据科学中“最佳实践的案例”。
75、你知道使用在统计或者计算科学中的“经验法则”吗?或者在商业分析中。
12、你最喜欢的编程语言是什么?为什么?
13、对于你喜欢的统计软件告诉你喜欢的与不喜欢的3个理由。
14、SAS, R, Python, Perl语言的区别是?
15、什么是大数据的诅咒?


2015年7月28日星期二

回归树与分类树的区别

一、决策树的类型 
在数据挖掘中,决策树主要有两种类型:

分类树 的输出是样本的类标。
回归树 的输出是一个实数 (例如房子的价格,病人呆在医院的时间等)。

术语分类和回归树 (CART) 包含了上述两种决策树, 最先由Breiman 等提出.分类树和回归树有些共同点和不同点—例如处理在何处分裂的问题。

CART与ID3区别:
CART中用于选择变量的不纯性度量是Gini指数;
如果目标变量是标称的,并且是具有两个以上的类别,则CART可能考虑将目标类别合并成两个超类别(双化);
如果目标变量是连续的,则CART算法找出一组基于树的回归方程来预测目标变量。

在R中的实现 回归树和分类树
rpart通过method 方法来区别,回归树method 为默认,分类树 method = 'class'
randomForest  分类树是时候需要将因变量变为factor类型

RFM 模型和应用

【背景介绍】
网站一般对新用户和流失客户会做专门的运营活动,从开源和节流两个层面上保证付费盘子的扩大,收益也比较有效,但对于现金牛用户(除了新用户和流失客户)却很少进行精细化运营,从而难保证营收的最大化。这里我们引入用户分层的模型RFM,来解决此精细化运营问题,此模型在电信等其他行业已经成熟运用。
RFM(Recency,Frequency,Monetary)分析是一种marketing技术,主要是通过分析付费用户的行为,对付费用户进行分层,从而达到精准营销的目的。可参考 : RFM模型_wiki。RFM的变体 RFD(Recency,Frequency,Duration)也可用与于对网站用户的其他行为分析,详情及其他变体不在此赘述。
【参数解释】
  • R:最近一次消费距今天数(Recency)
  • F: 消费频率(Frequency)
  • M:消费金额(Monetary)
【前提假设】
  • 最近购买产品的用户更容易产生下一次消费行为
  • 消费频次高的用户,用户满意度高,忠诚度高,更容易产生下一次消费行为
  • 消费金额高的用户更容易带来高消费行为
  • 具有相同RFM_value  的用户有相似的市场行为
【数据挖掘&数据化运营】
这里主要介绍RFM模型在付费用户的应用(Case Study),主要分为以下几个步骤:
Step1,RFM 分析和付费用户分层(cluster)
Step2,预测用户在不同cluster的流转 (classification)
Step3,付费用户的产品推荐(association rule)
具体环节参考图1:

图 1
一、RFM分析和付费用户分层
1.1 RFM指标重新定义
  • R (Recency)近度,用户最后一次付费(cash)日期距今天数
  • F(Frequency) 频度,用户在半年时间内的付费(cash)次数
  • M(Monentary) 值度,用户在半年时间内总付费(cash)金额
1.2 RFM分析
R-F-M分别按照5,4,3,2,1进行赋值,分别给出R_Score,F_Score,M_Score,
  • R 按照数值递减排列,按数值区间依次分别赋值5,4,3,2,1
  • F 按照数值递增排列,按数值区间依次分别赋值5,4,3,2,1
  • M 按照数值递减排列,按数值区间依次分别赋值5,4,3,2,1
1.3用户分层(聚类方法)
按照R_Score,F_Score,M_Score进行用户聚类,采用方法为K-Means,后续优化采用K-Means + + ,共分8类,并给RFM赋予权重(目前权重采用R:F:M = 0.25:0.25:0.5),计算各类的用户价值。
1.4 结果解释
  • 【cluster4,3,8】重要价值客户,占比18%
  • 【cluster5,7】重要保持客户 ,用户近度比较低,需要关怀
  • 【cluster6】重要挽留客户,用户近度和频度都较低
  • 【cluster2】一般发展用户,用户频度和值度较低,可做up营销
  • 【cluster1】44%的用户贡献值很低,为无价值客户,可以采用一般挽留手段
说明:
  • 这里将真实数据做隐藏,为商业机密
  • 用户分为8个cluster
  • 最后一次付费距今,购买频次,总付费金额,R,F,M均为每个cluster的均值
  • 客户价值 = 0.25*R + 0.25*F+0.5*M,反映用户的价值
1.5 数据运营案例
这里先选取重要保持客户【cluster5,7】作为营销的案例,主要分为2个环节:营销测试和营销正式上线,正式上线时考虑开发成本,选取的是模型的简化规则。具体营销内容暂不方便透漏。
1.5.1营销测试
提取重要维持客户进行用户唤回,做review。
1.5.2营销上线
营销测试结果证明ROI还可以,模型进一步简化后,正式上线营销活动。
二、预测用户在不同cluster的流转(待续)