The non-profit foundation ‘Alphabet Soup’ wanted a tool to help it select the applicants for funding with the best chance of success in their ventures. With use of machine learning and neural network, the features provided in the dataset were used to create a binary classifier that can predict whether applicants will be successful if funded by Alphabet Soup.
From the Alphabet Soup’s business team, the CSV contained more than 34,000 organizations that received funding from Alphabet Soup over the years. Within the dataset are columns that captures the metadata about each organization, which are encompassed in the target and features variables, outlined below:
EIN
andNAME
— Identification columnsAPPLICATION_TYPE
— Alphabet Soup application typeAFFILIATION
— Affiliated sector of industryCLASSIFICATION
— Government organization classificationUSE_CASE
— Use case for fundingORGANIZATION
— Organization typeSTATUS
— Active statusINCOME_AMT
— Income classificationSPECIAL_CONSIDERATIONS
— Special consideration for applicationASK_AMT
— Funding amount requestedIS_SUCCESSFUL
— Was the money used effectively
Please see the file neural_network_model_report.md
for full details regarding the performance of the deep learning models created for Alphabet Soup.
- Removed data:
EIN
,NAME
- Both data were removed in the First Model as they are neither targets nor features; however,
NAME
was added back into the Optimization Models for binning purposes.
- Both data were removed in the First Model as they are neither targets nor features; however,
- Created cut-off points to bin ‘rare’ categorical variables together in a new value,
Other
for bothCLASSIFICATION
andAPPLICATION_TYPE
- Converted categorical data to numeric using
pd.get_dummies
- The target variable for the model:
IS_SUCCESSFUL
- The feature variables for the model:
APPLICATION_TYPE
,AFFILIATION
,CLASSIFICATION
,USE_CASE
,ORGANIZATION
,STATUS
,INCOME_AMT
,SPECIAL_CONSIDERATIONS
,ASK_AMT
- The target variable for the model:
- Split the preprocessed data into features and target arrays, followed by splitting in to training and testing datasets
First Model:
- There were two hidden layers with 80 and 30 neurons. The hidden layer activation functions of ‘ReLU’ was used as this is the first go-to for a model. ReLU is faster to compute and does not activate all the neurons at the same time.
- The output node was 1 as this is a binary classifier model with only one output; was the funding application successful, yes or no. The activation function that was used was ‘Sigmoid’ as this model output is a binary classification between 0 and 1.
- The model prediction accuracy was below the threshold of 75%. Therefore, further optimization is required.
Optimization Models
- As noted above, in the preprocessing stage,
NAME
was added back for binning purposes. - An automated model optimizer was used to obtain the most accurate model possible via a Keras Sequential Model.
- Hyperparameter options were provided and a search for the best hyperparameters was performed.
- Ultimately, the best optimized model was Optimization 3, which achieved a model accuracy of 79.78%, exceeding the 75% goal.
- Of note, all Optimization Models exceeded the goal of 75%.
- Dataset provided by edX UofT Data Analytics, which had been generated by Trilogy Education Services, LLC. This is intended for educational purposes only.