Learn practical skills, build real-world projects, and advance your career
Created 3 years ago
####################
## load libraries ##
####################
import numpy as np
import pandas as pd
np.random.seed(123456789)
from sklearn.tree import DecisionTreeRegressor
from sklearn.tree import DecisionTreeClassifier
############################
## Toy Dataset Simulation ##
############################
def simulate_df(n=100, seed=123456, binary_flag=False):
np.random.seed(seed)
## specify dataframe
df = pd.DataFrame()
## specify variables L1 through L6
L1_split = 0.52
L2_split = 0.23
L3_split = 0.38
df['L1'] = np.random.choice([0, 1], size=n, replace=True, p=[L1_split, (1-L1_split)])
df['L2'] = np.random.choice([0, 1], size=n, replace=True, p=[L2_split, (1-L2_split)])
df['L3'] = np.random.choice([0, 1], size=n, replace=True, p=[L3_split, (1-L3_split)])
df['L4'] = np.random.normal(0, 1, df.shape[0])
df['L5'] = np.random.normal(0, 0.75, df.shape[0])
df['L6'] = np.random.normal(0, 2, df.shape[0])
theta_0 = 5.5
theta_1 = 1.28
theta_2 = 0.42
theta_3 = 2.32
theta_4 = -3.15
theta_5 = 3.12
theta_6 = -4.29
theta_7 = -1.23
theta_8 = -10.18
theta_9 = 2.21
theta_10 = 10.3
if(binary_flag):
Z = theta_0 + (theta_1*df['L1']) + (theta_2*df['L2']) + (theta_3*df['L3']) + (theta_4*df['L4']) + (theta_5*df['L5']) + (theta_6*df['L6']) + (theta_7*df['L2']*df['L4']) + (theta_8*df['L3']*df['L6']) + (theta_9*df['L5']*df['L5']) + (theta_10*np.sin(df['L5']))
p = 1 / (1 + np.exp(-Z))
df['Y'] = np.random.binomial(1, p)
df.loc[df['Y']==0, 'Y'] = -1
else:
df['Y'] = theta_0 + (theta_1*df['L1']) + (theta_2*df['L2']) + (theta_3*df['L3']) + (theta_4*df['L4']) + (theta_5*df['L5']) + (theta_6*df['L6']) + (theta_7*df['L2']*df['L4']) + (theta_8*df['L3']*df['L6']) + (theta_9*df['L5']*df['L5']) + (theta_10*np.sin(df['L5'])) + np.random.normal(0, 0.1, df.shape[0])
return(df)
###############################################
## Gradient Boosting with Continuous Outcome ##
###############################################
## simulate the dataset with continuous outcome Y
df = simulate_df(n=1000, seed=123456)
df['Y_original'] = df['Y']
## fit Gradient Boosting Model with depth-3 Regression Trees as Weak Learners
## continue fitting model until loss function < 1
alpha = 100000
current_loss = sum((df['Y'])**2)
while(current_loss > 1):
model = DecisionTreeRegressor(random_state=0, max_depth=3)
model.fit(df[['L1', 'L2', 'L3','L4', 'L5', 'L6']], df['Y'])
df['Y_hat'] = model.predict(df[['L1', 'L2', 'L3','L4', 'L5', 'L6']])
df['Y_hat_squared'] = df['Y_hat']**2
df['Y_hat_scaled'] = np.sqrt(df['Y_hat_squared'] / df['Y_hat_squared'].sum()) * np.sign(df['Y_hat'])
loss_not_lowered_flag = True
while(loss_not_lowered_flag):
new_loss = sum((df['Y'] - (alpha*df['Y_hat_scaled']))**2)
if(new_loss < current_loss):
loss_not_lowered_flag = False
current_loss = new_loss
print('Current Loss: ' + str(current_loss))
df['Y'] = df['Y'] - (alpha*df['Y_hat_scaled'])
else:
alpha = 0.99*alpha
del model
print('model converged')
Current Loss: 710652.9617096438
Current Loss: 704697.9593626335
Current Loss: 687852.7483979535
Current Loss: 681537.2980095611
Current Loss: 665478.7445945848
Current Loss: 659586.5364438506
Current Loss: 640014.5760520245
Current Loss: 638497.2551319165
Current Loss: 618245.6441627132
Current Loss: 618203.3564164565
Current Loss: 616505.1593726956
Current Loss: 598494.8103541064
Current Loss: 587837.59235525
Current Loss: 579409.3972249589
Current Loss: 574747.8100380445
Current Loss: 561192.49506229
Current Loss: 543560.0029280054
Current Loss: 543207.4725473339
Current Loss: 536458.6003377549
Current Loss: 526373.448554167
Current Loss: 506577.88892479986
Current Loss: 493605.0976276407
Current Loss: 479834.35924008564
Current Loss: 478361.1843650935
Current Loss: 464437.1331300254
Current Loss: 463945.9471018534
Current Loss: 453269.89872302505
Current Loss: 449970.73316805396
Current Loss: 446826.9311030527
Current Loss: 436211.3148086326
Current Loss: 436021.4632674543
Current Loss: 423511.6916293493
Current Loss: 411058.68566782656
Current Loss: 410399.2462939522
Current Loss: 409161.5796391511
Current Loss: 398231.46125373326
Current Loss: 394070.8494466457
Current Loss: 386273.19315253134
Current Loss: 382645.0385364533
Current Loss: 373851.2621279127
Current Loss: 370918.2526136399
Current Loss: 365538.64709001774
Current Loss: 355426.54952580825
Current Loss: 353083.71098980115
Current Loss: 352337.3868750716
Current Loss: 342215.16077205515
Current Loss: 340771.34818047605
Current Loss: 331529.5292991767
Current Loss: 327673.2149673328
Current Loss: 320907.0485950174
Current Loss: 314874.15108079
Current Loss: 313616.11980521306
Current Loss: 313531.8868977779
Current Loss: 311651.2943574407
Current Loss: 310433.5649730555
Current Loss: 310222.6002992387
Current Loss: 306928.7658299215
Current Loss: 301386.71440590854
Current Loss: 298308.7521602121
Current Loss: 293059.2049437755
Current Loss: 292466.5744830984
Current Loss: 284608.24038666394
Current Loss: 277469.1553077301
Current Loss: 276542.9267533329
Current Loss: 269425.6800820965
Current Loss: 268612.08205815696
Current Loss: 261958.92358206146
Current Loss: 260480.8953893196
Current Loss: 256816.60963684093
Current Loss: 252983.37924431177
Current Loss: 247979.06884418655
Current Loss: 245338.6618156132
Current Loss: 240078.28532187786
Current Loss: 237414.25394981133
Current Loss: 232659.5911717951
Current Loss: 230423.4866053004
Current Loss: 228302.78215420188
Current Loss: 224274.45731226815
Current Loss: 222165.40571310875
Current Loss: 218033.36191215253
Current Loss: 215639.49412421364
Current Loss: 211328.58788784273
Current Loss: 209125.54177934228
Current Loss: 205657.31868664
Current Loss: 203698.77959883076
Current Loss: 200848.22148443872
Current Loss: 197525.117542555
Current Loss: 195061.11691341407
Current Loss: 192058.12374388202
Current Loss: 189864.90186620178
Current Loss: 187078.0263544001
Current Loss: 184777.60818684095
Current Loss: 181773.61900820473
Current Loss: 179336.9559763196
Current Loss: 177216.2947504236
Current Loss: 175092.7326326893
Current Loss: 174797.27449985978
Current Loss: 174679.19557337652
Current Loss: 171480.42329184682
Current Loss: 168657.6937426494
Current Loss: 167254.63146783775
Current Loss: 164680.32777834227
Current Loss: 163216.798917454
Current Loss: 162748.92105322247
Current Loss: 162377.09715612113
Current Loss: 158955.1413815093
Current Loss: 158319.56336072035
Current Loss: 155422.98682489424
Current Loss: 154105.15968249153
Current Loss: 151749.4090346368
Current Loss: 150827.50374134025
Current Loss: 148514.55484743096
Current Loss: 147642.9292573004
Current Loss: 145407.3063518315
Current Loss: 144583.70158011725
Current Loss: 142422.6325978036
Current Loss: 141644.88429433925
Current Loss: 138850.96813634154
Current Loss: 138557.22249771372
Current Loss: 134319.70139431165
Current Loss: 133310.9262369936
Current Loss: 131012.70292141888
Current Loss: 129557.36628831655
Current Loss: 127168.47135486225
Current Loss: 126093.0730979048
Current Loss: 123656.42984533444
Current Loss: 122577.0735760991
Current Loss: 120371.78847452092
Current Loss: 115098.3553178191
Current Loss: 114381.94397602012
Current Loss: 113337.22575410122
Current Loss: 111842.33098848654
Current Loss: 110014.24215881876
Current Loss: 107898.36054707285
Current Loss: 107101.28315505602
Current Loss: 105463.20985496594
Current Loss: 104210.0977287725
Current Loss: 102461.82611536943
Current Loss: 101428.06074067205
Current Loss: 100438.94616654358
Current Loss: 99343.58130976882
Current Loss: 99306.81865181375
Current Loss: 99044.12136647818
Current Loss: 98963.69346985182
Current Loss: 98519.28898989882
Current Loss: 96934.27648627457
Current Loss: 96502.64209414904
Current Loss: 94792.03530764075
Current Loss: 94297.38982154179
Current Loss: 94282.10461872505
Current Loss: 94208.11940557159
Current Loss: 92576.95110354449
Current Loss: 92205.50603737839
Current Loss: 92172.29090058841
Current Loss: 91900.4853233818
Current Loss: 91605.25643975171
Current Loss: 91504.66354720811
Current Loss: 91409.70467952869
Current Loss: 91357.71622669604
Current Loss: 91318.25092279301
Current Loss: 91265.76367777243
Current Loss: 90942.42559062898
Current Loss: 89345.90332492685
Current Loss: 88885.31830921283
Current Loss: 87261.30019163976
Current Loss: 87020.92575410476
Current Loss: 85633.9399970391
Current Loss: 85351.62050226197
Current Loss: 84142.86736871359
Current Loss: 83866.6765259523
Current Loss: 82692.01493686068
Current Loss: 82179.6383049486
Current Loss: 81150.47153545036
Current Loss: 80550.11252766372
Current Loss: 79700.81038180907
Current Loss: 79267.13333679232
Current Loss: 78071.34105489578
Current Loss: 77480.91764109393
Current Loss: 76543.97316741994
Current Loss: 75646.69140202974
Current Loss: 72646.0811207586
Current Loss: 71887.84071169721
Current Loss: 71520.41567837253
Current Loss: 70521.13365457591
Current Loss: 69673.38201552024
Current Loss: 69660.10907043757
Current Loss: 69605.0659051819
Current Loss: 68641.80660152895
Current Loss: 68578.17142153681
Current Loss: 68372.26760187693
Current Loss: 68189.01619172284
Current Loss: 67722.8914887289
Current Loss: 67568.4834093282
Current Loss: 67252.45350136021
Current Loss: 67162.78141627622
Current Loss: 64312.691048224566
Current Loss: 63651.70921901028
Current Loss: 63129.86460157968
Current Loss: 62518.1381064331
Current Loss: 62029.72397733654
Current Loss: 61414.68342476339
Current Loss: 61029.43516236695
Current Loss: 59294.44157865299
Current Loss: 59222.3559767924
Current Loss: 58940.34655397417
Current Loss: 58892.2277889231
Current Loss: 56773.55514965262
Current Loss: 55996.12860791805
Current Loss: 55378.40838071994
Current Loss: 54765.945374877774
Current Loss: 54133.953500139876
Current Loss: 53667.60229443321
Current Loss: 53295.077723435235
Current Loss: 52581.3704856129
Current Loss: 52179.52853536984
Current Loss: 51658.84748925111
Current Loss: 51401.67201693491
Current Loss: 51148.17202376724
Current Loss: 51125.21043390123
Current Loss: 50497.57997691237
Current Loss: 50377.53129592726
Current Loss: 50177.041791175325
Current Loss: 49568.090029949104
Current Loss: 49248.530396047354
Current Loss: 49001.083150601065
Current Loss: 48877.022265449705
Current Loss: 48517.308012651534
Current Loss: 48282.32415267401
Current Loss: 47828.83666332649
Current Loss: 47712.86745662138
Current Loss: 47202.33775925983
Current Loss: 46882.108732536086
Current Loss: 46669.59131369792
Current Loss: 46260.12566247381
Current Loss: 45776.58492199046
Current Loss: 45341.277105797824
Current Loss: 44964.079463823764
Current Loss: 44631.51287676693
Current Loss: 44488.337234159735
Current Loss: 44311.42904541342
Current Loss: 44110.26134637644
Current Loss: 43657.07444237673
Current Loss: 43240.37528840854
Current Loss: 42915.04760988576
Current Loss: 42764.34679305476
Current Loss: 42463.39803657081
Current Loss: 42289.95225066046
Current Loss: 42159.26429845132
Current Loss: 41463.603286011436
Current Loss: 41081.97071568816
Current Loss: 40699.61180219203
Current Loss: 40304.07260598593
Current Loss: 40109.93616185003
Current Loss: 40052.72514000551
Current Loss: 39261.60159030113
Current Loss: 38877.911873232086
Current Loss: 38608.85624434981
Current Loss: 38488.15143792985
Current Loss: 37986.52095152478
Current Loss: 37746.46388044377
Current Loss: 37499.45542711287
Current Loss: 37392.00777941739
Current Loss: 37065.38688117135
Current Loss: 36973.68174730719
Current Loss: 36885.79764109028
Current Loss: 36613.47205657739
Current Loss: 36273.780618417055
Current Loss: 35592.689029032095
Current Loss: 35434.214285905604
Current Loss: 35028.8251461701
Current Loss: 34883.62111873454
Current Loss: 34636.77709174025
Current Loss: 34424.97350993459
Current Loss: 33582.415921678315
Current Loss: 33483.847406923465
Current Loss: 33474.053710730936
Current Loss: 32444.304678982004
Current Loss: 32211.06997158518
Current Loss: 32188.34952098816
Current Loss: 31874.02188830543
Current Loss: 31536.536546463736
Current Loss: 31282.083505735696
Current Loss: 31104.52653276269
Current Loss: 30841.35230974275
Current Loss: 30648.834421287087
Current Loss: 30577.39050725543
Current Loss: 30276.08752336593
Current Loss: 30187.735729412958
Current Loss: 29972.717394429645
Current Loss: 29793.340421400233
Current Loss: 29638.53875756256
Current Loss: 29510.269755945115
Current Loss: 29379.547656950876
Current Loss: 29226.9979969405
Current Loss: 29207.379156794406
Current Loss: 28989.572158810457
Current Loss: 28978.054291158565
Current Loss: 28766.830405711382
Current Loss: 28751.72197492873
Current Loss: 28552.825122293332
Current Loss: 28539.860716628336
Current Loss: 28347.267987849664
Current Loss: 28330.878334836703
Current Loss: 28149.771263709412
Current Loss: 28135.46565413194
Current Loss: 27960.07108076937
Current Loss: 27840.093386617806
Current Loss: 27689.936156891174
Current Loss: 27597.10940668674
Current Loss: 27359.00738808418
Current Loss: 27353.17355162869
Current Loss: 26953.949435115544
Current Loss: 26934.816764300842
Current Loss: 26922.279089390297
Current Loss: 26763.57479292369
Current Loss: 26746.083586104985
Current Loss: 26611.10703891154
Current Loss: 26457.106030819785
Current Loss: 26388.59260773957
Current Loss: 26250.99463574655
Current Loss: 26227.16225732734
Current Loss: 26090.565353495305
Current Loss: 26045.791645705533
Current Loss: 25952.41288010027
Current Loss: 25850.985172171993
Current Loss: 25771.019075935084
Current Loss: 25662.831863547966
Current Loss: 25436.924650465407
Current Loss: 25434.51472930414
Current Loss: 25277.194178270656
Current Loss: 25210.11017439387
Current Loss: 24989.349135486784
Current Loss: 24800.908168859456
Current Loss: 24762.812698266738
Current Loss: 24715.237364344037
Current Loss: 24680.4270853935
Current Loss: 24656.242677365193
Current Loss: 24646.236309319083
Current Loss: 24643.11151925269
Current Loss: 24508.6400627316
Current Loss: 24494.82022527766
Current Loss: 24463.638947491116
Current Loss: 24354.873268544532
Current Loss: 24331.429723456647
Current Loss: 24218.240756731117
Current Loss: 24115.120912447233
Current Loss: 24070.7581166162
Current Loss: 24054.51607348083
Current Loss: 24040.845693547784
Current Loss: 23955.582363011814
Current Loss: 23928.75616419123
Current Loss: 23805.548462326005
Current Loss: 23747.317672037883
Current Loss: 23665.743271413332
Current Loss: 22352.927226250165
Current Loss: 22348.056679482554
Current Loss: 20695.506631994078
Current Loss: 20659.06787671643
Current Loss: 20481.80666413086
Current Loss: 20467.064378678533
Current Loss: 20284.621462521038
Current Loss: 19624.747254300695
Current Loss: 19572.538723135087
Current Loss: 19141.506666481662
Current Loss: 18951.646972067076
Current Loss: 18424.61803041694
Current Loss: 18366.473520496398
Current Loss: 17736.356876899496
Current Loss: 17706.174817571715
Current Loss: 17227.188897283908
Current Loss: 16865.42270416752
Current Loss: 16810.439841116444
Current Loss: 16506.596288887667
Current Loss: 16356.263782615284
Current Loss: 16212.42688532882
Current Loss: 16197.41286141526
Current Loss: 15727.971459044355
Current Loss: 14787.315792399737
Current Loss: 14759.192694834399
Current Loss: 14179.167662125219
Current Loss: 14147.87247044769
Current Loss: 13400.540488267348
Current Loss: 13023.605467058951
Current Loss: 12870.465654882068
Current Loss: 12854.344187760586
Current Loss: 12424.127826184163
Current Loss: 12408.28892964266
Current Loss: 11942.034666442136
Current Loss: 11775.80673368242
Current Loss: 11765.392224843712
Current Loss: 11468.375260653236
Current Loss: 11366.113542270183
Current Loss: 11314.818525395367
Current Loss: 11050.520586118802
Current Loss: 11045.891915136277
Current Loss: 10781.551651313253
Current Loss: 10512.09576523857
Current Loss: 10490.220887459742
Current Loss: 10283.342588807076
Current Loss: 10194.11381289737
Current Loss: 9884.246356028643
Current Loss: 9816.736349174515
Current Loss: 9665.590324569053
Current Loss: 9531.280037880344
Current Loss: 9325.581542054751
Current Loss: 9316.5816722867
Current Loss: 9105.728428706747
Current Loss: 8982.780644960045
Current Loss: 8978.794020576532
Current Loss: 8852.41786105943
Current Loss: 8676.07532326811
Current Loss: 8477.910523606186
Current Loss: 8357.290210728817
Current Loss: 8051.078781420788
Current Loss: 8041.100419235026
Current Loss: 8037.488754879527
Current Loss: 7918.075818838193
Current Loss: 7808.243424021924
Current Loss: 7598.118703790375
Current Loss: 7587.721566887897
Current Loss: 7447.029028803668
Current Loss: 7420.603579306639
Current Loss: 7418.47603922773
Current Loss: 7245.012278047554
Current Loss: 7222.890887448784
Current Loss: 6992.39454102284
Current Loss: 6924.093974143406
Current Loss: 6742.994456886053
Current Loss: 6707.489335856518
Current Loss: 6522.931348433151
Current Loss: 6398.929771941146
Current Loss: 6392.38451907996
Current Loss: 6280.182250622129
Current Loss: 6272.733119545923
Current Loss: 6119.164765618919
Current Loss: 6087.94622595069
Current Loss: 6013.3097013050565
Current Loss: 5897.68197516862
Current Loss: 5879.525747866782
Current Loss: 5807.6090804449395
Current Loss: 5723.149982595872
Current Loss: 5675.256674153059
Current Loss: 5457.518275283154
Current Loss: 5436.213682689827
Current Loss: 5311.249297748583
Current Loss: 5240.6926752560685
Current Loss: 5240.594799920712
Current Loss: 5124.940027797096
Current Loss: 5114.747318529496
Current Loss: 5078.439626033915
Current Loss: 5031.220314235313
Current Loss: 5025.625586095472
Current Loss: 4959.87740078495
Current Loss: 4946.936603811562
Current Loss: 4841.272963908489
Current Loss: 4717.160110698896
Current Loss: 4713.643724501477
Current Loss: 4705.630903214463
Current Loss: 4589.178496885968
Current Loss: 4529.7333815782085
Current Loss: 4523.610513891812
Current Loss: 4458.007716696065
Current Loss: 4327.340975478822
Current Loss: 4306.286745502517
Current Loss: 4196.47426137806
Current Loss: 4190.808203183805
Current Loss: 4029.633581183578
Current Loss: 3948.646088488708
Current Loss: 3897.964862984119
Current Loss: 3847.7955959656792
Current Loss: 3686.241285154368
Current Loss: 3684.862875601965
Current Loss: 3564.3549031475936
Current Loss: 3564.3269779035354
Current Loss: 3531.0434424553832
Current Loss: 3375.905973837736
Current Loss: 3374.7475347612417
Current Loss: 3301.0551188285367
Current Loss: 3151.1872989944277
Current Loss: 3071.3511761460845
Current Loss: 2929.425270885266
Current Loss: 2820.1683130123824
Current Loss: 2768.3679775519595
Current Loss: 2695.30325978556
Current Loss: 2693.3887114769573
Current Loss: 2692.308782236067
Current Loss: 2619.8723400465606
Current Loss: 2618.0416662972325
Current Loss: 2615.55749958914
Current Loss: 2588.267348658982
Current Loss: 2587.5592764203648
Current Loss: 2553.7823991148466
Current Loss: 2481.9929480389906
Current Loss: 2437.994543796508
Current Loss: 2289.2719497063213
Current Loss: 2219.810518872739
Current Loss: 2156.8440789658207
Current Loss: 2079.039146924106
Current Loss: 2046.973725839315
Current Loss: 2046.7259230608536
Current Loss: 2022.673509934151
Current Loss: 2012.1913599885745
Current Loss: 1962.9911622465113
Current Loss: 1934.7535213410217
Current Loss: 1910.6401640289403
Current Loss: 1909.9427011747816
Current Loss: 1865.1286186340565
Current Loss: 1816.3562029726618
Current Loss: 1765.4506239884442
Current Loss: 1765.1699362900115
Current Loss: 1756.0994214248485
Current Loss: 1749.7759551331446
Current Loss: 1735.0460095850685
Current Loss: 1667.3816157667245
Current Loss: 1661.5515224601713
Current Loss: 1635.6762900752726
Current Loss: 1570.4350904415376
Current Loss: 1529.8691876773264
Current Loss: 1529.4388826458517
Current Loss: 1505.9481106019884
Current Loss: 1478.1259499551793
Current Loss: 1433.2437316046758
Current Loss: 1397.03637116167
Current Loss: 1345.0853844159908
Current Loss: 1304.199870573367
Current Loss: 1279.292753736285
Current Loss: 1273.7979731600863
Current Loss: 1261.6860409375536
Current Loss: 1248.5340331561226
Current Loss: 1248.3420315592634
Current Loss: 1221.9482706336373
Current Loss: 1192.7073681416282
Current Loss: 1165.2619848354805
Current Loss: 1133.0029509182443
Current Loss: 1109.60340316444
Current Loss: 1078.5008830530182
Current Loss: 1034.2261244892404
Current Loss: 991.5185587272906
Current Loss: 971.5319987166922
Current Loss: 936.1937504235111
Current Loss: 935.8287002445354
Current Loss: 908.0926914241622
Current Loss: 890.0007223086859
Current Loss: 875.4080182510002
Current Loss: 875.1473875758797
Current Loss: 862.2151120386825
Current Loss: 861.9187834415728
Current Loss: 846.0317224109516
Current Loss: 830.4360781294096
Current Loss: 811.1718902752698
Current Loss: 795.0431537753853
Current Loss: 780.8245888048266
Current Loss: 763.323661082025
Current Loss: 736.5326487554436
Current Loss: 734.0988246381211
Current Loss: 702.4028892503886
Current Loss: 701.3515339670636
Current Loss: 701.1634781191071
Current Loss: 694.4217652014555
Current Loss: 691.8657951267226
Current Loss: 682.7614075280623
Current Loss: 671.5924989116075
Current Loss: 669.0691637400205
Current Loss: 648.7002254709896
Current Loss: 641.2230791145174
Current Loss: 621.1235092204985
Current Loss: 600.9957704077246
Current Loss: 597.2913172845314
Current Loss: 593.3311729603283
Current Loss: 570.9518521194597
Current Loss: 551.7980460767684
Current Loss: 551.6542750008251
Current Loss: 541.2681006778669
Current Loss: 527.951580816983
Current Loss: 506.4348832920625
Current Loss: 502.911973325232
Current Loss: 502.85201804626
Current Loss: 498.3249804813257
Current Loss: 498.2849584021003
Current Loss: 495.164672765411
Current Loss: 488.10104641941433
Current Loss: 474.99939443347756
Current Loss: 464.9367083986725
Current Loss: 462.21772747994356
Current Loss: 448.01306984319564
Current Loss: 440.4867767161743
Current Loss: 427.8509275132613
Current Loss: 422.01294019037164
Current Loss: 411.1246871097106
Current Loss: 394.51551975605446
Current Loss: 390.0730584192441
Current Loss: 382.695894438344
Current Loss: 378.54855284125387
Current Loss: 378.53026892680526
Current Loss: 377.8873530084653
Current Loss: 377.2496507142033
Current Loss: 367.52962036190473
Current Loss: 361.55376636684036
Current Loss: 355.6948698978786
Current Loss: 352.58318776597855
Current Loss: 348.1191035057811
Current Loss: 348.0972777505793
Current Loss: 341.93459195222766
Current Loss: 336.1549723308491
Current Loss: 330.8993122505042
Current Loss: 327.91653180087525
Current Loss: 325.49612823544913
Current Loss: 320.387396356707
Current Loss: 314.6081979067319
Current Loss: 306.21844815737734
Current Loss: 296.544304457479
Current Loss: 286.35856855770334
Current Loss: 282.07900998069823
Current Loss: 273.01409298590596
Current Loss: 268.11596911625657
Current Loss: 263.09512440188803
Current Loss: 254.91831109037847
Current Loss: 249.8688518046379
Current Loss: 245.2197279457596
Current Loss: 244.05713598522368
Current Loss: 237.85596717396197
Current Loss: 232.1929372871832
Current Loss: 228.77960471137325
Current Loss: 219.60690247080512
Current Loss: 215.06267246703507
Current Loss: 209.88387835173586
Current Loss: 207.43060576761502
Current Loss: 205.9027183121923
Current Loss: 199.86443030002724
Current Loss: 197.43353150588734
Current Loss: 195.0488434996821
Current Loss: 189.87958303373796
Current Loss: 183.98511991857623
Current Loss: 178.14290866248135
Current Loss: 173.0725898690068
Current Loss: 168.54825997385666
Current Loss: 167.16897571631947
Current Loss: 163.10587384783764
Current Loss: 160.7783058995924
Current Loss: 158.00542507277467
Current Loss: 153.9309763987201
Current Loss: 150.45338093687104
Current Loss: 146.1535836271811
Current Loss: 142.9433202669172
Current Loss: 140.61049189726748
Current Loss: 135.5948523021051
Current Loss: 133.6109571942535
Current Loss: 132.0250696104948
Current Loss: 130.15782513668867
Current Loss: 120.66625270067725
Current Loss: 114.84356531676669
Current Loss: 112.76629042428672
Current Loss: 109.98422007143493
Current Loss: 107.40871108901166
Current Loss: 103.50286571442214
Current Loss: 102.45687444828836
Current Loss: 98.47052388413566
Current Loss: 96.55178613669798
Current Loss: 95.66630107422789
Current Loss: 93.73802075275006
Current Loss: 91.30805760514455
Current Loss: 91.17824614987701
Current Loss: 89.05023244227381
Current Loss: 88.5534538914187
Current Loss: 87.34480517177946
Current Loss: 85.44187326490878
Current Loss: 82.02086597900649
Current Loss: 80.84469631039883
Current Loss: 78.77937964201644
Current Loss: 77.97837119623328
Current Loss: 74.57836276036292
Current Loss: 74.1720027475893
Current Loss: 73.78774284977268
Current Loss: 72.52539854153083
Current Loss: 71.19707622168409
Current Loss: 71.16862622513496
Current Loss: 70.76022189228024
Current Loss: 70.73939425281598
Current Loss: 69.53341903798038
Current Loss: 69.51251223864504
Current Loss: 67.75740040020109
Current Loss: 66.36238191859418
Current Loss: 65.92065248561826
Current Loss: 62.24277043347679
Current Loss: 61.701296881900255
Current Loss: 61.00865741038919
Current Loss: 60.96068760979572
Current Loss: 60.1681301533211
Current Loss: 58.91722740034971
Current Loss: 58.90937335590413
Current Loss: 56.47179207288355
Current Loss: 54.64061807673305
Current Loss: 53.423975954875566
Current Loss: 52.5373702177382
Current Loss: 51.61680704167216
Current Loss: 50.4790744645483
Current Loss: 49.47603439760036
Current Loss: 49.47541380680234
Current Loss: 49.44198741867127
Current Loss: 49.44084586343871
Current Loss: 47.96901609802367
Current Loss: 46.88905621991464
Current Loss: 45.84865453392557
Current Loss: 45.23127415711937
Current Loss: 44.398474660904306
Current Loss: 42.89403281314044
Current Loss: 42.72713493034893
Current Loss: 41.8569510664817
Current Loss: 40.22933244082126
Current Loss: 39.60228020147882
Current Loss: 38.925188509661304
Current Loss: 38.19985632514084
Current Loss: 37.966407044915975
Current Loss: 37.38727887474758
Current Loss: 36.5532034017721
Current Loss: 36.289514322677675
Current Loss: 35.38991533032069
Current Loss: 34.449540379292884
Current Loss: 33.749554995797986
Current Loss: 33.2482791159283
Current Loss: 32.89726726967225
Current Loss: 32.2053506441892
Current Loss: 31.551782105189183
Current Loss: 30.844049463431876
Current Loss: 30.18889265493777
Current Loss: 29.344888351945546
Current Loss: 29.341333577277403
Current Loss: 29.103530340504335
Current Loss: 29.017068194517705
Current Loss: 28.93882892267428
Current Loss: 27.532012406530217
Current Loss: 26.404503624496513
Current Loss: 26.174980949761025
Current Loss: 25.4158157858447
Current Loss: 24.666950469326014
Current Loss: 24.36737774403555
Current Loss: 23.67960096698769
Current Loss: 23.57683501497512
Current Loss: 22.806132169364638
Current Loss: 22.25839512430125
Current Loss: 21.902910311232624
Current Loss: 21.355943304391882
Current Loss: 20.555716145393273
Current Loss: 20.40780564703714
Current Loss: 20.21178881907813
Current Loss: 20.12033871042252
Current Loss: 20.002511554878904
Current Loss: 19.999835759102247
Current Loss: 19.231809240545687
Current Loss: 18.993625934350003
Current Loss: 18.328814907976323
Current Loss: 17.800445474950887
Current Loss: 17.17490865358689
Current Loss: 16.642888252792105
Current Loss: 16.34708621603156
Current Loss: 16.174616123282444
Current Loss: 15.788180590781002
Current Loss: 15.271712812340114
Current Loss: 14.974877793914638
Current Loss: 14.932024120401735
Current Loss: 14.39624502050964
Current Loss: 13.83847061859675
Current Loss: 13.571054673620809
Current Loss: 13.567602223899259
Current Loss: 13.540905091409092
Current Loss: 13.539817015428028
Current Loss: 13.379541110679128
Current Loss: 13.33322838774091
Current Loss: 13.110542161660867
Current Loss: 12.854377543290553
Current Loss: 12.446127087332913
Current Loss: 12.151429644149834
Current Loss: 11.719463882138589
Current Loss: 11.518914705634407
Current Loss: 11.332174928910357
Current Loss: 10.874827050184162
Current Loss: 10.620223002880172
Current Loss: 10.434660017640528
Current Loss: 10.150384697877746
Current Loss: 9.95223468589554
Current Loss: 9.639654725336003
Current Loss: 9.54450585368826
Current Loss: 9.242595847851026
Current Loss: 8.739404150139046
Current Loss: 8.651632960261676
Current Loss: 8.528697794937901
Current Loss: 8.273218679379855
Current Loss: 8.27085396303348
Current Loss: 8.267155146417789
Current Loss: 8.266291577839011
Current Loss: 8.263932111695956
Current Loss: 8.26111821397621
Current Loss: 8.26045601882067
Current Loss: 8.25773225240911
Current Loss: 8.257116690399375
Current Loss: 8.254479916637909
Current Loss: 8.253908741495652
Current Loss: 8.2513559371856
Current Loss: 8.250826999278903
Current Loss: 8.248355252294926
Current Loss: 8.247866494668138
Current Loss: 8.245235426163987
Current Loss: 8.245020078569338
Current Loss: 8.242381616579872
Current Loss: 8.242284711941187
Current Loss: 8.24215594319912
Current Loss: 8.239628350987497
Current Loss: 8.239444987393718
Current Loss: 8.2370760645657
Current Loss: 8.236709367119886
Current Loss: 8.194228834532975
Current Loss: 8.141858100569834
Current Loss: 7.945139908658383
Current Loss: 7.5749740893925255
Current Loss: 7.553219430945573
Current Loss: 7.363170008864563
Current Loss: 7.1464644024222395
Current Loss: 6.99384925714579
Current Loss: 6.836158204425765
Current Loss: 6.7031606378622905
Current Loss: 6.620879427302571
Current Loss: 6.507187318387684
Current Loss: 6.425745092540402
Current Loss: 6.26560561711109
Current Loss: 6.145804547708139
Current Loss: 6.120287805429225
Current Loss: 5.944613467583897
Current Loss: 5.731580061563935
Current Loss: 5.540359058724032
Current Loss: 5.3753315398235655
Current Loss: 5.145743665385163
Current Loss: 5.145445351284552
Current Loss: 5.1049612772408235
Current Loss: 5.029171902267406
Current Loss: 4.961575705660979
Current Loss: 4.917014943734417
Current Loss: 4.864067368107107
Current Loss: 4.757311365561574
Current Loss: 4.636817290074622
Current Loss: 4.458776748455182
Current Loss: 4.362662055137401
Current Loss: 4.226024324477231
Current Loss: 4.043098643761613
Current Loss: 3.905591723177313
Current Loss: 3.84333665330904
Current Loss: 3.7936280830220572
Current Loss: 3.7925868485849645
Current Loss: 3.731380046176046
Current Loss: 3.7020353162094684
Current Loss: 3.6781734700410027
Current Loss: 3.63120372450121
Current Loss: 3.5955590151429946
Current Loss: 3.574808745867717
Current Loss: 3.5393267564340194
Current Loss: 3.4552928292685476
Current Loss: 3.4265847887456165
Current Loss: 3.360532364248682
Current Loss: 3.289330462263612
Current Loss: 3.2067079922042403
Current Loss: 3.174301934403852
Current Loss: 2.9871383323188074
Current Loss: 2.8307391007440197
Current Loss: 2.7230145389477944
Current Loss: 2.7224763804039194
Current Loss: 2.636776636108417
Current Loss: 2.6361428375204987
Current Loss: 2.512926385507576
Current Loss: 2.5050730600544435
Current Loss: 2.4979497573443212
Current Loss: 2.4767480320349127
Current Loss: 2.436879435729868
Current Loss: 2.3892529985893147
Current Loss: 2.3229727791796426
Current Loss: 2.3086560014051125
Current Loss: 2.266522395369063
Current Loss: 2.1644264048849235
Current Loss: 2.1121344676938985
Current Loss: 2.069640124637442
Current Loss: 2.0548532825798085
Current Loss: 1.992564907972793
Current Loss: 1.9391686143334972
Current Loss: 1.893725983679576
Current Loss: 1.8935605254048928
Current Loss: 1.8496576371289397
Current Loss: 1.8456570777075358
Current Loss: 1.821604059006999
Current Loss: 1.7770137673274613
Current Loss: 1.7768891304833452
Current Loss: 1.7712069794811496
Current Loss: 1.7711717563368745
Current Loss: 1.7339210803263259
Current Loss: 1.7131746809881285
Current Loss: 1.6836097680408566
Current Loss: 1.6552191989657203
Current Loss: 1.625778443897072
Current Loss: 1.586969937395636
Current Loss: 1.5703543115505454
Current Loss: 1.5438035850540364
Current Loss: 1.5130050581075503
Current Loss: 1.509461660593528
Current Loss: 1.4792664380912728
Current Loss: 1.4654000092897848
Current Loss: 1.4291284308528824
Current Loss: 1.4239900078898395
Current Loss: 1.4234442319121843
Current Loss: 1.4160225849392982
Current Loss: 1.4111520576835257
Current Loss: 1.3939388605918381
Current Loss: 1.3938724940515708
Current Loss: 1.352131554203395
Current Loss: 1.3061782531872854
Current Loss: 1.2591291616385514
Current Loss: 1.2582348165582722
Current Loss: 1.2186396065661387
Current Loss: 1.1841485345001528
Current Loss: 1.1544718392550537
Current Loss: 1.1456436057659032
Current Loss: 1.1421317121133396
Current Loss: 1.1067962517178849
Current Loss: 1.1022666141925264
Current Loss: 1.086818982046385
Current Loss: 1.0605169774086962
Current Loss: 1.0387436691152685
Current Loss: 1.0017150421510148
Current Loss: 0.9935744613775223
model converged
######################################################
## AdaBoost with Binary Categorical Outcome {-1, 1} ##
######################################################
## simulate the dataset with continuous outcome Y
df = simulate_df(n=1000, seed=123456, binary_flag=True)
df = df.rename(columns={'Y':'Y_original'})
df['w'] = df.shape[0]*[1/df.shape[0]]
df['Y'] = 0
## fit AdaBoost Model with depth-2 Decision Trees as Weak Learners
## continue fitting model until all n-1000 observations predicted correctly
count = True
while(count):
model = DecisionTreeClassifier(random_state=0, max_depth=2)
model.fit(df[['L1', 'L2', 'L3','L4', 'L5', 'L6']], df['Y_original'], sample_weight=df['w'])
df['Y_hat'] = model.predict(df[['L1', 'L2', 'L3','L4', 'L5', 'L6']])
df.loc[df['Y_hat']==df['Y_original'], 'w'] = 0
epsilon = sum(df['w'])
alpha = 0.5*(np.log((1-epsilon)/epsilon))
df['Y'] = df['Y'] + (alpha*df['Y_hat'])
current_loss = sum(np.exp(-df['Y_original']*df['Y']))
psi = np.exp(-df['Y_original']*df['Y'])
df['w'] = psi / current_loss
print('Current Loss: ' + str(current_loss))
df['Y_final'] = 1
df.loc[df['Y']<0, 'Y_final'] = -1
if(df.loc[df['Y_original']!=df['Y_final'], :].shape[0] == 0):
print('results converged, all datapoints correctly classified')
break
Current Loss: 659.1631057636724
Current Loss: 487.7655215433816
Current Loss: 385.43015602209204
Current Loss: 309.6683993321115
Current Loss: 255.5542037237089
Current Loss: 218.3147055733867
Current Loss: 198.66608204748306
Current Loss: 171.9175494217112
Current Loss: 151.6839290289567
Current Loss: 138.20003547506386
Current Loss: 131.45019790958239
Current Loss: 126.25445993343435
Current Loss: 122.78411083637391
Current Loss: 116.59354372531038
Current Loss: 108.28050371146264
Current Loss: 104.39126436345835
Current Loss: 101.02340988337336
Current Loss: 97.78481006804952
Current Loss: 95.31392819906642
Current Loss: 92.54905329566287
Current Loss: 87.00935770165633
Current Loss: 85.1447829237424
Current Loss: 83.34377736632854
Current Loss: 81.53898117389382
Current Loss: 77.92521488496628
Current Loss: 74.76450253594427
Current Loss: 71.78607286865689
Current Loss: 69.08618323068401
Current Loss: 67.14548022606846
Current Loss: 66.48569498215035
Current Loss: 65.60058832576867
Current Loss: 64.95562892117327
Current Loss: 64.08074748427364
Current Loss: 62.77251964431149
Current Loss: 61.57671989700741
Current Loss: 59.12390384549784
Current Loss: 57.80059735171778
Current Loss: 57.62259230392607
Current Loss: 57.1103099472552
Current Loss: 56.15816964029093
Current Loss: 55.207937027300154
Current Loss: 54.14920809338544
Current Loss: 53.40921740639783
Current Loss: 52.98460104214518
Current Loss: 52.27588072610328
Current Loss: 49.272173927586195
Current Loss: 48.406881424655296
Current Loss: 45.93216912152811
Current Loss: 43.89897455643779
Current Loss: 43.08978102981988
Current Loss: 41.174522006536826
Current Loss: 40.280322394127374
Current Loss: 39.58737141336605
Current Loss: 38.20825630397851
Current Loss: 37.39401636886239
Current Loss: 36.27185691815006
Current Loss: 35.38640212337221
Current Loss: 34.63786318569132
Current Loss: 33.62679434610299
Current Loss: 33.32168552500471
Current Loss: 32.96533992374048
Current Loss: 32.11242464096666
Current Loss: 31.801411315169776
Current Loss: 31.52772166810667
Current Loss: 31.31577639100214
Current Loss: 30.925649752994886
Current Loss: 30.386026711646455
Current Loss: 29.799764750765025
Current Loss: 29.03615127915239
Current Loss: 28.45697370120284
Current Loss: 28.22475882624438
Current Loss: 27.537102971746172
Current Loss: 27.169628161485925
Current Loss: 26.82361042345563
Current Loss: 26.70727773869104
Current Loss: 26.512481322812363
Current Loss: 26.358216899115927
Current Loss: 26.18992518523894
Current Loss: 25.713075439020674
Current Loss: 25.13403930990786
Current Loss: 24.09468629286915
Current Loss: 23.304834376269696
results converged, all datapoints correctly classified
pd.crosstab(df['Y_original'], df['Y_final'])