It can be changed if made a filter to discard half of ISP1 prefixes?
If you do that, and ISP2 goes down, then any IP within those prefixes not being advertised to ISP1 will not have Internet connectivity.
Let's say that you have a /20 of IP space, all contiguous as a single /20 block, e.g. 100.64.8.0/20
You could announce 100.64.8.0/20 to both ISPs, and then any sub-prefixes (e.g. 100.64.10.0/23) where you want routing to favor one particular ISP, announce the sub-prefix only to the preferred ISP. If that link fails, then the master /20 prefix will act as a backup route for all of the IPs in the sub-prefix. So with these examples, say you wanted 100.64.10/23 to come in ISP2. You would announce 100.64.10.0/23 to ISP2 only, but also announce 100.64.8.0/20 to both ISPs. If ISP2 fails, then 100.64.10.0/23 will retain service due to the fact that it is a sub-prefix of 100.64.8.0/20 via ISP1. When ISP2 comes back up, the hosts in that /23 will return to ISP2 for downstream traffic.
However, I'd say that when dealing in BGP, you probably need to learn to think differently. If you have two connections, then you probably want them to be the same size, and you don't want your total traffic to exceed either of the individual circuits' capacity. If you do, then during a failure, you will be over-budget and experience slow Internet.