Merhaba,
Bu yazıda talep tahmini için kullanabileceğimiz araçlara bakacağız. Önceliğimiz talep tahminiyle ilgili istatistiksel modelleri nasıl kullanacağımızı öğrenmek olmalı. Bunun için size Rob Hyndman'ın Forecasting: Principles and Practices adlı kitabını tavsiye ediyorum. Rob Hyndman, Avustralya asıllı bir istatistik profesörüdür. Kendisi, talep tahmini ve öngörü sistemleri konusunda tecrübesiyle hem bu kitap gibi basit ve pratik, hem de teknik kitaplar yazmış. Meslektaşlarıyla beraber kaleme aldığı bir çok makaleyle talep tahmin modellerine önemli katkısı olmuştur. Ayrıca, daha sonra değineceğimiz R dilinde hazırladığı talep tahmin sistemi de övgüye değerdir. Web'de okumaya açık bu kitabı, talep tahminine iyi bir giriş yapmamızı sağlar. Burada gördüğünüz temel modelleri öncelikle Excel'de kurgulamanızı tavsiye ediyorum. Böylece hem modelin nasıl işlediğini görmüş olacak, hem de bu tip bir yapıyı sahada kullanabilmek için nasıl bir süreç geliştirmeniz gerektiğini kestirebileceksiniz.
Excel'de modelleme için Sunil Chopra'nın Supply Chain Management adlı kitabını da tavsiye ediyorum. Belli başlı ETS modellerini, bir Excel dosyasında hücre hücre nasıl formülleyip birbirine bağlayacağınızı en ince ayrıntısına kadar gösteriyor. Bunu yaparken önemli bir şeyle de karşılaşıyoruz; parametre optimizasyonu. ETS veya ARIMA modellerinin hepsinde optimizasyonu gereken parametreler vardır. Bunları kullanarak seviye, trend ve sezonsallık için başlangıç değerleri ve onları modelde ne oranda kullanacağınızı belirlersiniz. Parametre optimizasyonunun ana hedefi talep tahminindeki varyansı minimum seviyeye çekmektir. Fakat, talep varyansına asıl modeli kurmadan, direk ulaşamayız. O yüzden bize daha pratik bir performans ölçümü ve buna bağlı bir optimizasyon süreci gerekir. Genel hatlarıyla şöyle bir algoritma çalışacaktır;
· Seviye, trend ve sezonsallık için girdi değerlerini belirleriz.
· Bunlara bağlı bir model kurar ve bu girdilerin sistemi ne kadar etkileyeceğini belirleyecek parametrelere birer değer atarız. (Bunlar alfa, beta, gamma vb diye adlandırılırlar)
· Modelimizi geçmiş veri dönemine uygularız. Diğer bir deyişle bu modelle geçmiş dönem için bir tahmin yürütürüz.
· Bu tahmin değerlerimizle gerçekleşenleri karşılaştırır, aradaki farkı ölçeriz. Bu farkı minimum seviyeye çekmek için girdi değerleri ve parametrelerle oynarız.
Bu performans kriterinin ne olması gerektiği uzun bir tartışma konusudur. En basit haliyle Ortalama Kare Hata (MSE) ölçülür. Bunun daha kapsamlı olan mutlak veya kök versiyonları da vardır. Daha gelişmişi ise Akaike Ölçütü (Akaike Information Criterion - AIC) olarak adlandırılır. Japon istatistikçi Akaike'nin kurguladığı bu sistem hata payının yanına kullanılan parametre sayısını da ekler. Böylece sistemin minimum hata oranı yanında olabilecek en az parametreyle çalışmasını sağlar. Bu hesaplar hiç kolay değildir. Başlangıç değerleri için bazı kabuller ve metotlar vardır ama parametreleri bu performans kriterine bağlı olarak optimize etmek çok zordur. Bu işi Excel'de yapmak isterseniz Solver kullanmanızı öneririm. Bünyesindeki Non-Lineer optimizasyon algoritması çok iyi sonuçlar veriyor. Fakat, bu problemin global optimum noktasını bulmak çok zor olduğu için üst üste birkaç defa çalıştırmanız gerekebilir. Sunil Chopra'nın kitabı bu konuda ciddi bilgi paylaşıyor.
Excel'de yarı manuel hazırladığımız modeller çok kırılgan olabilir. Veri miktarı değiştikçe veya her birini ayrı ayrı çalıştırıp en iyisini bulmaya çalışmak ciddi efor isteyecektir. Bu noktada daha kapsamlı bir uygulamaya geçebiliriz; R'da talep tahmini. R (Programlama Dili) istatistiksel sistemler üzerine yazılmış açık kodlu, ücretsiz bir uygulamadır. Rob Hyndman bu programlama dilinde çok iyi bir talep tahmin modülü yazmış. Forecasting kitabında bu sisteme bol bol atıfta bulunur ve kullanmaya teşvik eder. Kısa komut ve fonksiyonlarıyla birçok işlemi kolayca yapabileceğiniz bir uygulamadır. R dilini kullanmanız için daha önceki yazılarımda (EM Yazıları - 7 (Yazılım ve Matematik-1)) paylaştığım Visual Studio editörünü kullanmanızı tavsiye ediyorum. Böylece bir sonraki aşamaya geçebilirsiniz; R'daki talep tahmin programını kendi geliştirdiğiniz bir uygulamaya bağlamak.
R programı ne yazık ki, görüntü ve yönetim açısından çok geride kalmıştır. Buna bağlı bir uygulama geliştirdiğinizde kullanıcının bu dile vakıf olması ve (bugün itibariyle ilkel görünen) komutları uygulaması gerekir. MS-DOS'u bilenlerin hatırlayacağı bu komut yapısı birçok yerde ihtiyaçları karşılamaz; özellikle talep tahmini yapacak kişilerin bu alanda özel eğitimleri yoksa. Özetle pratik görünmeyen bu yapıya, görselliği güçlü yeni nesil programlarla bağlamak için bir köprü gerekir. Bunun için, R'daki uygulamaları direk C# içinden çalıştıran (C# için bkz: EM Yazıları - 7 (Yazılım ve Matematik-1)) bir uygulama mevcut; R.NET. Basit bir kılavuzu olan bu uygulamayla, kendi programınıza R'ı davet edebilir, kullanıcıya çirkin yüzünü göstermeden, onu ana kodunuzun içinde çalıştırıp sonuçlarını güzel bir görselle paylaşabilirsiniz.
Bu uygulamanın da ötesine geçmek istiyorsanız, talep tahmin programını neredeyse sıfırdan yazmanız gerekir. Bana göre çekinmeden girebileceğiniz bir fırtınadır bu. Eğer daha önceki yazılarda bahsettiğim yazılım ve matematik bilgisi, motivasyon ve enerjiye sahip olduğunuza inanıyorsanız, bu gemi batmaz. Artık, çekirdeğe yaklaşıp kendi elimizle geliştireceğimiz programın detaylarına bakabiliriz. İhtiyaç duyacaklarımızı aşağıdaki gibi özetleyebiliriz. Parantez içinde bu alanlara uygun önerilerimi göreceksiniz. İyi bir talep tahmin programı yazabilmek için bu modülleri geliştirmeliyiz;
· Veritabanı yönetimi (SQL Server)
· Veritabanıyla iletişim (LINQ to SQL)
· Ana programın yazılacağı ortam ve programlama dili (Visual Studio ve C#)
· Parametre optimizasyon motoru (Math.NET)
· Kullanıcı için ön yüz tasarımı (ASP.NET, VSTO veya Excel-DNA)
Bu program ve uygulamalarla ilgili eğitim tavsiyelerimi daha önce paylaşmıştım, bkz: EM Yazıları - 8 (Yazılım ve Matematik-2). Bunların arasında en ayırt edici olan Math.NET bünyesindeki optimizasyon motorudur. Bu motor temel algoritmasını L-BFGS olarak adlandırılan Limitlenmiş BFGS metodundan alır. Detayı derya deniz olan bu metodun ana kaynağı BFGS Algoritması denen dört büyük matematikçinin ortaya koyduğu çözüm metodudur. Bu metotların orjini Newton Optimizasyon Metodudur. Özünde, ikinci dereceden türevi alınabilen denklemlerin köklerini bulur. Haliyle türevi sıfıra eşit olan (yani minimum ve ya maksimum noktası olan) bir denklemin çözümünde kullanılabilir. Fakat, başlangıç noktası çok önemlidir. Eğer giriş verisi için iyi bir tahmin yapılmazsa sistem beklediğimizden kötü bir sonuç verebilir. O yüzden, L-BFGS'yi kullanırken, onu besleyecek veriyi (yani tahmini seviye, trend, sezonsallık gibi parametrelerin) iyi belirlenmesi gerekir. Bunun için Sunil Chopra ve Rob Hyndman'ın kitapları çok iyi yol göstericiler olacaktır.
Yukarıda belirlediğimiz şekilde modelimizi geliştirmemiz hikayenin sonunu getirmez. Talep planlamanın başında da bahsettiğim gibi bu istatistiksel modeller tam olarak geleceği göremez, sadece ona yakınsarlar. En iyi modelimizin bile bir varyansı olacaktır, ama dileğimiz bu varyansın sadece beyaz gürültüden ibaret olmasıdır. Yani modelin kendisinden kaynaklı varyansın sıfırlanması, sadece ortamın getirdiği bir sapmayla mücadele etmemizdir. Hoş, bu tam olarak mümkün değildir ama olabildiğince bu hedefe yaklaşmak için yukarıdaki eziyetli yoldan geçmemiz gerekiyor. Bu son kademeye geldiğimizde seçtiğimiz, diğer bir deyişle eldeki veri setine en uygun davranan model bir varyans üretir. Bu varyans bazı modeller için hesaplanabilir ama bir kısmı için ise net bir formül yoktur. Bunların üstesinden gelip sistemin varyansını hesaplayabilmek için yine Math.NET bünyesindeki simulasyon yapısı kullanılabilir. Her halükarda ortaya çıkan varyansın bir işleme tabi tutulması gerekir, yoksa talep tahmininin yanında eğreti duracaktır.
Bu noktada devreye Unified Supply Model girer. Inventory Optimization başlığı altında basitçe ele aldığımız model, talep tahmininden gelen varyansla tedarik alanındaki parametre ve gereksinimleri birleştirip kullanıcıya bir güvenlik stoğu miktarı önerir. Özetle, eldeki gerçek satış verisinden ulaştığımız talep tahmini, ne kadar büyük bir varyans (sapma) getirirse getirsin, Birleşik Tedarik Modeli bunu uygun bir güvenlik stoğuyla karşılar; hem de üretim ve ya tedarik gerçeğini bir araya katarak. Daha detaylı bilgi alışverişi için benimle iletişime geçebilirsiniz. Şu yazıyı da okumanızı da öneririm; EM Yazıları - 10 (Birleşik Tedarik Modeli)
Zor bir yoldan geçip ışığı görmeyi başardık. Talep tahmini gündemdeki yerini asla kaybetmeyecek bir konu. Özellikle içinden geçtiğimiz pandemi ortamı, bu alanın ne kadar önemli olduğunu bir kez daha gösteriyor. Bir çok endüstride tedarik zincirleri kırıldı, çoğu sistem gidişatı öngöremedi. Her ne kadar biz planlamacıların bilgisi mutlak gerçeğe ulaşmasa da, paylaştığım teknik birikim ve bunun kullanılması için gösterilecek saygıdeğer emek, bu kırılımların büyük bir kısmına engel olabilirdi. O yüzden biz Endüstri Mühendislerine bugün daha fazla ihtiyaç var, umarım karşılığını verebiliriz.
Sevgiler
Comments