artificial intelligence - THE DATA SCIENCE LIBRARY http://sigmaquality.pl/tag/artificial-intelligence/ Wojciech Moszczyński Sat, 02 Mar 2019 19:38:00 +0000 pl-PL hourly 1 https://wordpress.org/?v=6.8.3 https://sigmaquality.pl/wp-content/uploads/2019/02/cropped-ryba-32x32.png artificial intelligence - THE DATA SCIENCE LIBRARY http://sigmaquality.pl/tag/artificial-intelligence/ 32 32 Estimation of the result of the empirical research with machine learning tools (part 1) https://sigmaquality.pl/uncategorized/estimation-of-the-result-of-the-empirical-research-with-machine-learning-tools/ Sat, 02 Mar 2019 19:38:00 +0000 http://sigmaquality.pl/?p=5621 Machine learning tools Thanks using predictive and classification models for the area of machine learning tools is possible significant decrease cost of the verification laboratory [...]

Artykuł Estimation of the result of the empirical research with machine learning tools (part 1) pochodzi z serwisu THE DATA SCIENCE LIBRARY.

]]>

 Part one: preliminary graphical analysis to research of coefficients dependence 

Machine learning tools

Thanks using predictive and classification models for the area of machine learning tools is possible significant decrease cost of the verification laboratory research.

Costs of empirical verification are counted to the Technical cost of production. In production of some chemical active substantiation is necessary to lead laboratory empirical classification to allocate product to separated class of quality.

This research can turn out very expensive.  In the case of short runs of production, cost of this classification can make all production unprofitable.

With the help can come machine learning tools, who can replace expensive laboratory investigation by theoretical judgment.

Application of effective prediction model can decrease necessity of costly empirical research to the reasonable minimum.

Manual classification would be made in special situation where mode would be ineffective or in case of checking process by random testing.

Case study: laboratory classification of active chemical substance Poliaxid

We will now follow process of making model of machine learning based on the classification by the Random Forest method. Chemical plant produces small amounts expensive chemical substance named Poliaxid. This substance must meet very rigorous quality requirements. For each charge have to pass special laboratory verification. This empirical trials are expensive and long-lasting. Their cost significantly influence on the overall cost of production. Process of Poliaxid production is monitored by many gauges. Computer save eleven variables such trace contents of some chemical substances, acidity and density of the substance. There are remarked the level of some of the collected coefficients have relationship with result of the end quality classification. Cause of effect relationship drive to the conclusion — it is possible to create classification model to explain overall process. In this case study we use base, able to download from this address: source

This base contains results of 1593 trials and eleven coefficients saved during the process for each of the trial.

import pandas as pd
import numpy as np

df = pd.read_csv('c:/2/poliaxid.csv', index_col=0)
del df['nr.']
df.head(5)

In the last column named: “quality class” we can find results of the laboratory classification.

Classes 1 and 0 mean the best quality of the substance. Results 2, 3 and 4 means the worst quality.

Before we start make machine learning model we ought to look at the data. We do it thanks matrix plots. These plots show us which coefficient is good predictor, display overall dependencies between exogenic and endogenic ratios.

Graphical analysis to research of coefficients dependence

The action that should precede the construction of the model should be graphical overview.

In this way we obtain information whether model is possible to do.

First we ought to divide results from result column: “quality class” in to two categories: 'First' and 'Second'.

df['Qual_G'] = df['quality class'].apply(lambda x: 'First' if x < 2 else 'Second')
df.sample(3)

At the end of table appear new column: "Qual_G".

Now we create vector of correlation between independent coefficients and result factor in column: 'quality class'.

CORREL = df.corr().sort_values('quality class')
CORREL['quality class']

Correlation vector points significant influences exogenic factors on the results of empirical classification.

We chose most effective predictors among all eleven variables. We put this variables in to the matrix correlation plot.

This matrix plot contain two colors. Blue dots means firs quality. Thanks to this all dependencies is clearly displayed.

import seaborn as sns

sns.pairplot(data=df[['factorB', 'citric catoda','sulfur in nodinol', 'noracid', 'lacapon','Qual_G']], hue='Qual_G', dropna=True)

Matrix display clearly patterns of dependencies between variables. Easily see part of coefficients have significant impact on the classification the first or second quality class.

Dichotomic division is good to display dependencies. Let's see what happen when we use division for 5 class of quality. We use this classes that was made by laboratory. We took only two most effective predictors. Despite this plot is illegible.

In the next part of this letter we use machine learning tools to make theoretical classification.

Next part:

Estimation of the result of the empirical research with machine learning tools (part 2)

Artykuł Estimation of the result of the empirical research with machine learning tools (part 1) pochodzi z serwisu THE DATA SCIENCE LIBRARY.

]]>
Prognozowanie wyjściowej mocy elektrowni w cyklu kombinowanym przy użyciu modelu regresji liniowej (część 1) https://sigmaquality.pl/uncategorized/prognozowanie-wyjsciowej-mocy-elektrowni-w-cyklu-kombinowanym-przy-uzyciu-modelu-regresji-liniowej/ Wed, 05 Sep 2018 19:24:00 +0000 http://sigmaquality.pl/?p=5904 Dzisiaj zajmujemy się prognozowaniem wyjściowej mocy elektrowni przy użyciu modelu regresji liniowej. Regresja liniowa Użycie klasycznych modeli regresji liniowej może okazać się bardzo skutecznym narzędziem [...]

Artykuł Prognozowanie wyjściowej mocy elektrowni w cyklu kombinowanym przy użyciu modelu regresji liniowej (część 1) pochodzi z serwisu THE DATA SCIENCE LIBRARY.

]]>

Dzisiaj zajmujemy się prognozowaniem wyjściowej mocy elektrowni przy użyciu modelu regresji liniowej.

Regresja liniowa

Użycie klasycznych modeli regresji liniowej może okazać się bardzo skutecznym narzędziem w procesie optymalizacji procesów wytwórczych. Jednoczynnikowa i wieloraka regresja liniowa powstała na bazie metody najmniejszych kwadratów opisanej w 1805 roku i spopularyzowanej przez francuskiego matematyka Adrien-Marie Legendre.

Pracochłonność oraz wysokie wymagania merytorycznie przy modelowaniu procesów były głównym powodami małej popularności tej metody optymalizacji.

Pojawienie się komputerów osobistych, dynamiczny wzrost wydajności ich wydajności oraz upowszechnienie programowania w językach R oraz Python spowodowało wzrost zainteresowania wykorzystaniem złożonych narzędzi ekonometrycznych.

W tej publikacji chciałbym przedstawić przykład zastosowania modelu regresji wielorakiej wykorzystując zbiór danych opracowanych przez naukowców z Namık Kemal University.

(Pınar Tüfekci, Çorlu Wydział Inżynierii, Namık Kemal University, TR-59860 Çorlu, Tekirdağ, Turcja)

Źródło danych: https://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant

Forma artykułu

W tej i w następnej części tej publikacji przedstawiony został proces tworzenia modeli prostej regresji liniowej. Autor artykułu zrezygnował z przedstawiania tego procesu w formie wzorów matematycznych ponieważ uznał, że bardziej praktycznie będzie pokazanie użycie nowoczesnych bibliotek języka Python. Wszystkie wykorzystane tu narzędzia ją bezpłatne i powszechnie dostępne w Internecie. W tej publikacji wykorzystana została głównie biblioteka statsmodels zbudowaną na bazie pakietów NumPy i SciPy języka Python. Wszystkie operacje zostały przeprowadzone w notatniku Jupyter należącym do bezpłatnego pakietu Anaconda. Czytelnik wprowadzając podany w publikacji kod uzyska te same wyniki, co może stanowić zachętę do głębszego zainteresowania zaprezentowanymi tutaj narzędziami.

Przegląd danych

Zbiór danych zawiera 9568 pomiarów z 6 lat (2006-2011), zebranych w elektrowni o cyklu łączonym. Podczas pomiaru elektrownia była wykorzystywana do pracy z pełnym obciążeniem.

Przedmiotem pomiaru były następujące zmienne:

  • średnie godziny zmienne temperatury temperatury (T),
  • zawartości satelitarne (R)
  • wilgotność względna (RH)
  • próżnia spalin (V).

Te zmienne niezależne umożliwiały przegląd godzinowej wydajności energii elektrycznej netto (EP).

Elektrownia o cyklu kombinowanym (CCPP) składa się z turbin gazowych (GT), turbin parowych (ST) i generatorów pary z odzyskiem ciepła. W elektrowni typu CCPP energia elektryczna jest wytwarzana przez turbiny gazowe i parowe, które są powiązane w jednym cyklu i gdzie nośniki energii są przenoszone z jednej turbiny do drugiej. Podczas gdy mierzona próżnia ma wpływ na turbinę parową, pozostałe trzy zmienne oddziaływania wpływają na wydajność turbin gazowych GT.

Prognozowanie przy użyciu modelu regresji liniowej

Otwieramy źródło danych i potrzebne biblioteki języka Python. Obliczenia zostały przeprowadzone w notatniku Jupyter. 

import pandas as pd
import numpy as np
import itertools
from itertools import chain, combinations
import statsmodels.formula.api as smf
import scipy.stats as scipystats
import statsmodels.api as sm
import statsmodels.stats.stattools as stools
import statsmodels.stats as stats
from statsmodels.graphics.regressionplots import *
import matplotlib.pyplot as plt
import seaborn as sns
import copy
#from sklearn.cross_validation import train_test_split
import math

## https://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant

df = pd.read_excel('c:/1/Folds5x2_pp.xlsx')
df.sample(5)

Zbiór pomiarów ma postać tabeli, gdzie kolumny reprezentują zmienne niezależne. Ostatnia kolumna oznaczona jako PE reprezentuje zmienną zależną (wynikową).

Poniżej została przeprowadzona analiza wielkość zbioru i formatu danych.

df.shape

Dane składają się z 9 568 wierszy w pięciu kolumnach.

(9568, 5)

df.dtypes

Dane mają postać liczbową.

Dla lepszej czytelności zmieniamy oznaczenia kolumn.

df.columns

df.columns = ['Temperature', 'Exhaust_Vacuum', 'Ambient_Pressure', 'Relative_Humidity', 'Energy_output']
df.sample(5)

Nazwy kolumn zostały zmienione.

Warunki podstawowe przy zastosowaniu modelu regresji liniowej

Niedotrzymanie podstawowych warunkami regresji może prowadzić do stworzenia modelu nie odzwierciedlającego prawdziwych relacji pomiędzy zmiennymi niezależnymi i zmienną zależną.

  • Między predyktorami i zmienną wynikową musi być zachowana relacja liniowa.
  • Nie może istnieć silna korelacja pomiędzy zmiennymi niezależnymi.
  • Wartości resztkowe powinny mieć rozkład normalność. Indywidualne reszty modelu powinny być podobne w swej zbiorowości oraz mieć rozkład normalny.
  • Homogeniczność wariancji - wariancja błędu powinna być stała.
  • Niezależność - błędy związane z jedną obserwacją nie mogą być skorelowane z błędami innych obserwacji.

Analiza danych liniowych między zmienną zależną a zmiennymi niezależnymi

CORREL = df.corr().sort_values('Energy_output')
CORREL['Energy_output']

Test korelacji ujawnił bardzo dużą korelację ujemną Temperatury i Próżni spalin z wartością produkowanego prądu.

  Zakresy zmiennych niezależnych: 

Zestawienie zawiera minimalne i maksymalne wahania wartości zmiennych egzogenicznych:

  • Temperatura (T) w zakresie od 1,81 ° C do 37,11 ° C,
  • Obejmuje powierzchnię (AP) w zakresie od 992,89 do 1033,30 milibara,
  • Wilgotność względna (RH) w zakresie od 25,56
  • Próżnia spalin (V) w zakresie od 25,36 do 81,56 cm Hg

Dane są pobierane z czujników rozmieszczonych w zakładzie, które co sekundę rejestrują zmienne otoczenia. Zmienne nie zostały objęte normalizacji (standaryzacją danych).

  • Zmienna zależna (wynikowa) to godzinowa produkcja energii elektrycznej netto (EP) zarejestrowana w zakresie od 420.26 do 495,76 MW

Jak wspomnieliśmy istnieje bardzo wysoka korelacja ujemna między zmienną wynikową produkcją energii elektrycznej (EP) a temperatura i próżnia spalin.

Jednoczynnikowy model regresji liniowej

lm = smf.ols(formula = 'Energy_output ~ Temperature', data = df).fit()
lm.summary()

Jednoczynnikowy model regresji w oparciu o zakresy dostępne są najlepsze właściwości prognostyczne.

plt.figure()
plt.scatter(df.Temperature, df.Energy_output, c = 'grey')
plt.plot(df.Temperature, lm.params[0] + lm.params[1] * df.Temperature, c = 'r')
plt.xlabel('Temperature')
plt.ylabel('Energy_output')
plt.title("Linear Regression Plot")

Parametr r2 ujawnia niezwykle dobre właściwości predykcyjne modelu. Poniższy wykres obrazuje jak dobry jest wykonany przez nas model.

Wieloczynnikowy model regresji liniowej

lm = smf.ols(formula = 'Energy_output ~ Temperature + Exhaust_Vacuum + Relative_Humidity + Ambient_Pressure', data = df).fit()
print (lm.summary())

Model wieloczynnikowej regresji liniowej cechuje się doskonałymi zdolnościami predykcyjnymi. Dlatego jego wyniki wzbudzają niepokój.

 Analiza danych użytych do budowy modelu 
df.describe()

 

 Analiza rozkładu zmiennej wynikowej 
plt.rcParams['figure.figsize'] = (5, 4)
sns.distplot(df['Energy_output'])    

Wykres rozkładu prawdopodobieństwa wykazał istnienie dwóch ekstremów (wykres bimodalny).

 Analiza korelacji pomiędzy zmiennymi niezależnymi 
plt.rcParams['figure.figsize'] = (5, 4)
sns.heatmap (df.corr (), cmap="YlGnBu")

Jak pamiętamy jednym z warunków prawidłowego modelu regresji liniowej jest brak korelacji pomiędzy zmiennymi egzogenicznymi.

Widać wyraźnie że między zmiennymi opisującymi ‘Temperature" oraz "Exhaust_Vacuum" występują bardzo wysokie korelacje dodatnie.

Poniżej przedstawiłem inną formę prezentacji tej samej macierzy korelacji.

sns.heatmap (df.corr (), cmap="coolwarm", annot=True, cbar=False)

 

 Sprawdzamy czy pomiary są kompletne 
df.isnull().sum()

Graficzna analiza wpływu zmiennych niezależnych na zmienną wynikową

Aby zobaczyć jaki jest wpływ wszystkich zmiennych niezależnych na zmienną zależną dzielę zbiór zmiennych wynikowych na dwie części. Do tabeli danych zostaje dodana kolumna zawierająca dwa stany produkcji energii.

Ewa = ['małą moc', 'duża moc']

df['moc'] = pd.qcut(df['Energy_output'],2, labels=Ewa)
df.sample(2)

 

Tworzymy wykres zależności.

sns.pairplot(data=df[['Temperature' ,'Exhaust_Vacuum','Ambient_Pressure', 'Relative_Humidity', 'moc']], hue='moc', dropna=True, height=2)

 

Wykres zależności kolejny raz wykazał wysoką korelację wzorów między Temperaturą (T) i Próżnią spalin (V) .

sns.jointplot(x='Temperature', y='Exhaust_Vacuum', data=df)

W drugiej części tego artykułu przeprowadzony zostanie proces weryfikacji warunków podstawowych tworzenia liniowej regresji wielorakiej.

Artykuł Prognozowanie wyjściowej mocy elektrowni w cyklu kombinowanym przy użyciu modelu regresji liniowej (część 1) pochodzi z serwisu THE DATA SCIENCE LIBRARY.

]]>