-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathCollective Behavior analysis modeling and prediction
91 lines (84 loc) · 6.2 KB
/
Collective Behavior analysis modeling and prediction
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
title: "Collective Behavior analysis modeling and prediction"
author: "GMX"
date: "2021/10/19"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
(一)简介
Collective Behavior analysis modeling and prediction
意为集体行为分析模型和预测。集体行为是一种特殊的社会互动。在现代社会中,在某种特殊场合下会发生一种无规则的、以当时的场景为基础的互动现象。比如大到网络上成千上万用户的购买喜好,对不同关键词代表的新闻的点击频率不同,小到某部电影上映在周末的收入,某家超市下一周叶菜销量的预测......这些都是集体行为的例子。
(二)定义
集体行为是指在人群聚集的场合下,不受现有社会规范的控制,通常是无明确目的和行动计划的众多人的行为。社会中一部分人对某种一般的影响或刺激所作出的行为反应。这种行为反应的类型相互联系,颇为类似,但却比较松散无序。集体行为这一概念是由美国社会学家帕克(R.E.Park)提出的。他认为集体行为是“在集体共同的推动和影响下发生的个人行为,是一种情绪冲动”。人们在参与集体行为时通常表示出对某种行为有一个共同的态度,并表现出类似的行动,这种共同的态度和类似的行动是人在相互交往过程中通过彼此情绪的感染而形成的。此后,集体行为便成为社会学的一个专门术语。[1]
(三)性质
其特征是:
1、人数众多。它是同一时间内采取相同行动的许多人共同做出的。
2、无组织性。它通常是自发的、非理性的,变化无常的,很少处于均衡状态。
3、自发性:参加集合行为的人都是自愿的,整个集合行为在人群聚集场合情绪相互感染,一哄而起。
4、狂热性:集合行为中的成员情绪缺乏理智,往往采取奔跑、呼叫等感情冲动的非常规方式。
5、短暂性:集合行为持续时间短、聚散快,其目的主要是应付突发性事件。
6、行为者相互依赖。集合行为中,个人都不是独立地行为,而是与他人相互依赖、相互影响的。
7、目的不明确。参加集体行为的人的目标和期望是比较模糊的,对周围情况不十分明确。
8、非结构性。集体行为越出了社会组织结构和行为规范,不受其约束。调动起集体行为的力量是集体激动的情绪和共同关心的问题。
其发生条件是:
1、环境条件
2、结构性压力
3、诱发因素
4、宣传鼓动者
5、普遍情绪的产生
6、社会控制能力[2]
(四)举例
我们通过下面的例子来讨论这种集体行为预测策略。这个例子展示了如何利用个人在社交媒体上的集体行为来预测世界的结果。
我们的目标是预测大量人群观看电影的集体行为,这反过来又决定了电影的票房。我们可以设计一种方法来预测使用 twitter 和上述的收藏/行为预测策略的电影的票房/收入。总而言之,战略如下:
1.设置预测的目标变量。在这种情况下,它是一部电影产生的收入。请注意,收入是去影院看电影的集体行为的直接结果。
2.确定总体中可能影响目标变量的特征。
3.利用步骤2中确定的特征,用监督式学习方法预测目标变量。
4.使用监督式学习评估来衡量表现。
公式:简单线性回归模型可以帮助学习这些特征和目标变量之间的关系
y = w1A + w2P +Z
y是会购买该产品的购买者的数量
A表示该产品受到的关注度
P表示该产品被宣传的程度
Z表示该模型的回归误差
(五)代码实现
#自定义滚动合计函数
def SUM_T_yidong(Y,T): #Y为需要处理的数据列表,T为数据周期
SUM_T = [] #定义一个空列表用来装载计算出来的滚动合计值
for num_1 in list(range(1, len(Y) + 1 - T)): #从Y的第2个数据开始,到合计范围涵盖最后一个数据即第一个倒数第T个为之
Sum_1 = sum(Y[num_1:num_1 + T]) #进行滚动求和
SUM_T.append(Sum_1) #把求和值放入列表
return SUM_T #返回装有求和值的列表
#单数据回归预测返回函数(一元线性回归方程的程序表示)
def oneline_huigui_only_Y_yuce(Y,yuce_after_num): #根据Y列表输出后面几位的预测值
X=list(range(1,len(Y)+1)) #单列表只有Y数据,自动生成一个对应的序数列表
X_pingjun = sum(X) / len(Y) #求X平均
Y_pingjun = sum(Y) / len(Y) #求Y平均
Sum_1 = [] # 放Xi*Yi
Sum_2 = [] # 放Xi*Xi
for n in list(range(0, len(Y))): #计算Xn*Yn和Xn*Xn,并求b,a系数
sum_1 = X[n] * Y[n]
Sum_1.append(sum_1)
sum_2 = X[n] * X[n]
Sum_2.append(sum_2)
b = (sum(Sum_1) - len(Y) * X_pingjun * Y_pingjun) / (sum(Sum_2) - len(Y) * X_pingjun * X_pingjun)
a = Y_pingjun - b * X_pingjun
print('一元线性回归公式:Y='+str(b)+'X+'+str(a))#显示一下回归公式方便自查
Yuce = list(range(len(Y)+1,len(Y)+yuce_after_num+1))
Yucezhi = []
for yuce_X_num in Yuce: #根据回归公式和需要预测的时间段返回预测值
Y_yuce = b*yuce_X_num+a
Yucezhi.append(Y_yuce)
return Yucezhi
meiyue = [] #根据未来一年的移动求和值反向递减出未来一年每个周期的值
for a in weilai_one_year: #这里不能用=号,会改变原先列表的数据,试错之后,用遍历复制一个列表单独使用
meiyue.append(a)
for i in range(1,T): #先减去去年
meiyue[i-1] = meiyue[i-1]-sum(sannian[-T+i:])
#print(meiyue)
for i in list(range(1,T)): #再减去预测年每月累加值
meiyue[i] = meiyue[i]- sum(meiyue[:i])
(六)引用
[1] 中国社会科学院文献情报中心,重庆出版社
[2] 林崇德,姜璐,王德胜 主编;何本方 分卷主编.中国成人教育百科全书·社会·历史.海口