SVM on quantum computing! #quantumcomputing #qiskit

Support vector machine is one of major method of machine learning. It very useful and powerful algorithm. However, SVM is not suitable for large size dataset.

Recently I’m learning QISKIT and qiskit has an attractive method named QSVM.

It means that perform SVM on quantum circuit!

Dose it sound fun?

Original URL of the paper is below.
https://arxiv.org/pdf/1804.11326.pdf

The author of the article defined quantum kernel functions for quantum SVM. The merit of quantum computing for SVM is parallel. Because quantum computing can generates entangle state which is parallel world.

And fortunately qiskit has QSVM method that means we can QSVM very conveniently!

Today I tried to use QSVM to iris dataset for practice.

At first, import packages and dataset.

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import qiskit
from qiskit import BasicAer
from qiskit.aqua import QuantumInstance
from qiskit.aqua.algorithms import QSVM
from qiskit.aqua.components.multiclass_extensions import one_against_rest, all_pairs
from qiskit.aqua.components.feature_maps import SecondOrderExpansion
from qiskit.aqua.input import ClassificationInput
from qiskit.aqua import run_algorithm
backend = BasicAer.get_backend('qasm_simulator')
iris = load_iris()

 
X, Y = iris.data, iris.target
print(X.shape)
print(len(set(Y)))
train_x, test_x, train_y, test_y = train_test_split(X, Y, test_size=0.2)
num_features = 4
training_size = 120
test_size = 30
feature_map = SecondOrderExpansion(feature_dimension=num_features, depth=2)

Then split data for train and test. Iris data set has 4 features so I defined num_features=4, it will be number of qubit.

X, Y = iris.data, iris.target
print(X.shape)
print(len(set(Y)))
train_x, test_x, train_y, test_y = train_test_split(X, Y, test_size=0.2)
feature_map = SecondOrderExpansion(feature_dimension=num_features, depth=2) 

Next defined parameters for QSVM and transformed data for QSVM.

params = {
            'problem': {'name': 'classification'},
            'algorithm': {
                'name': 'QSVM',
            },
            'multiclass_extension': {'name': 'OneAgainstRest'},
            'feature_map': {'name': 'SecondOrderExpansion', 'depth': 2 }
}

params = {
            'problem': {'name': 'classification', 'random_seed': 794},
            'algorithm': {
                'name': 'QSVM',
            },
            'backend': {'shots': 1024},
            'multiclass_extension': {'name': 'OneAgainstRest'},
            #'feature_map': {'name': 'SecondOrderExpansion', 'depth': 2, 'entangler_map': [[0, 1]]}
            'feature_map': {'name': 'SecondOrderExpansion', 'depth': 2}
    
        }
 training_dataset={'A':train_x[train_y==0],
                'B':train_x[train_y==1],
                'C':train_x[train_y==2]}
test_dataset={'A':test_x[test_y==0],
                        'B':test_x[test_y==1],
                        'C':test_x[test_y==2]}
total_arr = np.concatenate((test_dataset['A'],test_dataset['B'],test_dataset['C']))
alg_input = ClassificationInput(training_dataset, test_dataset, total_arr)

Finally let’s learning!

 
%time result = run_algorithm(params, algo_input=alg_input, backend=backend)

Simulated QSVM is not so fast. It took 17min on my MacBook(mid2015 model)

Check the performance.
result['test_success_ratio']
> 0.733

Hmm it is not so high accuracy. Are there many room for improve?

And qiskit has more direct method for QSVM named QSVM.

I would like to use the method and tried. But it caused error.

I couldn’t find reason of above.

  q_instance = QuantumInstance(backend) qsvm = QSVM(feature_map=feature_map,            training_dataset={'A':train_x[train_y==0],                             'B':train_x[train_y==1],                             'C':train_x[train_y==2]},            test_dataset={'A':test_x[test_y==0],                         'B':test_x[test_y==1],                         'C':test_x[test_y==2]},            multiclass_extension=one_against_rest.OneAgainstRest)

It is very interesting for me about quantum computing.

programming and quantum computing is very interesting for me!!!!


Published by iwatobipen

I'm medicinal chemist in mid size of pharmaceutical company. I love chemoinfo, cording, organic synthesis, my family.

One thought on “SVM on quantum computing! #quantumcomputing #qiskit

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.