Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.05 KB | None | 0 0
  1. # --------------------------------------------------------------------------
  2. # ------------ Metody Systemowe i Decyzyjne w Informatyce ----------------
  3. # --------------------------------------------------------------------------
  4. # Zadanie 3: Regresja logistyczna
  5. # autorzy: A. Gonczarek, J. Kaczmar, S. Zareba
  6. # 2017
  7. # --------------------------------------------------------------------------
  8.  
  9. import numpy as np
  10.  
  11.  
  12. def sigmoid(x):
  13. """
  14. :param x: wektor wejsciowych wartosci Nx1
  15. :return: wektor wyjściowych wartości funkcji sigmoidalnej dla wejścia x, Nx1
  16. """
  17. return 1/(1+np.exp(-x))
  18.  
  19. def logistic_cost_function(w, x_train, y_train):
  20. """
  21. :param w: parametry modelu Mx1
  22. :param x_train: ciag treningowy - wejscia NxM
  23. :param y_train: ciag treningowy - wyjscia Nx1
  24. :return: funkcja zwraca krotke (val, grad), gdzie val oznacza wartosc funkcji logistycznej, a grad jej gradient po w
  25. """
  26. N = x_train.shape[0]
  27.  
  28. sigmoid_array = sigmoid(x_train @ w)
  29.  
  30. results = y_train * np.log(sigmoid_array) + (1 - y_train) * np.log(1 - sigmoid_array)
  31. grad = x_train.transpose() @ (sigmoid_array - y_train) / N
  32. val = (-1/N) * np.sum(results)
  33. return (val, grad)
  34.  
  35. def gradient_descent(obj_fun, w0, epochs, eta):
  36. """
  37. :param obj_fun: funkcja celu, ktora ma byc optymalizowana. Wywolanie val,grad = obj_fun(w).
  38. :param w0: punkt startowy Mx1
  39. :param epochs: liczba epok / iteracji algorytmu
  40. :param eta: krok uczenia
  41. :return: funkcja wykonuje optymalizacje metoda gradientu prostego dla funkcji obj_fun. Zwraca krotke (w,func_values),
  42. gdzie w oznacza znaleziony optymalny punkt w, a func_valus jest wektorem wartosci funkcji [epochs x 1] we wszystkich krokach algorytmu
  43. """
  44.  
  45. func_values = []
  46. w = w0
  47.  
  48. _, grad = obj_fun(w)
  49.  
  50. for _ in range(epochs):
  51. w = w - eta * grad
  52. val, grad = obj_fun(w)
  53. func_values.append(val)
  54. return w, np.reshape(np.array(func_values), (epochs, 1))
  55.  
  56.  
  57. def stochastic_gradient_descent(obj_fun, x_train, y_train, w0, epochs, eta, mini_batch):
  58. """
  59. :param obj_fun: funkcja celu, ktora ma byc optymalizowana. Wywolanie val,grad = obj_fun(w,x,y), gdzie x,y oznaczaja podane
  60. podzbiory zbioru treningowego (mini-batche)
  61. :param x_train: dane treningowe wejsciowe NxM
  62. :param y_train: dane treningowe wyjsciowe Nx1
  63. :param w0: punkt startowy Mx1
  64. :param epochs: liczba epok
  65. :param eta: krok uczenia
  66. :param mini_batch: wielkosc mini-batcha
  67. :return: funkcja wykonuje optymalizacje metoda stochastycznego gradientu prostego dla funkcji obj_fun. Zwraca krotke (w,func_values),
  68. gdzie w oznacza znaleziony optymalny punkt w, a func_values jest wektorem wartosci funkcji [epochs x 1] we wszystkich krokach algorytmu. Wartosci
  69. funkcji do func_values sa wyliczane dla calego zbioru treningowego!
  70. """
  71. pass
  72.  
  73. def regularized_logistic_cost_function(w, x_train, y_train, regularization_lambda):
  74. """
  75. :param w: parametry modelu Mx1
  76. :param x_train: ciag treningowy - wejscia NxM
  77. :param y_train: ciag treningowy - wyjscia Nx1
  78. :param regularization_lambda: parametr regularyzacji
  79. :return: funkcja zwraca krotke (val, grad), gdzie val oznacza wartosc funkcji logistycznej z regularyzacja l2,
  80. a grad jej gradient po w
  81. """
  82. pass
  83.  
  84. def prediction(x, w, theta):
  85. """
  86. :param x: macierz obserwacji NxM
  87. :param w: wektor parametrow modelu Mx1
  88. :param theta: prog klasyfikacji z przedzialu [0,1]
  89. :return: funkcja wylicza wektor y o wymiarach Nx1. Wektor zawiera wartosci etykiet ze zbioru {0,1} dla obserwacji z x
  90. bazujac na modelu z parametrami w oraz progu klasyfikacji theta
  91. """
  92. pass
  93.  
  94. def f_measure(y_true, y_pred):
  95. """
  96. :param y_true: wektor rzeczywistych etykiet Nx1
  97. :param y_pred: wektor etykiet przewidzianych przed model Nx1
  98. :return: funkcja wylicza wartosc miary F
  99. """
  100. pass
  101.  
  102. def model_selection(x_train, y_train, x_val, y_val, w0, epochs, eta, mini_batch, lambdas, thetas):
  103. """
  104. :param x_train: ciag treningowy wejsciowy NxM
  105. :param y_train: ciag treningowy wyjsciowy Nx1
  106. :param x_val: ciag walidacyjny wejsciowy Nval x M
  107. :param y_val: ciag walidacyjny wyjsciowy Nval x 1
  108. :param w0: wektor poczatkowych wartosci parametrow
  109. :param epochs: liczba epok dla SGD
  110. :param eta: krok uczenia
  111. :param mini_batch: wielkosc mini batcha
  112. :param lambdas: lista wartosci parametru regularyzacji lambda, ktore maja byc sprawdzone
  113. :param thetas: lista wartosci progow klasyfikacji theta, ktore maja byc sprawdzone
  114. :return: funckja wykonuje selekcje modelu. Zwraca krotke (regularization_lambda, theta, w, F), gdzie regularization_lambda
  115. to najlpszy parametr regularyzacji, theta to najlepszy prog klasyfikacji, a w to najlepszy wektor parametrow modelu.
  116. Dodatkowo funkcja zwraca macierz F, ktora zawiera wartosci miary F dla wszystkich par (lambda, theta). Do uczenia nalezy
  117. korzystac z algorytmu SGD oraz kryterium uczenia z regularyzacja l2.
  118. """
  119. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement