Halo, Penduduk! Bagaimana cara memeras semuanya dari data Anda? Bagaimana cara membuat keputusan berdasarkan data? Bagaimana cara mengatur ilmu data di dalam perusahaan? Siapa yang Menyewa Analis? Bagaimana cara membawa proyek pembelajaran mesin dan kecerdasan buatan ke level teratas? Roman Zykov mengetahui jawabannya dan banyak pertanyaan lainnya, karena dia telah menganalisis data selama hampir dua puluh tahun. Rekam jejak Roman mencakup pembuatan perusahaannya sendiri dari awal dengan kantor di Eropa dan Amerika Selatan, yang telah menjadi pemimpin dalam penggunaan kecerdasan buatan (AI) di pasar Rusia. Selain itu, penulis buku membuat analitik di Ozon.ru dari awal. Buku ini ditujukan untuk pembaca yang ingin mencoba analisis data dan membuat layanan berdasarkan data tersebut. Akan berguna bagi Anda jika Anda seorang manajer,yang ingin menetapkan tujuan dan mengelola analitik. Jika Anda seorang investor, maka akan memudahkan Anda dalam memahami potensi sebuah startup. Mereka yang "melihat" startup mereka akan menemukan rekomendasi di sini tentang cara memilih teknologi yang tepat dan merekrut tim. Dan buku ini akan membantu para spesialis pemula memperluas wawasan mereka dan mulai menerapkan praktik-praktik yang belum pernah mereka pikirkan sebelumnya, dan ini akan membedakan mereka dari para profesional di bidang yang sulit dan bergejolak.
Apakah saya harus bisa membuat program?
Ya perlu. Di abad ke-21, setiap orang diharapkan untuk memahami cara menggunakan pemrograman dalam pekerjaan mereka. Sebelumnya, pemrograman hanya tersedia untuk kalangan insinyur yang sempit. Seiring waktu, pemrograman terapan menjadi lebih mudah diakses, demokratis dan nyaman.
Saya belajar membuat program sendiri sebagai seorang anak. Ayah saya membeli komputer "Mitra 01.01" pada akhir 1980-an, ketika saya berusia sekitar sebelas tahun, dan saya mulai membenamkan diri dalam pemrograman. Pertama, saya menguasai bahasa BASIC, lalu saya sampai ke assembler. Saya mempelajari segalanya dari buku - lalu tidak ada yang bertanya. Dasar yang dibuat di masa kanak-kanak sangat berguna bagi saya dalam hidup. Saat itu, instrumen utama saya adalah kursor putih yang berkedip di layar hitam, program harus direkam pada tape recorder - semua ini tidak bisa dibandingkan dengan kemungkinan yang kita miliki sekarang. Dasar-dasar pemrograman tidak terlalu sulit untuk dipelajari. Ketika putri saya berusia lima setengah tahun, saya memasukkannya ke dalam kursus pemrograman Scratch sederhana. Dengan sedikit tips dari saya, dia mengambil kursus ini dan bahkan mendapatkan sertifikasi MIT level awal.
Pemrograman aplikasi memungkinkan Anda mengotomatiskan sebagian dari fungsi karyawan. Kandidat pertama untuk otomatisasi adalah tindakan berulang.
Ada dua cara dalam analitik. Yang pertama adalah menggunakan alat yang sudah jadi (Excel, Tableau, SAS, SPSS, dll.), Di mana semua tindakan dilakukan dengan mouse, dan pemrograman maksimum adalah menulis rumus. Yang kedua adalah menulis dengan Python, R, atau SQL. Ini adalah dua pendekatan yang berbeda secara fundamental, tetapi orang yang baik harus mahir dalam keduanya. Saat mengerjakan tugas apa pun, Anda perlu menemukan keseimbangan antara kecepatan dan kualitas. Ini terutama berlaku untuk mencari wawasan. Saya telah bertemu dengan penganut pemrograman yang bersemangat dan yang keras kepala yang hanya bisa menggunakan mouse dan paling banyak satu program. Seorang spesialis yang baik akan memilih alatnya sendiri untuk setiap tugas. Dalam beberapa kasus, dia akan menulis program, di kasus lain dia akan melakukan semuanya di Excel. Dan yang ketiga, ini akan menggabungkan kedua pendekatan: itu akan mengunggah data ke SQL, memproses dataset dengan Python, dan menganalisisnya dalam tabel pivot Excel atau Google Docs.Kecepatan kerja seorang spesialis tingkat lanjut dapat menjadi lebih tinggi dari pada satu-liner. Pengetahuan memberi kebebasan.
Saat masih menjadi mahasiswa, saya fasih dalam beberapa bahasa pemrograman dan bahkan berhasil bekerja selama satu setengah tahun sebagai pengembang perangkat lunak. Saat itu sulit - saya masuk Institut Fisika dan Teknologi Moskow pada Juni 1998, dan pada Agustus ada default. Tidak mungkin hidup dengan beasiswa, saya tidak mau mengambil uang dari orang tua saya. Di tahun kedua saya, saya beruntung, saya dipekerjakan sebagai pengembang di salah satu perusahaan di MIPT - di sana saya memperdalam pengetahuan saya tentang assembler dan C. Setelah beberapa waktu, saya mendapat pekerjaan di bagian dukungan teknis dari StatSoft Russia - di sini saya meningkatkan analisis statistik saya. Di Ozon.ru dia menyelesaikan pelatihan dan menerima sertifikat SAS, dan juga menulis banyak hal dalam SQL. Pengalaman pemrograman sangat membantu saya - saya tidak takut akan sesuatu yang baru, saya hanya mengambilnya dan melakukannya. Jika saya tidak memiliki pengalaman pemrograman seperti itu, tidak akan ada banyak hal menarik dalam hidup saya, termasuk perusahaan Roket Ritel,yang kami dirikan dengan mitra saya.
Himpunan data
Dataset adalah sekumpulan data, paling sering dalam bentuk tabel, yang telah diturunkan dari penyimpanan (misalnya, melalui SQL) atau diperoleh dengan cara lain. Tabel terdiri dari kolom dan baris, biasanya disebut sebagai catatan. Dalam pembelajaran mesin, kolom itu sendiri adalah variabel independen, atau prediktor, atau lebih umum fitur, dan variabel dependen, hasil. Anda akan menemukan pembagian ini dalam literatur. Tugas machine learning adalah melatih model yang, dengan menggunakan variabel independen (fitur), akan dapat memprediksi dengan benar nilai variabel dependen (biasanya, hanya ada satu dalam kumpulan data).
Dua jenis variabel utama adalah kategorikal dan kuantitatif. Variabel kategorikal berisi teks atau pengkodean numerik dari "kategori". Pada gilirannya, ini bisa berupa:
- Biner - hanya dapat mengambil dua nilai (contoh: ya / tidak, 0/1).
- Nominal - dapat mengambil lebih dari dua nilai (contoh: ya / tidak / tidak tahu).
- Ordinal - ketika urutannya penting (misalnya, pangkat atlet, nomor baris dalam hasil pencarian).
Variabel kuantitatif dapat berupa:
- Diskrit (diskrit) - nilai dihitung oleh akun, misalnya, jumlah orang di ruangan itu.
- Berkelanjutan - nilai apa pun dari interval, misalnya, berat kotak, harga produk.
Mari kita lihat contohnya. Ada tabel dengan harga apartemen (variabel terikat), satu baris (catatan) untuk apartemen, setiap apartemen memiliki sekumpulan atribut (independen) dengan kolom-kolom berikut:
- Harga apartemen kontinu dan tergantung.
- Luas apartemen kontinu.
- Jumlah kamar terpisah (1, 2, 3, ...).
- Kamar mandi digabungkan (ya / tidak) - biner.
- Nomor lantai - ordinal atau nominal (tergantung pada tugasnya).
- Jarak ke pusat kontinu.
Statistik deskriptif
Langkah pertama setelah pembongkaran data dari gudang adalah melakukan analisis data eksplorasi, yang meliputi statistik deskriptif dan visualisasi data, mungkin membersihkan data dengan menghilangkan pencilan.
Statistik deskriptif biasanya mencakup statistik yang berbeda untuk setiap variabel dalam set data masukan:
- Jumlah nilai yang tidak hilang.
- Jumlah nilai unik.
- Minimum / maksimum.
- Berarti.
- Median.
- Simpangan baku.
- Persentil - 25%, 50% (median), 75%, 95%.
Tidak semua jenis variabel dapat dihitung - misalnya, rata-rata hanya dapat dihitung untuk variabel kuantitatif. Paket statistik dan pustaka analisis statistik sudah memiliki fungsi out-of-the-box yang menghitung statistik deskriptif. Misalnya, pustaka pandas Python memiliki fungsi mendeskripsikan yang akan segera menampilkan beberapa statistik untuk satu atau semua variabel dalam kumpulan data:
s = pd.Series([4-1, 2, 3])
s.describe()
count 3.0
mean 2.0
std 1.0
min 1.0
25% 1.5
50% 2.0
75% 2.5
max 3.0
Meskipun buku ini tidak dimaksudkan sebagai buku teks tentang statistik, saya akan memberi Anda beberapa petunjuk yang berguna. Seringkali, dalam teori, diasumsikan bahwa kita bekerja dengan data terdistribusi normal, yang histogramnya terlihat seperti lonceng (Gambar 4.1).
Saya sangat menyarankan untuk memeriksa asumsi ini setidaknya secara langsung. Median adalah nilai yang membagi sampel menjadi separuh. Misalnya, jika persentil ke-25 dan ke-75 berada pada jarak yang berbeda dari median, ini sudah menunjukkan distribusi yang bergeser. Faktor lainnya adalah perbedaan yang kuat antara mean dan median; dalam distribusi normal, mereka hampir sama. Anda akan sering berurusan dengan distribusi eksponensial saat menganalisis perilaku pelanggan - misalnya, di Ozon.ru, waktu antara pesanan pelanggan yang berurutan akan memiliki distribusi eksponensial. Rata-rata dan median berbeda secara signifikan. Oleh karena itu, angka yang benar adalah median, nilai yang membagi sampel menjadi separuh. Dalam contoh dengan Ozon.ru, ini adalah waktu di mana 50% pengguna membuat pesanan berikutnya setelah yang pertama. Median juga lebih kuat untuk pencilan dalam data.Jika Anda ingin menggunakan rata-rata, misalnya, karena keterbatasan paket statistik, dan secara teknis rata-rata dihitung lebih cepat daripada median, maka dalam kasus distribusi eksponensial, Anda dapat memprosesnya dengan logaritma natural. Untuk kembali ke skala data asli, Anda perlu memproses rata-rata yang dihasilkan dengan eksponen biasa.
Persentil adalah nilai yang variabel acak tertentu tidak melebihi dengan probabilitas tetap. Misalnya, frasa "persentil ke-25 dari harga barang sama dengan 150 rubel" berarti 25% barang memiliki harga kurang dari atau sama dengan 150 rubel, 75% barang sisanya lebih mahal dari 150 rubel.
Untuk distribusi normal, jika mean dan deviasi standar diketahui, ada pola yang secara teoritis diturunkan berguna - 95% dari semua nilai jatuh ke dalam interval pada jarak dua deviasi standar dari mean di kedua arah, yaitu, lebar interval adalah empat sigma. Anda mungkin pernah mendengar istilah seperti Six Sigma (Gambar 4.1) - angka ini mencirikan produksi tanpa memo. Jadi, hukum empiris ini mengikuti dari distribusi normal: dalam interval enam standar deviasi di sekitar mean (tiga di setiap arah), 99.99966% nilai sesuai - kualitas ideal. Persentil sangat berguna untuk menemukan dan menghapus pencilan dari data. Misalnya, saat menganalisis data eksperimental, Anda dapat mengasumsikan bahwa semua data di luar persentil ke-99 adalah pencilan dan menghapusnya.
Grafik
Grafik yang bagus bernilai ribuan kata. Jenis grafik utama yang saya gunakan:
- histogram;
- bagan pencar;
- grafik deret waktu dengan garis tren;
- plot kotak, plot kotak dan kumis.
Histogram (Gambar 4.2) adalah alat analisis yang paling berguna. Ini memungkinkan Anda untuk memvisualisasikan distribusi frekuensi terjadinya suatu nilai (untuk variabel kategorikal) atau untuk membagi variabel kontinu menjadi rentang (bins). Yang kedua lebih sering digunakan, dan jika Anda juga memberikan statistik deskriptif untuk grafik semacam itu, Anda akan mendapatkan gambaran lengkap yang menjelaskan variabel yang Anda minati. Histogram adalah alat yang sederhana dan intuitif.
Scatterplot (Gambar 4.3) memungkinkan Anda untuk melihat bagaimana dua variabel bergantung satu sama lain. Itu dibangun secara sederhana: pada sumbu horizontal - skala variabel independen, pada sumbu vertikal - skala dependen. Nilai (rekaman) ditandai sebagai titik. Garis tren juga bisa ditambahkan. Dalam paket statistik tingkat lanjut, Anda dapat menandai pencilan secara interaktif.
Plot deret waktu (Gambar 4.4) hampir sama dengan diagram sebar, di mana variabel independen (pada sumbu horizontal) adalah waktu. Biasanya, dua komponen dapat dibedakan dari deret waktu - siklus dan tren. Tren dapat dibangun dengan mengetahui lamanya siklus, misalnya tujuh hari adalah siklus penjualan standar di toko grosir, Anda dapat melihat gambar berulang pada bagan setiap 7 hari. Selanjutnya, rata-rata bergerak dengan panjang jendela yang sama dengan siklus dilapiskan pada grafik - dan Anda mendapatkan garis tren. Hampir semua paket statistik, Excel, Google Sheets bisa melakukan ini. Jika Anda ingin mendapatkan komponen siklis, ini dilakukan dengan mengurangkan garis tren dari deret waktu. Berdasarkan perhitungan sederhana tersebut, algoritma paling sederhana untuk meramalkan deret waktu dibangun.
Plot kotak (Gbr. 4.5) sangat menarik; sampai batas tertentu, ini menggandakan histogram, karena ini juga menunjukkan perkiraan distribusi.
Ini terdiri dari beberapa elemen: kumis, yang menunjukkan minimum dan maksimum, sebuah kotak, tepi atasnya adalah persentil ke-75, tepi bawahnya adalah persentil ke-25. Di dalam kotak, garisnya adalah median, nilai "di tengah", yang membagi sampel menjadi dua. Jenis grafik ini berguna untuk membandingkan hasil eksperimen atau variabel satu sama lain. Contoh grafik seperti itu ada di bawah ini (Gbr. 4.6). Saya pikir ini adalah cara terbaik untuk memvisualisasikan hasil pengujian hipotesis.
Pendekatan umum untuk visualisasi data
Visualisasi data diperlukan untuk dua hal: menggali data dan menjelaskan temuan kepada pelanggan. Seringkali, beberapa metode digunakan untuk mempresentasikan hasil: komentar sederhana dengan beberapa angka, Excel atau format spreadsheet lainnya, presentasi dengan slide. Ketiga metode ini menggabungkan kesimpulan dan bukti - yaitu penjelasan tentang bagaimana kesimpulan ini dicapai. Akan lebih mudah untuk mengungkapkan bukti dalam grafik. Dalam 90% kasus, bagan dari jenis yang dijelaskan di atas cukup untuk ini.
Bagan eksplorasi dan bagan presentasi berbeda satu sama lain. Tujuan penelitian adalah untuk menemukan pola atau penyebab, biasanya, ada banyak, dan kebetulan mereka dibangun secara acak. Tujuan dari grafik penyajian adalah untuk memandu para pengambil keputusan (decision maker) sampai pada kesimpulan dalam masalah. Semuanya penting di sini - baik judul slide maupun urutan sederhananya yang mengarah ke kesimpulan yang diinginkan. Kriteria penting untuk skema bukti inferensi adalah seberapa cepat pelanggan memahami dan setuju dengan Anda. Tidak harus presentasi. Secara pribadi, saya lebih suka teks sederhana - beberapa kalimat dengan kesimpulan, beberapa grafik dan beberapa angka yang membuktikan kesimpulan ini, tidak lebih.
Gene Zelazny, direktur komunikasi visual di McKinsey & Company, menyatakan dalam bukunya Speak the Language of Diagrams:
“Jenis bagan tidak ditentukan oleh data (dolar atau bunga) atau oleh parameter tertentu (laba, profitabilitas, atau gaji). dan ide Anda adalah apa yang ingin Anda masukkan ke dalam diagram. "
Saya sarankan Anda memperhatikan grafik dalam presentasi dan artikel - apakah itu membuktikan kesimpulan penulis? Apakah Anda menyukai segala sesuatu tentang mereka? Bisakah mereka lebih meyakinkan?
Dan inilah yang ditulis Jean Zelazny tentang slide dalam presentasi:
"Penggunaan teknologi komputer yang meluas telah mengarah pada fakta bahwa sekarang, dalam hitungan menit, Anda dapat melakukan apa yang sebelumnya dibutuhkan berjam-jam kerja yang melelahkan - dan slide dipanggang seperti pai ... hambar dan hambar."
Saya melakukan cukup banyak laporan: dengan dan tanpa slide, pendek, selama 5-10 menit, dan panjang - selama satu jam. Saya dapat meyakinkan Anda bahwa jauh lebih sulit bagi saya untuk membuat teks yang meyakinkan untuk presentasi singkat tanpa slide daripada presentasi PowerPoint. Lihatlah politisi yang berbicara: tugas mereka adalah meyakinkan, berapa banyak dari mereka yang menampilkan slide dalam pidatonya? Kata lebih meyakinkan, slide hanya materi visual. Dan dibutuhkan lebih banyak usaha untuk membuat kata-kata Anda jelas dan meyakinkan daripada melempar slide. Saya mendapati diri saya berpikir tentang bagaimana tampilan presentasi saat menyusun slide. Dan saat menulis laporan lisan - seberapa meyakinkan argumen saya, bagaimana bekerja dengan intonasi, seberapa jernih pemikiran saya. Tolong pertimbangkanapakah kamu benar-benar membutuhkan presentasi? Apakah Anda ingin mengubah rapat menjadi slide yang membosankan alih-alih membuat keputusan?
“Rapat harus fokus pada laporan singkat tertulis di atas kertas, bukan abstrak atau potongan daftar yang diproyeksikan ke dinding,” kata Edward Tufty, juru bicara sekolah visualisasi data terkemuka, dalam PowerPoint Cognitive Style.
Analisis data berpasangan
Saya belajar tentang pemrograman berpasangan dari pengembang [30] Roket Ritel. Ini adalah teknik pemrograman di mana kode sumber dibuat oleh pasangan orang yang memprogram tugas yang sama dan duduk di stasiun kerja yang sama. Seorang programmer duduk di depan keyboard, yang lain bekerja dengan kepalanya, fokus pada gambaran besar dan terus melihat kode yang dihasilkan oleh programmer pertama. Mereka dapat berpindah tempat dari waktu ke waktu.
Dan kami berhasil menyesuaikannya untuk kebutuhan analitik! Analisis, seperti pemrograman, adalah proses kreatif. Bayangkan Anda perlu membangun tembok. Anda memiliki satu pekerja. Jika Anda menambahkan satu lagi, kecepatan kira-kira akan dua kali lipat. Dalam proses kreatif, ini tidak akan berhasil. Kecepatan pembuatan proyek tidak akan berlipat ganda. Ya, Anda dapat menguraikan proyek, tetapi saya sekarang membahas tugas yang tidak dapat diuraikan, dan itu harus dilakukan oleh satu orang. Pendekatan berpasangan memungkinkan Anda untuk mempercepat proses ini berkali-kali lipat. Satu orang berada di keyboard, yang kedua duduk di sebelahnya. Dua kepala sedang mengerjakan masalah yang sama. Ketika saya memecahkan masalah yang sulit, saya berbicara kepada diri saya sendiri. Ketika dua kepala berbicara satu sama lain, mereka mencari alasan yang lebih baik. Kami menggunakan skema kerja berpasangan untuk tugas-tugas berikut.
- Ketika diperlukan untuk mentransfer pengetahuan tentang satu proyek dari satu karyawan ke karyawan lainnya, misalnya, seorang pendatang baru dipekerjakan. "Kepala" akan menjadi karyawan yang mentransfer pengetahuan, "tangan" di keyboard - kepada siapa itu ditransfer.
- Ketika masalahnya rumit dan tidak bisa dipahami. Kemudian dua karyawan berpengalaman berpasangan akan menyelesaikannya jauh lebih efisien daripada satu. Akan lebih sulit untuk membuat tugas analisis sepihak.
Biasanya, selama perencanaan, kami mentransfer tugas ke kategori berpasangan, jika jelas memenuhi kriteria tersebut.
Keuntungan dari pendekatan berpasangan adalah waktu digunakan lebih efisien, kedua orang sangat fokus, mereka saling mendisiplinkan. Tugas kompleks diselesaikan dengan lebih kreatif dan urutan besarnya lebih cepat. Minus - tidak mungkin bekerja dalam mode ini selama lebih dari beberapa jam, Anda menjadi sangat lelah.
Hutang teknis
Hal penting lainnya yang saya pelajari dari insinyur Roket Ritel adalah berurusan dengan utang teknis. Hutang teknis bekerja dengan proyek lama, mengoptimalkan kecepatan kerja, beralih ke versi baru perpustakaan, menghapus kode lama dari pengujian hipotesis, penyederhanaan rekayasa proyek. Semua tugas ini menghabiskan sepertiga dari waktu pengembangan analitik. Saya akan mengutip direktur teknis Roket Ritel Andrey Chizh:
“Saya belum pernah bertemu dengan perusahaan mana pun dalam praktik saya (dan ini lebih dari 10 perusahaan tempat saya bekerja sendiri, dan kira-kira jumlah yang sama yang saya kenal baik dari dalam) , kecuali untuk kami, yang memiliki tugas untuk menghapus fungsionalitas, meskipun, mungkin, seperti itu ada. "
Saya juga belum pernah bertemu. Saya melihat "rawa" proyek perangkat lunak, di mana hal-hal lama mengganggu pembuatan sesuatu yang baru. Inti dari hutang teknologi adalah bahwa semua yang telah Anda lakukan sebelumnya perlu dilayani. Ini seperti perawatan mobil - perlu dilakukan secara teratur, jika tidak, mobil akan mogok pada saat yang paling tidak terduga. Kode yang tidak pernah diubah atau diperbarui untuk waktu yang lama adalah kode yang buruk. Biasanya sudah bekerja dengan prinsip "bekerja - jangan sentuh". Empat tahun lalu, saya berbicara dengan pengembang di Bing. Dia mengatakan bahwa dalam arsitektur mesin pencari ini ada pustaka yang dikompilasi, yang kodenya hilang. Dan tidak ada yang tahu bagaimana memulihkannya. Semakin lama waktu yang dibutuhkan, semakin buruk konsekuensinya.
Bagaimana Analis Roket Ritel Melayani Hutang Teknologi:
- , . .
- - — , . , Spark , 1.0.0.
- - — .
- - — , , .
Berurusan dengan hutang teknis adalah jalan menuju kualitas. Saya yakin akan hal ini dengan mengerjakan proyek Roket Ritel. Dari sudut pandang teknik, proyek ini dibuat sebagai "rumah terbaik di California".
Rincian lebih lanjut tentang buku dapat ditemukan di situs web penerbit
» Daftar Isi
» Kutipan
Untuk Habitants diskon 25% untuk kupon - Ilmu Data
Setelah pembayaran untuk versi kertas buku, e-book dikirim ke surel.