Tradeoff Analyticsのテスト方法に関して説明します。あらかじめ Bluemix アカウントを作成し、さらにTradeoff Analystics サービスを作成する必要があります。
Tradeoff Analytics service Tutorial
上記より、 problem.json (https://www.ibm.com/watson/developercloud/doc/tradeoff-analytics/example/problem.json) をダウンロードしサンプルとして使用します。
このサンプルファイルでは7機種のスマホの仕様、及びユーザ(あなた)がこれらのスマホを選ぶとき、どの項目 "price(値段)"、"weight(重さ)"、"brand(ブランド)"、"rData(発売日)"を重視して購入するかを指定しているファイルです。
例えば「price」を例として説明します。
スポンサーリンク
| key | key 名を指定します。ここでは"price"を価格として指定しています。 |
| type | 型のタイプです。numeric(数値)、datetime(日付)など。 |
| goal | この項目を重視する場合、どのような値をプラス要素かを指定します。例えば価格なら安い(min)、重量な少ない(min)、発売日なら最近(max)を指定します。価格なので安い方が良いため「min」を指定しています。 |
| is_objective | Tradeoffに含める、要するにこのケースではスマホを選ぶ際に重視するかを指定します。 true の場合、スマホを選択するのに価格を重視するとうことです。 |
| full_name | 名前です。 |
| range | 値の範囲を指定します。0~400を指定しています。価格が400を超える場合は購入しません。 |
次はスマホです。ここでは1~7までのスマホが定義されています。これが購入する候補ということです。
「Samsung Galaxy S4」を例として説明します。
| key | 1。このファイルでは1~7まで7機種指定されています。 |
| name | Samsung Galaxy S4。名前です。 |
| values | - |
| price | 249。価格です。 |
| weight | 130。重さです。 |
| brand | Samsung。ブランド名、メーカ名です。 |
| rDate | 2013-04-29T00:00:00Z。発売年月日です。 |
これでTradeoff対象のスマホ、及びスマホの選定の条件が揃ったことになります。
スポンサーリンク
{
"subject": "phones",
"columns": [
{
"key": "price",
"type": "numeric",
"goal": "min",
"is_objective": true,
"full_name": "Price",
"range": {
"low": 0,
"high": 400
},
"format": "number:2"
},
{
"key": "weight",
"type": "numeric",
"goal": "min",
"is_objective": true,
"full_name": "Weight",
"format": "number:0"
},
{
"key": "brand",
"type": "categorical",
"goal": "min",
"is_objective": true,
"full_name": "Brand",
"range": [
"Apple",
"HTC",
"Samsung",
"Sony"
],
"preference": [
"Samsung",
"Apple",
"HTC"
]
},
{
"key": "rDate",
"type": "datetime",
"goal": "max",
"full_name": "Release Date",
"format": "date: 'MMM dd, yyyy'"
}
],
"options": [
{
"key": "1",
"name": "Samsung Galaxy S4",
"values": {
"price": 249,
"weight": 130,
"brand": "Samsung",
"rDate": "2013-04-29T00:00:00Z"
}
},
{
"key": "2",
"name": "Apple iPhone 5",
"values": {
"price": 349,
"weight": 112,
"brand": "Apple",
"rDate": "2012-09-21T00:00:00Z"
}
},
{
"key": "3",
"name": "HTC One",
"values": {
"price": 299,
"weight": 112,
"brand": "HTC",
"rDate": "2013-03-01T00:00:00Z"
}
},
{
"key": "4",
"name": "Samsung Galaxy S5",
"values": {
"price": 349,
"weight": 135,
"brand": "Samsung",
"rDate": "2014-04-29T00:00:00Z"
}
},
{
"key": "5",
"name": "Apple iPhone 6",
"values": {
"price": 399,
"weight": 118,
"brand": "Apple",
"rDate": "2013-09-21T00:00:00Z"
}
},
{
"key": "6",
"name": "Apple iPhone 7",
"values": {
"price": 499,
"weight": 118,
"brand": "Apple",
"rDate": "2014-09-21T00:00:00Z"
}
},
{
"key": "7",
"name": "Sony Xperia",
"values": {
"price": 199,
"weight": 120,
"brand": "Sony",
"rDate": "2014-08-21T00:00:00Z"
}
}
]
}
以下の例ではこのファイルが c:\temp\problem.json に保管されている想定です。Watson API に投入して結果を確認します。
結果は以下の通りとなります。
Resolution 以下に結果が格納されています。
"solution_ref":"1","status":"FRONT" は上記の key 1 (Samsung Galaxy S4) の結果が FRONT (条件に一致)であることを示しています。
"solution_ref":"4","status":"EXCLUDED","excluded_by":[{"solution_ref":"1","objectives":[{"key":"price","difference":100.0},{"key":"weight","difference":5.0}]}]},{"solution_ref":"5","status":"EXCLUDED","excluded_by":[{"solution_ref":"2","objectives":[{"key":"price","difference":50.0},{"key":"weight","difference":6.0}]}]},{"solution_ref":"6","status":"INCOMPLETE","status_cause":{"message":"A
column of a option is out of range. Option \"6\" has a value
in column \"price\" which is:\"499\" while the column
range\" is: [0.0,400.0]
はEXCLUDED (条件外)であることを示しています。理由は価格 499 が指定したレンジである0~400を超えているからです。
"solution_ref":"7","status":"DOES_NOT_MEET_PREFERENCE","status_cause":{"message":"Option \"7\" has a value that does not meet preference for column \"brand\"","error_code":"DOES_NOT_MEET_PREFERENCE","tokens":["brand"]
はbrand が指定した範囲に含まれないことをDOES_NOT_MEET_PREFERENCEとして表現しています。
スポンサーリンク