Menyangkilkan Algoritma

“Menyangkilkan” berasal dari kata “sangkil”, yang salah satu artinya adalah “berdaya guna/efisien” (artinya ada di situ).

Baru denger kan? Hehe. Sama. Penulis juga.

Mengapa perlu algoritma yang sangkil?

  • Algoritma yang sangkil akan membuat program yang kita buat menjadi bekerja lebih cepat, karena kembali lagi ke fungsi komputer yang sebenarnya, yaitu mempercepat pekerjaan yang lambat dikerjakan oleh manusia secara langsung.
  • Selain itu, algoritma yang sangkil tentu akan memperingan kerja mesin, terlebih bagi mesin yang kemampuannya hanya bisa melakukan sedikit operasi per satuan waktu.

Lanjutkan membaca

Solusi Soal A Kontes Hello 2018 Codeforces

Bismillaah.

Halo pembaca semua! Apa kabar? Semoga sehat ya, terutama setelah membaca pos ini semoga semakin mual-mual sehat jasmani dan rohani.

Pos ini membahas salah satu soal kontes yg diadakan di Codeforces kemarin. Buat yang belum tau apa itu Codeforces, situs tersebut adalah situs untuk berlatih soal-soal pemrograman yang mengedepankan kemampuan problem solving. Oke, langsung aja yaa pembahasannya.

Lanjutkan membaca

Linear Regression

1. Supervised Learning : Linear Regression
Dalam statistik, linear regression adalah pendekatan linier untuk memodelkan hubungan antara variabel dependen yang dilambangkan Y dan satu atau lebih variabel independen yang dilambangkan X. Model Persamaan Regresi Linear Sederhana adalah seperti berikut ini :
Y = a + bX
Dimana :

Y = Variabel Dependen atau Variabel Akibat(Response)

X = Variabel Independen atau Variabel Faktor Penyebab (Predictor)

a = konstanta

b = koefisien regresi (kemiringan); besaran Response yang ditimbulkan oleh Predictor.
Kali ini kita akan memprediksi harga rumah dengan menggunakan Linear Regression. Dataset yang akan digunakan adalah dataset dari sklearn, yaitu dataset harga rumah Boston.

1.0.1  Step 1: Menyiapkan Data
Pertama, kita import terlebih dahulu library yang dibutuhkan

import dataset dari sklearn

download dataset

1.0.2  Step 2: Visualisasi data

Selanjutnya, kita lihat scatter plot dari salah satu feature dengan target, yaitu jumlah kamar dengan harga rumah.

Dari plot diatas, kita bisa melihat bahwa harga meningkat seiring dengan jumlah kamar, yang secara intuitif masuk akal. Selanjutnya, kita akan menggunakan scikit-learn untuk melihat apakah kita bisa memasukkan data secara linier. Sebelum itu, kita harus mengubah dataset ke dalam bentuk DataFrame.

1.0.3 Step 3: gunakan scikit learn untuk implementasi multivariate regression

Linear regression terbagi menjadi univariate regression dan multivariate regression. kita menggunakan univariate regression ketika hanya ada satu variabel data(feature) yang mempengaruhi target. Namun jika yang mempengaruhi target ada lebih dari satu feature, maka kita gunakan multivariate regression.
Pertama, kita import library linear regression dari sklearn

sklearn.linear_model.LinearRegression merupakan sebuah estimator. estimator memprediksi sebuah nilai berdasarkan data yang diobservasi. dalam scikit learn, semua estimator menerapkan metode fit() dan predict(). metode fit() digunakan untuk mengetahui parameter model, sedangkan metode predict() digunakan untuk memprediksi nilai target dengan menggunakan parameter yang diperoleh dari fit().

kita pisahkan kolom features dan kolom target pada dataframe

Dari tabel diatas kita dapat melihat korelasi antar kolom pada dataframe. Korelasi paling tinggi dari harga rumah adalah dengan jumlah kamar. Kita juga bisa melihat atribut apa yang paling berpengaruh terhadap target dengan menggunakan Lasso Regression yang juga bisa digunakan
untuk melakukan feature selection.


In [ ]: Dapat dilihat bahwa jumlah kamar ialah atribut yang paling berpengaruh dan berkontribusi penting untuk menentukan target variable.

1.0.4 Step 4: Training and Validation

Dalam dataset, sebuah training set diimplementasikan untuk membangun sebuah model, sementara validation set digunakan untuk memvalidasi model yang dibangun. pemilihan sampel dari dataset untuk dijadikan training set atau validation set dilakukan secara acak. Kita akan menggunakan dua teknik validasi untuk membandingkan akurasinya, K-cross validation dan train test split.

[ 0.72590475 0.71326269 0.73320728]
Average K-Fold CV Score: 0.7241249084434545

Rˆ2: 0.7109203586326283

1.0.5 Step 5: prediksi harga
kita telah memiliki data training dan data test. selanjutnya kita gunakan data training tersebut
untuk memprediksi harga rumah, kemudian gunakan data test untuk validasi.

2. Train Test Split

Rˆ2: 0.7109203586326283

3. K-Cross Validation

cross predict accuracy: 0.717669565673

In [ ]: Dapat dilihat perbandingan bahwa validasi train test split mendapat akurasi 0.7109203586326283, sedangkan untuk cross validation adalah 0.717669565673. Cross validation lebih tinggi karena ketika menggunakan train test split,

Mengenal apa itu Binary Search

Halo! Kali ini OmahTI akan membahas tentang apa itu binary search. Mungkin mendengar namanya saja kita sudah dibuat kebingunan, karena bahasanya saja sudah terdengar asing. Tapi tenang saja, binary search itu sebenarnya adalah hal yang sangat alami, sesuatu yang sering kita jumpai dalam kehidupan sehari-hari.

Mungkin banyak di antara kita yang sudah pernah mencari sesuatu yang sudah diurutkan terlebih dahulu sebelumnya. Seperti mencari KTP milik kita diantara puluhan KTP lain saat kita mengembalikan DVD sewaan, atau mencari lembar jawab kita yang sudah dinilai diantara tumpukan lembar jawab. Ketika kita melakukan hal tersebut, mungkin banyak diantara kita yang mencari satu persatu sampai apa yang kita cari ketemu. Tapi apa yang akan kamu lakukan jika ternyata sesuatu yang akan kita cari berada di dalam suatu tumpukan yang sangat banyak? Mencari satu persatu tentu saja akan memakan waktu yang sangat banyak juga.

Insting awal kita akan menyuruh kita untuk melihat bagian tengah dari tumpukan tersebut dan membagi tumpukan tersebut menjadi dua, kemudian menentukan apakah sesuatu yang kita cari ada di bagian sebelum tengah, atau di bagian setelah tengah. Kemudian kita mengulangi lagi hal yang sama, dengan tumpukan yang baru, sampai kita mendapatkan apa yang kita mau.

Paragraf di atas tadi sesungguhnya adalah bagaimana binary search itu bekerja. Dengan membuat  ruang pencarian menjadi setengah dari semula pada setiap langkah, kita dapat membuat pencarian yang mulanya memakan waktu sangat banyak, menjadi sangat sebentar. Kompleksitas dari binary search ini adalah O(2log n), jauh lebih singkat dari pencarian satu-satu yang sebesar O(n). Hal ini membuat pencarian dengan jumlah tumpukan sebesar 1.000.000 hanya memakan kurang lebih 20 langkah saja.

Sangat hebat bukan?

Saking hebatnya, hampir semua teknologi di zaman sekarang menggunakan binary search sebagai metode pencarian utama. Google, Facebook, Microsoft, bahkan website ini sekalipun juga menggunakan binary search. Bayangkan saja jika perusahaan-perusahaan terkenal di atas tidak memakai binary search. Siapa yang mau googling jika kita harus menunggu 10 menit untuk sekali search?

Tapi ingat, seperti yang dibilang di awal, agar kita dapat melakukan binary search, kita harus mengurutkan terlebih dahulu semua data yang ada dan binary search belum tentu menjadi cara yang paling efisien. Terkadang, untuk data dengan jumlah yang sedikit atau pencarian hanya dilakukan sekali saja, metode satu-satu sudah cukup untuk menyelesaikan suatu masalah.

Kegunaan binary search tidak terbatas oleh pencarian sesuatu di suatu tumpukan saja. Namun informasi tentang itu kami serahkan kepada pembaca untuk mencarinya sendiri. Cara tercepat untuk mencari informasi tersebut adalah dengan membuka tab baru pada browser. Kemudian menggunakan search engine (yang tentu saja menggunakan binary search di dalamnya) untuk mencari informasi tentang binary search.

Jurus Mustajab “ Prefix sum ” pada Programming

Apakah kamu pernah mendengar istilah ” Prefix sum ” ?
Perhatikan barisan bilangan berikut:
12  23  43  12  43  22  11 7  9  10  100  …
Berapakah jumlah suku ke-tiga sampai ke-sepuluh?

Cara :

HMMM…

Apakah setiap ada pertanyaan seperti itu, kita harus ngeloop dari awal sampai akhir dari suku yang ditanyakan?

Duh, gimana kalo barisannya ada ratusan ribu bahkan jutaan suku? Kita harus ngitung lagi ratusan ribu bahkan jutaan kali. BOOM!! Lanjutkan membaca