保険会社のベンチマーク

(CoIL Challenge 2000の和訳)

前置き

オランダのデータマイニング企業のSentient Machine Researchが保有し提供しているこのデータは、実際のビジネスデータに基づいている。非営利目的および教育目的の使用のみが許諾されている。その他の目的で使用する際には、Peter van der Putten, info@smr.nlに問い合わせること。

このデータはCoILチャレンジ2000データマイニングコンペティションで用いられた。このコンペティションへの参加者たちの論文は、the TIC 2000 homepageに収められている。

参考文献

P. van der Putten and M. van Someren (eds). CoIL Challenge 2000: The Insurance Company Case. Published by Sentient Machine Research, Amsterdam. Also a Leiden Institute of Advanced Computer Science Technical Report 2000-09. June 22, 2000.

ファイル

TICDATA2000.txt

学習、予測モデルの検証、また問題の記述に用いるデータであり、5822人分の顧客レコードが収められている。一つのレコードは86の属性(フィールド、または変数)からなり、 前半の1-43は社会人口学的な属性、後半の44-86は商品の契約状況(44-86)を表す。社会人口学的なデータは、郵便番号(zip code)から導かれている。5822人の中で、同じ郵便番号を持つエリアに住む顧客は、同じ社会人口学的な属性を持っている。86番目の属性 “CARAVAN:Number of mobile home policies” が目的変数である。

TICEVAL2000.txt

契約を予測するためのデータであり、4000人分の顧客レコードが収められている。TICDATA2000.txtと同じフォーマットだが、最後の変数だけが欠けている。このコンペティションの参加者は、4000人分の予測結果のみを提出することを求められている。すべてのデータファイルは、タブ区切りのフォーマットである。

TICTGTS2000.txt

評価のためのターゲットである。(?)

データの説明

tic.data.txtからの要約。(上と重複)

  • CoIL 2000 Challengeで用いられた保険会社の顧客に関するデータ。86個の変数は、契約状況(V44-V85)と社会人口統計学的な変数(V1-V43)を含んでいる。この調査は “Can you predict who would be interested in buying a caravan insurance policy and give an explanation why?” という問いに答えるように集められた。
  • このデータはオランダのデータマイニング会社Sentinent Machine Researchから提供され、現実のビジネスの問題に基づいている。学習用データ(ticdata2000.txt)は5000レコードでcaravan insurance policyの契約の有無(V86)を含んでおり、検証用データ(ticeval2000.txt)は4000レコードで契約の有無(V86)は含んでいない。検証用データの正解は、CoIL 2000 Challengeの開催時には公開されていなかったが、現在はテストデータ(tictest2000.txt)として公開されている。
  • V1-V43のうち、コード化が指定されていない変数はすべて、郵便番号の一桁目のエリアを指している。たとえばV30が9ならばその顧客は郵便番号が9で始まるエリアに家を借りていることを、V31が5ならば郵便番号が5のエリアに持ち家があることを意味する。職業、社会層などもすべて、該当するエリアの箇所が郵便番号の一桁目で埋まっている。
変数

dictionary.txtからの抜粋と要約、の日本語版。

変数分類メモ
V1顧客分類2L0でコード化されている、数字の大きさに意味なし
V2住居数大きいほど住む箇所が多い
V3世帯構成員数の平均人数
V4世帯構成員の平均年齢L1でコード化されている、年齢
V5顧客分類1L2でコード化されている、数字の大きさに意味なし
V6-V9宗教L3でコード化されている、V6+V7+V8+V9は9から12の間。それぞれの宗教を信じる割合?
V10-V13結婚場所を表す変数, 例えばV10が0ならば無し?
V14-V15世帯の大きさL3でコード化されている、なぜかV14+V15は10以下。割合?
V16-V18教育水準L3でコード化されている、なぜかV16+V17+V18はほぼ10、それぞれの年数?割合?
V19-V24職業L3でコード化されている、なぜかV19+V20+V21+V22+V23+V24は9から13の間
V25-V29社会層L3でコード化されている、なぜかV25+V26+V27+V28+V29は9から12の間
V30-V31住居L3でコード化されている、なぜかV30+V31は9か10
V32-V34自動車L3でコード化されている、なぜかV32+V33+V34は9から11の間
V35-V36健康保険L3でコード化されている、なぜかV35+V36は9か10
V37-V41収入L3でコード化されている、なぜかV37+V38+V39+V40+V41は9から13の間
V42平均収入L3でコード化されている
V43購買力L3でコード化されている、1から8の間。
V44-V64各種保険支払い額L4でコード化
V65-V85各種保険契約件数件数

メモの確認用のコード。

table((tic.learn$V16+tic.learn$V17+tic.learn$V18))
table((tic.learn$V19+tic.learn$V20+tic.learn$V21+tic.learn$V22+tic.learn$V23+tic.learn$V24))
table((tic.learn$V25+tic.learn$V26+tic.learn$V27+tic.learn$V28+tic.learn$V29))
table(tic.learn$V30+tic.learn$V31)
table(tic.learn$V32+tic.learn$V33+tic.learn$V34)
table(tic.learn$V35+tic.learn$V36)
table(tic.learn$V37+tic.learn$V38+tic.learn$V39+tic.learn$V40+tic.learn$V41)
変数詳細
NrNameDescription Domain
V1MOSTYPECustomer Subtype see L0
V2MAANTHUINumber of houses 1 - 10
V3MGEMOMVAvg size household 1 - 6
V4MGEMLEEFAvg age see L1
V5MOSHOOFDCustomer main type see L2
V6MGODRKRoman catholic see L3
V7MGODPRProtestant …
V8MGODOVOther religion
V9MGODGENo religion (無宗教)
V10MRELGEMarried (既婚)
V11MRELSALiving together (同居)
V12MRELOVOther relation (その他)
V13MFALLEENSingles (独身)
V14MFGEKINDHousehold without children (子供のいない世帯)
V15MFWEKINDHousehold with children (子供のいる世帯)
V16MOPLHOOGHigh level education (高等教育)
V17MOPLMIDDMedium level education (中等教育)
V18MOPLLAAGLower level education (初等教育)
V19MBERHOOGHigh status
V20MBERZELFEntrepreneur
V21MBERBOERFarmer (農業)
V22MBERMIDDMiddle management (中間管理職)
V23MBERARBGSkilled labourers (熟練労働者)
V24MBERARBOUnskilled labourers (非熟練労働者)
V25MSKASocial class A
V26MSKB1Social class B1
V27MSKB2Social class B2
V28MSKCSocial class C
V29MSKDSocial class D
V30MHHUURRented house
V31MHKOOPHome owners
V32MAUT11 car (保有車1台)
V33MAUT22 cars (保有車2台)
V34MAUT0No car (保有車なし)
V35MZFONDSNational Health Service
V36MZPARTPrivate health insurance
V37MINKM30Income < 30.000
V38MINK3045Income (収入) 30-45.000
V39MINK4575Income (収入) 45-75.000
V40MINK7512Income (収入) 75-122.000
V41MINK123MIncome (収入) >123.000
V42MINKGEMAverage income (平均収入)
V43MKOOPKLAPurchasing power class
V44PWAPARTContribution (契約高) private third party insurance see L4
V45PWABEDRContribution (契約高) third party insurance (firms) …
V46PWALANDContribution (契約高) third party insurane (agriculture)
V47PPERSAUTContribution (契約高) car policies
V48PBESAUTContribution (契約高) delivery van policies
V49PMOTSCOContribution (契約高) motorcycle/scooter policies
V50PVRAAUTContribution (契約高) lorry policies
V51PAANHANGContribution (契約高) trailer policies
V52PTRACTORContribution (契約高) tractor policies
V53PWERKTContribution (契約高) agricultural machines policies
V54PBROMContribution (契約高) moped policies
V55PLEVENContribution (契約高) life insurances
V56PPERSONGContribution (契約高) private accident insurance policies
V57PGEZONGContribution (契約高) family accidents insurance policies
V58PWAOREGContribution (契約高) disability insurance policies
V59PBRANDContribution (契約高) fire policies
V60PZEILPLContribution (契約高) surfboard policies
V61PPLEZIERContribution (契約高) boat policies
V62PFIETSContribution (契約高) bicycle policies
V63PINBOEDContribution (契約高) property insurance policies
V64PBYSTANDContribution (契約高) social security insurance policies
V65AWAPARTNumber of (契約口数) private third party insurance 1 - 12
V66AWABEDRNumber of (契約口数) third party insurance (firms) …
V67AWALANDNumber of (契約口数) third party insurane (agriculture)
V68APERSAUTNumber of (契約口数) car policies
V69ABESAUTNumber of (契約口数) delivery van policies
V70AMOTSCONumber of (契約口数) motorcycle/scooter policies
V71AVRAAUTNumber of (契約口数) lorry policies
V72AAANHANGNumber of (契約口数) trailer policies
V73ATRACTORNumber of (契約口数) tractor policies
V74AWERKTNumber of (契約口数) agricultural machines policies
V75ABROMNumber of (契約口数) moped policies
V76ALEVENNumber of (契約口数) life insurances
V77APERSONGNumber of (契約口数) private accident insurance policies
V78AGEZONGNumber of (契約口数) family accidents insurance policies
V79AWAOREGNumber of (契約口数) disability insurance policies
V80ABRANDNumber of (契約口数) fire policies
V81AZEILPLNumber of (契約口数) surfboard policies
V82APLEZIERNumber of (契約口数) boat policies
V83AFIETSNumber of (契約口数) bicycle policies
V84AINBOEDNumber of (契約口数) property insurance policies
V85ABYSTANDNumber of (契約口数) social security insurance policies
V86CARAVANNumber of (契約口数) mobile home policies 0 - 1
各変数のコーディング

L0:分類を表す数字なので、大小関係に意味がなく、名義尺度である。そのままでは説明変数にならない。

ValueLabel
1High Income, expensive child
2Very Important Provincials
3High status seniors
4Affluent senior apartments
5Mixed seniors
6Career and childcare
7Dinki's (double income no kids)
8Middle class families
9Modern, complete families
10Stable family
11Family starters
12Affluent young families
13Young all american family
14Junior cosmopolitan
15Senior cosmopolitans
16Students in apartments
17Fresh masters in the city
18Single youth
19Suburban youth
20Etnically diverse
21Young urban have-nots
22Mixed apartment dwellers
23Young and rising
24Young, low educated
25Young seniors in the city
26Own home elderly
27Seniors in apartments
28Residential elderly
29Porchless seniors: no front yard
30Religious elderly singles
31Low income catholics
32Mixed seniors
33Lower class large families
34Large family, employed child
35Village families
36Couples with teens 'Married with children'
37Mixed small town dwellers
38Traditional families
39Large religous families
40Large family farms
41Mixed rurals

L1:大きさが年齢の順なので、そのまま説明変数に使える。

120-30 years
230-40 years
340-50 years
450-60 years
560-70 years
670-80 years

L2:数字は分類を表すだけなので、連続尺度でも順序尺度でもなく、名義尺度。そのままでは説明変数にならない。

1Successful hedonists
2Driven Growers
3Average Family
4Career Loners
5Living well
6Cruising Seniors
7Retired and Religeous
8Family with grown ups
9Conservative families
10Farmers

L3:順序尺度。このまま連続尺度の説明変数として用いる。

00%
11 - 10%
211 - 23%
324 - 36%
437 - 49%
550 - 62%
663 - 75%
776 - 88%
889 - 99%
9100%

L4: 順序尺度。今回はこのまま連続尺度の変数として用いる。

0f 0
1f 1 - 49
2f 50 - 99
3f 100 - 199
4f 200 - 499
5f 500 - 999
6f 1000 - 4999
7f 5000 - 9999
8f 10.000 - 19.999
9f 20.000 - ?
データのダウンロードと読み込み

演習で用いる保険データは、大学内からであれば、Rに次の命令を実行すれば読み込める。

Sys.setenv("http_proxy"="http://130.153.8.16:8080/")
tic.learn <- read.table("http://kdd.ics.uci.edu/databases/tic/ticdata2000.txt")
tic.eval <- read.table("http://kdd.ics.uci.edu/databases/tic/ticeval2000.txt")
tic.test <- read.table("http://kdd.ics.uci.edu/databases/tic/tictgts2000.txt")
tic.eval <- cbind(tic.eval, tic.test)
colnames(tic.eval)[86] <- "V86"
rm(tic.test)

学外もしくは自宅等であれば、最初の1行(Sys.setenvで始まる行)は不要。

参考

kernlabパッケージに、加工済みのデータが入っていて、それを使うこともできる。

install.packages(c("kernlab"), dependencies=TRUE)
tic.learn <- ticdata[1:5822,]
tic.eval <- ticdata[5823:9822,]