目次
保険会社のベンチマーク
(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 | 顧客分類2 | L0でコード化されている、数字の大きさに意味なし |
| V2 | 住居数 | 大きいほど住む箇所が多い |
| V3 | 世帯構成員数の平均 | 人数 |
| V4 | 世帯構成員の平均年齢 | L1でコード化されている、年齢 |
| V5 | 顧客分類1 | L2でコード化されている、数字の大きさに意味なし |
| 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)
変数詳細
| Nr | Name | Description Domain |
|---|---|---|
| V1 | MOSTYPE | Customer Subtype see L0 |
| V2 | MAANTHUI | Number of houses 1 - 10 |
| V3 | MGEMOMV | Avg size household 1 - 6 |
| V4 | MGEMLEEF | Avg age see L1 |
| V5 | MOSHOOFD | Customer main type see L2 |
| V6 | MGODRK | Roman catholic see L3 |
| V7 | MGODPR | Protestant … |
| V8 | MGODOV | Other religion |
| V9 | MGODGE | No religion (無宗教) |
| V10 | MRELGE | Married (既婚) |
| V11 | MRELSA | Living together (同居) |
| V12 | MRELOV | Other relation (その他) |
| V13 | MFALLEEN | Singles (独身) |
| V14 | MFGEKIND | Household without children (子供のいない世帯) |
| V15 | MFWEKIND | Household with children (子供のいる世帯) |
| V16 | MOPLHOOG | High level education (高等教育) |
| V17 | MOPLMIDD | Medium level education (中等教育) |
| V18 | MOPLLAAG | Lower level education (初等教育) |
| V19 | MBERHOOG | High status |
| V20 | MBERZELF | Entrepreneur |
| V21 | MBERBOER | Farmer (農業) |
| V22 | MBERMIDD | Middle management (中間管理職) |
| V23 | MBERARBG | Skilled labourers (熟練労働者) |
| V24 | MBERARBO | Unskilled labourers (非熟練労働者) |
| V25 | MSKA | Social class A |
| V26 | MSKB1 | Social class B1 |
| V27 | MSKB2 | Social class B2 |
| V28 | MSKC | Social class C |
| V29 | MSKD | Social class D |
| V30 | MHHUUR | Rented house |
| V31 | MHKOOP | Home owners |
| V32 | MAUT1 | 1 car (保有車1台) |
| V33 | MAUT2 | 2 cars (保有車2台) |
| V34 | MAUT0 | No car (保有車なし) |
| V35 | MZFONDS | National Health Service |
| V36 | MZPART | Private health insurance |
| V37 | MINKM30 | Income < 30.000 |
| V38 | MINK3045 | Income (収入) 30-45.000 |
| V39 | MINK4575 | Income (収入) 45-75.000 |
| V40 | MINK7512 | Income (収入) 75-122.000 |
| V41 | MINK123M | Income (収入) >123.000 |
| V42 | MINKGEM | Average income (平均収入) |
| V43 | MKOOPKLA | Purchasing power class |
| V44 | PWAPART | Contribution (契約高) private third party insurance see L4 |
| V45 | PWABEDR | Contribution (契約高) third party insurance (firms) … |
| V46 | PWALAND | Contribution (契約高) third party insurane (agriculture) |
| V47 | PPERSAUT | Contribution (契約高) car policies |
| V48 | PBESAUT | Contribution (契約高) delivery van policies |
| V49 | PMOTSCO | Contribution (契約高) motorcycle/scooter policies |
| V50 | PVRAAUT | Contribution (契約高) lorry policies |
| V51 | PAANHANG | Contribution (契約高) trailer policies |
| V52 | PTRACTOR | Contribution (契約高) tractor policies |
| V53 | PWERKT | Contribution (契約高) agricultural machines policies |
| V54 | PBROM | Contribution (契約高) moped policies |
| V55 | PLEVEN | Contribution (契約高) life insurances |
| V56 | PPERSONG | Contribution (契約高) private accident insurance policies |
| V57 | PGEZONG | Contribution (契約高) family accidents insurance policies |
| V58 | PWAOREG | Contribution (契約高) disability insurance policies |
| V59 | PBRAND | Contribution (契約高) fire policies |
| V60 | PZEILPL | Contribution (契約高) surfboard policies |
| V61 | PPLEZIER | Contribution (契約高) boat policies |
| V62 | PFIETS | Contribution (契約高) bicycle policies |
| V63 | PINBOED | Contribution (契約高) property insurance policies |
| V64 | PBYSTAND | Contribution (契約高) social security insurance policies |
| V65 | AWAPART | Number of (契約口数) private third party insurance 1 - 12 |
| V66 | AWABEDR | Number of (契約口数) third party insurance (firms) … |
| V67 | AWALAND | Number of (契約口数) third party insurane (agriculture) |
| V68 | APERSAUT | Number of (契約口数) car policies |
| V69 | ABESAUT | Number of (契約口数) delivery van policies |
| V70 | AMOTSCO | Number of (契約口数) motorcycle/scooter policies |
| V71 | AVRAAUT | Number of (契約口数) lorry policies |
| V72 | AAANHANG | Number of (契約口数) trailer policies |
| V73 | ATRACTOR | Number of (契約口数) tractor policies |
| V74 | AWERKT | Number of (契約口数) agricultural machines policies |
| V75 | ABROM | Number of (契約口数) moped policies |
| V76 | ALEVEN | Number of (契約口数) life insurances |
| V77 | APERSONG | Number of (契約口数) private accident insurance policies |
| V78 | AGEZONG | Number of (契約口数) family accidents insurance policies |
| V79 | AWAOREG | Number of (契約口数) disability insurance policies |
| V80 | ABRAND | Number of (契約口数) fire policies |
| V81 | AZEILPL | Number of (契約口数) surfboard policies |
| V82 | APLEZIER | Number of (契約口数) boat policies |
| V83 | AFIETS | Number of (契約口数) bicycle policies |
| V84 | AINBOED | Number of (契約口数) property insurance policies |
| V85 | ABYSTAND | Number of (契約口数) social security insurance policies |
| V86 | CARAVAN | Number of (契約口数) mobile home policies 0 - 1 |
各変数のコーディング
L0:分類を表す数字なので、大小関係に意味がなく、名義尺度である。そのままでは説明変数にならない。
| Value | Label |
|---|---|
| 1 | High Income, expensive child |
| 2 | Very Important Provincials |
| 3 | High status seniors |
| 4 | Affluent senior apartments |
| 5 | Mixed seniors |
| 6 | Career and childcare |
| 7 | Dinki's (double income no kids) |
| 8 | Middle class families |
| 9 | Modern, complete families |
| 10 | Stable family |
| 11 | Family starters |
| 12 | Affluent young families |
| 13 | Young all american family |
| 14 | Junior cosmopolitan |
| 15 | Senior cosmopolitans |
| 16 | Students in apartments |
| 17 | Fresh masters in the city |
| 18 | Single youth |
| 19 | Suburban youth |
| 20 | Etnically diverse |
| 21 | Young urban have-nots |
| 22 | Mixed apartment dwellers |
| 23 | Young and rising |
| 24 | Young, low educated |
| 25 | Young seniors in the city |
| 26 | Own home elderly |
| 27 | Seniors in apartments |
| 28 | Residential elderly |
| 29 | Porchless seniors: no front yard |
| 30 | Religious elderly singles |
| 31 | Low income catholics |
| 32 | Mixed seniors |
| 33 | Lower class large families |
| 34 | Large family, employed child |
| 35 | Village families |
| 36 | Couples with teens 'Married with children' |
| 37 | Mixed small town dwellers |
| 38 | Traditional families |
| 39 | Large religous families |
| 40 | Large family farms |
| 41 | Mixed rurals |
L1:大きさが年齢の順なので、そのまま説明変数に使える。
| 1 | 20-30 years |
| 2 | 30-40 years |
| 3 | 40-50 years |
| 4 | 50-60 years |
| 5 | 60-70 years |
| 6 | 70-80 years |
L2:数字は分類を表すだけなので、連続尺度でも順序尺度でもなく、名義尺度。そのままでは説明変数にならない。
| 1 | Successful hedonists |
| 2 | Driven Growers |
| 3 | Average Family |
| 4 | Career Loners |
| 5 | Living well |
| 6 | Cruising Seniors |
| 7 | Retired and Religeous |
| 8 | Family with grown ups |
| 9 | Conservative families |
| 10 | Farmers |
L3:順序尺度。このまま連続尺度の説明変数として用いる。
| 0 | 0% |
| 1 | 1 - 10% |
| 2 | 11 - 23% |
| 3 | 24 - 36% |
| 4 | 37 - 49% |
| 5 | 50 - 62% |
| 6 | 63 - 75% |
| 7 | 76 - 88% |
| 8 | 89 - 99% |
| 9 | 100% |
L4: 順序尺度。今回はこのまま連続尺度の変数として用いる。
| 0 | f 0 |
| 1 | f 1 - 49 |
| 2 | f 50 - 99 |
| 3 | f 100 - 199 |
| 4 | f 200 - 499 |
| 5 | f 500 - 999 |
| 6 | f 1000 - 4999 |
| 7 | f 5000 - 9999 |
| 8 | f 10.000 - 19.999 |
| 9 | f 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,]