avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

Dibuat di: 2016-12-07 12:37:21, diperbarui pada: 2016-12-07 12:40:26
comments   3
hits   3472

Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana


Ketika Anda mendengar orang berbicara tentang pembelajaran mesin, apakah Anda hanya memiliki beberapa pemahaman yang samar tentang apa artinya? Apakah Anda sudah bosan dengan hanya mengangguk-angguk saat berbicara dengan rekan kerja? Mari kita mengubahnya!

Panduan ini ditujukan untuk semua orang yang ingin tahu tentang pembelajaran mesin tetapi tidak tahu bagaimana memulainya. Saya kira banyak dari Anda yang telah membaca kata-kata Wikipedia tentang pembelajaran mesin yang membosankan dan merasa frustrasi karena tidak ada yang bisa memberikan penjelasan tingkat tinggi.

Tujuan dari artikel ini adalah agar mudah dimengerti, yang berarti ada banyak generalisasi dalam artikel tersebut. Tetapi siapa yang peduli dengan hal-hal ini?

  • ### Mengapa Pembelajaran Mesin?

Konsep pembelajaran mesin berpendapat bahwa untuk memecahkan masalah, Anda tidak perlu menulis kode program khusus apa pun, algoritma genetik (generik) dapat memberikan jawaban yang menarik untuk Anda pada set data. Untuk algoritma genetik, tidak perlu mengkode, tetapi mengimpor data, dan akan membangun logika sendiri di atas data.

Sebagai contoh, ada algoritma yang disebut algoritma klasifikasi yang dapat membagi data menjadi kelompok yang berbeda. Algoritma klasifikasi yang digunakan untuk mengidentifikasi angka tulisan tangan dapat digunakan untuk membagi email menjadi spam dan surat biasa tanpa mengubah satu baris kode. Algoritma tidak berubah, tetapi pelatihan data yang dimasukkan berubah, sehingga menghasilkan logika klasifikasi yang berbeda.

Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

Algoritma pembelajaran mesin adalah kotak hitam yang dapat digunakan kembali untuk memecahkan banyak masalah klasifikasi yang berbeda.

Pembelajaran mesin adalah istilah yang luas untuk algoritma genetik yang serupa.

  • ### Dua jenis algoritma pembelajaran mesin

Anda dapat melihat algoritma pembelajaran mesin dalam dua kategori besar: pembelajaran yang diawasi (supervised learning) dan pembelajaran yang tidak diawasi (unsupervised learning). Perbedaannya sederhana, namun sangat penting.

  • Pembelajaran Terpantau

    Katakanlah Anda adalah seorang agen real estate, dan bisnis Anda semakin besar, sehingga Anda mempekerjakan beberapa magang untuk membantu Anda. Tapi masalahnya adalah Anda dapat melihat rumah dan tahu berapa harganya, dan para magang tidak berpengalaman dan tidak tahu bagaimana menilai.

    Untuk membantu magang Anda (mungkin untuk membebaskan diri Anda untuk berlibur), Anda memutuskan untuk membuat perangkat lunak kecil yang dapat menilai nilai rumah di daerah Anda berdasarkan faktor-faktor seperti ukuran rumah, lokasi, dan harga jual rumah serupa.

    Anda menuliskan setiap transaksi rumah yang terjadi di kota selama tiga bulan, dan Anda mencatat setiap transaksi dengan rincian panjang, seperti jumlah kamar tidur, ukuran rumah, luas tanah, dan sebagainya.

    Ini adalah data latihan yoga kami.

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Kami akan menggunakan data pelatihan ini untuk menulis sebuah program untuk memperkirakan nilai rumah-rumah lain di daerah ini:

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Anda sudah tahu harga jual dari setiap rumah, dengan kata lain, Anda sudah tahu jawaban dari pertanyaan, dan Anda dapat membalikkan logikanya.

    Untuk menulis perangkat lunak, Anda akan memasukkan data pelatihan dari setiap set properti ke dalam algoritma pembelajaran mesin Anda. Algoritma mencoba mencari tahu operasi apa yang harus digunakan untuk mendapatkan angka harga.

    Ini seperti latihan aritmatika, dengan simbol-simbol operasi yang dihapus:

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Ya ampun! Seorang siswa yang licik menghapus semua simbol matematika dari jawaban guru.

    Apakah Anda bisa memahami apa yang ada di dalam tes ini? Anda tahu, Anda harus melakukan sesuatu pada kolom di sebelah kiri untuk mendapatkan jawaban pada kolom di sebelah kanan.

    Dalam pembelajaran yang diawasi, Anda meminta komputer untuk menghitung hubungan antara angka-angka untuk Anda. Dan setelah Anda mengetahui metode matematika yang diperlukan untuk memecahkan masalah tertentu seperti ini, Anda dapat menjawab masalah lain yang sama.

  • Pembelajaran tanpa pengawasan

    Kembali ke contoh agen real estat di awal. Jika Anda tidak tahu harga jual setiap rumah, Anda dapat membuat desain yang keren, bahkan jika Anda hanya tahu ukuran rumah, lokasi, dll.

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Bahkan jika Anda tidak ingin memprediksi data yang tidak diketahui (seperti harga), Anda dapat menggunakan pembelajaran mesin untuk melakukan hal-hal yang menarik.

    Ini seperti seseorang memberi Anda selembar kertas dengan banyak angka di atasnya, dan berkata kepada Anda, “Saya tidak tahu apa artinya angka-angka itu, mungkin Anda bisa menemukan aturan atau mengelompokkannya, atau apa pun - semoga berhasil!”

    Pertama, Anda dapat menggunakan algoritma untuk secara otomatis memisahkan segmen pasar yang berbeda dari data tersebut. Mungkin Anda akan menemukan bahwa pembeli rumah di dekat perguruan tinggi lebih suka rumah berukuran kecil dengan banyak kamar tidur, sedangkan pembeli rumah di pinggiran kota lebih suka rumah berukuran besar dengan tiga kamar tidur.

    Anda juga dapat melakukan hal yang sangat keren, secara otomatis menemukan data harga rumah yang tidak sesuai dengan data lainnya. Rumah-rumah yang tidak sesuai dengan data lainnya mungkin adalah gedung-gedung tinggi, dan Anda dapat memusatkan penjual terbaik di daerah-daerah ini karena mereka memiliki komisi yang lebih tinggi.

    Pada bagian selanjutnya, kita akan membahas pembelajaran yang diawasi, bukan karena pembelajaran yang tidak diawasi tidak berguna atau tidak menarik. Sebenarnya, pembelajaran yang tidak diawasi menjadi semakin penting seiring dengan perbaikan algoritma, sehingga tidak perlu menghubungkan data dengan jawaban yang benar.

    Ada banyak jenis lain dari algoritma pembelajaran mesin. Tapi ini adalah cara yang bagus untuk belajar.

    Saya pikir itu sangat keren, tapi apakah penilaian harga rumah benar-benar bisa dianggap sebagai pembelajaran yang membosankan?

    Sebagai bagian dari manusia, otak Anda dapat menangani sebagian besar situasi dan belajar bagaimana menangani situasi tanpa instruksi yang jelas. Jika Anda telah menjadi agen real estat untuk waktu yang lama, Anda akan memiliki perasaan yang aneh tentang harga yang tepat untuk properti, cara memasarkannya dengan terbaik, dan apa yang menarik bagi pelanggan, dll.

    Namun, algoritma pembelajaran mesin saat ini tidak begitu baik, mereka hanya dapat fokus pada masalah yang sangat spesifik dan terbatas. Mungkin dalam hal ini, definisi yang lebih tepat dari pembelajaran mesin adalah menemukan persamaan untuk memecahkan masalah tertentu berdasarkan sejumlah kecil data contoh.

    Sayangnya, mesin penyaring menemukan persamaan untuk memecahkan masalah tertentu berdasarkan sedikit contoh data. Nama penyaring terlalu buruk. Jadi akhirnya kita menggantikan penyaring dengan penyaring pembelajaran mesin.

    Tentu saja, jika Anda membaca artikel ini 50 tahun dari sekarang, maka kita sudah memiliki algoritma kecerdasan buatan yang kuat, dan artikel ini tampak seperti barang antik.

    Mari kita menulis kode!

    Bagaimana Anda akan menulis prosedur penilaian harga rumah dalam contoh di atas?

    Jika Anda tidak tahu apa-apa tentang pembelajaran mesin, kemungkinan besar Anda akan mencoba menulis beberapa aturan dasar untuk menilai harga rumah, seperti berikut:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
        # In my area, the average house costs $200 per sqft
        price_per_sqft = 200
    
    
        if neighborhood == "hipsterton":
        # but some areas cost a bit more
            price_per_sqft = 400
    
    
        elif neighborhood == "skid row":
        # and some areas cost less
            price_per_sqft = 100
    
    
        # start with a base price estimate based on how big the place is
        price = price_per_sqft * sqft
    
    
        # now adjust our estimate based on the number of bedrooms
        if num_of_bedrooms == 0:
        # Studio apartments are cheap
            price = price — 20000
        else:
        # places with more bedrooms are usually
        # more valuable
            price = price + (num_of_bedrooms * 1000)
    
    
        return price
    

    Jika Anda sibuk berjam-jam seperti ini, Anda mungkin akan mendapatkan hasil yang sedikit, tetapi program Anda tidak akan pernah sempurna, dan sulit untuk dipertahankan ketika harga berubah.

    Tidakkah lebih baik jika komputer dapat menemukan cara untuk melakukan fungsi yang disebutkan di atas? Siapa yang akan peduli dengan apa yang dilakukan fungsi itu, asalkan angka harga yang dikembalikan benar?

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = <computer, plz do some math for me>
        return price
    

    Salah satu cara untuk mempertimbangkan hal ini adalah dengan melihat harga rumah sebagai sepiring nasi yang enak, yang terdiri dari jumlah kamar tidur, luas, dan lantai. Jika Anda dapat menghitung seberapa besar setiap komponen mempengaruhi harga akhir, mungkin Anda bisa mendapatkan berbagai komponen yang bercampur untuk membentuk proporsi tertentu dari harga akhir.

    Ini akan menyederhanakan program awal Anda (semua adalah pernyataan if else yang gila) menjadi sesuatu seperti ini:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
    
    
        # a little pinch of this
        price += num_of_bedrooms * .841231951398213
    
    
        # and a big pinch of that
        price += sqft * 1231.1231231
    
    
        # maybe a handful of this
        price += neighborhood * 2.3242341421
    
    
        # and finally, just a little extra salt for good measure
        price += 201.23432095
    
    
        return price
    

    Perhatikan angka-angka ajaib yang ditulis dengan huruf tebal: 841231951398213, 1231.1231231, 2.3242341421, dan 201.23432095. Mereka disebut bobot. Jika kita dapat menemukan bobot sempurna yang berlaku untuk setiap rumah, fungsi kita dapat memprediksi semua harga rumah!

    Salah satu cara untuk mencari berat badan yang optimal adalah sebagai berikut:

    Langkah 1:

    Pertama, berikan masing-masing bobot 1.0:

    def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
        price = 0
    
    
        # a little pinch of this
        price += num_of_bedrooms * 1.0
    
    
        # and a big pinch of that
        price += sqft * 1.0
    
    
        # maybe a handful of this
        price += neighborhood * 1.0
    
    
        # and finally, just a little extra salt for good measure
        price += 1.0
    
    
        return price
    

    Langkah 2:

    Masukkan setiap properti ke dalam operasi fungsi Anda dan periksa seberapa jauh estimasi dari harga yang benar:

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Menggunakan program Anda untuk memprediksi harga rumah.

    Misalnya: harga transaksi real estat dari properti pertama di atas adalah \(250.000, dan nilai dari fungsi Anda adalah \)178.000, jadi Anda kehilangan $72.000 dari properti ini.

    Kemudian perhitungkan nilai setiap properti dalam dataset Anda dengan nilai deviasi kuadrat. Dengan asumsi ada 500 transaksi properti dalam dataset, nilai deviasi kuadrat dari setiap properti dalam dataset Anda akan berjumlah $86.123.373.

    Sekarang, bagi nilai total dengan 500, dan Anda akan mendapatkan estimasi setiap properti yang menyimpang dari rata-rata. Anggaplah rata-rata ini sebagai biaya dari fungsi Anda.

    Jika Anda dapat menyesuaikan beratnya sehingga harganya menjadi nol, maka fungsi Anda sempurna. Ini berarti bahwa program Anda membuat perkiraan yang sama untuk setiap transaksi real estat berdasarkan data yang Anda masukkan. Dan itulah tujuan kami untuk mencoba nilai berat yang berbeda agar harganya serendah mungkin.

    Langkah 3:

    Ulangi langkah 2 berulang kali, dan cobalah semua kombinasi nilai berat yang mungkin. Kombinasi mana yang membuat biaya paling dekat dengan nol, itulah yang akan Anda gunakan, dan setelah Anda menemukan kombinasi tersebut, masalahnya akan terpecahkan!

    Pikiran mengganggu waktu

    Ini sangat sederhana, bukan? Pikirkan apa yang baru saja Anda lakukan. Anda mendapatkan beberapa data, memasukkan mereka ke dalam tiga langkah sederhana umum, dan akhirnya Anda mendapatkan sebuah fungsi yang dapat menilai rumah di daerah Anda. Tapi fakta berikut mungkin membuat Anda bingung:

      1. Dalam 40 tahun terakhir, banyak penelitian di berbagai bidang (seperti linguistik / terjemahan) menunjukkan bahwa algoritma pembelajaran yang bersifat generik seperti data yang bergoyang (kata-kata yang saya buat) telah mengalahkan metode yang membutuhkan aturan yang jelas dari manusia nyata.
      1. Fungsi terakhir yang Anda tulis adalah , ia bahkan tidak tahu apa luas dan jumlah kamar . Ia hanya tahu menggerakkan dan mengubah angka untuk mendapatkan jawaban yang benar.
      1. Anda mungkin tidak tahu mengapa satu set nilai berat tertentu bekerja. Jadi Anda hanya menuliskan fungsi yang tidak Anda pahami tetapi dapat dibuktikan.
      1. Bayangkan jika program Anda tidak memiliki parameter seperti area kaca dan jumlah kamar tidur kaca, tetapi menerima satu set angka. Misalkan setiap angka mewakili satu piksel dalam gambar yang ditangkap oleh kamera yang dipasang di atap mobil Anda, dan kemudian output yang diprediksi tidak disebut kaca harga kaca, tetapi disebut kaca nilai putaran setir kaca, sehingga Anda memiliki program yang dapat secara otomatis memanipulasi mobil Anda!

    Itu gila, bukan?

    Bagaimana jika Anda mencoba setiap digit dalam langkah 3?

    Nah, tentu saja Anda tidak dapat mencoba semua nilai-nilai yang mungkin untuk menemukan kombinasi terbaik. Itu akan memakan waktu yang sangat lama, karena jumlah yang akan dicoba mungkin tak terbatas. Untuk menghindari hal ini, para matematikawan telah menemukan banyak cara cerdas untuk menemukan nilai berat yang bagus dengan cepat dan tanpa harus mencoba terlalu keras. Pertama, tulislah persamaan sederhana yang menggambarkan langkah 2:

    Ini adalah fungsi biaya Anda.

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Selanjutnya, mari kita tuliskan kembali persamaan yang sama dengan istilah matematika pembelajaran mesin (untuk saat ini Anda bisa mengabaikannya):

    θ adalah nilai berat saat ini. J ((θ) adalah harga yang sesuai dengan nilai berat saat ini.

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Persamaan ini menunjukkan seberapa besar estimasi kita menyimpang dari nilai berat saat ini.

    Jika semua nilai bobot yang mungkin diberikan untuk jumlah dan luas kamar tidur ditampilkan dalam bentuk grafik, kita akan mendapatkan grafik yang mirip dengan gambar berikut:

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Sebuah mangkuk dengan fungsi biaya.

    Jadi, jika kita bisa menemukan satu set bobot yang membawa kita ke titik terendah dalam grafik, kita akan menemukan jawabannya!

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Oleh karena itu, kita hanya perlu menyesuaikan bobot agar kita bisa bergerak ke titik terendah di grafik. Jika penyesuaian kecil terhadap bobot dapat membuat kita terus bergerak ke titik terendah, maka akhirnya kita tidak perlu mencoba terlalu banyak bobot agar bisa sampai di sana.

    Jika Anda ingat sedikit tentang aljabar, Anda mungkin ingat bahwa jika Anda bertanya pada sebuah fungsi, hasilnya akan memberi tahu Anda slope dari fungsi pada titik mana pun. Dengan kata lain, untuk titik tertentu pada grafik, itu memberi tahu kita bahwa jalan itu adalah jalan yang menuruni bukit.

    Jadi, jika kita mencari bias terhadap fungsi biaya untuk setiap bobot, maka kita dapat mengurangi nilai dari setiap bobot. Ini akan membuat kita lebih dekat ke dasar. Terus melakukannya, dan akhirnya kita akan sampai ke dasar dan mendapatkan nilai optimal bobot.

    Metode untuk menemukan bobot yang optimal ini disebut penurunan gradien kuantitatif, dan ini adalah ringkasan yang sangat baik tentang hal itu. Jika Anda ingin memahami detailnya, jangan takut, lanjutkan ke bawah.

    Ketika Anda menggunakan perpustakaan algoritma pembelajaran mesin untuk memecahkan masalah nyata, semua ini sudah siap untuk Anda.

    Apa lagi yang Anda lewatkan?

    Algoritma tiga langkah yang saya jelaskan di atas disebut regresi multilinear. Persamaan perkiraan Anda adalah mencari sebuah garis lurus yang dapat mencocokkan semua titik data harga rumah. Kemudian, Anda menggunakan persamaan ini untuk memperkirakan harga rumah yang belum pernah Anda lihat berdasarkan kemungkinan posisi harga rumah pada garis lurus Anda.

    Namun, metode yang saya tunjukkan ini mungkin bekerja dalam situasi sederhana, dan tidak untuk semua situasi. Salah satu alasannya adalah harga rumah tidak selalu mengikuti garis lurus.

    Tapi, untungnya, ada banyak cara untuk menangani situasi ini. Untuk data non-linear, banyak jenis lain dari algoritma pembelajaran mesin dapat menangani (seperti jaringan neural atau mesin dengan vektor inti). Ada banyak cara untuk menggunakan regresi linier yang lebih fleksibel, dengan ide untuk menyesuaikan dengan garis yang lebih kompleks.

    Saya juga mengabaikan konsep pencocokan. Sangat mudah untuk menemukan satu set nilai berat yang dapat memprediksi harga rumah dengan sempurna dalam dataset asli Anda, tetapi tidak akurat untuk setiap rumah baru di luar dataset asli Anda. Ada banyak solusi untuk situasi ini (seperti formalisasi dan penggunaan dataset yang diverifikasi).

    Dengan kata lain, konsep dasarnya sangat sederhana, dan perlu beberapa keterampilan dan pengalaman untuk mendapatkan hasil yang berguna dengan menggunakan pembelajaran mesin. Namun, ini adalah keterampilan yang dapat dipelajari oleh setiap pengembang.

  • Apakah Pembelajaran Mesin Tidak Ada Batasnya?

    Setelah Anda mulai memahami bahwa teknologi pembelajaran mesin dapat dengan mudah diterapkan untuk memecahkan masalah yang tampaknya sulit (seperti pengenalan tulisan tangan), Anda akan memiliki perasaan bahwa dengan cukup data, Anda dapat menggunakan pembelajaran mesin untuk memecahkan masalah apa pun. Anda hanya perlu memasukkan data dan Anda akan melihat persamaan yang sesuai dengan data seperti permainan komputer.

    Tapi penting untuk diingat bahwa pembelajaran mesin hanya berlaku untuk masalah yang dapat Anda selesaikan dengan data yang Anda miliki.

    Misalnya, jika Anda membangun sebuah model untuk memprediksi harga rumah berdasarkan jumlah tanaman dalam setiap rumah, itu tidak akan pernah berhasil. Tidak ada hubungan antara jumlah tanaman dalam rumah dan harga rumah. Jadi, tidak peduli bagaimana ia mencoba, komputer tidak dapat menyimpulkan hubungan antara keduanya.

    Pembelajaran Mesin untuk Kesenangan: Panduan Pemula Paling Sederhana

    Anda hanya bisa memodelkan hubungan yang sebenarnya ada.

  • Bagaimana cara mempelajari pembelajaran mesin secara mendalam?

    Menurut saya, masalah terbesar dengan pembelajaran mesin saat ini adalah bahwa ia aktif di kalangan akademisi dan organisasi riset bisnis. Tidak banyak materi pembelajaran yang mudah dipahami bagi orang-orang yang ingin memiliki pemahaman umum dan tidak ingin menjadi ahli.

    Prof. Andrew Ng: Program pembelajaran mesin gratis di Coursera sangat bagus. Saya sangat merekomendasikan untuk memulai di sini.

    Selain itu, Anda juga dapat mengunduh dan menginstal SciKit-Learn untuk menguji ribuan algoritma pembelajaran mesin.

Dikutip dari Python Developer