Pengertian Singkat Tentang Analisi Sentimen Beserta Contohnya

Analisis sentimen adalah teknik untuk mengekstrak dan memahami sentimen atau perasaan positif, negatif, atau netral dari teks atau bahasa yang digunakan. Analisis sentimen sering digunakan dalam industri untuk memahami dan mengukur sentimen pengguna terhadap produk atau layanan, atau untuk memonitor reputasi merek di media sosial. Berikut ini adalah contoh analisis sentimen: Contoh 1: Teks: "Saya sangat senang dengan produk baru ini! Fiturnya sangat baik dan sangat mudah digunakan." Analisis: Sentimen positif Penjelasan: Teks ini mengekspresikan perasaan senang terhadap produk baru dan menyatakan bahwa fiturnya baik dan mudah digunakan. Contoh 2: Teks: "Aku benar-benar kecewa dengan pelayanan pelanggan. Mereka sangat lambat dan tidak efektif dalam menyelesaikan masalahku." Analisis: Sentimen negatif Penjelasan: Teks ini mengekspresikan perasaan kecewa terhadap pelayanan pelanggan yang lambat dan tidak efektif dalam menyelesaikan masalah pelanggan. Contoh 3: Teks: ...

Implementasi Kodingan ANN Pada Python

Implementasi Kodingan ANN Pada Python

Artificial Neural Networks (ANN) adalah bagian dari pembelajaran mesin yang diawasi di mana kita akan memiliki input serta output yang sesuai yang ada dalam dataset kita. Seluruh tujuan kami adalah untuk mencari tahu cara memetakan input ini ke output masing-masing. ANN dapat digunakan untuk memecahkan masalah regresi dan klasifikasi. Berikut ini adalah perpustakaan dan perangkat lunak yang akan kita butuhkan untuk mengimplementasikan ANN.

1.      Python – 3.6 atau yang lebih baru

2.      Jupyter Notebook ( Google Colab juga dapat digunakan)

3.      Panda

4.      Numpy

5.      Tensorflow 2. x

6.      Belajar-Scikit

Pada tugas kali ini, kami akan mengimplimentasi tugas Mata Kuliah Deep Learning dengan dataset dari domain keuangan. Kami memiliki dataset di mana kami memiliki total 14 dimensi dan 100.000 catatan. Dimensi yang akan kita hadapi adalah sebagai berikut:

1.      RowNumber:- Mewakili jumlah baris

2.      CustomerId:- Mewakili customerId

3.      Nama keluarga:- Mewakili nama keluarga pelanggan

4.      CreditScore:- Mewakili skor kredit pelanggan

5.      Geografi: - Mewakili kota tempat pelanggan berada

6.      Gender: - Mewakili Jenis Kelamin pelanggan

7.      Usia:- Mewakili usia pelanggan

8.      Tenor: - Mewakili masa jabatan pelanggan dengan bank

9.      Saldo:- Mewakili saldo oleh pelanggan

10.  NumOfProducts: - Mewakili jumlah layanan bank yang digunakan oleh pelanggan

11.  HasCrCard: - Mewakili apakah pelanggan memiliki kartu kredit atau tidak

12.  IsActiveMember: - Mewakili apakah pelanggan adalah anggota aktif atau tidak

13.  PerkiraanSalary:- Mewakili perkiraan gaji pelanggan

14.  Keluar: - Mewakili apakah pelanggan akan keluar dari bank atau tidak.

Struktur himpunan data

Seperti yang dapat kita lihat dari kamus data di atas, kita berurusan dengan total 14 dimensi. Di sini tujuan utama kami adalah untuk menciptakan jaringan saraf tiruan yang akan mempertimbangkan semua variabel independen (pertama 13) dan berdasarkan itu akan memprediksi apakah pelanggan kami akan keluar dari bank atau tidak (Keluar adalah variabel dependen di sini). Setelah kita memahami langkah-langkah untuk membangun jaringan saraf, kita dapat langsung menerapkan langkah-langkah yang sama ke dataset lain juga. Salah satu cara di mana kita dapat menemukan dataset tersebut adalah repositori pembelajaran mesin UCI. Himpunan data ini diklasifikasikan ke dalam masalah regresi dan klasifikasi.

a.       Mengimpor Pustaka yang Diperlukan untuk Jaringan Saraf Tiruan

Mari kita impor semua pustaka atau librari yang diperlukan di sini

#Importing necessary Libraries

import numpy as np

import pandas as pd

import tensorflow as tf

b.      Mengimpor Himpunan Data

Pada langkah ini, kita akan mengimpor dataset kita. Karena himpunan data kami dalam format csv, kami akan menggunakan metode panda read_csv() untuk memuat himpunan data.

#Loading Dataset
data = pd.read_csv("Churn_Modelling.csv")

c.       Menghasilkan Matriks Fitur (X)

Prinsip dasar saat membuat model pembelajaran mesin adalah menghasilkan X juga disebut sebagai Matrix of Features. X ini pada dasarnya berisi semua variabel independen kami. Mari kita buat hal yang sama di sini.

#Generating Matrix of Features
X = data.iloc[:,3:-1].values

Di sini kami telah menggunakan metode iloc dari bingkai data Pandas yang memungkinkan kita untuk mengambil nilai yang diinginkan dari kolom yang diinginkan dalam dataset. Di sini seperti yang kita lihat bahwa kita mengambil semua data dari kolom ke-3 sampai kolom minus satu kolom terakhir. Alasan untuk itu adalah 3 kolom pertama yaitu RowNumber, CustomerId, dan Surname tidak ada hubungannya dengan memutuskan apakah pelanggan akan keluar atau tidak. Oleh karena itu dalam hal ini kami mulai mengambil semua nilai dari kolom ke-3 dan seterusnya. Terakhir, karena kolom terakhir kami pada dasarnya adalah variabel dependen maka kami telah menyebutkan -1 dalam metode iloc yang memungkinkan kami untuk mengecualikan kolom terakhir agar tidak dimasukkan dalam matriks fitur X kami.

d.      Menghasilkan Vektor Variabel Dependen(Y)

Dengan cara yang sama di mana kita telah membuat matriks fitur (X) untuk variabel independen, kita juga harus membuat vektor variabel dependen (Y) yang hanya akan berisi nilai variabel dependen kita.

#Generating Dependent Variable Vectors
Y = data.iloc[:,-1].values

e.       Pengkodean Jenis Kelamin Variabel Kategoris

Sekarang kami telah mendefinisikan X dan Y kami, mulai saat ini kami akan mulai dengan salah satu fase yang sangat memakan waktu dalam pemecahan masalah pembelajaran mesin apa pun. Fase ini dikenal sebagai rekayasa fitur. Untuk mendefinisikannya dengan cara yang sederhana, rekayasa fitur adalah fase di mana kita menghasilkan variabel baru dari yang sudah ada atau memodifikasi variabel yang ada sehingga dapat menggunakannya dalam model pembelajaran mesin kita. Pada gambar di atas yang menggambarkan struktur dataset, kita dapat melihat bahwa sebagian besar variabel bersifat numerik dengan pengecualian beberapa - Gender, Negara. Pada dasarnya, model pembelajaran mesin adalah rumus matematika yang hanya akan menerima digit sebagai input. Jadi kami mencoba membuat model ML menggunakan dataset ini yang berisi campuran data (numerik + string), model kami hanya akan gagal selama proses pembuatan itu sendiri. Oleh karena itu kita perlu mengubah nilai string tersebut menjadi setara numerik mereka tanpa kehilangan signifikansinya. Salah satu cara paling efisien untuk melakukan ini adalah dengan menggunakan teknik yang disebut encoding. Ini adalah proses yang akan mengubah string atau kategori langsung menjadi setara numerik mereka tanpa kehilangan signifikansi. Di sini kolom gender kami hanya memiliki 2 kategori yaitu pria dan wanita, kami akan menggunakan LabelEncoding. Jenis pengkodean ini hanya akan mengubah kolom ini menjadi kolom yang memiliki nilai 0 dan 1. Untuk menggunakan Label Encoding, kita akan menggunakan kelas LabelEncoder dari perpustakaan sklearn.

#Encoding Categorical Variable Gender
from sklearn.preprocessing import LabelEncoder
LE1 = LabelEncoder()
X[:,2] = np.array(LE1.fit_transform(X[:,2]))

Di sini kami telah menerapkan pengkodean label pada kolom Gender dari himpunan data kami.

f.       Encoding Negara Variabel Kategoris

Sekarang mari kita berurusan dengan kolom kategoris lain bernama negara. Kolom ini memiliki kardinalitas 3 yang berarti bahwa ia memiliki 3 kategori berbeda yang hadir yaitu Prancis, Jerman, Spanyol. Di sini kita memiliki 2 pilihan: -

1.   Kita dapat menggunakan Pengkodean Label di sini dan langsung mengubah nilai-nilai itu menjadi 0,1,2 seperti itu

2.  Kita dapat menggunakan One Hot Encoding di sini yang akan mengubah string tersebut menjadi aliran vektor biner. Misalnya – Spanyol akan dikodekan sebagai 001, Prancis akan menjadi 010, dll. Pendekatan pertama mudah dan lebih cepat diterapkan. Namun, setelah nilai-nilai tersebut dikodekan, nilai tersebut akan diubah menjadi 0,1,2. Namun, memang ada metode pengkodean lain yang dikenal sebagai pengkodean satu panas. Dalam satu pengkodean panas, semua nilai string diubah menjadi aliran biner 0 dan 1. Pengkodean satu panas memastikan bahwa algoritma pembelajaran mesin tidak mengasumsikan bahwa angka yang lebih tinggi lebih penting.

#Encoding Categorical variable Geography
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct=ColumnTransformer(transformers=[('encoder',OneHotEncoder(),[1])],remainder="passthrough")

X = np.array(ct.fit_transform(X))

Di sini kami telah menggunakan kelas OneHotEncoder dari sklearn untuk melakukan pengkodean satu panas. Sekarang Anda mungkin memiliki pertanyaan di sini. Gunanya ColumnTransformer adalah kelas lain dalam sklearn yang akan memungkinkan kita untuk memilih kolom tertentu dari dataset kita di mana kita dapat menerapkan pengkodean satu-panas.

g.      Memisahkan himpunan data menjadi himpunan data pelatihan dan pengujian Pada langkah ini, kita akan membagi dataset kita menjadi dataset pelatihan dan pengujian. Ini adalah salah satu fondasi dari seluruh proses pembelajaran mesin. Dataset pelatihan adalah salah satu di mana model kami akan melatih sementara dataset pengujian adalah salah satu di mana kita akan menguji kinerja model kami.

#Splitting dataset into training and testing dataset

from sklearn.model_selection import train_test_split

X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=0

Di sini kita telah menggunakan fungsi train_test_split dari perpustakaan sklearn. Kami telah membagi dataset kami dalam konfigurasi sehingga 80 persen data akan ada di sana dalam fase pelatihan dan 20 persen data akan berada dalam tahap pengujian. Selain itu, bagian terbaik tentang menggunakan fungsi train_test_split dari sklearn adalah bahwa, sementara membelah itu juga akan melakukan pengocokan data untuk membuat dataset yang lebih umum.

h.      Melakukan Penskalaan Fitur

Langkah terakhir dalam fase rekayasa fitur kami adalah penskalaan fitur. Ini adalah prosedur di mana semua variabel diubah menjadi skala yang sama. Terkadang dalam himpunan data, variabel tertentu memiliki nilai yang sangat tinggi sementara variabel tertentu memiliki nilai yang sangat rendah. Jadi ada kemungkinan bahwa selama pembuatan model, variabel yang memiliki nilai sangat tinggi mendominasi variabel yang memiliki nilai sangat rendah. Karena itu, ada kemungkinan bahwa variabel-variabel dengan nilai rendah mungkin diabaikan oleh model kami, dan karenanya penskalaan fitur diperlukan. Setelah kita membagi dataset menjadi dataset pelatihan dan pengujian. Alasannya, dataset pelatihan adalah sesuatu di mana model kami akan melatih atau belajar sendiri. Sementara dataset pengujian adalah sesuatu di mana model kami akan dievaluasi. Jika kita melakukan penskalaan fitur sebelum pemisahan uji coba kereta maka itu akan menyebabkan kebocoran informasi pada dataset pengujian yang mengabaikan tujuan memiliki dataset pengujian dan karenanya kita harus selalu melakukan penskalaan fitur setelah pembagian uji coba kereta. Dua teknik yang paling efisien dalam konteks ini adalah : Standardisasi dan Normalisasi. Setiap kali standardisasi dilakukan, semua nilai dalam himpunan data akan diubah menjadi nilai mulai dari -3 hingga +3. Sementara dalam kasus normalisasi, semua nilai akan diubah menjadi rentang antara -1 hingga +1. Ada beberapa kondisi di mana teknik untuk digunakan dan kapan. Biasanya, Normalisasi hanya digunakan ketika dataset kami mengikuti distribusi normal sementara standardisasi adalah teknik universal yang dapat digunakan untuk dataset apa pun terlepas dari distribusinya. Di sini kita akan menggunakan standardisasi.

#Performing Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

Di sini kami telah menggunakan kelas StandardScalar dari perpustakaan sklearn untuk melakukan standardisasi. Sekarang kami telah menyelesaikan fase rekayasa fitur kami. Kita sekarang dapat mulai dengan penciptaan jaringan saraf tiruan kita dari titik berikutnya dan seterusnya.

i.        Menginsialisasi Jaringan

Saraf Tiruan Ini adalah langkah pertama saat membuat ANN. Di sini kita akan membuat objek ann kita dengan menggunakan kelas Keras tertentu bernama Sequential.

#Initialising ANN
ann = tf.keras.models.Sequential()

Sebagai bagian dari tensorflow 2.0, Keras sekarang terintegrasi dengan tensorflow dan sekarang dianggap sebagai sub-library tensorflow. Kelas Sequential adalah bagian dari modul model perpustakaan Keras yang merupakan bagian dari perpustakaan tensorflow sekarang.

j.        Membuat Lapisan Tersembunyi

Setelah kita menginisialisasi ann kita, kita sekarang akan membuat lapisan untuk hal yang sama. Di sini kita akan membuat jaringan yang akan memiliki 2 lapisan tersembunyi, 1 lapisan input, dan 1 lapisan output. Jadi, mari kita buat lapisan tersembunyi pertama kita

#Adding First Hidden Layer
ann.add(tf.keras.layers.Dense(units=6,activation="relu"))

Di sini kami telah membuat lapisan tersembunyi pertama kami dengan menggunakan kelas Dense yang merupakan bagian dari modul lapisan. Kelas ini menerima 2 input: -

1.      unit: - jumlah neuron yang akan hadir di lapisan masing-masing

2.      aktivasi:- tentukan fungsi aktivasi mana yang akan digunakan

Untuk input pertama, saya telah menguji dengan banyak nilai di masa lalu dan nilai optimal yang saya temukan adalah 6. Jelas, kita dapat mencoba dengan nilai lain karena tidak ada aturan keras tentang jumlah neuron yang harus ada di lapisan. Untuk input kedua, kita akan selalu menggunakan "relu" [unit linier yang diperbaiki] sebagai fungsi aktivasi untuk lapisan tersembunyi. Karena kita akan membuat dua lapisan tersembunyi, langkah yang sama ini akan kita ulangi untuk pembuatan lapisan tersembunyi kedua juga.

 #Adding Second Hidden Layer
ann.add(tf.keras.layers.Dense(units=6,activation="relu"))

Membuat Lapisan Keluaran

Pada langkah ini, kita akan membuat lapisan output kita untuk ann. Lapisan output akan bertanggung jawab untuk memberikan output.

 #Adding Output Layer
ann.add(tf.keras.layers.Dense(units=1,activation="sigmoid"))

Dalam masalah klasifikasi biner (seperti ini) di mana kita hanya akan memiliki dua kelas sebagai output (1 dan 0), kita hanya akan mengalokasikan satu neuron untuk menghasilkan hasil ini. Untuk masalah klasifikasi multiclass, kita harus menggunakan lebih dari satu neuron di lapisan output. Misalnya – jika output kita berisi 4 kategori maka kita perlu membuat 4 neuron yang berbeda [satu untuk setiap kategori]. Untuk klasifikasi biner Masalah, fungsi aktivasi yang harus selalu digunakan adalah sigmoid. Untuk masalah klasifikasi multiclass, fungsi aktivasi yang harus digunakan adalah softmax. Di sini karena kita berurusan dengan klasifikasi biner maka kita mengalokasikan hanya satu neuron di lapisan output dan fungsi aktivasi yang digunakan adalah softmax. 

k.      Menyusun Jaringan

Saraf Tiruan Kami sekarang telah membuat lapisan untuk jaringan saraf kami. Pada langkah ini, kami akan menyusun ANN kami.

#Compiling ANN

ann.compile(optimizer="adam",loss="binary_crossentropy",metrics=['accuracy'])

Kami telah menggunakan metode kompilasi objek ann kami untuk mengkompilasi jaringan kami. Metode kompilasi menerima input di bawah ini:

1. optimizer: - menentukan pengoptimal mana yang akan digunakan untuk melakukan penurunan gradien stokastik. Saya telah bereksperimen dengan berbagai pengoptimal seperti RMSProp, adam dan saya telah menemukan bahwa adam optimizer adalah yang dapat diandalkan yang dapat digunakan dengan jaringan saraf apa pun.

2.   loss:- menentukan fungsi loss mana yang harus digunakan. Untuk klasifikasi biner, nilainya harus binary_crossentropy. Untuk klasifikasi multiclass, itu harus categorical_crossentropy.

3.   metrik: - metrik kinerja mana yang akan digunakan untuk menghitung kinerja. Di sini kami telah menggunakan akurasi sebagai metrik kinerja.

l.        Pemasangan Jaringan

Saraf Tiruan Ini adalah langkah terakhir dalam proses pembuatan ann kami. Di sini kita hanya akan melatih ann kami pada dataset pelatihan.

#Fitting ANN
ann.fit(X_train,Y_train,batch_size=32,epochs = 100)

Di sini kami telah menggunakan metode fit untuk melatih ann kami. Metode fit adalah menerima 4 input dalam hal ini:

1.      X_train:- Matriks fitur untuk himpunan data pelatihan

2.      Y_train:- Vektor variabel dependen untuk himpunan data pelatihan

3.  batch_size: berapa banyak pengamatan yang harus ada di batch. Biasanya, nilai untuk parameter ini adalah 32 tetapi kita dapat bereksperimen dengan nilai lain juga.

4.    epochs: Berapa kali jaringan saraf akan dilatih. Di sini nilai optimal yang saya temukan dari pengalaman saya adalah 100.

Pelatihan Jaringan Saraf Tiruan

Di sini kita dapat melihat bahwa di setiap zaman kerugian kita menurun dan akurasi kita meningkat. Seperti yang dapat kita lihat di sini bahwa akurasi akhir kami adalah 86,59 yang cukup luar biasa untuk jaringan saraf dengan kesederhanaan ini. Kami telah membuat jaringan saraf tiruan kami dari awal menggunakan Python. Sebagai bonus tambahan, saya melampirkan kode di bawah ini yang akan memungkinkan kami untuk melakukan prediksi titik tunggal untuk setiap nilai input khusus.

m.    Memprediksi hasil untuk Pengamatan Titik Tunggal

#Predicting result for Single Observation

print(ann.predict(sc.transform([[1, 0, 0, 600, 1, 40, 3, 60000, 2, 1, 1,50000]])) > 0.5)

Hasil :

[[False]]

Di sini jaringan saraf kami mencoba memprediksi apakah pelanggan kami akan keluar atau tidak berdasarkan nilai variabel independen. Sekarang di bawah ini merupakan cara menyimpan jaringan saraf yang sudah buat.

#Saving created neural network
ann.save("ANN.h5"

Menggunakan satu baris kode ini memungkinkan kita untuk menyimpan model ML kita. Format file h5 adalah format file khusus yang digunakan oleh jaringan saraf. Dengan menggunakan format ini kita dapat langsung menyimpan jaringan saraf kita sebagai objek serial. Ini mirip dengan implementasi format file acar yang kami gunakan untuk menyimpan model pembelajaran mesin tradisional.

Komentar