写点什么

极客大学 - 架构师训练营 第十三周作业

用户头像
9527
关注
发布于: 2020 年 12 月 20 日

作业一

题目一: 常用的数据分析指标有哪些?

你所在的行业,常用的数据分析指标有哪些?请简述。


答案:

互联网金融定义

首先来看看互联网金融的定义,互联网金融指将传统金融机构与互联网企业利用互联网技术和信息通信技术实现资金融通、支付、投资和信息中介服务的新型金融业务模式。它不是互联网和金融业的简单结合,而是在实现安全、移动等网络技术水平上,被用户熟悉接受后(尤其是对电子商务的接受),自然而然为适应新的需求而产生的新模式及新业务,它是传统金融行业与传统金融相结合的新兴领域。


由于互联网金融概念较为宽泛,所涉及的领域有支付投资理财信贷征信虚拟货币发行(比特币等)、金融产品搜索等多个领域,其中支付、信贷、理财是目前互联网金融最主要的三大业务。从互联网金融公司的金融属性,及经营风险的角度来看,风险贯穿互联网金融公司的企业日常运营、IT 平台运营等过程。根据互联网金融公司的共性,可以归纳出总结出一部分相似的量化指标。


然而互联网金融所涉及的各不同领域所关注的核心指标并不相同,即便是相同领域的公司,由于核心业务模式的差异导致大家所关注指标也不相同。因此从数据分析的角度来看,最重要的是结合公司的核心业务模式来归纳数据分析指标。


互联网金融数据指标特征
  • 好的数据指标是具有可比较性的

  • 好的数据指标是简单易懂的

  • 好的数据指标是一个比率

  • 好的数据指标是能改变行为

如何寻找数据指标

定性指标和量化指标

如果定量数据回答的是“什么”和“多少”这样的问题,那定性数据则是回答“为什么”。定量数据排斥主观因素,定性数据吸纳主观因素。

  • 定性指标:通常是非结构化的,经验性的,揭示性的,难以归类的,回答“为什么”。

  • 量化指标:涉及很多数值和统计数据,提供可靠的量化结果,但缺乏直观的洞察。量化数据使用方便,具有科学性,也易于归类,外推。如电影评分,点赞数等量化数据。回答“什么”和“多少”。


虚荣指标和可付诸行动的指标

  • 虚荣指标:如果你有一个数据,却不知道如何根据它采取行动,就是虚荣指标。需要利用数据揭示信息,指明方向,帮助产品改进商业模式,决策下一步的行动,这才是“数据驱动决策”。一般来说有 8 个需要提防的虚荣指标:点击量,页面浏览量,访问量,独立访客数,粉丝/好友/赞的数量,网站停留时间/浏览页数,收集到的用户邮件地址数量,下载量。

  • 可付诸行动的指标:是“活跃用户占总用户的百分比”(活跃用户占比)。这个指标揭示了产品的用户参与度。如果产品作出调整,这个指标上升,那就可以按照调整的方向继续迭代。另一个可以关注的指标是“单位时间内新增用户数量”(新用户增速),它对于比较不同营销手段的优劣往往很有帮助。


探索性指标和报告性指标

  • 探索性指标:是推测性的,提供原本不为所知的洞见,帮助你在商业中取得先手优势。

  • 报告性指标:适合对公司的日常运营,管理性活动保持信息通畅,步调一致。


先见性指标和后见性指标

  • 先见性指标:可用于预测未来。如透过“销售漏斗”中现有的潜在客户数,能大致预测将来能获得的新客户数。比如某产品一段时间内的用户投诉量,可以作为用户流失的先见性指标,如果投诉量继续增加,用户放弃使用你的产品或服务的概率就增大,因此,该指标可以帮助了解产品和服务的真实情况。

  • 后见性指标:揭示当前存在的问题。如用户流失(某一时间段内离开产品或服务的客户量)。流失的客户多半是找不回来,但是可以通过这一指标帮助产品降低产品用户流失率。


相关性指标和因果性指标

  • 相关性和因果性指标:即两个或多个以上的指标有相关性,发现相关性可以帮助你预测未来,而发现因果关系意味或可以改变未来。通常,因果关系不是简单的一对一的关系,很多事情都是多因素共同的结果。想要证明一个因果关系的指标:找到一个相关性指标,进行控制变量实验并测量因变量的变化。但是这种测试需要考虑足够大的用户样本。


互联网金融常见的业务指标

以下是互联网金融常见的业务指标



  1. 用户指标:包括用户信用评级、活跃度、留存率、转化率、客单价(平均投资额度)、用户分布(各等级占比)、互动指标等等。

  2. 产品指标:产品组合、投资人数、投资金额、满标时间、收益率、流标数、风险系数、热度(受欢迎度)等等。

  3. 营销渠道指标:渠道来源、渠道转化率、渠道成功率、渠道成本等等

  4. 营销活动指标:活动成本、活动渠道来源、活动转化率、传播数、新增粉丝数/用户数等等

  5. 合作方指标:合作带来的项目数、项目通过率、风险系数、成本等等

  6. 风控指标:项目审核通过率、风险备用金、项目流动性风险指标、合规相关指标等等

  7. 支付渠道指标:渠道转化率、渠道成功率、支付渠道来源、渠道成本等等

  8. IT 平台指标:用户体验指标(包括响应速度等)、可靠性指标、安全性指标等等。这块与互联网的指标类似。

  9. 客服指标:投诉分类、接通率、投诉渠道、响应速度、满意度等等

  10. 竞争性指标:竞争对手分析指标、互联网舆情监控指标等等


互联网金融理财公司运营指标体系


  1. A1-Awareness 感知

业务指标体系中的感知是互联网金融信贷公司实力和认知度的考量,对外指互联网金融公司 APP 市场占有及活跃状态等,用以衡量互联网金融公司的市场表现情况;对内指用户注册推广所覆盖的渠道数量、退推广成本等,用于衡量用户感知所需费用及后续渠道效益分析等。


  1. A2-Acquisition 获客:

获客指标以潜在客户挖掘为始点,贯穿用户交易实施前的各业务环节,包括注册、绑卡、实名认证、充值等环节。同时,本部分指标可用于衡量渠道引流带来的不同客户群的特征,支撑渠道质量评估。


  1. A3-Activation 活跃:

活跃是运营体系中的核心指标,能够体有效反映核心用户的规模与粘度。与累计客户量不同,活跃指标能够有效的表示某段时间范围内在平台进行真实行为操作(包括注册、资金转移、交易、查阅产品信息等)的用户群占累计客户量比例,是衡量平台健康度的重要指标,也为运营活动提供数据分析基础。


  1. R1-Retention 留存

  • 逐日留存率:用户自新增以来,在 N 日后还有使用的比例,+N 日的逐日留存用户/逐日新增用户;--判断渠道的真假和活跃性

  • 逐月留存率:用户自新增以来,在 N 月后还有使用的比例,+N 月的逐月留存用户/逐月新增用户;--衡量用户的生命周期


  1. R2-Revenue 收入

收入是平台运营最核心的指标,他直接影响平台及其产品能否良好运营下去。收入指标包括交易人数、成交数量、成交金额、资金净流量以及收益等,能够有效支撑整体运营现状的分析、各平台阶段的重点业务分析、各产品线营收分析。此外,基于各客群的收入,形成的客单收益,能够有效支撑平台用户分群的精细化运营


  1. R3-Refer 传播 :

传播指标谨通过平台的分享情况及转化情况,衡量平台及其活动通过病毒式传播推广方式带来的价值,也是平台用户自增长的理想状态,尤其是在互联网信息时代。


题目二: 描述 PageRank 算法

Google 搜索引擎是如何对搜索结果进行排序的?(请用自己的语言描述 PageRank 算法。)


答案:
前传 - 访问量排序

在谷歌诞生之前那段时间,流行的网页排名算法都很类似,它们都使用了一个非常简单的思想:越是重要的网页,访问量就会越大。许多大公司就通过统计网页的访问量来进行网页排名。但是这种排名算法有两个很显著的问题:一是因为只能够抽样统计,所以统计数据不一定准确,而且访问量的波动会比较大,想要得到准确的统计需要大量的时间和人力,还只能维持很短的有效时间;二是访问量并不一定能体现网页的“重要程度”——可能一些比较早接触互联网的网民还记得,那时有很多人推出了专门“刷访问量”的服务。所以仅仅通过访问量来衡量网页的重要性,并不是十分准确。


然而就是在这种情况下,1996 年初,谷歌公司的创始人,当时还是美国斯坦福大学研究生的佩奇和布林开始了对网页排序问题的研究。在 1999 年,一篇以佩奇为第一作者的论文发表了,论文中介绍了一种叫做 PageRank 的算法,这种算法的主要思想是:越“重要”的网页,页面上的链接质量也越高,同时越容易被其它“重要”的网页链接。于是,算法完全利用网页之间互相链接的关系来计算网页的重要程度,将网页排序彻底变成一个数学问题,终于摆脱了访问量统计的框框。


PageRank 的数学原理


在 2011 年的一篇文章当中,Google 的官方文章曾经说道:

给搜索结果排序是非常困难的,比大多数人认为的要困难得多。其中一方面原因在于语言本身就具有模糊性,容易产生歧义。而网页本身的规则也不一样。如何表达信息着实没有标准,因此我们需要理解所有的网页,不管是谁写的,是什么目的创作出这些文件。而这样做也仅仅能解决一部分问题。我们还需要了解人们所使用的查询关键词,通常少于三个字,并将其映射到我们对所有文件的理解上。况且不同的人有不同的需求,这一点更不用提了。我们需要在几毫秒内做的所有事情就是……据估计,编程员/科学家对搜索引擎已经研究了很长的时间。尽管如此,创新的速度还没有减慢。


谷歌搜索的时间通常只持续不到半秒钟,然而其中却涉及很多个不同的步骤。这些步骤在查询信息的人得到搜索结果之前必须完成。搜索引擎根据多种因素来决定如何排列网站内容。在较高层面上,搜索引擎将各类内容和它们认为和内容相关的一系列关键词联系起来。


借用网上流传的一个“三个孩子分豌豆”的游戏来简单说明 PageRank 的过程:

假设三兄弟分 30 颗豌豆。起初每人 10 颗,他们每次都要把手里的豌豆全部平均分给自己喜欢的人。下图表示了三兄弟各自拥有的初始豌豆数量,以及相互喜欢的关系(箭头方向表示喜欢,例如 B 喜欢 A,A 喜欢 B 和 C)

  • 原始状态


  • 第一次分配



就这样,让游戏一直进行下去。直到他们手中的豌豆数不再变化为止。那么这个游戏结束的时候,状态是这样子的:A 和 B 的盘子里各有 12 颗豌豆,而 C 的盘子里有 6 颗豌豆。这时候无论游戏怎么进行下去,盘子里的豌豆数量都不会再变化。


这个游戏和 PageRank 的过程异曲同工,如果把 A, B, C 看作是不同的三个网页,而豌豆看成是网页 rank 的树脂,那么分豌豆的过程就是网页 rank 的过程。


在游戏之上进行延伸,我们取 A, B, C, D 四个网页,然后根据网页之间的引用关系绘制出以下有向图

在算法的原型中,我们假设互联网中的所有权重初始值是 1 除以节点数量即 1/4。当我们访问网站 A 时,可以扫描到有外链指向网站 B、C、D,不讨论实际应用中权重分配的差异,把 A 的此轮权重的 1/3 均分给 B、C、D,同时获得 B 此轮的 1/2 权重与 C 此轮的所有权重。则 A 的权重变为 1/2B+C。第一轮分配之后:

  • A: 1/2 * B + C

  • B: 1/3 * A + 1/2 * D

  • C: 1/3 * A + 1/2 * D

  • D: 1/3 * A + 1/2 * B

用向量以及矩阵表示,则一轮 rank 之后的权重值为:

由于模型是动态的,我们需要知道的是哪些网站更有价值。因此,我们考虑的是 n 趋向于正无穷时的动态分布。

得助于现代计算机对于矩阵的高性能处理,我们可以知道,互联网的有向图最终会使权重趋于稳定。这种处理方法来源于统计学的 Markov 模型。

悬挂网页问题

当一个网页只有链入链接没有链出链接的时候,这个网页就会像一个“黑洞”一样,将同一个连通子图中其它网页流向它的 PageRank 慢慢“吞掉”(因为算法中虚拟的用户一旦进入那样的网页, 就会由于没有对外链接而永远停留在那里),这种网页我们称之为“悬挂网页”( Dangling Link )。这种“黑洞”效应是如此显著, 以至于在一个连通性良好的互联网上, 哪怕只有一个 “悬挂网页”, 也足以使整个互联网的网页排序失效, 可谓是 “一粒老鼠屎坏了一锅粥”。


为了解决这个问题,佩奇和布林进行了修正。他们意识到, 当用户访问到 “悬挂网页” 时, 都不可能也不应该就停留在了这个页面, 而是会自行访问其它网页。虽然对每个用户来说, 自行访问的网页与各人的兴趣有关,但在平均意义上来讲,佩奇和布林假定用户将会在整个互联网上随机选取一个网页进行访问。


所以他们给 PageRank 算法加入了一个新的向量 E。它的作用是,按照其中所描述的比例来向全部网页分配悬挂网页每一次“吞掉”的 PageRank。这样,相当于为悬挂网页添加了链向网络上全部网页的链接,避免了悬挂链接的出现。


总结

以上就是谷歌背后最重要的数学奥秘。 与以往那种凭借关键词出现次数所作的排序不同, 这种由所有网页的相互链接所确定的排序是不那么容易做假的, 因为做假者再是把自己的网页吹得天花乱坠, 如果没有真正吸引人的内容, 别人不链接它, 一切就还是枉然。 而且 “佩奇排序” 还有一个重要特点, 那就是它只与互联网的结构有关, 而与用户具体搜索的东西无关。 这意味着排序计算可以单独进行, 而无需在用户键入搜索指令后才临时进行。 谷歌搜索的速度之所以快捷, 在很大程度上得益于此。


虽然 PageRank 是 Google 搜索结果排序的重要依据并以此发家,不过它并不是全部依据——实际上,Google 发展到现在,已同时用了数百种不同的算法来确定最终显示给用户的搜索结果顺序。


Python 实现
import networkx as nximport randomimport numpy as np

# Add directed edges in graphdef add_edges(g, pr): for each in g.nodes(): for each1 in g.nodes(): if each != each1: ra = random.random() if ra < pr: g.add_edge(each, each1) else: continue return g

# Sort the nodesdef nodes_sorted(_points): t = np.array(_points) t = np.argsort(-t) return t

# Distribute points randomly in a graphdef random_walk(g): rwp = [0 for i in range(g.number_of_nodes())] nodes = list(g.nodes()) r = random.choice(nodes) rwp[r] += 1 neigh = list(g.out_edges(r)) z = 0
while z != 10000: if len(neigh) == 0: focus = random.choice(nodes) else: r1 = random.choice(neigh) focus = r1[1] rwp[focus] += 1 neigh = list(g.out_edges(focus)) z += 1 return rwp

if __name__ == '__main__': # Main # 1. Create a directed graph with N nodes g = nx.DiGraph() g.add_nodes_from(range(15))
# 2. Add directed edges in graph g = add_edges(g, 0.4)
# 3. perform a random walk points = random_walk(g)
# 4. Get nodes rank according to their random walk points sorted_by_points = nodes_sorted(g, points) random_walk_rank_list = [p for p in sorted_by_points] print(f'PageRank using Random Walk Method\n{random_walk_rank_list}')
# p_dict is dictionary of tuples p_dict = nx.pagerank(g) p_sort = sorted(p_dict.items(), key=lambda x: x[1], reverse=True) inbuilt_rank_list = [i[0] for i in p_sort]
print(f'PageRank using inbuilt pagerank method\n{inbuilt_rank_list}')
复制代码


运行结果:


发布于: 2020 年 12 月 20 日阅读数: 36
用户头像

9527

关注

还未添加个人签名 2020.04.22 加入

还未添加个人简介

评论

发布
暂无评论
极客大学 - 架构师训练营 第十三周作业