Thursday, February 09, 2017

Memahami Overfitting dengan mudah menggunakan contoh

Problem - Sulit memahami overfitting

Beberapa orang menyampaikan kesulitan dalam memahami overfitting. Artikel berikut dibuat dengan tujuan untuk memberikan kemudahan dalam memahami overfitting. Anda dapat memahami overfitting dengan mudah menggunakan contoh kasus yang diberikan pada dunia nyata.
Memahami Overfitting dengan mudah menggunakan contoh
Memahami Overfitting dengan mudah menggunakan contoh

Generalisasi - pengenalan pola

Overfitting adalah suatu kondisi yang mungkin terjadi pada proses generalisasi. Generalisasi adalah suatu proses induksi yang berusaha mengenali suatu pola dari suatu kejadian pada masa lampau untuk memprediksi kejadian pada masa yang akan datang.

Contoh Generalisasi: 

Perlu prediksi apakah seorang mahasiswa baru akan mampu berprestasi atau tidak.

Oleh karena itu dikumpulkan data dari mahasiswa-mahasiswa yang telah lalu untuk mengenali ciri-ciri mahasiwa yang akan berprestasi. Beberapa ciri atau atribut yang dimiliki oleh mahasiswa adalah:

  • Usia
  • Asal
  • Jenis kelamin
  • Agama
  • Golongan Darah
  • Pekerjaan Ayah
  • Pendidikan Ayah
  • Jurusan SMA
  • Prestasi (label yang ingin diprediksi)

Oleh karena itu dilakukan proses generalisasi (istilah pada machine learning) pada data mahasiswa lama untuk menentukan apakah seorang mahasiswa baru akan berprestasi atau tidak. Hasil proses generalisasi berupa model. Prediksi prestasi mahasiswa baru dilakukan dengan memasukan ciri/atribut mahasiwa baru tersebut ke dalam model yang telah dibangun.

OVERFITTING


Overfitting adalah suatu kondisi dimana model, dibangun dengan memperhitungkan seluruh ciri yang ada, termasuk noise
Padahal, bisa jadi satu atau lebih ciri tidak berkontribusi atau lebih dikenal sebagai noise (dalam kasus diatas, tidak semua ciri/atribut mahasiswa menentukan prestasi mahasiswa). Konsekuensinya, meskipun model yang dibangun sangat cocok pada data training (mahasiswa lama), namun salah dalam memprediksi prestasi mahasiswa baru.

Contoh Overfitting:

Sebetulnya yang mempengaruhi prestasi mahasiwa adalah usia, asal, pendidikan ayah, pekerjaan ayah, dan jurusan SMA. Maka noise di sini adalah jenis kelamin, agama, dan golongan darah.

Sehingga jika kebetulan golongan darah pada semua mahasiswa lama semuanya A (dan ini dikenali sebagai pola), maka ketika ada mahasiswa baru yang memenuhi kriteria usia, asal, pendidikan ayah, pekerjaan ayah, dan jurusan SMA akan diprediksi tidak berprestasi hanya karena golongan darah B.
Sementara pada kenyataannya ia berpretasi (prediksi salah).

Semoga bermanfaat

ditulis oleh: Syarif Hidayat

Catatan:
Diperbolehkan menyalin dan mempublikasikan artikel di atas selama memberi kredit dan/atau referensi kepada situs syarifhidayat.net dengan cara mencantumkan logo dan/atau menulis sumbernya yaitu situs syarifhidayat.net serta memberi link ke halaman situs syarifhidayat.net pada setiap materi yang digunakan. (Sesuai ketentuan Undang-Undang Republik Indonesia Nomor 19 Tahun 2002 tentang Hak Cipta)




Wednesday, February 08, 2017

Solusi Super Loop versus Real Time Operating System

Super Loop vs Real Time OS
Super Loop vs Real Time OS


Embedded system sederhana biasanya menggunakan sebuah konsep super-loop dimana aplikasi menjalankan setiap fungsi dalam urutan yang pasti. Interrupt Service Routing (ISR) digunakan untuk bagian program yang time-critical. Pendekatan ini cocok untuk sistem kecil namun memiliki keterbatasan untuk aplikasi yang lebih rumit.
Kekurangan konsep super-loop:
  • Operasi time-critical harus diolah dalam ISR. ISR menjadi lebih kompleks dan memerlukan waktu yang lebih panjang untuk meng-eksekusinya.Percabangan ISR dapat membuat waktu eksekusi dan kebutuhan stack menjadi tidak dapat diperkirakan.
  • Pertukaran data antara super-loop dan ISR dilakukan melalui variabel yang di-share secara global. Ini berarti, pengembang aplikasi harus memastikan konsistensi data.
  • Sebuah super-loop dapat dengan mudah di-sinkronkan dengan system timer, namun:
  1. Bila sebuah sistem memerlukan siklus waktu yang berbeda, hal ini sulit untuk diwujudkan.
  2. Memecah fungsi yang boros waktu yang melebihi siklus super-loop akan menjadi kendala.
  3. Membuat kendala dalam software dan program menjadi sulit untuk dimengerti.
  • Aplikasi super-loop menjadi kompleks dan sulit untuk dikembangkan. Sebuah perubahan yang sederhana dapat menimbulkan efek samping yang tidak bisa diperkirakan.
Kekurangan dari konsep super-loop dapat diselesaikan dengan menggunakan Real-Time Operating System (RTOS).
RTOS memisahkan fungsi-fungsi program ke dalam self-contained task dan meng-implementasikan sebuah penjadwalan eksekusinya sesuai dengan permintaan.
Sebuah RTOS memberikan manfaat, seperti:
  • Task scheduling - task dipanggil ketika dibutuhkan menjamin aliran program dan respons event yang lebih baik.
  • Multitasking - penjadwalan task memberikan ilusi menjalankan sejumlah task secara simultan.
  • Deterministic behaviour - event dan interupsi ditangani dalam sebuah waktu yang ter-definisi.
  • Shorter ISR - memungkinkan perilaku interupsi yang lebih dapat ditentukan.
  • Inter-task communication - mengelola sharing data, memori dan sumber daya perangkat keras diantara beberapa task.
  • Defined stack usage - setiap task dialokasikan ruang stack, memungkinkan penggunaan memori yang dapat diperkirakan.
  • System management - memungkinkan kita untuk fokus pada pengembangan aplikasi daripada mengelola sumber daya.
Dalam implementasinya, RTOS memerlukan resources ekstra, terutama dalam hal processing power (CPU) dan RAM. Mikrokontroler 32-bit ARM Cortex-M menjawab kebutuhan ini, dengan menyediakan CPU yang powerful serta ketersediaan RAM yang cukup besar. Sebagai contoh, STM32F401 yang tertanam dalam board STM32 Nucleo, dapat bekerja pada frekuensi 84 MHz dan memiliki RAM 96k. Bandingkan dengan mikrokontroler AVR 8-bit, misal ATmega2560 yang tertanam dalam board Arduino Mega, yang bekerja pada frekuensi 16 MHz dan memiliki RAM 4k.

Memahami konsep dan implementasi Real Time Operating System tidak sesulit dan serumit yang dibayangkan. Satu hal yang perlu kita ingat, perkembangan teknologi pasti membawa kemudahan, guna mendorong peningkatan produktivitas. Bila sudah menggunakan teknologi namun produktivitas tidak meningkat, berarti ada yang salah - salah pilih teknologi :) 
 

Semoga bermanfaat.
 
Sumber: email dari salah satu provider pelatihan

Wednesday, February 01, 2017

Random Forest (6) - Kode

Artikel ini merupakan kelanjutan dari artikel sebelumnya tentang Random Forest.

  Kode Random Forest

Kode Random Forest

======================

  Matlab

======================

======================

  R

======================

======================

  C/C++

======================

======================

  Python

======================

======================

  Java Script

======================

======================

  Go (Golang)

======================



Semoga bermanfaat dan tunggu artikel mengenai Decision Forest berikutnya.

Random Forest (5) - Desain Model

Artikel ini merupakan kelanjutan dari artikel sebelumnya tentang Random Forest.

  Flowchart Random Forest

Flowchart Random Forest
Flowchart Random Forest

======================

  Practical Consideration

======================

  • Splits dipilih berdasarkan ukuran purity:

    • Contoh: squared error (regression), Gini index atau deviance (classification)
  • Bagaimana memilih N (kasus)?

    • Bangun pohon keputusan hingga tidak terjadi penurunan nilai error
  • Bagaimana memilih M(variabel)?

    • Usulkan M berdasarkan rekomendasi default, coba separuhnya, coba 2x nya untuk kemudian dipilih m dengan nilai terbaik.

Semoga bermanfaat dan tunggu artikel mengenai Decision Forest berikutnya.

Random forest (4) - Aplikasi

Artikel ini merupakan kelanjutan dari artikel sebelumnya tentang Random Forest.

  Aplikasi Random Forest

Aplikasi Random Forest
Aplikasi Random Forest

======================

 Image classification

======================

  • ETH Zurich [Paper-CVPR15] [Paper-CVPR14] [Paper-ECCV]

    • Marko Ristin, Juergen Gall, Matthieu Guillaumin, and Luc Van Gool, From Categories to Subcategories: Large-scale Image Classification with Partial Class Label Refinement, CVPR 2015
    • Marko Ristin, Matthieu Guillaumin, Juergen Gall, and Luc Van Gool, Incremental Learning of NCM Forests for Large-Scale Image Classification, CVPR 2014
    • Lukas Bossard, Matthieu Guillaumin, and Luc Van Gool, Food-101 – Mining Discriminative Components with Random Forests, ECCV 2014
  • University of Girona & University of Oxford [Paper]

    • Anna Bosch, Andrew Zisserman, and Xavier Munoz, Image Classification using Random Forests and Ferns, ICCV 2007

 ======================

Object Detection

======================

  • Graz University of Technology [Paper-CVPR] [Paper-ICCV]

    • Samuel Schulter, Christian Leistner, Paul Wohlhart, Peter M. Roth, and Horst Bischof, Accurate Object Detection with Joint Classification-Regression Random Forests, CVPR 2014
    • Samuel Schulter, Christian Leistner, Paul Wohlhart, Peter M. Roth, and Horst Bischof, Alternating Regression Forests for Object Detection and Pose Estimation, ICCV 2013
  • ETH Zurich + Microsoft Research Cambridge [Paper]

    • Juergen Gall, and Victor Lempitsky, Class-Specific Hough Forests for Object Detection, CVPR 2009

======================

 Object Tracking

======================

  • Technische Universitat Munchen [Paper]

    • David Joseph Tan, and Slobodan Ilic, Multi-Forest Tracker: A Chameleon in Tracking, CVPR 2014
  • ETH Zurich + Leibniz University Hannover + Stanford University [Paper]

    • Laura Leal-Taixe, Michele Fenzi, Alina Kuznetsova, Bodo Rosenhahn, and Silvio Savarese, Learning an image-based motion context for multiple people tracking, CVPR 2014
  • Graz University of Technology [Paper]

    • Martin Godec, Peter M. Roth, and Horst Bischof, Hough-based Tracking of Non-Rigid Objects, ICCV 2011

======================

 Edge Detection

======================

  • University of California, Irvine [Paper] [Code]

    • Sam Hallman, and Charless C. Fowlkes, Oriented Edge Forests for Boundary Detection, CVPR 2015
  • Microsoft Research [Paper] [Code]

    • Piotr Dollar, and C. Lawrence Zitnick, Structured Forests for Fast Edge Detection, ICCV 2013
  • Massachusetts Inst. of Technology + Microsoft Research [Paper] [Code]

    • Joseph J. Lim, C. Lawrence Zitnick, and Piotr Dollar, Sketch Tokens: A Learned Mid-level Representation for Contour and Object Detection, CVPR 2013

 ======================

Semantic Segmentation

======================

  • Fondazione Bruno Kessler, Microsoft Research Cambridge [Paper]

    • Samuel Rota Bulo, and Peter Kontschieder, Neural Decision Forests for Semantic Image Labelling, CVPR 2014
  • INRIA + Microsoft Research Cambridge [Paper]

    • Herve Lombaert, Darko Zikic, Antonio Criminisi, and Nicholas Ayache, Laplacian Forests:Semantic Image Segmentation by Guided Bagging, MICCAI 2014
  • Microsoft Research Cambridge + GE Global Research Center + University of California + Rutgers Univeristy [Paper]

    • Albert Montillo1, Jamie Shotton, John Winn, Juan Eugenio Iglesias, Dimitri Metaxas, and Antonio Criminisi, Entangled Decision Forests and their Application for Semantic Segmentation of CT Images, IPMI 2011
  • University of Cambridge + Toshiba Corporate R&D Center [Paper]

    • Jamie Shotton, Matthew Johnson, and Roberto Cipolla, Semantic Texton Forests for Image Categorization and Segmentation, CVPR 2008

======================

Human / Hand Pose Estimation

======================

  • Microsoft Research Cambridge [Paper-CHI][Video-CHI] [Paper-CVPR]

    • Toby Sharp, Cem Keskin, Duncan Robertson, Jonathan Taylor, Jamie Shotton, David Kim, Christoph Rhemann, Ido Leichter, Alon Vinnikov, Yichen Wei, Daniel Freedman, Pushmeet Kohli, Eyal Krupka, Andrew Fitzgibbon, and Shahram Izadi, Accurate, Robust, and Flexible Real-time Hand Tracking, CHI 2015
    • Jonathan Taylor, Jamie Shotton, Toby Sharp, and Andrew Fitzgibbon, The Vitruvian Manifold:Inferring Dense Correspondences for One-Shot Human Pose Estimation, CVPR 2012
  • Microsoft Research Haifa [Paper]

    • Eyal Krupka, Alon Vinnikov, Ben Klein, Aharon Bar Hillel, and Daniel Freedman, Discriminative Ferns Ensemble for Hand Pose Recognition, CVPR 2014
  • Microsoft Research Asia [Paper]

    • Shaoqing Ren, Xudong Cao, Yichen Wei, and Jian Sun, Face Alignment at 3000 FPS via Regressing Local Binary Features, CVPR 2014
  • Imperial College London [Paper-CVPR-Face] [Paper-CVPR-Hand] [Paper-ICCV]

    • Xiaowei Zhao, Tae-Kyun Kim, and Wenhan Luo, Unified Face Analysis by Iterative Multi-Output Random Forests, CVPR 2014
    • Danhang Tang, Hyung Jin Chang, Alykhan Tejani, and Tae-Kyun Kim, Latent Regression Forest: Structured Estimation of 3D Articulated Hand Posture, CVPR 2014
    • Danhang Tang, Tsz-Ho Yu, and Tae-Kyun Kim, Real-time Articulated Hand Pose Estimation using Semi-supervised Transductive Regression Forests, ICCV 2013
  • ETH Zurich + Microsoft [Paper]

    • Matthias Dantone, Juergen Gall, Christian Leistner, and Luc Van Gool, Human Pose Estimation using Body Parts Dependent Joint Regressors, CVPR 2013

======================

3D localization

======================

  • Imperial College London [Paper]

    • Alykhan Tejani, Danhang Tang, Rigas Kouskouridas, and Tae-Kyun Kim, Latent-Class Hough Forests for 3D Object Detection and Pose Estimation, ECCV 2014
  • Microsoft Research Cambridge + University of Illinois + Imperial College London [Paper]

    • Abner Guzman-Rivera, Pushmeet Kohli, Ben Glocker, Jamie Shotton, Toby Sharp, Andrew Fitzgibbon, and Shahram Izadi, Multi-Output Learning for Camera Relocalization, CVPR 2014
  • Microsoft Research Cambridge [Paper]

    • Jamie Shotton, Ben Glocker, Christopher Zach, Shahram Izadi, Antonio Criminisi, and Andrew Fitzgibbon, Scene Coordinate Regression Forests for Camera Relocalization in RGB-D Images, CVPR 2013

======================

Low-Level vision

======================

  • Super-Resolution

    • Technicolor R&I Hannover [Paper]
      • Jordi Salvador, and Eduardo PĂ©rez-Pellitero, Naive Bayes Super-Resolution Forest, ICCV 2015
    • Graz University of Technology [Paper]
      • Samuel Schulter, Christian Leistner, and Horst Bischof, Fast and Accurate Image Upscaling with Super-Resolution Forests, CVPR 2015
  • Denoising

    • Microsoft Research + iCub Facility - Istituto Italiano di Tecnologia [Paper]
      • Sean Ryan Fanello, Cem Keskin, Pushmeet Kohli, Shahram Izadi, Jamie Shotton, Antonio Criminisi, Ugo Pattacini, and Tim Paek, Filter Forests for Learning Data-Dependent Convolutional Kernels, CVPR 2014

======================

Facial expression recognition

======================

  • Sorbonne Universites [Paper]

    • Arnaud Dapogny, Kevin Bailly, and Severine Dubuisson, Pairwise Conditional Random Forests for Facial Expression Recognition, ICCV 2015

======================

Interpretability, regularization, compression pruning and feature selection

======================

  • Global Refinement of Random Forest [Paper]

    • Shaoqing Ren, Xudong Cao, Yichen Wei, Jian Sun, Global Refinement of Random Forest, CVPR 2015
  • L1-based compression of random forest models Arnaud Joly, Fran¸cois Schnitzler, Pierre Geurts and Louis Wehenkel ESANN 2012 [Paper]

  • Feature-Budgeted Random Forest [Paper] [Supp]

    • Feng Nan, Joseph Wang, Venkatesh Saligrama, Feature-Budgeted Random Forest, ICML 2015
    • Pruning Random Forests for Prediction on a Budget Feng Nan, Joseph Wang, Venkatesh Saligrama NIPS 2016 [Paper]
  • Meinshausen, Nicolai. "Node harvest." The Annals of Applied Statistics 4.4 (2010): 2049-2072. [Paper] [Code R] [Code Python]

  • Making Tree Ensembles Interpretable: A Bayesian Model Selection Approach S. Hara, K. Hayashi, [Paper] [Code]

  • Cui, Zhicheng, et al. "Optimal action extraction for random forests and boosted trees." ACM SIGKDD 2015. [Paper]

  • DART: Dropouts meet Multiple Additive Regression Trees K. V. Rashmi, Ran Gilad-Bachrach [Paper]

  • Begon, Jean-Michel, Arnaud Joly, and Pierre Geurts. Joint learning and pruning of decision forests. (2016). [Paper]


Semoga bermanfaat dan tunggu artikel mengenai Decision Forest berikutnya.