{"id":22363604,"url":"https://github.com/ilhamadhim/tlkm-stock-analysis","last_synced_at":"2026-04-20T13:07:52.603Z","repository":{"id":99515138,"uuid":"420521924","full_name":"ilhamAdhim/TLKM-Stock-Analysis","owner":"ilhamAdhim","description":"With Kaggle Dataset, predict the price of TLKM shares. All data are visualized and processed with Tensorflow and Python","archived":false,"fork":false,"pushed_at":"2021-11-05T02:57:02.000Z","size":1435,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-12T04:39:59.212Z","etag":null,"topics":["machine-learning","python","tensorflow","time-series","timeseries-analysis"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilhamAdhim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-10-23T21:00:07.000Z","updated_at":"2023-03-09T00:37:12.000Z","dependencies_parsed_at":"2023-07-30T15:31:05.327Z","dependency_job_id":null,"html_url":"https://github.com/ilhamAdhim/TLKM-Stock-Analysis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ilhamAdhim/TLKM-Stock-Analysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilhamAdhim%2FTLKM-Stock-Analysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilhamAdhim%2FTLKM-Stock-Analysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilhamAdhim%2FTLKM-Stock-Analysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilhamAdhim%2FTLKM-Stock-Analysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilhamAdhim","download_url":"https://codeload.github.com/ilhamAdhim/TLKM-Stock-Analysis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilhamAdhim%2FTLKM-Stock-Analysis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32048474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["machine-learning","python","tensorflow","time-series","timeseries-analysis"],"created_at":"2024-12-04T17:15:56.837Z","updated_at":"2026-04-20T13:07:52.597Z","avatar_url":"https://github.com/ilhamAdhim.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laporan Proyek Machine Learning \u003cbr\u003e Muhammad Ilham Adhim\n\n## Project Overview\n\nSeiring dengan perkembangan internet dan adanya kasus pandemi COVID-19, semakin banyak orang yang menyadari pentingnya manajemen finansial dan memulai investasi. Namun dengan banyaknya perusahaan yang ada, pemula akan kebingungan untuk memulai investasi saham di perusahaan yang cocok. Jika kita investasi ke perusahaan tanpa mengenali profil perusahaan dan track record manajemen keuangan dari perusahaan tersebut, besar kemungkinan kita akan merugi dari segi waktu, effort, dan biaya. Oleh karena itu, sebagai pemula direkomendasikan untuk mencoba saham *Bluechip*\n\nUntuk [Daftar saham Bluechip](https://superyou.co.id/blog/keuangan/rekomendasi-saham-blue-chip/) di Indonesia cukup bervariasi. Dalam pengerjaan submission ini, saya mencoba untuk memprediksi harga saham TLKM oleh PT. Telkom Indonesia (Persero) Tbk. menggunakan data yang ada.\n\n## Business Understanding\n### Problem Statements\n1. Bagaimana cara mengetahui fitur yang berpengaruh terhadap pergerakan harga saham PT. Telkom Indonesia (Persero) Tbk. ?\n2. Bagaimana cara membuat model machine learning untuk memprediksi saham PT. Telkom Indonesia (Persero) Tbk. menggunakan data uji yang ada?\n\n### Goals\n1. Mengetahui fitur yang mempengaruhi harga saham PT Telkom Indonesia (Persero) Tbk.\n2. Membuat model machine learning untuk memprediksi saham PT Telkom Indonesia (Persero) Tbk.\n\n### Solution statements\nKarena dataset terkait hanya berisi tentang data tanggal dan harga, maka solusi yang tepat untuk masalah ini adalah dengan menggunakan pendekatan Time Series. Untuk memahami fitur yang memiliki pengaruh terhadap harga saham, saya akan menggunakan Heatplot agar pemetaan korelasi antar kolom menjadi lebih mudah dimengerti.\n\nUntuk model machine learning yang digunakan, saya menggunakan 1 buah layer LSTM (Long Short Term Memory) dalam model.LSTM adalah jenis jaringan saraf berulang yang memiliki kemampuan untuk mengingat atau melupakan output dari data yang melalui arsitekturnya. Ini dilakukan tanpa mengubah konteks dari data yang ada. Dengan pendekatan ini, LSTM mampu mengatasi masalah RNN, yang mana RNN tidak mampu memprediksi kata yang disimpan dalam memori jangka panjang. Dengan bertambahnya panjang celah, RNN tidak memberikan kinerja yang efisien. Berbeda dengan LSTM yang dapat secara default menyimpan informasi. Dengan kinerja seperti ini, LSTM cocok untuk digunakan dalam proses analisa dan prediksi data deret waktu. Beberapa keuntungan untuk menggunakan LSTM untuk kasus Time Series adalah:\n\n1. Tidak ada prasyarat tertentu dalam implementasi model\n2. Dapat bekerja dengan baik untuk neural network dengan fungsi non-linear\n3. Cocok untuk digunakan di dataset yang banyak\n4. Dapat mengatur parameter tuning secara kustom agar menyesuaikan bentuk data.\n\nMenurut [referensi](https://www.springml.com/blog/time-series-forecasting-arima-vs-lstm/) yang saya baca, Saya memutuskan untuk menggunakan pembuatan model menggunakan layer **LSTM (Long Short Term Memory).** Untuk penggunaan [optimizer yang cocok](https://deepdatascience.wordpress.com/2016/11/18/which-lstm-optimizer-to-use/) di case Time Series, Saya akan menggunakan **Adam Optimizer** karena secara keseluruhan, optimizer ini sangat bagus jika dibandingkan dengan optimizer lain.\n\n\n## Data Understanding\nUntuk submission ini, saya mengambil data dari [Kaggle](https://www.kaggle.com) yang bernama **[Indonesian Government Owned Company Stock Price](https://www.kaggle.com/fawwazzainiahmad/indonesian-government-owned-company-stock-price?select=TLKM.JK.csv)**. Berikut adalah daftar kolom di file CSV yang tersedia:\n\n  * Date - Tanggal trading saham TLKM (datatype : string object)\n  * Open - Harga ketika pertama kali diumumkan di tanggal tersebut (datatype : float64)\n  * High - Harga tertinggi di tanggal tersebut (datatype : float64)\n  * Low -  Harga terendah di tanggal tersebut (datatype : float64)\n  * Close - Harga saham ketika diakhir period (datatype : float64)\n  * Adj Close - Close value setelah mempertimbangkan dividen dan stock split (datatype : float64)\n  * Volume - Jumlah transaksi saham di tanggal tersebut (datatype : float64)\n  \n\u003cbr\u003e\n\n![Image data Overview](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/data_overview.png?raw=true)\n\n\nDari data tersebut, terlihat bahwa rata-rata harga saham TLKM disajikan sangat lengkap mulai dari Harga Open sampai Adj Close nya periode 2004 sampai 2020. Disertai dengan informasi penting lainnya, seperti harga saham tertinggi dan terendah dalam durasi tersebut.\n\n![Grafik Saham TLKM 2004 - 2021](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/data_understanding.png?raw=true)\n\nDari grafik tersebut, dapat diambil kesimpulan bahwa harga saham TLKM mengalami perubahan secara signifikan dalam durasi tersebut. Pada tahun 2004 sampai 2008 merupakan lonjakan harga saham TLKM pertama, kemudian terjadi peningkatan yang sangat drastis di tahun 2012 - Q1 2018. Kemudian mengalami penurunan yang cukup signifikan di akhir tahun 2019 sampai 2 Oktober 2020 karena pengaruh COVID-19.\n\nSebelum melanjutkan ke tahap preparation, kita perlu untuk melihat korelasi antar fitur yang mempengaruhi pergerakan saham berdasarkan dataset yang ada. Saya mencoba menyajikan korelasi tersebut dalam bentuk heatmap agar dapat dipetakan dengan jelas. \n\n![Heatmap korelasi antar fitur](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/korelasi-antar-fitur-updated.png?raw=true)\n\n## Data Preparation\nDalam tahap ini, saya menyiapkan dataframe yang telah menyimpan data dari CSV tersebut untuk dilakukan beberapa pengecekan, pertama kita perlu memeriksa adanya null values. Ini perlu dilakukan untuk menjaga akurasi dari prediksi model yang akan kita lakukan di proses pelatihan data. \n\nBerikut hasil cek data null oleh library **pandas** : \u003cbr\u003e\n\n![Check null values](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/ada-missing-values.png?raw=true)\n\nDari 3980 data, terdapat 3944 data yang tidak ada null valuesnya, ini artinya ada beberapa data yang null. Untuk mengatasinya, kita bisa menghapus row yang null dengan **dropna()** dari library **pandas**\n\n\n```\ndf_new = df.dropna(how='any',axis=0) \ndf_new\n```\n\n\nKemudian, kita cek juga untuk duplikasi data. Berikut hasil cek duplikasi data oleh library **pandas** : \u003cbr\u003e\n\n![Check duplicate values](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/check-duplicate-values.png?raw=true)\n\nLangkah berikutnya adalah reduksi dimensi dengan menggunakan PCA. Dari Heatmap korelasi di bagian Data Understanding, dapat kita simpulkan bahwa kolom yang mempunyai korelasi rendah adalah kolom 'Volume'. Setelah menghapus kolom tersebut, tersisa kolom 'Low', 'Open','High','Close', dan 'Adj Close'. Untuk meningkatkan efisiensi pelatihan model dengan cara meminimalisasi fitur yang digunakan tanpa menghapus informasi yang ada didalamnya\n\n![Reduksi Dimensi PCA](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/reduksi-dimensi-pca.png?raw=true)\n\nSelain pengecekan data dan pembagian dataset ke data latih dan data uji, kita juga perlu untuk mengatur skala data. Hal ini perlu dilakukan agar skor MAE kita tidak menjadi terlalu besar, jika hal ini terjadi, akan mengakibatkan prediksi kita sangat buruk. Oleh karena itu, saya melakukan skala data menggunakan MinMax Scaler. Berikut formula dari MinMax Scaler: \u003cbr\u003e\n![MinMax Scaler Formula](https://i.stack.imgur.com/ruy6L.png)\n\n\nSebagai rangkuman, langkah yang telah saya lakukan untuk tahap ini adalah: \n1. Penghapusan missing values \n2. Penghapusan duplikat data\n3. Reduksi Dimensi dengan PCA\n4. Train Test Split dengan ratio 80% data latih dan 20% data uji.\n5. Penskalaan data latih dan data uji dengan MinMax Scaler untuk mencegah data leakage\n\n## Modeling\n\nDari banyaknya opsi penggunaan model yang ada untuk kasus Time Series, saya mencoba mengimplementasikan LSTM dalam pembuatan model. \n\nDalam prosesnya, kita telah mengetahui bahwa LSTM ini merupakan perbaikan dari RNN Tradisional dimana LSTM mampu menyimpan nilai yang penting dan menghapus nilai yang tidak penting dalam jangka waktu yang lama secara default.\n\nSemakin kompleks sebuah model ML, maka kemungkinan model tersebut mengalami overfitting pun semakin tinggi. Walaupun secara arsitektur sudah cocok dengan data, menggunakan loss function yang tepat, dan metrik yang sesuai, masih ada kemungkinan overfitting. Oleh karena itu, selain LSTM saya juga menggunakan Dropout layer untuk mencegah terjadinya overfitting selama proses pelatihan data. Simpelnya, dropout layer yang berperan sebagai perantara hidden layer dan output layer ini dimatikan secara bergantian selama proses pelatihan data berlangsung. Dalam project ini, menggunakan dropout value sebesar 0.5, berikut ilustrasinya:\n\u003cbr\u003e\n\u003cbr\u003e\n![image](https://d17ivq9b7rppb3.cloudfront.net/original/academy/20200803125202b077a1253a77def9b9e4ae6b553bc1cc.gif)\n\nSecara keseluruhan, alur dari arsitektur model ini adalah LSTM layer sebagai input layer, kemudian melewati dropout layer dengan value sebesar 0.5 untuk meningkatkan variasi output, barulah menggunakan Dense Layer dengan 1 unit perceptron sebagai output layernya.\n\n## Model Evaluation\n\nBerikut visualisasi untuk nilai MAE dan loss value di tahap pelatihan dan pengujian \u003cbr\u003e\u003cbr\u003e\n![Model Evaluation Result](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/model_evaluation_revisi.png?raw=true)\n\nBerikut visualisasi untuk prediksi data latih harga saham TLKM dibandingkan dengan data aslinya dalam periode 28 September 2004 - 29 November 2016 (80% dataset) \u003cbr\u003e\u003cbr\u003e\n![Prediction Result](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/model_prediction_updated.png?raw=true)\n\n\n## Evaluation\n\n- ***Mean Absolute Error*** \u003cbr\u003e\u003cbr\u003e\n![MAE Formula](https://github.com/ilhamadhim/TLKM-Stock-Analysis/blob/master/assets/MAE_Formula.png?raw=true)\n\nMetrik ini digunakan untuk mengetahui kesalahan model atau memberitahu seberapa besar error model yang sudah di latih kepada data yang akan diuji.\n\n- ***Mean Squared Error***:  \u003cbr\u003e\u003cbr\u003e\n![MSE Formula](https://miro.medium.com/max/808/1*-e1QGatrODWpJkEwqP4Jyg.png)\u003cbr\u003e\nFungsi loss yang paling sederhana dan sering digunakan untuk kasus regresi\n\n\u003cbr\u003e\n\nModel deep learning yang telah dibuat dapat melakukan proses training data dengan metrik dan loss function tersebut. Dalam prosesnya, terlihat hasil MAE yang relatif kecil yaitu sekitar 0.0370. Hal ini menunjukan bahwa model ini memiliki error dibawah 1.8%\n\n## Penutup\nDemikian laporan dan metrik dari implementasi Machine Learning untuk analisis harga saham TLKM oleh PT. Telkom Indonesia Tbk. Terimakasih telah membaca laporan ini, semoga bermanfaat.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filhamadhim%2Ftlkm-stock-analysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filhamadhim%2Ftlkm-stock-analysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filhamadhim%2Ftlkm-stock-analysis/lists"}