0
0
0
share
#ibm#Bluemix#tradeoff#analytics
0 Komentar
Belajar Merekomendasikan Produk dengan Layanan IBM Bluemix Tradeoff Analytics
Melanjutkan seri tutorial "Menggunakan Bluemix untuk Development", kali ini kita akan membahas tentang Tradeoff Analytics. Tradeoff Analytics merupakan layanan yang berguna dalam membantu seseorang dalam mengambil keputusan ketika banyak faktor dan perlu diseimbangkan agar mencapai tujuan diinginkan. Ketika Anda membuat keputusan, pastinya banyak faktor yang dipertimbangkan? Bagaimana Anda mengidentifikasi pilihan terbaik? Dengan layanan Tradeoff Analytics, Anda dapat menghindari daftar pilihan terbatas dan menentukan pilihan yang tepat dengan mempertimbangkan beberapa tujuan lainnya.
Baiknya Layanan IBM Bluemix Tradeoff Analytics digunakan untuk apa saja sih?
Layanan Tradeoff Analytics menggunakan teknik filtering secara matematis yang biasa disebut Optimization Pareto. Optimization Pareto memungkinkan pengguna untuk menjelajahi timbal balik (feedback) ketika mempertimbangkan beberapa kriteria untuk memperoleh keputusan tunggal. Layanan Tradeoff Analytics berguna untuk membangun aplikasi yang dapat membantu:
- Analis bank atau investor dalam memilih strategi investasi yang terbaik
- E-commerce dalam merekomendasikan produk yang paling cocok dengan preferensi konsumen
- Dokter dalam menemukan pengobatan yang paling cocok berdasarkan beberapa kriteria atau gejala pasien
Input yang diperlukan Layanan Tradeoff IBM Bluemix itu apa saja sih?
Masalah keputusan dengan tujuan dan pilihan. Misalnya, Anda ingin membeli mobil yang terbaik berdasarkan tipe, harga, dan efisiensi bahan bakar.
Output yang dihasilkan Layanan Tradeoff IBM Bluemix bentuknya apa sih?
Objek JSON yang merepresentasikan pilihan keputusan yang optimal dan menyoroti trade-off antar pilihan yang didefinisikan pada Input. Layanan Tradeoff Analytics merekomendasikan keputusan yang terbaik melalui output yang dihasilkan. Selanjutnya bisa ditampilkan dengan antarmuka yang bagus dengan menggunakan library klien agar dapat melakukan visualisasi terhadap output JSON.
Contoh sederhananya, Bagaimana sih?
Ketika Anda berbelanja smartphone, Anda biasanya mempertimbangkan kelebihan dan kekurangannya. Mulai dari harga, ukuran layar, baterai dan berat. Dengan menyesuaikan satu set timbangan yang terkoordinasi untuk setiap faktor (harga, ukuran layar, dll), Anda dapat mengeksplorasi pilihan terbaik dan membuat keputusan antar masing-masing faktor.
Baca juga: Belajar Menganalisa Karakter Seseorang dengan IBM Bluemix Watson Personal Insights
Penggunaan Layanan IBM Bluemix Tradeoff Analytics ada yang gratis nggak sih?
Standar pelayanan yang diberikan umumnya diberikan secara cuma-cuma. Pertama mendaftar akun Bluemix, Anda akan mendapatan call API seribu per bulan secara gratis. Termasuk kemampuan untuk menggunakan bahasa Inggris, Jerman, Spanyol, Perancis, Italia, Jepang, Korea, Portugis (Brasil), Cina, dan Cina Taiwan. Jika sudah melewati batas tiap bulannya, call API tambahan akan dikenakan sebesar $0.03 per panggilan.
Saya seorang Developer dan ingin tahu cara kerja Layanan IBM Bluemix Tradeoff Analytics, Bagaimana? Ribet nggak sih?
Anda dapat mengakses kemampuan layanan Tradeoff Analytics melalui request HTTP dengan (REST) API. SDK juga tersedia untuk memudahkan pengembangan aplikasi dalam berbagai bahasa. Bagian selanjutnya akan dijelaskan mengenai gambaran pengembangan aplikasi dengan layanan Tradeoff Analytics.
Saya suka pemrograman, Bagaimana penggunaan Layanan IBM Tradeoff Analytics jika dikombinasikan dengan coding ?
Untuk menggunakan layanan Tradeoff Analytics, Anda dapat mengirimkan input berupa decision problem melalui API dengan HTTP method POST dilemma
. Anda dapat merepresentasikan decision problem sebagai objek JSON. Dibawah ini merupakan contoh yang menunjukkan bagaimana merepresentasikan decision problem
yang sederhana.
Pada contoh objek JSON terdapat dua objek yang dispesifikasikan melalui parameter columns
dengan key
obj1
dan obj2
. Masing-masing memiliki full_names
yang menggambaran objek, type
untuk numerik, dan parameter boolean is_objective
diatur menjadi true
untuk mengindikasikan bahwa layanan bisa mengevaluasi setiap opsi. Adapun goal
pada objek pertama menspesifikasikan bahwa objek tersebut dapat diminimalkan (min
), sedangkan objek kedua mengindikasikan bahwa objek tersebut dapat dimaksimalkan (max
).
Lebih rinci, objek JSON menspesifikasikan dua opsi melalui parameter option
. Masing-masing memiliki key
dan name
termasuk value
pada kedua objective. Gambar diatas menunjukkan bagaimana objective dan opsi dispesifikasikan dalam JSON.
Jika request HTTP berhasil, Anda akan mendapatkan response Dilemma
dalam bentuk objek JSON yang berisi dua construct: 1) decision problem
sebelumnya; 2) resolution
dari problem
tersebut. resolution
berisi solusi-solusi yang menggambarkan bahwa opsi menumpuk pada kedua objective. resolution
juga terdiri dari map
dengan parameter yang dibutuhkan untuk merepresentasikan masalah dan solusinya pada dua dimensi visualisasi dalam antarmuka grafis pada layanan Tradeoff.
Objek tersebut dapat divisualisasikan dengan antarmuka klien yang tersedia melalui library JavaScript yang menyediakan klien web yang kuat dimana pengguna dapat menjelajahi dan menganalisis pilihan di antara pilihan yang tersedia. Library, direferensikan sebagai widget Tradeoff Analytics, yang dapat merekomendasikan pilihan terbaik dengan memanfaatkan output layanan.
Penggunaan antarmuka interaktif bersifat opsional, aplikasi tetap dapat menghubungi layanan tanpa melibatkan antarmuka tersebut. Layanan dapat mengembalikan hasil analisis tanpa parameter yang diperlukan untuk antarmuka dan visualisasinya. Untuk informasi lebih lanjut tentang penggunaan antarmuka interaktif, Anda bisa melihat dokumentasi antarmuka dan widget.
Baca juga: Belajar Menggunakan Layanan IBM Bluemix Cloudant NoSQL
Tutorial
Tutorial berbasis cURL ini dapat membantu Anda memulai dengan cepat penggunaan layanan Tradeoff Analytics. Contoh dibawah ini akan menunjukkan cara memanggil layanan ini dengan request HTTP POST dilemma
baik dengan visualisasi maupun tidak.
Prasyarat
Anda perlu mendaftar ke IBM Bluemix dan memilih layanan Tradeoff Analytics.
Tahap 1: Daftar Akun Bluemix
Jika anda belum memiliki akun, silahkan daftar melalui website resmi IBM Bluemix. Pilih Start Free in Bluemix dan isi form yang tersedia.
Periksa inbox email anda untuk verifikasi akun.
Tahap 2: Login ke IBM Bluemix
Kunjungi halaman Login IBM Bluemix, kemudian masukan identitas akun anda.
Anda akan diarahkan ke halaman dasbor IBM Bluemix. Pilih Create Services.
Anda akan diarahkan pada halaman katalog IBM Bluemix. Pilih Tradeoff Anayltics.
Isi Services Name dan Credential Name dengan nama yang anda inginkan. Pilih Create.
Anda akan diarahkan ke halaman manajemen akun Service Tradeoff Analytics.
Anda bisa mengambil identitas akun Anda pada tab Service Credentials.
Klik pada View Credentials, Anda bisa melihat username dan password akun milik Anda.
{
"url": "https://gateway.watsonplatform.net/tradeoff-analytics/api",
"password": "IFfKvnMMkWR1",
"username": "35029396-bade-40ca-9e8c-f5b9b78b0d31"
}
Menggunakan decision problem sebagai Input
Anda bisa menggunakan cURL dengan opsi --data
untuk mengunggah berkas JSON problem.json
ke layanan Tradeoff Analytics. Isi berkas problem.json
merepresentasikan decision problem. Field subject
menjelaskan decision problem yang akan dikirim ke layanan Tradeoff Analytics, misal tentang phones
.
{
"subject": "phones",
. . .
}
Field columns
menyediakan berbagai objective array untuk properti dan atribut smartphones. Tiap field menspesifikasikan 4 kolom: price
, weight
, brand
, dan rData
(tanggal rilis). Hanya tiga pertama yang didefinisikan sebagai objective yang diatur dengan is_objective
menjadi true
, sedangkan yang ke-4 hanya tambahan informasi saja.
Tiga kolom yang merupakan objective dapat mengatur field goal
ke field min
. Sedangkan price
dan weight
berguna mendefinisikan preferensi nilai terendah. Adapun brand
yang berguna menunjukkan urutan nilai-nilai yang tercantum dalam field preferensi yang lebih disukai: Nilai di awal daftar lebih disukai dibanding urutan terakhir.
Input mendefinisikan rentang nilai yang diijinkan untuk kolom price
dan brand
. Input juga menyediakan format untuk presentasi price
, weight
, dan kolom rData
ketika ditampilkan melalui klien widget Tradeoff Analytics.
{
. . .
"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'"
}
],
. . .
}
Field options
menyediakan array phones
yang berhubungan dengan masalah. Masing-masing opsi diidentifikasikan dengan key
yang unik dan masing-masing memiliki values
untuk setiap objective pada masalah. Layanan Tradeoff Analytics akan membandingkan pilihan terhadap kedua objective dan dibandingkan satu sama lain untuk menentukan kandidat dengan tujuh teratas terbaik.
{
. . .
"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"
}
}
]
}
Contoh pertama, dimulai dengan mengunggah berkas problem.json
dengan method POST dilemmas
dengan mengatur generate_visualization
menjadi false
sehingga layanan akan mengembalikan objek Resolution
tanpa objek Map
yang biasa digunakan pada widget klien Tradeoff Analytics. Pada contoh, atur header Content-type
ke application/json
yang berguna untuk semua method.
Anda bisa mulai menggunakannya dengan berkas problem.json yang merupakan dilemma problem yang akan dianalisis untuk mendapatkan solusinya. Unduh berkas problem.json
terlebih dahulu.
$ sudo wget -c https://www.ibm.com/watson/developercloud/doc/tradeoff-analytics/example/problem.json
curl -X POST --user <username>:<password>
--header "Content-Type: application/json"
--data @problem.json
"https://gateway.watsonplatform.net/tradeoff-analytics/api/v1/dilemmas?generate_visualization=false"
Layanan akan mengembalikan objek JSON Dilemma
yang terdiri dari field problem
. Field ini akan berlipat ganda sesuai dengan objek Problem
yang dikirimkan melalui requests.
{
"problem": {
"columns": [
{
"type": "numeric",
"key": "price",
"full_name": "Price",
"range": {
"low": 0,
"high": 400
},
"format": "number:2",
"goal": "min",
"is_objective": true
},
{
"type": "numeric",
"key": "weight",
"full_name": "Weight",
"format": "number:0",
"goal": "min",
"is_objective": true
},
{
"type": "categorical",
"key": "brand",
"full_name": "Brand",
"range": [
"Apple",
"HTC",
"Samsung",
"Sony"
],
"goal": "min",
"preference": [
"Samsung",
"Apple",
"HTC"
],
"is_objective": true
},
{
"type": "datetime",
"key": "rDate",
"full_name": "Release Date",
"format": "date: 'MMM dd, yyyy'",
"goal": "max",
"is_objective": false
}
],
"subject": "phones",
"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"
}
}
]
},
"resolution": {
. . .
}
}
Selanjutnya, Anda bisa menggunakan cURL untuk mengirimkan requests ke layanan Tradeoff Analytics. Ganti username dan password pada perintah dibawah ini menggunakan akun Anda,
$ sudo curl -s -X POST --user <username>:<password> \
--header "Content-Type: application/json" \
--data @problem.json "https://gateway.watsonplatform.net/tradeoff-analytics/api/v1/dilemmas?generate_visualization=false" | \
python -m json.tool > result.json
Baca juga: Belajar Menganalisis Sentimen Netizen dengan IBM Bluemix Twitter Insights
Misal,
$ sudo curl -s -X POST --user "35029396-bade-40ca-9e8c-f5b9b78b0d31":"IFfKvnMMkWR1" \
--header "Content-Type: application/json" \
--data @problem.json "https://gateway.watsonplatform.net/tradeoff-analytics/api/v1/dilemmas?generate_visualization=false" | \
python -m json.tool > result.json
Pada perintah tersebut, Anda telah mengirimkan requests dengan method POST, dengan mengunggah berkas problem.json
, kemudian dirapikan dengan JSON prettifier milik Python, selanjutnya disimpan dalam result.json
. Ini dia isi berkas result.json
:
{
"problem": {
"columns": [
{
"format": "number:2",
"full_name": "Price",
"goal": "min",
"is_objective": true,
"key": "price",
"range": {
"high": 400.0,
"low": 0.0
},
"type": "numeric"
},
{
"format": "number:0",
"full_name": "Weight",
"goal": "min",
"is_objective": true,
"key": "weight",
"type": "numeric"
},
{
"full_name": "Brand",
"goal": "min",
"is_objective": true,
"key": "brand",
"preference": [
"Samsung",
"Apple",
"HTC"
],
"range": [
"Apple",
"HTC",
"Samsung",
"Sony"
],
"type": "categorical"
},
{
"format": "date: 'MMM dd, yyyy'",
"full_name": "Release Date",
"goal": "max",
"is_objective": false,
"key": "rDate",
"type": "datetime"
}
],
"options": [
{
"key": "1",
"name": "Samsung Galaxy S4",
"values": {
"brand": "Samsung",
"price": 249,
"rDate": "2013-04-29T00:00:00Z",
"weight": 130
}
},
{
"key": "2",
"name": "Apple iPhone 5",
"values": {
"brand": "Apple",
"price": 349,
"rDate": "2012-09-21T00:00:00Z",
"weight": 112
}
},
{
"key": "3",
"name": "HTC One",
"values": {
"brand": "HTC",
"price": 299,
"rDate": "2013-03-01T00:00:00Z",
"weight": 112
}
},
{
"key": "4",
"name": "Samsung Galaxy S5",
"values": {
"brand": "Samsung",
"price": 349,
"rDate": "2014-04-29T00:00:00Z",
"weight": 135
}
},
{
"key": "5",
"name": "Apple iPhone 6",
"values": {
"brand": "Apple",
"price": 399,
"rDate": "2013-09-21T00:00:00Z",
"weight": 118
}
},
{
"key": "6",
"name": "Apple iPhone 7",
"values": {
"brand": "Apple",
"price": 499,
"rDate": "2014-09-21T00:00:00Z",
"weight": 118
}
},
{
"key": "7",
"name": "Sony Xperia",
"values": {
"brand": "Sony",
"price": 199,
"rDate": "2014-08-21T00:00:00Z",
"weight": 120
}
}
],
"subject": "phones"
},
"resolution": {
"solutions": [
{
"solution_ref": "1",
"status": "FRONT"
},
{
"solution_ref": "2",
"status": "FRONT"
},
{
"solution_ref": "3",
"status": "FRONT"
},
{
"excluded_by": [
{
"objectives": [
{
"difference": 100.0,
"key": "price"
},
{
"difference": 5.0,
"key": "weight"
}
],
"solution_ref": "1"
}
],
"solution_ref": "4",
"status": "EXCLUDED"
},
{
"excluded_by": [
{
"objectives": [
{
"difference": 50.0,
"key": "price"
},
{
"difference": 6.0,
"key": "weight"
}
],
"solution_ref": "2"
}
],
"solution_ref": "5",
"status": "EXCLUDED"
},
{
"solution_ref": "6",
"status": "INCOMPLETE",
"status_cause": {
"error_code": "RANGE_MISMATCH",
"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]",
"tokens": [
"price",
"499",
"[0.0,400.0]"
]
}
},
{
"solution_ref": "7",
"status": "DOES_NOT_MEET_PREFERENCE",
"status_cause": {
"error_code": "DOES_NOT_MEET_PREFERENCE",
"message": "Option \"7\" has a value that does not meet preference for column \"brand\"",
"tokens": [
"brand"
]
}
}
]
}
}
Objek Dilemma
terdiri dari field Resolution
yang menyediakan hasil evaluasi layanan dari tujuh pilihan yang ada. Field solution
memberikan array objek Solution
dengan hasil untuk setiap pilihan. Untuk setiap elemen dari array, field solution_ref
mengidentifikasi kunci dari sebuah pilihan, dan field status
menunjukkan disposisi pilihan dalam resolusi:
- Tiga pilihan pertama memiliki status
FRONT
untuk menunjukkan bahwa pilihan tersebut adalah salah satu kandidat terbaik. - Dua pilihan berikutnya memiliki status
EXCLUDED
(dikecualikan). Ini berarti bahwa ada satu pilihan atau lebih yang unggul untuk setiap opsi. Untuk kedua pilihan, output mencakup fieldexcluded_by
yang berisi daftar pilihan superior dan menjelaskan nilai-nilai opsi yang lebih baik dibandingkan opsi yang bersangkutan. - Opsi 6 memiliki status
INCOMPLETE
(tidak lengkap). Fieldstatus_cause
menunjukkan bahwa pilihan memilikiRANGE_MISMATCH
dengan kolomprice
: Harganya melebihi jangkauan maksimum objective tersebut. - Opsi 7 memiliki status
DOES_NOT_MEET_PREFERENCE
. Fieldstatus_cause
menunjukkan bahwa pilihan tidak sesuai dengan kebutuhan.
Penggunaan layanan IBM Bluemix Tradeoff Analytics lebih lanjut, bisa Anda terapkan dalam membangun berbagai aplikasi yang berhubungan dengan rekomendasi, diantaranya:
- Aplikasi pencari sekolah, berdasaran kepribadian anak, lihat demo.
- Aplikasi pencari rumah, berdasaran harga, lokasi, tempat tidur, kamar mandi dan sebagainya, lihat demo.
- Aplikasi investment Advisor, lihat demo
- Aplikasi pencari mobil, berdasarkan harga, mesin, mpg dan sebagainya, lihat demo
- Dan lain-lain.
Buat kamu yang ingin belajar dan mengenal lebih banyak tentang Bluemix, kamu bisa mengikuti Akademi Dicoding Belajar Membangun Aplikasi Android dengan IBM Bluemix atau bisa juga melalui tutorial-tutorial di Dirakit. Semoga bermanfaat. Selamat belajar.
0
0
0
share