冰冰冰室

朝闻道而夕饮冰,不舍昼夜


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

社会扩散模型概要

发表于 2019-10-31 | 分类于 混社会

扩散的基本定义

扩散通常被定义成一种过程:创新通过该过程在一个社会系统的成员中随时间在不同的渠道传播。作为一个社会系统的过程,扩散具有4个关键元素:创新、传播渠道、时间和社会系统。

  • 创新:新的想法\产品\目标,比如社会传言、药品、器材、商品等
  • 传播渠道:信息传播的方式如大众传媒、人际关系等
  • 时间:时间通常于扩散的速度和规模相关联。
  • 社会系统:社会系统即创新的潜在采纳者,比如某个地区的全部医生(新药采纳问题),也可以是政府企业乃至全体公民

看完定义就可以发现,扩散过程会是互联网行业非常关注的一个话题。

基础扩散模型

基础扩散模型蕴含了相当多假定:

  • 扩散过程是二分的,要么采纳,要么不采纳
  • 潜在采纳者的上限固定
  • 一个采纳单位只有一次采纳
  • 该创新独立于其他创新
  • 内部和外部的影响系数都是固定的(不随时间变化)
  • …

在这些假定之下,基础扩散模型存在三种增长扩散模式

外部影响模型

模型表达式

其中
$N(t)$表示t时刻的采纳者人数
$\overline{N}$表示潜在采纳者总数
$a$表示外部影响的系数,来自社会系统的外部;通常可以认为是大众传媒对扩散的影响。

该模型的特点:

  • 不考虑先行采纳者和潜在采纳者的交互作用
  • 总的增长速率恒定递减
  • 增长曲线是一个指数衰减曲线,扩散曲线可以表示为$N(t)=\overline{N}[1-exp(-at)]​$

应用案例:

  • 新药在美国西部社区医生中的扩散(1966)
  • 罢工\暗杀在发展中国家的传播扩散(1973)

个人理解这个模型只适用于社会成员彼此孤立(个体信息交流不便捷)的时候,现代社会成员通讯发达,先行者和潜在者的交互是很难忽略的。

内部影响模型

该模型假定扩散仅仅通过人际接触进行。

其中
$N(t)$表示t时刻的采纳者人数
$\overline{N}$表示潜在采纳者总数
人际交互由$N(t)[\overline{N}-N(t)]$表示。

该模型的特点:

  • 只考虑人际接触的传播
  • S型增长曲线,表达式可以表示为$N(t)=\frac{\overline{N} }{ 1+\frac{\overline{N}-N_0}{N_0}exp[-b\overline{N}(t-t_0)]}$

应用案例:

  • 工业创新(柴油机)的扩散
  • 玉米种子的扩散

当一项创新应用复杂(意味着不方便通过大众媒体传播而更依赖向先行者学习),需要先行者的经验,同时若不采纳会带来劣势(商业上的竞争劣势等),内部影响模型较为合适。

混合影响模型

混合模型同时考虑了外部影响和内部影响

该模型特点:

  • 同时考虑了内部影响和外部影响,更具通用性

  • S型增长曲线,表达式可以表示为

应用案例:

  • 耐用消费品的长期销量

耐用消费品确实是一个非常契合基础扩散模型的场合,耐用意味着接纳者只会接纳一次,同时考虑了外部媒体和内部口碑效应的影响。对于互联网产品,基础扩散模型没有考虑到网络效应,同时内部影响的假定略微简单了。

参数估计方法

对于混合影响模型

​

离散方式可以表示成

此时可以通过最小二乘法计算出$A$项

最后有

扩展与改进

可变扩散

jeuland模型

jeuland模型有以下假定

  • 扩散过程中外部影响与潜在采纳者的倾向有关
  • 潜在采纳者倾向是差异分布的
  • 采纳的倾向服从gamma分布

此时

jeuland模型可以根据参数设定发生退化,当$\gamma=0​$,jeuland模型退化成bass模型(意味着潜在采纳者倾向一致)

动态扩散

动态扩散模型主要是假定潜在上限是可变的

案例:
  • 估计计算机的自然增长(1967)

    首先假设计算机的潜在采纳者和计算机的价格相关。

    并使用动态扩散模型来估计计算机销量自然增长

多重扩散

创新并非单独出现的,创新之间具有相互影响的关系。

相互影响关系至少有以下几种:

  • 独立性
  • 互补性:一项创新采纳的增加会促进另一项采纳(洗衣机和干衣机)
  • 有条件性:一项创新采纳要取决于其他创新的采纳情况(计算机软件和计算机)
  • 可替代性:一项创新会导致另一项创新的采纳的减少(黑白电视和彩色电视)

比如可替代性可以表示为:

需要注意的是,替代可能是单向性,彩色电视对黑白电视有替代作用,反过来未必如此。

时空扩散模型

地理上的扩散通常要遵循以下规则:

  • 等级效应:先从大的中心点再到小的中心点
  • 邻近效应:先从中心开始,逐渐向四周扩散

当设计到地理空间的扩散是,一种方式是根据每个地区的情况使用一个扩散模型,另一种是把邻近效应添加到扩散模型中。

多阶段扩散

多阶段扩散中,社会成员需要经历多个阶段才能变成采纳者(比如,吃瓜群众-潜在采纳者-采纳者),同时采纳者也可能退化遗忘变回吃瓜群众。

dodson-muller模型(1978)

带重复采纳的扩散

基础模型只允许一次采纳,现实中扩散可以带多种采纳。

Lilien重复购买模型(1981)

带中介的扩散

假设各个因素都受到中介的影响

一种简单的序贯AB测试方法

发表于 2019-09-21 | 分类于 抖机灵

Sequential AB testing

在做AB测试时,为了避免出现重复显著性检验的情况,我们会预先设定一个样本值,只有到流量达到样本阈值时,才会进行统计检验。

这又引申出了一个问题:有没有一种AB测试方法,可以不用提前设置流量阈值,并可以在当实验组效果明显好于对照组的时候,能够提前停止实验?

一般而言,Sequential AB testing 需要用到序贯分析sequential probability ratio test,但是,在
even miller博客上记录了以下一种简单方法,这种方法也是可行的。

以下是该方法的流程:

  • 1.实验开始前,选定一个数字N
  • 2.对两个实验均分流量进行测试
  • 3.记录A实验的成功数,记为T,记录B实验的成功次数,记为C
  • 4. 时停止实验,说明A实验效果优于B实验
  • 5. 时停止实验,说明无明显差异

原理:随机游走,反射定理、ballot theorem及近似分布

以下内容主要来自Feller’s Introduction to Probability book

从$(0,0)$到达$(n,x)$的随机游走

投掷一枚均匀的硬币,正面为+1,负面为-1,记n为投掷次数,x为累积分数。

对于某一时刻,定有次为,次为,则

则容易得到

若不存在满足上述条件,则

反射定理

令,,则接触轴到达的路径数和接触x轴到达路径数一样多

randomwalk

则此时,明显地,从出发且不与轴相交到达的的路径数和从出发不与x轴相交到达的路径数一样多,并记为。

ballot theorem

我们把开始到达的所有路径数记为,把开始到达的所有路径数记为。显然就是从开始接触或穿过x轴到达的路径数

则有

则有

也就是说,不接触x轴的路径占所有路径的.

类似地,当把轴换成是直线时,从出发,不接触到达的路径数也为

limit theorem for first passages

场景:赌徒输光问题与AB测试实验

ballot theorm 可以用来解决一下问题:

赌徒输光问题

假设有一个有x枚金币的赌徒,初始有 枚金币,每次胜率为,可以看到,赌徒正好在第轮输光所有金币的概率为

而赌徒在第n轮前输掉所有金币的概率

引申:AB测试

同样的,我们可以用ballot theorem来解释一个初始分数为0的玩家,不断投掷硬币,在第n轮时首次达到分的概率为

同样的,玩家前轮能达到分的概率为

此时,我们假设通过AB测试来玩这个游戏,则若两个实验的效果没有差别,则AB测试会近似这一过程。

统计检验

对于测试这一过程,我们期待一个实验组比对照组的效果要提升,则

对于AB测试的过程

参数计算

为了保证犯第一类错误和第二类错误的概率,可以构建以下不等式组:

通过迭代运算,我们可以计算出停止实验所需要的 和;通过近似分布,我们可以的得到;并最终得到N。

最后, 对于两个实验成功的次数T和C,如果在T+C达到N之前达到T-C达到时,则拒绝

北京的脉动

发表于 2019-03-10 | 分类于 抖机灵

研究生的时候做的一个小作业,主题是对北京市出租车定位做数据挖掘。数据来源是一个同学搞到的北京市出租车的定位数据,我在里面主要做了数据可视化的工作。这是一个研讨课的作业,所以最后只是出了一个方案exactly, PPT.

北京的脉动

离开北京三年了,此刻竟有点想念她

世界

发表于 2018-01-18 | 分类于 抖机灵

一

网易云音乐出了个年终总结,在那一天,朋友圈被刷屏了。
这一年里 你一共画了0篇完成度高的论文 你热衷的风格成谜 喜欢在深夜摸鱼 你习惯下载各种文献 却很少在下载后再阅读那些文献 2017年,你写的最多的东西是 title .....

我的大部分好友(包括我),听到的最多的歌词都是世界
世界

所以,关心世界是我们的本意吗?

二

在不到一年之前,我冰冰爬取过网易云音乐的歌词。当时只是顺着民谣歌单来收集歌词,结果发现歌迷们爱好广泛,分类杂乱,连广播体操都能算到民谣里面去。

不过去掉停用词后,中文词后里出现频率最高的还是世界interesting
歌词

怀着艺术情怀的歌手和作者们,全部灵感都来自于他们的世界。

终

热爱生活,放眼世界,关心人类;我赞许那些一边哭泣一边追求的人。

关于深度学习进行金融预测的报告

发表于 2017-06-13 | 分类于 抖机灵

这是之前为了参加某次活动而写的一个研究小报告,算是对自己自学的一些总结。

前言

随着信息科技的进步,人类开始进入大数据时代。海量的数据,快速提高的计算能力,和对数据隐含的信息的需求,催生了一项面目一新的技术—深度学习。从89年Yenn Lecun将cnn用于手写数字识别,到吴恩达将深度学习用于猫的识别,再到谷歌的AlphaGo击败围棋世界冠军,深度学习以其强大的特征抽取和学习能力引发了巨大的浪潮,成为现在高新科技领域的一个研究重点,并且正在渗透进入多个行业。人们期望它能像击败围棋世界冠军一样,解决其所在行业的未解难题。

在投资领域中,股票等的价格预测一直是投资者极度关注的难题。因为涉及到国家政策、全球经济、个体交易者期望的外部因素,金融中的价格数据经常呈现出非线性,非平稳的特点,让人难以捉摸。根据有效市场理论(Efficient Market Hypothesis),股票价格呈随机游走状态。而在实际市场中,价格则往往存在某种变化的模式,同时,也受到外部消息的严重影响。对于价格波动中潜在的变化模式,由于深度学习所具有的强大的特征抽取能力,深度学习有能力在海量的数据中挖掘出变化的规律,从而给交易决策者提供宝贵的参考。

这份报告将使用深度学习的方法来进行价格预测的尝试。

方法

深度学习模型的选择

卷积神经网络在图像识别等多个领域取得了显著的成功。虽然卷积神经网络具有强大的特征识别能力,但是时间序列中的特征往往具有时间关系,传统的卷积神经网络的卷积和池化所带来的平移不变性,使得其难以模拟潜在的时间关系。虽然可以通过改变卷积方式的方法来对模型进行改进,但是文献调研表明,卷积神经网络在时间序列分析中并不常用。而在目前,LSTM是在应用中最为有效的序列模型。

相关技巧

数据预处理
  • 1、设置窗口

    使用者可以通过设定窗口长度,截取一定长度的价格序列来进行分析。

  • 2、数据标准化

    相比于直接使用原始的价格数据,对数据进行标准化处理会是更好的选择。常用的标准化方法有z-score标准化,min-max标准化等,也可以通过计算回报率来简单处理。

  • 超参数搜索

    超参数对深度学习的效果和表现有着重要的影响。相比于手动调整参数更依赖于经验与对模型的理解,让计算机自动进行超参数搜索会是一个更节省人力的方法。对于超参数较少的模型,使用者可以采用网格搜索的方法,在预先定义的有限组合中进行搜索。网格搜索的计算代价会随着超参数数量呈指数级增长。另一个更可行的方法是随机搜索。这两种方法在scikit-learn中都有对应模块。

  • 提前终止

    对于复杂的模型,随着训练时间的推移,模型将存在过拟合的风险。当训练时间足够长时,往往会出现验证集误差不降反升的情况。此时可以使用提前终止的策略,当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。提前终止将有效地防止过拟合,同时,它也有效地选择了训练的轮数。

  • Bagging

    Bagging(bootstrap aggregating)是通过结合几个模型降低泛化误差的技术。bagging通过对已有数据集进行重复采样,来构造新的数据集并进行训练,最后获得多个模型结果,并进行平均。可以证明bagging可以有效地减少泛化误差。在理想的情况下,通过训练出偏差小,而方差较大的多个模型,然后进行模型平均,使用者能得到更为理想的结果。

外部消息集成

虽然时间序列数据中蕴含着价格变动的模式,然而金融市场的价格变动经常受到外界消息的强烈影响,在很多时候,一个外界的消息可以迅速改变当前的价格变动模式。在进行投资决策时,必须要对价格变化的模式和外部的信息进行集成。事实上,交易员Q在进行决策时,就是一种各种信息的集成。以下是两种可用的信息:

  • 其它市场指标数据

    可以使用当前市场指标数据对价格进行回归分析,把结果集合到最终的决策中。

  • 媒体和社交网络信息

    媒体和社交网络上蕴含了大量的群体的观点和信息。通过对社交网络的文字进行处理,研究者可以获得当前大众群体对投资对象的观点和看法。从媒体中抽取出利好或利空的消息,也将对交易策略提供有效的信息。

初步完成的工作

因为时间、硬件、数据以及个人的知识的不足,此处仅仅完成了一个很不成熟的尝试,使用LSTM来对已有的金融价格数据进行预测。程序代码在code文件夹中。

  • 数据的预处理

    观察附件1.1可以发现,自2016-12-08之后,该金融标的价格就再也没有改变。考虑到所有缺少的数值都由最近的之前工作日的值来替代,因此有理由认为在这之后的值都已经缺失,因此需要对其进行删除。

    此处选择90天的窗口,对时间序列进行截断,使用前90天的价格序列来预测下一个价格。窗口长度是一个超参数,后续可以通过超参数搜索的方法调整。对一段子序列{a1,….an},此处只通过以下式子进行简单处理:

    最后从处理得到的序列中,抽取10%的子时间序列来作为测试序列

  • LSTM模型的构建和训练

    Keras基于Theano或TensorFlow,是一个常用的神经网络库。其优点是高度模块化,非常适合快速实验,进行简易快速的原型设计。此处使用keras快速的搭建了一个LSTM模型来进行实验,模型结构如下:
    lstm
    在训练的过程中,程序使用训练集数据中的5%的数据作为验证集,并且使用了提前终止的训练策略。同时,程序使用MSE(最小均方误差)作为代价函数,使用了RMSProp作为优化方法。在模型中,包括节点个数,优化方法等都可以作为超参数进行进一步优化,比如流行的优化方法就还有Adam,SGD等。

  • 结果

    在完成模型的训练后,使用测试集对模型进行检测,通过90天的时间序列来预测下一个价格。得到的图像如下所示:

prediction_point_by_point

但是因为结果仅仅反映当前价格相对90天前的价格的变化,而在实际使用中,更需要关注的前后两天的价格变化趋势。在对结果变换回实际结果后,模型对前后两天的价格变化趋势的预测的准确率约为65%。程序的一次运行结果保存在code文件夹的ipython.html中。

模型的预测结果并不是十分令人满意,模型本身也有许多需要改进之处,比如标准化方法的选取。同时,也没有进行超参数搜索和Bagging。个人认为,模型还有一定的提高空间,需要后续的工作和学习来进行完善和提高。

后续计划

  • 超参数搜索

    模型中具有较多的超参数,包括数据初始化的窗宽选取,标准化的方法,模型的节点,优化的方法,初始学习率乃至激活函数的类型等。使用随机搜素的方法可以选取出更为合适的超参数。

  • Bagging

    如前文所说,Bagging是一个减少泛化误差的强大的方法,任何机器学习算法都可以从Bagging中大幅获益(代价则是更多的运算和空间需求)。在机器学习竞赛中,获胜的算法往往都是多个模型的平均。模型集合使得使用者可以在单个模型总追求更小的偏差,而容许较大的方差。

  • 大数据平台下的深度学习

    无论是深度学习本身,还是超参数搜索和模型集合,所需要的计算能力都是巨大的。对于超参数搜索和模型集合来说,在大数据平台下并行求解是相对简单的。

中文维基百科的主题模型分析

发表于 2017-03-14 | 分类于 抖机灵

语料的获取

下载

相比于其他语料,中文维基百科提供了免费的语料资源,可以直接从中文维基百科标题和正文处直接下载。

抽取

对下载好的文件,可以使用Wikipedia_Extractor直接对文件进行抽取处理:首先在解压缩下载文件得到xml格式的数据,然后执行WikiExtractor.py处理xml数据即可:

1
$ ./WikiExtractor.py -b 1000M -o extracted2 zhwiki-latest-pages-articles.xml

这表示把指定的xml文件抽取并以1000M的单位大小来切分文件,文件输出到extracted2文件夹中。

简繁转换

抽取好的文档混杂的繁体中文,使用opencc可以对抽取的文档进行简繁转换。(很久之前就听说过opencc的作者BYVoid大神的大名TT)

1
$ opencc -i wiki_00 -o wiki_chs -c zht2zhs.ini

经过简繁转换后,文档就预处理得差不多了。在我的实践中,文章中还剩下一下诸如

1
<doc id="13" url="https://zh.wikipedia.org/wiki?curid=13" title="数学">

之类的标签没有去除,可以简单的使用python的正则表达式再把它去掉。维基百科中文语料的获取主要参考抄袭 自 这篇文章

结巴中文分词

主题模型使用的是词袋模型,和英文词语直接有空格隔开不同,中文需要进一步进行分词。目前常用的中文分词工具有jiebajiba 分词。

无论是中文文章还是英文文章,文档中都会出现大量的和文档描述的主题没什么关联的词:比如英文的a,and;中文的‘不会’,‘不但’这一大类词语。中文的停用词词表很多,这是其中一个

进行中文分词后的文本的前后对比:

1
基础数学的知识与运用总是个人与团体生活中不可或缺的一块。其基本概念的精炼早在古埃及、美索不达米亚及古印度内的古代数学文本内便可观见。从那时开始,其发展便持续不断地有小幅的进展,直至16世纪的文艺复兴时期,因为和新的科学发现相作用而产生的数学革新导致了知识的加速发展,直至今日。

1
基础 数学 知识 团体 生活 不可或缺 一块 基本概念 精炼 古埃及 美索不达米亚 古印度 古代 数学 文本 可观 发展 持续 地有 小幅 进展 直至 世纪 文艺复兴 时期 科学 发现 作用 数学 革新 导致 知识 加速 发展 直至 今日

不得不承认我的这次分词还不够智能,短短的一段就出现了‘地有’,‘可观’这样错误。突然想起小朋友用天真造句的梗了:今天天真冷呀。不过在这段关于数学的文章中,jieba分词的结果并没有对语义造成太大的影响,关键的词语都没有被分错。

主题模型

在主题模型,潜在狄利克雷分配(Latent Dirichlet allocation)是我最早接触到。关于LDA中复杂的数学原理,这篇文章讲解得相对深入浅出:LDA数学八卦

虽然其数学原理相当复杂,但是python中的gensim包使用起来却非常简单。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#coding=utf8
from __future__ import unicode_literals
import io
from gensim import corpora,models
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
def divide(x):#根据文件的特征,切分出文档
with io.open(x,encoding ='utf8') as f:
text=[]
for line in f:
l=line.split()
if len(l)!=0:
text.extend(l)
else:
yield text
text=[]

dictionary=corpora.Dictionary(divide('outfile.txt'))
corpus = [ dictionary.doc2bow(text) for text in divide('outfile.txt')]
dictionary.save('mydict1.dic')
corpora.MmCorpus.serialize('corpora.mm', corpus)
lda = models.LdaModel(corpus = corpus,id2word=dictionary,num_topics=100,passes=3)
lda.save('model1.lda')

这里因为把所有文档都存到了一个文件中,所以后面根据文件的格式拆分了一下(有些小缺陷,不过应该不会造成太大的偏差)。这里预先设定了100个主题,构建这个主题模型会花费大量的运行时间。

有趣的结果

使用python wordcloud可以可视化得到的主题。
涉及文档最多的主题:
涉及文档最多的主题

中文维基百科嘛,讲的都是中国的东西。虽然混入了一些奇怪的词语,不过考虑到她涉及了大量的文档,当然是原谅她啊。
涉及文档最少的主题:
涉及文档最少的主题
AV二字真是分外醒目,然而并没什么可奇怪的。

写博客的缘由

发表于 2017-03-10 | 分类于 碎碎念

从小以来,我都是一个感情丰富的人。在中学时代,我喜欢阅读各类的文学书籍,也喜欢和朋友们进行有趣的辩论和交谈。可能是因为上述的原因,我的作文水平还不赖,我喜欢把自己的观点用更加新颖有趣的方式表达出来。

可是在一段很长的时间里,我的写作能力有了很大的退化,以至于可能仅剩下有限的两种能力:在社交网络上自言自语的自嘲,以及在实验报告上数据和结果的简单罗列。我也没有了记述自己生活的习惯,人的记忆力总是有限的,生活中的小的实践,小的感遇,读过的一本书,对某个人的想念,虽然它们并不会带来巨大的转变,但是从中得到的经验也是值得铭记的。

曾有位尊敬的长者不是闷声发大财那位 说过,会讲话是非常重要的,把自己的观点、情感通过语言有层次,有逻辑地表达出来,会是一项十分有用的能力。我想,拥有写作的习惯会对提高这一能力有所帮助。

人之相与,俯仰一世;向之所欣,俯仰之间,已为陈迹。我将在空闲时候把自己做过的一些事情记述下来。

柳冰冰

柳冰冰

7 日志
3 分类
© 2019 柳冰冰
|