聊聊美国保险业

作者简介:侯澄钧,俄亥俄州立大学运筹学博士,目前在美国从事财产事故险(Property & Casualty)领域的保险产品开发,涉及数据分析、统计建模和产品算法优化等方面的工作。

只有想不到,没有保不了。这就是我对美国保险行业最深刻的认识。大到地震,小到球票,加上平时开车,租房,看病,旅游,保险无时不刻的出现在了美国人生活工作的方方面面。除了没有住所,没有工作,没有任何财产的流浪人员,每个美国人都不可避免得需要与保险打交道。如果银行是厚重的少林,证券是玄妙的武当,那保险作为弟子遍布江湖的丐帮确实当之无愧。下面我想从房屋火灾险,医疗责任险,自然灾害险,聊聊美国人是怎么开始玩保险,然后玩出各种花样,甚至玩坏的。之后我会写写数据科学是如何应用于保险行业的,同时介绍一些常用的预测模型,只对这方面内容感兴趣的朋友可以直接跳过之前的内容。

继续阅读聊聊美国保险业

十行代码看到空气质量指数

故事部分

我错了, 我承认我是标题党, 怎么可能用十行代码完成全国三百个多个城市AQI的抓取, 清洗与可视化呢

我仔细数了数, 去掉注释, 一共是9行, 凑个整才是10行 耶~

空气质量指数(Air Quality Index,简称AQI)是定量描述空气质量状况的无量纲指数.

关于空气质量的段子已经层出不穷, 连呆在上海的我都已经开始关注北京的天气了:

受朋友委托,大家帮个忙:北京人,女,26岁,未婚,1.68米,体重50公斤,英国海归。貌美,爱好健身。目前在一家世界500强做产品经理,工作稳定,年薪近90万。三环内有四套学区房,一套按揭,三套全款。 名下有一辆宝马7系,上班时开。父母均是国家领导干部。朋友和家人现在非常着急,想让介绍一个效果比较好的防霾口罩。

正常不过三秒, [手动债见]

咳咳, 回归正题, 代码之前, 先介绍下出场的一个新包, leafletCN. leafletCN 是一个基于leaflet包做的大中华扩展, 优势在于有细分到县级市级别的区划数据, 虽然没那么准, 但是也基本能用了~

开始写本文的时候, 这玩意连个文档都没有. 作者真懒. 诶诶诶, 但截止发稿, 作者好像写了点乱七八糟的文档. omg, 中间好像隔了两个月, 我和作者一样懒.

AQI的数据来源于pm25.in, 网页上是一个html的表格, 可以简单的用XML的readHTMLtable来完成读取.

好了, 以下是代码, 分成三个部分:

  1. 载入包, 并读取网页的数据
  2. 整理数据并进行命名, 包含了获取其中的城市, AQI以及将其转化为数值
  3. 使用geojsonMap绘制细分到城市的污染情况

这部分代码运行之后会出现一个以高德地图为底图, 可缩放可点击的地图~

library(XML)
library(leafletCN)
# 读取网页的表格
# Sorry for 爬了你家网站
table = readHTMLTable("http://www.pm25.in/rank",  
                      encoding = "UTF-8", stringsAsFactors = F)[[1]]

# 整理数据并命名
dat = table[ , 2:3]
names(dat) = c("city","AQI")
dat$AQI = as.numeric(dat$AQI)

# 调用geojsonMap进行绘制
geojsonMap(dat, "city",
           popup =  paste0(dat$city, ":", dat$AQI),
           palette = "Reds", legendTitle = "AQI")

猛击图片查看这个可交互的地图吧!

 

 

故事讲完了, 吃瓜群众们可以点转发了, 无聊的user们可以继续读leafletCN的使用

leafletCN是一个基于leaflet的中国扩展包, 里面保存了一些适用于中国的区域划分数据以及一些有帮助的函数, 地理区划数据来源于github的geojson-map-china项目. 数据细分到县级市.

安装

## 稳定版
 install.packages("leafletCN") 
## 开发版 
devtools::install_github("lchiffon/leafletCN")

基本使用

常用的函数

  • regionNames 返回某个地图的区域名
  • demomap 传入地图名绘制示例地图
  • geojsonMap 将一个分层颜色图绘制在一个实时地图上
  • amap 在leaflet地图上叠加高德地图
  • read.geoShape 读取一个geojson的对象,保存成spdataframe,以方便leaflet调用
  • leafletGeo 用地图名以及一个数据框创建一个sp的对象
regionNames

传入需要查看的城市名, 显示这个城市支持的区域信息, 比如查看成都:

regionNames("成都") 
[1] "成华区" "崇州市" "大邑县" "都江堰市" "金牛区" 
[6] "金堂县" "锦江区" "龙泉驿区" "彭州市" "蒲江县" 
[11] "青白江区" "青羊区" "双流县" "温江区" "武侯区" 
[16] "新都区" "新津县" "邛崃市" "郫县"

如果不传入对象, 会自动返回300多个支持的名字列表,包括各个城市,省,以及三个特殊的名字:

  1. world 世界地图
  2. china 中国分省份地图
  3. city 中国分城市地图
demomap

传入城市名(省名),显示这个城市(省)的示例地图

demomap("台湾")
geojsonmap

将一个数据框显示在需要展示的地图上. 在函数中做了一些有趣的设置, leafletCN会自动匹配传入的前两个字符来寻找合适的位置进行绘制, 所以基本不需要纠结是写’上海市’还是’上海’了

图做出来可以在上面点点点…

dat = data.frame(name = regionNames("china"),
     value = runif(34)) 
geojsonMap(dat,"china")
 amap

为leaflet叠加一个高德地图, 使用:

leaflet() %>% 
    amap() %>%
    addMarkers(lng = 116.3125774825, lat = 39.9707249401, 
       popup = "The birthplace of COS")
read.geoShape

read.geoShape这个函数可以把一个geojson格式的数据读取为一个SpatialPolygonsDataFrame对象, 方便sp或者leaflet包中的调用.

if(require(sp)){
   filePath = system.file("geojson/china.json",package = "leafletCN")
   map = read.geoShape(filePath) 
   plot(map)
}
leafletGeo

leafletGeo这个函数可以把一个数据框和一个地图组合在一起, 方便用leaflet调用, 其中名字的 变量为name, 数值的变量为value~

if(require(leaflet)){
  dat = data.frame(regionNames("china"),
                                runif(34))
  map = leafletGeo("china", dat)

   pal <- colorNumeric(
     palette = "Blues",
     domain = map$value)

  leaflet(map) %>% addTiles() %>%
     addPolygons(stroke = TRUE,
     smoothFactor = 1,
     fillOpacity = 0.7,
     weight = 1,
     color = ~pal(value),
     popup = ~htmltools::htmlEscape(popup)
     ) %>%
   addLegend("bottomright", pal = pal, values = ~value,
                        title = "legendTitle",
                 labFormat = leaflet::labelFormat(prefix = ""),
                 opacity = 1)
}

 

 

如果你看到这里还没有走, 说明你还是有心找彩蛋的, 或者你什么都没看, 但是本文没啥彩蛋, 只有我的github求赞.

然后, 如果想了解leafletCN背后强大的leaflet家族, 可以查看它的官方文档, 或者我写的这个小分享.

祝你也早日成为地图狂魔!

 

一款新的 R Markdown 幻灯片制作工具:xaringan

作者:边蓓蕾      审校:郎大为      编辑:彭晨昱

今天小编给大家介绍一款新的幻灯片神器:xaringan(中文名:幻灯忍者)。它基于大家都熟悉的 R Markdown 语法,幻灯片中能嵌入 R 代码动态生成输出结果,最后生成的是 HTML5 幻灯片,可以在网页浏览器里打开阅览,我们一起来探个究竟吧。对了,官方教程在这里:https://slides.yihui.name/xaringan/zh-CN.html

在此声明一下本文适宜读者群:R码农,熟悉markdown语法,懂点前端的你们。当然如果以上你都不太熟悉但又有着求知欲,希望本文将是你成为幻灯忍者的起点。

 

继续阅读一款新的 R Markdown 幻灯片制作工具:xaringan

假新闻引发的愤怒——非算法视角对自我学习的搜索排序算法和选择偏差的一些解读

本文作者陈丽云,落园园主。

声明:本文与作者工作单位及工作内容无关,完全出于个人兴趣爱好。

最近有条很火的新闻。美国大选刚刚落下帷幕,却余波不断。其中一条新闻就是,Google被指责利用搜索结果(假新闻)左右民意。可是事情到底是怎么回事呢?

SAN, FRANCISCO/WASHINGTON – Google’s search engine is highlighting an inaccurate story claiming that President-elect Donald Trump won the popular vote in last week’s election, the latest example of bogus information spread by the internet’s gatekeepers.

The incorrect results are shown in a two-day-old story posted on the pro-Trump “70 News” site. On Monday, a link to the site appeared at or near the top of Google’s influential rankings of relevant news stories for searches on the final election results.

原文不翻译了,大意是,在Google搜索大选相关信息的时候,“popularity vote”第一条结果是一个“洋葱新闻”网站70News。显然Google的算法认为这个网站是最相关的,结果无数的网民就天真地点击过去了,然后愤怒地发现这是一条假新闻(相似的例子可能还有百度医疗广告问题…)。可见人们潜意识里对搜索引擎有一种莫名的信任——排在前面的应该就是我想要的信息。可是,搜索引擎背后也只是一堆堆的机器学习模型,而模型也是需要不断改进的。要改进模型就要告诉模型什么时候判断错了,然后进行参数修正。

最近看到Google research放出来的一篇论文:Learning to Rank with Selection Bias in Personal Search(http://research.google.com/pubs/pub45286.html)。这篇论文是跟排序算法相关的,虽然跟上面的“假新闻”事件没啥直接关系,但殊途同归之处不少。正巧园主前些时日涉足了一些相关的问题,加之标题中的选择偏差(selection bias),一下子引起园主的好奇心,遂通读此文。读完之后感觉有些想法很新颖,只是术语习惯等等和园主习惯的方式有所区别,所以打算以一个非算法的视角来解读一下这篇文章,谈谈园主的一些理解。

继续阅读假新闻引发的愤怒——非算法视角对自我学习的搜索排序算法和选择偏差的一些解读

利用R语言对用户进行深度挖掘

作者简介:谢佳标

乐逗游戏高级数据分析师,负责大数据挖掘及可视化。资深R语言用户,有九年以上数据挖掘工作实战经验,多次在中国R语言大会上作主题演讲。与张良均老师、杨坦老师合著的《R语言与数据挖掘》一书已在2016年7月出版,新书《R语言游戏数据分析》一书也即将于2017年初出版。

随着游戏市场竞争的日趋激烈,在如何获得更大收益延长游戏周期的问题上,越来越多的手机游戏开发公司开始选择借助大数据,以便挖掘更多更细的用户群、了解用户习惯来进行精细化、个性化的运营。游戏行业对用户的深度挖掘一般从两方面着手:

  • 一方面是用户游戏行为的深度分析,如玩家在游戏中的点击事件行为挖掘,譬如说新手教程中的点击事件,我们一般选择最关心的点击事件(即关键路径)进行转化率的分析(统计每个关键路径的点击人数或次数),通过漏斗图的展现形式就可以直接看出每个关键路径的流失和转化情况。漏斗图适合于单路径转化问题,如果涉及到多路径(点击完一个按钮后有多个按钮同时提供选择)情况时,可以使用路径分析的方法,路径分析更加基础、更加全面、更加丰富、更能真实再现玩家在游戏中的行为轨迹。
  • 另一方面是对用户付费行为的深度挖掘。付费用户是直接给公司创造价值的核心用户群,通过研究这批用户的付费数据,把脉其付费特征,可以实现精准推送,有效付费转化率。

 

继续阅读利用R语言对用户进行深度挖掘