現如今,智能手機是人手一份。每天我們都通過手機與外界溝通交流,手機作為必不可少的媒介,無形中記錄著我們日常生活中的點點滴滴。這些信息主要包括個人位置信息、通信信息、賬號密碼信息、存儲文件信息等四大類。由於Android是開源的,軟體用戶可自行對軟體進行修改、複製及再分發,直接進行信息交換。有些用戶還... ...
現如今,智能手機是人手一份。每天我們都通過手機與外界溝通交流,手機作為必不可少的媒介,無形中記錄著我們日常生活中的點點滴滴。這些信息主要包括個人位置信息、通信信息、賬號密碼信息、存儲文件信息等四大類。由於Android是開源的,軟體用戶可自行對軟體進行修改、複製及再分發,直接進行信息交換。有些用戶還會自己對系統進行破解,獲取許可權,竊取個人信息。一些山寨手機甚至還留有後門程式,固化竊聽軟體,並通過遠程遙控使手機話筒在用戶不知情的情況下開啟,把手機變成一個竊聽-器,造成個人隱私泄露。
因此,通過對手機數據的挖掘與分析,可以便捷地進行用戶行為分析;比如,利用手機定位數據可以進行用戶特征挖掘;利用通話記錄可以進行社交親密度分析等等。我帶著這個想法,導出自己手機上可以找到的各種數據文件,並通過R軟體十對這些數據進行了簡單的統計分析,現將步驟記錄如下:
通話記錄分析
首先,讀取xml格式通話記錄並解析,將其轉換成數據框格式;然後便可以通過DT包快速便捷地查看通話記錄。
library(XML)
xmlfile=xmlParse(file.choose(),encoding="UTF-8") #讀取xml格式通話記錄並解析
mydata=xmlToDataFrame(xmlfile) #轉換格式
head(mydata)
mydata$Duration=as.numeric(mydata$Duration)
查看列表
library(DT)
datatable(mydata, options = list(pageLength = 10))
按人統計通話記錄
calldata=data.frame(Totaltime=with (mydata , tapply (Duration , list (ContactName) , sum ) ),
Average=with (mydata ,tapply (Duration , list (ContactName) , mean ) ))
head(calldata)
library(plotly)
plot_ly(calldata,x=rownames(Totaltime),y=Totaltime,type = "bar",name = "sum")
add_trace(calldata,x=rownames(Average),y=Average,name = "mean")
查詢
plot_ly(mydata[mydata$ContactName=="張三",],x=StartTime,y=Duration,type = "bar")
plot_ly(mydata[mydata$ContactName=="張三",],x=StartTime,y=Duration)
按日統計通話記錄
library(dygraphs)
library(xts)
mydata$StartTime=as.Date(mydata$StartTime) #去除分秒
daydata=with (mydata, tapply (Duration , list (StartTime) , sum ) ) #每日通話時長
dygraph(daydata, main = "每日通話時長走勢") %>%
dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))
### 轉化成時間序列畫圖
xtsdata=xts(daydata,as.Date(names(daydata)))
index(xtsdata)
dygraph(xtsdata, main = "每日通話時長走勢") %>%
dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))
這篇文章只記錄了對通話記錄的簡單統計和可視化,手機數據真正的寶礦是其內置的各種感測器,隨著物聯網時代的到來,如何通過優秀的演算法挖掘分析這些信號數據,具有十分重要的意義。
反饋與建議
- 作者:ShangFR
- 郵箱:[email protected]