def normalize(features):
**
features - (200, 3)
features.T - (3, 200)
We transpose the input matrix, swapping
cols and rows to make vector math easier
**
for feature in features.T:
fmean = np.mean(feature)
frange = np.amax(feature) - np.amin(feature)
#Vector Subtraction
feature -= fmean
#Vector Division
feature /= frange
return features
Matrix matematika. Davom etishdan oldin, asosiy chiziqli Algebra tushunchalarini va numpy kabi numpy funktsiyalarini tushunish muhimdir.
Bashorat qilish
Bizning oldindan funktsiyasi bizning joriy og'irliklari berilgan savdo taxmin chiqaradi ([Object window]) va kompaniya & # 8217; S TV, radio, va gazeta sarflash. Bizning model eng bizning iqtisodiy vazifasini kamaytirish vazn qadriyatlarni aniqlash uchun harakat qiladi.
Xarajatlar funktsiyasi
Endi biz model amalga qanday audit uchun xarajat vazifasini kerak. Matematik bir xil, uchun mx+b ifodani almashtirishdan tashqari. Hosila hisoblashlarni soddalashtirish uchun ifodani ham 2 ga bo'lamiz.
**
features:(200,3)
targets: (200,1)
weights:(3,1)
returns average squared error among predictions
**
N = len(targets)
predictions = predict(features, weights)
# Matrix math lets use do this without looping
sq_error = (predictions - targets)**2
# Return average squared error among predictions
return 1.0/(2*N) * sq_error.sum()
Gradient descent
Har bir og'irlik uchun xarajat funktsiyasi qiyalik tasvirlab qisman sanab chiqing bir vektor–yana zanjir qoida yordamida biz gradient hisoblash mumkin.
Va bu shunday! Ko'p o'zgaruvchili chiziqli regressiya.
Matritsalar bilan soddalashtirish
Yuqoridagi gradient tushish kodi ko'p takrorlanishga ega. Uni bir amallab yaxshilay olamizmi? Refactor uchun bir yo'l bizning xususiyatlari va og'irliklari orqali loop bo'lardi-bizning vazifasini beruvchi xususiyatlari har qanday qator band qilish. Biroq, yana bir yaxshi uslub bor: vektorli gradient tushishi.
Matematika
Biz yuqorida bir xil formula foydalanish, lekin o'rniga bir vaqtning o'zida bitta xususiyati faoliyat, biz bir vaqtning o'zida barcha xususiyatlari va og'irliklari bo'yicha operativ uchun matrix ayirish foydalaning. Xi shartlarni bitta xususiyatli matritsa X bilan almashtiramiz.
gradient= - X(maqsadlar−bashorati)
Code
X = [
[x1, x2, x3]
[x1, x2, x3]
.
.
.
[x1, x2, x3]
]
targets = [
[1],
[2],
[3]
]
def update_weights_vectorized(X, targets, weights, lr):
**
gradient = X.T * (predictions - targets) / N
X: (200, 3)
Targets: (200, 1)
Weights: (3, 1)
**
companies = len(X)
#1 - Get Predictions
predictions = predict(X, weights)
#2 - Calculate error/loss
error = targets - predictions
#3 Transpose features from (200, 3) to (3, 200)
# So we can multiply w the (200,1) error matrix.
# Returns a (3,1) matrix holding 3 partial derivatives --
# one for each feature -- representing the aggregate
# slope of the cost function across all observations
gradient = np.dot(-X.T, error)
#4 Take the average error derivative for each feature
gradient /= companies
#5 - Multiply the gradient by our learning rate
gradient *= lr
#6 - Subtract from our weights to minimize cost
weights -= gradient
return weights
Tarafkashlik muddati
Bizning poezd funktsiyasi oddiy chiziqli regressiya bilan bir xil, ammo biz ishlashdan oldin bitta yakuniy tweak qilamiz: bizning xususiyat matritsamizga noto'g'ri atama qo'shing.
Bizning misolimizda, agar kompaniyalar reklamani to'xtatsa, sotish nolga teng bo'lishi mumkin emas. Bu uchun iloji sabablari o'tgan reklama o'z ichiga olishi mumkin, mavjud mijozlar munosabatlar, chakana joylari, va salespeople. A qiyshiq muddatli bizga bu tayanch ishni qo'lga yordam beradi.
Kodlar
Quyida xossalar matritsamizga doimiy 1 ni qo'shamiz. Bu qiymatni 1 ga o'rnatib, bizning tarafkashlik muddatimizni Sobitga aylantiradi.
tarafkashlik = np.(shakl=(len(xususiyatlari),1 bo'lganlar))
xususiyatlari = np.append(tarafkashlik, xususiyatlari, o'qi=1)
Baholash Model
Ta'lim darajasi bilan 1000 yineleme orqali bizning modelini tayyorlash so'ng .0005, biz nihoyat biz bashorat qilish uchun foydalanishingiz mumkin og'irliklari majmui yetib
Savdo=4.7 TV+3.5 Radio+.81 Gazeta+13.9
Do'stlaringiz bilan baham: |