Also called Perfect Decision Tree.
72 karma · joined January 8, 2019
Also called Perfect Decision Tree.
Instead of PCA on all features, they could subsample 10 random features to partition, and bag the results of multiple runs. Basically, Totally Random Trees with an arbitrarily handicapped Random Subspaces method. Scales well, can beat Logistic Regression, but not any of the more developed tree methods.
Another difference with established literature is that this algorithm does not use any kind of knowledge transfer from previously learned classes. In most one-shot methods, including those used by humans, the model is already trained on other classes, and uses this information to adapt to unseen classes. Instead, the authors interpret it solely as deep learning under a small training data setting (which -- my code shows -- does not require jumping through hoops).
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y,
stratify=y,
random_state=1729,
test_size=X.shape[0] - (10 * 20))
model = MLPClassifier(random_state=1729)
model.fit(X_train, y_train)
p = model.predict(X_test)
print(accuracy_score(y_test, p))
X_train, X_test, y_train, y_test = train_test_split(X, y,
stratify=y,
random_state=1729,
test_size=X.shape[0] - (10 * 200))
model = MLPClassifier(random_state=1729)
model.fit(X_train, y_train)
p = model.predict(X_test)
print(accuracy_score(y_test, p))
This gets you 0.645 and 0.838 accuracy score respectively (versus 62% and 76% in the paper). Sure, different validation (I validate on all the remaining data, they do 20x 70% 30% splits on the 200 and 2000 samples, which needlessly lowers the number of training samples, fairer comparison is 0.819 with 1400 samples), but the scores seem at least comparable. Cool method though, I can dig this and look beyond benchmarks (Though Iris and Wine are really toy datasets by now.)GitHub makes judgment calls on what to censor: They deem a project name offensive, they deem some piece of code stolen (unless the NSA admitted to them it was legit, they had no confirmation), they deem publicly available data crawled from the web PII or harassment instigation.
Unless you do not classify these examples as censorship, it is what it is.
Here more about GitHub suffering from state-censorship: https://en.wikipedia.org/wiki/Censorship_of_GitHub
GitHub also censors any content that they deem stolen (such as the NSA Malware / EquationGroup releases) and content that they deem containing PII-data (such as the public LinkedIn crawl of people stating they work for ICE).
https://news.ycombinator.com/item?id=9966118
https://github.com/nixxquality/WebMConverter/commit/c1ac0baa...